Skip to content

Commit

Permalink
Merge pull request #5 from 17TheWord/dev
Browse files Browse the repository at this point in the history
🐛 ✨ 使用旧方法实现对HoverItem、HoverEntity部分文本属性的解析
  • Loading branch information
17TheWord authored Aug 30, 2024
2 parents dae6fa3 + 07ce42b commit d222f59
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 79 deletions.
7 changes: 3 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
name: Create Release

on:
# push:
# branches:
# - main
workflow_dispatch:
push:
branches:
- main

permissions:
contents: write
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@
- [`玩家登出`](https://github.com/17TheWord/QueQiao/wiki/4.-%E5%9F%BA%E6%9C%AC%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B)
- 通过 `Websocket` 接收 `Json` 消息,并转发至游戏玩家。
- 已实现的接口
- [`Broadcast`](https://github.com/17TheWord/QueQiao/wiki/4.-%E5%9F%BA%E6%9C%AC%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B)
- [`Title & SubTitle`](https://github.com/17TheWord/QueQiao/wiki/5.-API#title--subtitle)
- [`Broadcast`](https://github.com/17TheWord/QueQiao/wiki/5.-API#broadcast--send-message)
- [`PrivateMessage`](https://github.com/17TheWord/QueQiao/wiki/5.-API#privatemessage)
- [`Title & SubTitle`](https://github.com/17TheWord/QueQiao/wiki/5.-API#title)
- [`ActionBar`](https://github.com/17TheWord/QueQiao/wiki/5.-API#actionbar)
- [`Private`](https://github.com/17TheWord/QueQiao/wiki/5.-API#private)

## 快速开始

Expand Down
6 changes: 3 additions & 3 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@
- [`Player Logout`](https://github.com/17TheWord/QueQiao/wiki/4.-%E5%9F%BA%E6%9C%AC%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B)
- Receives `Json` messages via `Websocket` and forwards them to the game players.
- Implemented interfaces
- [`Broadcast`](https://github.com/17TheWord/QueQiao/wiki/4.-%E5%9F%BA%E6%9C%AC%E4%BA%8B%E4%BB%B6%E7%B1%BB%E5%9E%8B)
- [`Title & SubTitle`](https://github.com/17TheWord/QueQiao/wiki/5.-API#title--subtitle)
- [`Broadcast`](https://github.com/17TheWord/QueQiao/wiki/5.-API#broadcast--send-message)
- [`PrivateMessage`](https://github.com/17TheWord/QueQiao/wiki/5.-API#privatemessage)
- [`Title & SubTitle`](https://github.com/17TheWord/QueQiao/wiki/5.-API#title)
- [`ActionBar`](https://github.com/17TheWord/QueQiao/wiki/5.-API#actionbar)
- [`Private`](https://github.com/17TheWord/QueQiao/wiki/5.-API#private)

## Quick Start

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.theword.queqiao.tool.handle.ParseJsonToEventService;
import com.github.theword.queqiao.tool.payload.MessageSegment;
import com.github.theword.queqiao.tool.payload.modle.component.CommonBaseComponent;
import com.github.theword.queqiao.tool.payload.modle.component.CommonTextComponent;
import com.github.theword.queqiao.tool.payload.modle.hover.CommonHoverEntity;
import com.github.theword.queqiao.tool.payload.modle.hover.CommonHoverItem;
Expand Down Expand Up @@ -37,51 +38,66 @@ public Text parseMessageListToComponent(List<MessageSegment> myBaseComponentList
}

@Override
public MutableText parsePerMessageToComponent(CommonTextComponent commonTextComponent) {
public Text parseCommonBaseComponentListToComponent(List<CommonBaseComponent> list) {
// IF > fabric-1.18.2
// MutableText mutableText = Text.empty();
// ELSE
// MutableText mutableText = LiteralText.EMPTY.copy();
// END IF
for (CommonBaseComponent commonBaseComponent : list) {
mutableText.append(parsePerMessageToComponent(commonBaseComponent));
}
return mutableText;
}

@Override
public MutableText parsePerMessageToComponent(CommonBaseComponent commonBaseComponent) {
// IF >= fabric-1.21
// MutableText tempTextContent = Text.literal(commonTextComponent.getText());
// MutableText tempTextContent = Text.literal(commonBaseComponent.getText());
// ELSE IF >= fabric-1.19
// LiteralTextContent tempTextContent = new LiteralTextContent(commonTextComponent.getText());
// LiteralTextContent tempTextContent = new LiteralTextContent(commonBaseComponent.getText());
// ELSE
// LiteralText tempTextContent = new LiteralText(commonTextComponent.getText());
// LiteralText tempTextContent = new LiteralText(commonBaseComponent.getText());
// END IF
Identifier identifier = null;
if (commonTextComponent.getFont() != null) {
if (commonBaseComponent.getFont() != null) {
// IF >= fabric-1.21
// identifier = Identifier.of(Identifier.DEFAULT_NAMESPACE, commonTextComponent.getFont());
// identifier = Identifier.of(Identifier.DEFAULT_NAMESPACE, commonBaseComponent.getFont());
// ELSE IF >= fabric-1.18
// identifier = new Identifier(Identifier.DEFAULT_NAMESPACE, commonTextComponent.getFont());
// identifier = new Identifier(Identifier.DEFAULT_NAMESPACE, commonBaseComponent.getFont());
// ELSE
// identifier = new Identifier(commonTextComponent.getFont());
// identifier = new Identifier(commonBaseComponent.getFont());
// END IF
}

Style style = Style.EMPTY
.withBold(commonTextComponent.isBold())
.withItalic(commonTextComponent.isItalic())
.withUnderline(commonTextComponent.isUnderlined())
.withInsertion(commonTextComponent.getInsertion())
.withBold(commonBaseComponent.isBold())
.withItalic(commonBaseComponent.isItalic())
.withUnderline(commonBaseComponent.isUnderlined())
.withInsertion(commonBaseComponent.getInsertion())
.withFont(identifier)
// IF > fabric-1.16.5
// .withObfuscated(commonTextComponent.isObfuscated())
// .withStrikethrough(commonTextComponent.isStrikethrough())
// .withObfuscated(commonBaseComponent.isObfuscated())
// .withStrikethrough(commonBaseComponent.isStrikethrough())
// END IF
;

if (commonTextComponent.getColor() != null && !commonTextComponent.getColor().isEmpty()) {
if (commonBaseComponent.getColor() != null && !commonBaseComponent.getColor().isEmpty()) {
// IF fabric-1.21
// style.withColor(TextColor.parse(commonTextComponent.getColor()).getOrThrow());
// style.withColor(TextColor.parse(commonBaseComponent.getColor()).getOrThrow());
// ELSE
// style.withColor(TextColor.parse(commonTextComponent.getColor()));
// style.withColor(TextColor.parse(commonBaseComponent.getColor()));
// END IF
} else style.withColor(TextColor.fromFormatting(Formatting.WHITE));

// 配置 TextComponent 额外属性
if (commonTextComponent.getClickEvent() != null)
style.withClickEvent(getClickEvent(commonTextComponent));
if (commonBaseComponent instanceof CommonTextComponent) {
CommonTextComponent commonTextComponent = (CommonTextComponent) commonBaseComponent;
if (commonTextComponent.getClickEvent() != null)
style.withClickEvent(getClickEvent(commonTextComponent));

if (commonTextComponent.getHoverEvent() != null)
style.withHoverEvent(getHoverEvent(commonTextComponent));
if (commonTextComponent.getHoverEvent() != null)
style.withHoverEvent(getHoverEvent(commonTextComponent));
}


// IF < fabric-1.21 && >= fabric-1.19
Expand All @@ -108,7 +124,7 @@ public HoverEvent getHoverEvent(CommonTextComponent commonTextComponent) {
switch (commonTextComponent.getHoverEvent().getAction().toLowerCase()) {
case "show_text":
if (commonTextComponent.getHoverEvent().getText() != null && !commonTextComponent.getHoverEvent().getText().isEmpty()) {
Text textComponent = parseMessageListToComponent(commonTextComponent.getHoverEvent().getText());
Text textComponent = parseCommonBaseComponentListToComponent(commonTextComponent.getHoverEvent().getText());
hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_TEXT, textComponent);
}
break;
Expand All @@ -123,7 +139,7 @@ public HoverEvent getHoverEvent(CommonTextComponent commonTextComponent) {
CommonHoverEntity commonHoverEntity = commonTextComponent.getHoverEvent().getEntity();
Optional<EntityType<?>> entityType = EntityType.get(commonHoverEntity.getType());
if (entityType.isPresent()) {
HoverEvent.EntityContent entityTooltipInfo = new HoverEvent.EntityContent(entityType.get(), UUID.randomUUID(), parseMessageListToComponent(commonHoverEntity.getName()));
HoverEvent.EntityContent entityTooltipInfo = new HoverEvent.EntityContent(entityType.get(), UUID.randomUUID(), parseCommonBaseComponentListToComponent(commonHoverEntity.getName()));
hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_ENTITY, entityTooltipInfo);
}
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.theword.queqiao.tool.handle.ParseJsonToEventService;
import com.github.theword.queqiao.tool.payload.MessageSegment;
import com.github.theword.queqiao.tool.payload.modle.component.CommonBaseComponent;
import com.github.theword.queqiao.tool.payload.modle.component.CommonTextComponent;
import com.github.theword.queqiao.tool.payload.modle.hover.CommonHoverEntity;
import com.github.theword.queqiao.tool.payload.modle.hover.CommonHoverItem;
Expand Down Expand Up @@ -39,6 +40,7 @@

public class ParseJsonToEventImpl implements ParseJsonToEventService {

@Override
// IF > forge-1.16.5
// public MutableComponent parseMessageListToComponent(List<MessageSegment> myBaseComponentList) {
// ELSE
Expand Down Expand Up @@ -66,11 +68,37 @@ public class ParseJsonToEventImpl implements ParseJsonToEventService {
return mutableComponent;
}

@Override
// IF > forge-1.16.5
// public MutableComponent parseCommonBaseComponentListToComponent(List<CommonBaseComponent> myBaseComponentList) {
// ELSE
// public StringTextComponent parseCommonBaseComponentListToComponent(List<CommonBaseComponent> myBaseComponentList) {
// END IF

// IF >= forge-1.19
// MutableComponent mutableComponent = MutableComponent.create(new LiteralContents(""));
// ELSE IF >= forge-1.18 && < forge-1.19
// MutableComponent mutableComponent = new TextComponent("");
// ELSE
// StringTextComponent mutableComponent = new StringTextComponent("");
// END IF
for (CommonBaseComponent commonBaseComponent : myBaseComponentList) {
// IF > forge-1.16.5
// MutableComponent tempMutableComponent = parsePerMessageToComponent(commonBaseComponent);
// ELSE
// StringTextComponent tempMutableComponent = parsePerMessageToComponent(commonBaseComponent);
// END IF
mutableComponent.append(tempMutableComponent);
}
return mutableComponent;
}


@Override
// IF > forge-1.16.5
// public MutableComponent parsePerMessageToComponent(CommonTextComponent myBaseComponent) {
// public MutableComponent parsePerMessageToComponent(CommonBaseComponent myBaseComponent) {
// ELSE
// public StringTextComponent parsePerMessageToComponent(CommonTextComponent myBaseComponent) {
// public StringTextComponent parsePerMessageToComponent(CommonBaseComponent myBaseComponent) {
// END IF

// IF >= forge-1.19
Expand All @@ -83,10 +111,13 @@ public class ParseJsonToEventImpl implements ParseJsonToEventService {

Style style = getStyleFromBaseComponent(myBaseComponent);

if (myBaseComponent.getClickEvent() != null)
style = style.withClickEvent(getClickEventFromBaseComponent(myBaseComponent));
if (myBaseComponent.getHoverEvent() != null)
style = style.withHoverEvent(getHoverEventFromBaseComponent(myBaseComponent));
if (myBaseComponent instanceof CommonTextComponent) {
CommonTextComponent commonTextComponent = (CommonTextComponent) myBaseComponent;
if (commonTextComponent.getClickEvent() != null)
style = style.withClickEvent(getClickEventFromBaseComponent(commonTextComponent));
if (commonTextComponent.getHoverEvent() != null)
style = style.withHoverEvent(getHoverEventFromBaseComponent(commonTextComponent));
}


// IF >= forge-1.19
Expand All @@ -100,7 +131,7 @@ public class ParseJsonToEventImpl implements ParseJsonToEventService {
}


private Style getStyleFromBaseComponent(CommonTextComponent myBaseComponent) {
private Style getStyleFromBaseComponent(CommonBaseComponent myBaseComponent) {
ResourceLocation font = null;
if (myBaseComponent.getFont() != null) {
// IF >= forge-1.21
Expand Down Expand Up @@ -163,7 +194,7 @@ public HoverEvent getHoverEventFromBaseComponent(CommonTextComponent myTextCompo
if (action.equals(HoverEvent.Action.SHOW_TEXT)) {
if (myTextComponent.getHoverEvent().getText() != null && !myTextComponent.getHoverEvent().getText().isEmpty()) {
// IF > forge-1.16.5
// MutableComponent textComponent = parseMessageListToComponent(myTextComponent.getHoverEvent().getText());
// MutableComponent textComponent = parseCommonBaseComponentListToComponent(myTextComponent.getHoverEvent().getText());
// ELSE
// StringTextComponent textComponent = parseMessageListToComponent(myTextComponent.getHoverEvent().getText());
// END IF
Expand All @@ -184,7 +215,7 @@ public HoverEvent getHoverEventFromBaseComponent(CommonTextComponent myTextCompo
Optional<EntityType<?>> entityType = EntityType.byString(commonHoverEntity.getType());
if (entityType.isPresent()) {
// IF > forge-1.16.5
// HoverEvent.EntityTooltipInfo entityTooltipInfo = new HoverEvent.EntityTooltipInfo(entityType.get(), UUID.randomUUID(), parseMessageListToComponent(commonHoverEntity.getName()));
// HoverEvent.EntityTooltipInfo entityTooltipInfo = new HoverEvent.EntityTooltipInfo(entityType.get(), UUID.randomUUID(), parseCommonBaseComponentListToComponent(commonHoverEntity.getName()));
// ELSE
// HoverEvent.EntityHover entityTooltipInfo = new HoverEvent.EntityHover(entityType.get(), UUID.randomUUID(), parseMessageListToComponent(commonHoverEntity.getName()));
// END IF
Expand Down
Loading

0 comments on commit d222f59

Please sign in to comment.