Skip to content

Commit 3abd806

Browse files
committed
feat: add invisible item frame
1 parent 7390266 commit 3abd806

File tree

73 files changed

+1210
-887
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1210
-887
lines changed

common/src/main/java/com/euphony/better_client/api/IHasPlayTime.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
public interface IHasPlayTime {
44
void better_client$setPlayTimeTicks(int playTimeTicks);
5+
56
int better_client$getPlayTimeTicks();
67
}

common/src/main/java/com/euphony/better_client/client/BCClientEvents.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class BCClientEvents {
99
public static void init() {
1010
ClientTickEvent.CLIENT_PRE.register(BiomeTitleEvent::clientPre);
1111
ClientTickEvent.CLIENT_LEVEL_PRE.register(FullBrightnessEvent::clientLevelPre);
12+
ClientTickEvent.CLIENT_LEVEL_PRE.register(InvisibleItemFrameEvent::clientLevelPre);
1213

1314
ClientChatEvent.RECEIVED.register(BeautifiedChatEvent::chatReceived);
1415

common/src/main/java/com/euphony/better_client/client/events/BeautifiedChatEvent.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.euphony.better_client.client.events;
22

3+
import static com.euphony.better_client.BetterClient.config;
4+
35
import dev.architectury.event.CompoundEventResult;
6+
import java.text.SimpleDateFormat;
7+
import java.util.Date;
48
import net.minecraft.network.chat.ChatType;
59
import net.minecraft.network.chat.Component;
610
import net.minecraft.network.chat.MutableComponent;
711

8-
import java.text.SimpleDateFormat;
9-
import java.util.Date;
10-
11-
import static com.euphony.better_client.BetterClient.config;
12-
1312
public class BeautifiedChatEvent {
1413
public static final String VANILLA_FORMAT = "(?i)^<[a-z0-9_]{3,16}>\\s.+$";
1514

@@ -23,9 +22,9 @@ public static CompoundEventResult<Component> chatReceived(ChatType.Bound bound,
2322
}
2423

2524
public static Component processMessage(Component message) {
26-
if(message.getString().matches(VANILLA_FORMAT)) {
25+
if (message.getString().matches(VANILLA_FORMAT)) {
2726
MutableComponent output = Component.empty();
28-
if(config.enableTimeStamp) {
27+
if (config.enableTimeStamp) {
2928
Date now = new Date();
3029
String timestamp = new SimpleDateFormat("[dd:HH:mm] ").format(now);
3130

common/src/main/java/com/euphony/better_client/client/events/BiomeTitleEvent.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.euphony.better_client.client.events;
22

3+
import static com.euphony.better_client.BetterClient.config;
4+
35
import com.euphony.better_client.utils.BiomeUtils;
6+
import java.util.HashMap;
7+
import java.util.Map;
48
import net.minecraft.client.DeltaTracker;
59
import net.minecraft.client.Minecraft;
610
import net.minecraft.client.gui.Font;
@@ -14,11 +18,6 @@
1418
import net.minecraft.world.level.biome.Biome;
1519
import org.joml.Matrix3x2fStack;
1620

17-
import java.util.HashMap;
18-
import java.util.Map;
19-
20-
import static com.euphony.better_client.BetterClient.config;
21-
2221
public class BiomeTitleEvent {
2322
// 常量定义
2423
private static final int MAX_ALPHA = 255;
@@ -149,18 +148,15 @@ private static void renderBiomeTitle(GuiGraphics guiGraphics, Minecraft mc) {
149148
int textWidth = font.width(biomeName);
150149
int y = -font.wordWrapHeight(biomeName.getString(), 999) / 2 + config.biomeTitleYOffset;
151150

152-
guiGraphics.drawString(font, biomeName, (-textWidth / 2), y,
153-
config.biomeTitleColor | (alpha << 24), true);
151+
guiGraphics.drawString(font, biomeName, (-textWidth / 2), y, config.biomeTitleColor | (alpha << 24), true);
154152
pose.popMatrix();
155153
}
156154

157155
private static boolean shouldHideDisplay(Minecraft mc) {
158-
return (mc.options.hideGui && config.hideInF1) ||
159-
(mc.getDebugOverlay().showDebugScreen() && config.hideInF3);
156+
return (mc.options.hideGui && config.hideInF1) || (mc.getDebugOverlay().showDebugScreen() && config.hideInF3);
160157
}
161158

162159
private static Component getBiomeName(ResourceKey<Biome> key) {
163-
return NAME_CACHE.computeIfAbsent(key, k ->
164-
BiomeUtils.createBiomeDisplayComponent(k, config.enableModName));
160+
return NAME_CACHE.computeIfAbsent(key, k -> BiomeUtils.createBiomeDisplayComponent(k, config.enableModName));
165161
}
166-
}
162+
}
Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.euphony.better_client.client.events;
22

3+
import static com.euphony.better_client.BetterClient.config;
4+
35
import com.euphony.better_client.keymapping.BCKeyMappings;
46
import com.euphony.better_client.utils.records.BundleCandidate;
7+
import java.util.ArrayList;
8+
import java.util.List;
59
import net.minecraft.client.Minecraft;
610
import net.minecraft.client.gui.screens.Screen;
711
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
@@ -17,56 +21,51 @@
1721
import net.minecraft.world.inventory.Slot;
1822
import net.minecraft.world.item.ItemStack;
1923

20-
import java.util.ArrayList;
21-
import java.util.List;
22-
23-
import static com.euphony.better_client.BetterClient.config;
24-
2524
public class BundleUpEvent {
2625
public static void bundleUp(Minecraft minecraft, Screen screen, KeyEvent keyEvent) {
27-
if(!BCKeyMappings.BUNDLE_UP.matches(keyEvent) || !config.enableBundleUp) return;
26+
if (!BCKeyMappings.BUNDLE_UP.matches(keyEvent) || !config.enableBundleUp) return;
2827

2928
List<BundleCandidate> candidates = new ArrayList<>();
3029

3130
Player player = minecraft.player;
32-
if(player == null || screen == null) return;
31+
if (player == null || screen == null) return;
3332

34-
if(screen instanceof AbstractContainerScreen<?> containerScreen) {
35-
if(containerScreen.hoveredSlot == null) return;
33+
if (screen instanceof AbstractContainerScreen<?> containerScreen) {
34+
if (containerScreen.hoveredSlot == null) return;
3635

3736
Slot hoveredSlot = containerScreen.hoveredSlot;
3837
ItemStack selectedItem = hoveredSlot.getItem();
39-
if(!selectedItem.is(ItemTags.BUNDLES)) return;
38+
if (!selectedItem.is(ItemTags.BUNDLES)) return;
4039

4140
if (containerScreen.getMenu() instanceof ChestMenu chestMenu) {
42-
for(int i = 0; i < chestMenu.slots.size(); i++) {
41+
for (int i = 0; i < chestMenu.slots.size(); i++) {
4342
Slot slot = chestMenu.getSlot(i);
4443

4544
ItemStack stack = slot.getItem();
4645
if (stack.isEmpty()) continue;
4746

4847
Container container = slot.container;
49-
if(container instanceof Inventory) {
50-
if(slot.slot >= 9) {
48+
if (container instanceof Inventory) {
49+
if (slot.slot >= 9) {
5150
continue;
5251
}
5352
}
5453

5554
double efficiency = (double) stack.getMaxStackSize() / stack.getCount();
5655
candidates.add(new BundleCandidate(slot, i, stack, efficiency));
5756
}
58-
} else if(containerScreen instanceof InventoryScreen
57+
} else if (containerScreen instanceof InventoryScreen
5958
|| containerScreen instanceof CreativeModeInventoryScreen) {
6059
var menu = containerScreen.getMenu();
6160

62-
for(int i = 0; i < menu.slots.size(); i++) {
61+
for (int i = 0; i < menu.slots.size(); i++) {
6362
Slot slot = menu.getSlot(i);
6463
ItemStack stack = slot.getItem();
6564
if (stack.isEmpty()) continue;
6665

6766
Container container = slot.container;
68-
if(container instanceof Inventory) {
69-
if(slot.slot >= 9) {
67+
if (container instanceof Inventory) {
68+
if (slot.slot >= 9) {
7069
double efficiency = (double) stack.getMaxStackSize() / stack.getCount();
7170
candidates.add(new BundleCandidate(slot, i, stack, efficiency));
7271
}
@@ -75,13 +74,14 @@ public static void bundleUp(Minecraft minecraft, Screen screen, KeyEvent keyEven
7574
}
7675
candidates.sort(null);
7776

78-
for(BundleCandidate candidate : candidates) {
77+
for (BundleCandidate candidate : candidates) {
7978
performSlotSwap(containerScreen, hoveredSlot, candidate.slot(), player);
8079
}
8180
}
8281
}
8382

84-
public static void performSlotSwap(AbstractContainerScreen<?> screen, Slot bundleSlot, Slot targetSlot, Player player) {
83+
public static void performSlotSwap(
84+
AbstractContainerScreen<?> screen, Slot bundleSlot, Slot targetSlot, Player player) {
8585
screen.slotClicked(bundleSlot, 1, 0, ClickType.PICKUP);
8686

8787
screen.slotClicked(targetSlot, 0, 0, ClickType.PICKUP);
@@ -90,4 +90,4 @@ public static void performSlotSwap(AbstractContainerScreen<?> screen, Slot bundl
9090
screen.slotClicked(bundleSlot, 1, 0, ClickType.PICKUP);
9191
}
9292
}
93-
}
93+
}
Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.euphony.better_client.client.events;
22

3+
import static com.euphony.better_client.BetterClient.config;
4+
35
import com.euphony.better_client.utils.ItemUtils;
6+
import java.util.List;
47
import net.minecraft.ChatFormatting;
58
import net.minecraft.client.Minecraft;
69
import net.minecraft.client.player.LocalPlayer;
@@ -17,12 +20,9 @@
1720
import net.minecraft.world.item.component.LodestoneTracker;
1821
import net.minecraft.world.level.Level;
1922

20-
import java.util.List;
21-
22-
import static com.euphony.better_client.BetterClient.config;
23-
2423
public class CompassTooltipEvent {
25-
public static void tooltip(ItemStack itemStack, List<Component> components, Item.TooltipContext context, TooltipFlag tooltipFlag) {
24+
public static void tooltip(
25+
ItemStack itemStack, List<Component> components, Item.TooltipContext context, TooltipFlag tooltipFlag) {
2626
if (!config.enableCompassTooltip) return;
2727

2828
if (itemStack.is(Items.COMPASS)) {
@@ -41,26 +41,25 @@ public static void getCompassTooltip(ItemStack itemStack, List<Component> compon
4141
ResourceLocation location = pos.dimension().location();
4242

4343
if (level != null && location.equals(level.dimension().location())) {
44-
components.add(ItemUtils.createTooltip("info.better_client.tooltip.compass.lodestone_position",
45-
getPositionComponent(pos.pos())
46-
));
44+
components.add(ItemUtils.createTooltip(
45+
"info.better_client.tooltip.compass.lodestone_position", getPositionComponent(pos.pos())));
4746
return;
4847
}
4948

50-
components.add(ItemUtils.createTooltip("info.better_client.tooltip.compass.lodestone_position.other_dimension",
51-
getPositionComponentWithDimension(location, pos.pos())
52-
));
49+
components.add(ItemUtils.createTooltip(
50+
"info.better_client.tooltip.compass.lodestone_position.other_dimension",
51+
getPositionComponentWithDimension(location, pos.pos())));
5352
});
5453
return;
5554
}
5655

5756
if (!config.enableNormalCompassTooltip) return;
5857

5958
if (level != null && level.dimensionType().natural()) {
60-
GlobalPos spawnPosition = GlobalPos.of(level.dimension(), level.getRespawnData().pos());
61-
components.add(ItemUtils.createTooltip("info.better_client.tooltip.compass.spawn_position",
62-
getPositionComponent(spawnPosition.pos())
63-
));
59+
GlobalPos spawnPosition =
60+
GlobalPos.of(level.dimension(), level.getRespawnData().pos());
61+
components.add(ItemUtils.createTooltip(
62+
"info.better_client.tooltip.compass.spawn_position", getPositionComponent(spawnPosition.pos())));
6463
}
6564
}
6665

@@ -80,37 +79,37 @@ public static void getRecoveryCompassTooltip(List<Component> components) {
8079
Level level = Minecraft.getInstance().level;
8180

8281
if (level != null && location.equals(level.dimension().location())) {
83-
components.add(ItemUtils.createTooltip("info.better_client.tooltip.recovery_compass.death_location",
84-
getPositionComponent(deathLocation.pos())
85-
));
82+
components.add(ItemUtils.createTooltip(
83+
"info.better_client.tooltip.recovery_compass.death_location",
84+
getPositionComponent(deathLocation.pos())));
8685
return;
8786
}
8887

89-
components.add(ItemUtils.createTooltip("info.better_client.tooltip.recovery_compass.death_location.other_dimension",
90-
getPositionComponentWithDimension(location, deathLocation.pos())
91-
));
88+
components.add(ItemUtils.createTooltip(
89+
"info.better_client.tooltip.recovery_compass.death_location.other_dimension",
90+
getPositionComponentWithDimension(location, deathLocation.pos())));
9291
}
9392

9493
public static Object[] getPositionComponent(BlockPos pos) {
95-
return new Object[]{
96-
Component.literal(String.valueOf(pos.getX())).withStyle(ChatFormatting.WHITE),
97-
Component.literal(String.valueOf(pos.getY())).withStyle(ChatFormatting.WHITE),
98-
Component.literal(String.valueOf(pos.getZ())).withStyle(ChatFormatting.WHITE)
94+
return new Object[] {
95+
Component.literal(String.valueOf(pos.getX())).withStyle(ChatFormatting.WHITE),
96+
Component.literal(String.valueOf(pos.getY())).withStyle(ChatFormatting.WHITE),
97+
Component.literal(String.valueOf(pos.getZ())).withStyle(ChatFormatting.WHITE)
9998
};
10099
}
101100

102101
public static Object[] getPositionComponentWithDimension(ResourceLocation location, BlockPos pos) {
103102
MutableComponent dimensionName = Component.translatable(location.toString());
104103

105104
if (location.getNamespace().equals("minecraft")) {
106-
dimensionName = Component.translatable(String.format("info.better_client.tooltip.dimension.%s", location.getPath()));
107-
105+
dimensionName = Component.translatable(
106+
String.format("info.better_client.tooltip.dimension.%s", location.getPath()));
108107
}
109-
return new Object[]{
110-
dimensionName.withStyle(ChatFormatting.WHITE),
111-
Component.literal(String.valueOf(pos.getX())).withStyle(ChatFormatting.WHITE),
112-
Component.literal(String.valueOf(pos.getY())).withStyle(ChatFormatting.WHITE),
113-
Component.literal(String.valueOf(pos.getZ())).withStyle(ChatFormatting.WHITE)
108+
return new Object[] {
109+
dimensionName.withStyle(ChatFormatting.WHITE),
110+
Component.literal(String.valueOf(pos.getX())).withStyle(ChatFormatting.WHITE),
111+
Component.literal(String.valueOf(pos.getY())).withStyle(ChatFormatting.WHITE),
112+
Component.literal(String.valueOf(pos.getZ())).withStyle(ChatFormatting.WHITE)
114113
};
115114
}
116115
}

common/src/main/java/com/euphony/better_client/client/events/DurabilityTooltipEvent.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,44 @@
11
package com.euphony.better_client.client.events;
22

3+
import static com.euphony.better_client.BetterClient.config;
4+
35
import com.euphony.better_client.utils.ItemUtils;
46
import com.euphony.better_client.utils.enums.TooltipCategory;
7+
import java.util.List;
58
import net.minecraft.ChatFormatting;
69
import net.minecraft.network.chat.Component;
710
import net.minecraft.network.chat.MutableComponent;
811
import net.minecraft.world.item.Item;
912
import net.minecraft.world.item.ItemStack;
1013
import net.minecraft.world.item.TooltipFlag;
1114

12-
import java.util.List;
13-
14-
import static com.euphony.better_client.BetterClient.config;
15-
1615
public class DurabilityTooltipEvent {
17-
public static void tooltip(ItemStack itemStack, List<Component> components, Item.TooltipContext context, TooltipFlag tooltipFlag) {
18-
if(!config.enableDurabilityTooltip) return;
16+
public static void tooltip(
17+
ItemStack itemStack, List<Component> components, Item.TooltipContext context, TooltipFlag tooltipFlag) {
18+
if (!config.enableDurabilityTooltip) return;
1919

20-
if((config.showDurabilityWhenNotDamaged || itemStack.isDamaged())
21-
&& itemStack.isDamageableItem()) {
20+
if ((config.showDurabilityWhenNotDamaged || itemStack.isDamaged()) && itemStack.isDamageableItem()) {
2221
int maxDurability = itemStack.getMaxDamage();
2322
int durability = maxDurability - itemStack.getDamageValue();
2423

25-
switch(TooltipCategory.NUMBER) {
24+
switch (TooltipCategory.NUMBER) {
2625
case TooltipCategory.NUMBER:
27-
Component durabilityComponent = Component.literal(Integer.toString(durability)).withColor(itemStack.getItem().getBarColor(itemStack));
28-
Component maxDurabilityComponent = Component.literal(Integer.toString(maxDurability)).withStyle(ChatFormatting.GRAY);
26+
Component durabilityComponent = Component.literal(Integer.toString(durability))
27+
.withColor(itemStack.getItem().getBarColor(itemStack));
28+
Component maxDurabilityComponent =
29+
Component.literal(Integer.toString(maxDurability)).withStyle(ChatFormatting.GRAY);
2930
MutableComponent number;
30-
if(durability == maxDurability)
31-
number = ItemUtils.createTooltip("info.better_client.durability_tooltip.number.full_durability", maxDurabilityComponent);
31+
if (durability == maxDurability)
32+
number = ItemUtils.createTooltip(
33+
"info.better_client.durability_tooltip.number.full_durability", maxDurabilityComponent);
3234
else
33-
number = ItemUtils.createTooltip("info.better_client.durability_tooltip.number.damaged", durabilityComponent, maxDurabilityComponent);
34-
if(config.showDurabilityHint)
35-
number = Component.translatable("info.better_client.durability_tooltip.number.durability_hint", number);
35+
number = ItemUtils.createTooltip(
36+
"info.better_client.durability_tooltip.number.damaged",
37+
durabilityComponent,
38+
maxDurabilityComponent);
39+
if (config.showDurabilityHint)
40+
number = Component.translatable(
41+
"info.better_client.durability_tooltip.number.durability_hint", number);
3642
components.add(number);
3743
break;
3844
}

0 commit comments

Comments
 (0)