Skip to content

Commit 5b1e8e0

Browse files
committed
允许使用按键将物品分享至聊天栏
1 parent 4501f7a commit 5b1e8e0

File tree

16 files changed

+236
-137
lines changed

16 files changed

+236
-137
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ dependencies {
231231
implementation(rfg.deobf("curse.maven:jetif-303122:2919936"))
232232
implementation(rfg.deobf("curse.maven:ctm-267602:2915363"))
233233
// implementation(rfg.deobf("curse.maven:component-model-hider-940949:4885858"))
234-
implementation(rfg.deobf("curse.maven:had-enough-items-557549:6930666"))
234+
implementation(rfg.deobf("curse.maven:had-enough-items-557549:7057606"))
235235
implementation(rfg.deobf("curse.maven:the-one-probe-245211:2667280"))
236236
implementation(rfg.deobf("curse.maven:FTB-Library-237167:2985811"))
237237
implementation(rfg.deobf("curse.maven:FTBU-237102:3157548"))
@@ -306,7 +306,7 @@ dependencies {
306306
implementation(rfg.deobf("curse.maven:packagedauto-308380:6312996"))
307307
compileOnly(rfg.deobf("curse.maven:libvulpes-236541:3801015"))
308308
compileOnly(rfg.deobf("curse.maven:advanced-rocketry-236542:4671856"))
309-
implementation(rfg.deobf("curse.maven:random-complement-1198138:6995821"))
309+
implementation(rfg.deobf("curse.maven:random-complement-1198138:7133485"))
310310
implementation(rfg.deobf("curse.maven:modular-routers-250294:2954953"))
311311
implementation(rfg.deobf("curse.maven:actually-additions-228404:3117927"))
312312
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import github.kasuminova.novaeng.common.command.CommandSPacketProfiler;
77
import github.kasuminova.novaeng.common.config.NovaEngCoreConfig;
88
import github.kasuminova.novaeng.common.handler.WorldLoadedHandler;
9+
import github.kasuminova.novaeng.common.network.ItemDisplayPkt;
910
import github.kasuminova.novaeng.common.network.ParallelNetworkManager;
1011
import github.kasuminova.novaeng.common.network.PktCellDriveStatusUpdate;
1112
import github.kasuminova.novaeng.common.network.PktECalculatorGUIData;
@@ -123,6 +124,7 @@ public void preInit(FMLPreInitializationEvent event) {
123124
NET_CHANNEL.registerMessage(PktCProfilerRequest.class, PktCProfilerRequest.class, start++, Side.CLIENT);
124125
NET_CHANNEL.registerMessage(PktECalculatorGUIData.class, PktECalculatorGUIData.class, start++, Side.CLIENT);
125126
NET_CHANNEL.registerMessage(PktMouseItemUpdate.class, PktMouseItemUpdate.class, start++, Side.CLIENT);
127+
NET_CHANNEL.registerMessage(ItemDisplayPkt.class, ItemDisplayPkt.class, start++, Side.CLIENT);
126128

127129
start = 64;
128130

@@ -134,6 +136,7 @@ public void preInit(FMLPreInitializationEvent event) {
134136
NET_CHANNEL.registerMessage(PktEFabricatorPatternSearchGUIAction.class, PktEFabricatorPatternSearchGUIAction.class, start++, Side.SERVER);
135137
NET_CHANNEL.registerMessage(PktCProfilerReply.class, PktCProfilerReply.class, start++, Side.SERVER);
136138
NET_CHANNEL.registerMessage(PktGeocentricDrillControl.class, PktGeocentricDrillControl.class, start++, Side.SERVER);
139+
NET_CHANNEL.registerMessage(ItemDisplayPkt.class, ItemDisplayPkt.class, start++, Side.SERVER);
137140

138141
proxy.preInit();
139142
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,16 @@
3939
import it.unimi.dsi.fastutil.objects.Object2IntMap;
4040
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
4141
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
42+
import it.unimi.dsi.fastutil.objects.ObjectLists;
43+
import lombok.Getter;
4244
import net.minecraft.block.Block;
4345
import net.minecraft.block.state.IBlockState;
4446
import net.minecraft.client.Minecraft;
4547
import net.minecraft.client.renderer.block.model.BakedQuad;
4648
import net.minecraft.client.renderer.color.BlockColors;
4749
import net.minecraft.client.renderer.color.ItemColors;
4850
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
51+
import net.minecraft.client.resources.I18n;
4952
import net.minecraft.entity.player.EntityPlayer;
5053
import net.minecraft.item.Item;
5154
import net.minecraft.item.ItemBlock;
@@ -82,6 +85,8 @@
8285
@Mod.EventBusSubscriber(Side.CLIENT)
8386
public class ClientProxy extends CommonProxy {
8487

88+
@Getter
89+
private static List<String> itemDisplayTooltip;
8590
private static final Object2IntMap<String> colorCache = new Object2IntOpenHashMap<>();
8691
public static List<Item> items = new ObjectArrayList<>();
8792
public static List<Block> blocks = new ObjectArrayList<>();
@@ -168,6 +173,8 @@ public void preInit() {
168173
MinecraftForge.EVENT_BUS.register(ClientEventHandler.INSTANCE);
169174
MinecraftForge.EVENT_BUS.register(BlockAngelRendererHandler.INSTANCE);
170175

176+
itemDisplayTooltip = ObjectLists.singleton(I18n.format("key.novaeng.item_display.tooltip", "Ctrl + L"));
177+
171178
if (Mods.GECKOLIB.isPresent()) {
172179
ClientRegistry.bindTileEntitySpecialRenderer(SingularityCore.class, MachineControllerRenderer.INSTANCE);
173180
}

src/main/java/github/kasuminova/novaeng/client/gui/misc/TechLevelText.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package github.kasuminova.novaeng.client.gui.misc;
22

3+
import lombok.Getter;
34
import net.minecraft.client.resources.I18n;
45
import net.minecraftforge.fml.relauncher.Side;
56
import net.minecraftforge.fml.relauncher.SideOnly;
67

8+
@Getter
79
@SideOnly(Side.CLIENT)
810
public class TechLevelText {
911
private final String levelText;
@@ -34,11 +36,4 @@ public static String[] splitSubLevel(float level) {
3436
return new String[]{levelText, subLevelText.replace(".", "")};
3537
}
3638

37-
public String getLevelText() {
38-
return levelText;
39-
}
40-
41-
public String getSubLevelText() {
42-
return subLevelText;
43-
}
4439
}

src/main/java/github/kasuminova/novaeng/client/handler/ClientEventHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import github.kasuminova.novaeng.common.profiler.CPacketProfiler;
77
import github.kasuminova.novaeng.common.profiler.TEUpdatePacketProfiler;
88
import github.kasuminova.novaeng.mixin.minecraft.AccessorParticleManager;
9+
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
910
import net.minecraft.client.Minecraft;
1011
import net.minecraft.client.particle.ParticleManager;
1112
import net.minecraft.util.text.TextFormatting;
@@ -15,7 +16,6 @@
1516
import net.minecraftforge.fml.common.network.FMLNetworkEvent;
1617

1718
import java.util.ArrayDeque;
18-
import java.util.ArrayList;
1919
import java.util.Arrays;
2020
import java.util.List;
2121

@@ -25,7 +25,7 @@ public class ClientEventHandler {
2525

2626
public static int debugPacketProfilerMessageLimit = 5;
2727
public static int debugTEPacketProfilerMessageLimit = 5;
28-
private final List<String> debugMessageCache = new ArrayList<>();
28+
private final List<String> debugMessageCache = new ObjectArrayList<>();
2929
private long clientTick = 0;
3030
private boolean debugMessageUpdateRequired = true;
3131

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package github.kasuminova.novaeng.client.handler;
2+
3+
import net.minecraftforge.fml.relauncher.Side;
4+
import net.minecraftforge.fml.relauncher.SideOnly;
5+
6+
@SideOnly(Side.CLIENT)
7+
public class ItemDisplayHandler {
8+
9+
// @SubscribeEvent(priority = EventPriority.HIGHEST)
10+
// public void onInputEvent(GuiScreenEvent.KeyboardInputEvent.Pre event) {
11+
// var mc = Minecraft.getMinecraft();
12+
// if (mc.currentScreen instanceof GuiContainer gui) {
13+
// int eventKey = Keyboard.getEventKey();
14+
// if (GuiScreen.isCtrlKeyDown() && Keyboard.KEY_L == eventKey && Keyboard.isKeyDown(eventKey)) {
15+
// var slot = gui.getSlotUnderMouse();
16+
// if (slot != null) {
17+
// NovaEngineeringCore.NET_CHANNEL.sendToServer(new ItemDisplayPkt(slot.getStack(), mc.player));
18+
// }
19+
// }
20+
// }
21+
// }
22+
23+
}
Lines changed: 8 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package github.kasuminova.novaeng.client.hitokoto;
22

3-
@SuppressWarnings("unused")
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
import lombok.experimental.Accessors;
6+
7+
@Getter
8+
@Setter
9+
@Accessors(chain = true)
410
public class HitokotoResult {
511
private int id;
6-
private String uuid;
12+
private String UUID;
713
private String hitokoto;
814
private String type;
915
private String from;
@@ -14,113 +20,4 @@ public class HitokotoResult {
1420
private String commitFrom;
1521
private String createdAt;
1622
private int length;
17-
18-
public int getId() {
19-
return id;
20-
}
21-
22-
public HitokotoResult setId(final int id) {
23-
this.id = id;
24-
return this;
25-
}
26-
27-
public String getUuid() {
28-
return uuid;
29-
}
30-
31-
public HitokotoResult setUUID(final String uuid) {
32-
this.uuid = uuid;
33-
return this;
34-
}
35-
36-
public String getHitokoto() {
37-
return hitokoto;
38-
}
39-
40-
@SuppressWarnings("UnusedReturnValue")
41-
public HitokotoResult setHitokoto(final String hitokoto) {
42-
this.hitokoto = hitokoto;
43-
return this;
44-
}
45-
46-
public String getType() {
47-
return type;
48-
}
49-
50-
public HitokotoResult setType(final String type) {
51-
this.type = type;
52-
return this;
53-
}
54-
55-
public String getFrom() {
56-
return from;
57-
}
58-
59-
public HitokotoResult setFrom(final String from) {
60-
this.from = from;
61-
return this;
62-
}
63-
64-
public String getFromWho() {
65-
return fromWho;
66-
}
67-
68-
public HitokotoResult setFromWho(final String fromWho) {
69-
this.fromWho = fromWho;
70-
return this;
71-
}
72-
73-
public String getCreator() {
74-
return creator;
75-
}
76-
77-
public HitokotoResult setCreator(final String creator) {
78-
this.creator = creator;
79-
return this;
80-
}
81-
82-
public int getCreatorUid() {
83-
return creatorUid;
84-
}
85-
86-
public HitokotoResult setCreatorUid(final int creatorUid) {
87-
this.creatorUid = creatorUid;
88-
return this;
89-
}
90-
91-
public int getReviewer() {
92-
return reviewer;
93-
}
94-
95-
public HitokotoResult setReviewer(final int reviewer) {
96-
this.reviewer = reviewer;
97-
return this;
98-
}
99-
100-
public String getCommitFrom() {
101-
return commitFrom;
102-
}
103-
104-
public HitokotoResult setCommitFrom(final String commitFrom) {
105-
this.commitFrom = commitFrom;
106-
return this;
107-
}
108-
109-
public String getCreatedAt() {
110-
return createdAt;
111-
}
112-
113-
public HitokotoResult setCreatedAt(final String createdAt) {
114-
this.createdAt = createdAt;
115-
return this;
116-
}
117-
118-
public int getLength() {
119-
return length;
120-
}
121-
122-
public HitokotoResult setLength(final int length) {
123-
this.length = length;
124-
return this;
125-
}
12623
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package github.kasuminova.novaeng.common.hypernet.old.misc;
22

3+
import com.github.bsideup.jabel.Desugar;
34
import net.minecraft.util.math.BlockPos;
45

56
import java.util.UUID;
67

8+
@Desugar
79
public record HyperNetConnectCardInfo(BlockPos pos, UUID networkOwner) {
810
}

src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/SimpleResearchData.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package github.kasuminova.novaeng.common.hypernet.old.research;
22

3+
import com.github.bsideup.jabel.Desugar;
4+
35
import java.io.Serializable;
46
import java.util.List;
57
import java.util.stream.Collectors;
68

79
@SuppressWarnings({"FeatureEnvy", "unused"})
10+
@Desugar
811
public record SimpleResearchData(String researchName, float techLevel, double requiredPoints,
912
double minComputationPointPerTick, List<String> descriptions,
1013
List<String> unlockedDescriptions, List<String> dependencies) implements Serializable {
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package github.kasuminova.novaeng.common.network;
2+
3+
import github.kasuminova.novaeng.NovaEngineeringCore;
4+
import io.netty.buffer.ByteBuf;
5+
import lombok.Getter;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.entity.player.EntityPlayer;
8+
import net.minecraft.item.ItemStack;
9+
import net.minecraft.util.text.ITextComponent;
10+
import net.minecraft.util.text.TextComponentString;
11+
import net.minecraftforge.fml.common.network.ByteBufUtils;
12+
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
13+
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
14+
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
15+
import net.minecraftforge.fml.relauncher.Side;
16+
import net.minecraftforge.fml.relauncher.SideOnly;
17+
18+
public class ItemDisplayPkt implements IMessage, IMessageHandler<ItemDisplayPkt, IMessage> {
19+
20+
@Getter
21+
private ItemStack stack;
22+
@Getter
23+
private ITextComponent name;
24+
25+
public ItemDisplayPkt() {
26+
27+
}
28+
29+
public ItemDisplayPkt(ItemStack stack, EntityPlayer player) {
30+
this.stack = stack;
31+
this.name = player.getDisplayName();
32+
}
33+
34+
@Override
35+
public void fromBytes(ByteBuf buf) {
36+
stack = ByteBufUtils.readItemStack(buf);
37+
name = ITextComponent.Serializer.fromJsonLenient(ByteBufUtils.readUTF8String(buf));
38+
}
39+
40+
@Override
41+
public void toBytes(ByteBuf buf) {
42+
ByteBufUtils.writeItemStack(buf, stack);
43+
ByteBufUtils.writeUTF8String(buf, ITextComponent.Serializer.componentToJson(name));
44+
}
45+
46+
@Override
47+
public IMessage onMessage(ItemDisplayPkt message, MessageContext ctx) {
48+
switch (ctx.side) {
49+
case SERVER -> NovaEngineeringCore.NET_CHANNEL.sendToAll(message);
50+
case CLIENT -> onClient(message, ctx);
51+
}
52+
return null;
53+
}
54+
55+
@SideOnly(Side.CLIENT)
56+
public void onClient(ItemDisplayPkt message, MessageContext ctx) {
57+
Minecraft.getMinecraft().player.sendMessage(message.name.appendText(":").appendSibling(message.stack.getTextComponent()));
58+
}
59+
60+
@SideOnly(Side.CLIENT)
61+
public static class TextComponentItemStack extends TextComponentString {
62+
63+
public TextComponentItemStack(ItemStack stack) {
64+
super("[" + stack.getDisplayName() + "]");
65+
}
66+
}
67+
}

0 commit comments

Comments
 (0)