Skip to content

Commit 818ad4a

Browse files
authored
Fix guide item crash when no ID is attached (#29)
1 parent 3daec53 commit 818ad4a

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

docs/docs/changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11

22
# Changelog
33

4+
## 2.3.1
5+
6+
- Fixes a crash with the generic guide item if it has no guide id attached
7+
48
## 2.3.0
59

610
- GuideME is now published on Maven Central instead of Modmaven

src/main/java/guideme/internal/item/GuideItem.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import net.minecraft.world.item.ItemStack;
1414
import net.minecraft.world.item.TooltipFlag;
1515
import net.minecraft.world.level.Level;
16+
import org.jetbrains.annotations.Nullable;
1617

1718
public class GuideItem extends Item {
1819
public static final ResourceLocation ID = GuideME.makeId("guide");
@@ -26,30 +27,34 @@ public GuideItem(Properties properties) {
2627

2728
@Override
2829
public Component getName(ItemStack stack) {
29-
var guideId = stack.get(GuideME.GUIDE_ID_COMPONENT);
30-
var name = GuideMEProxy.instance().getGuideDisplayName(guideId);
31-
if (name != null) {
32-
return name;
30+
var guideId = getGuideId(stack);
31+
if (guideId != null) {
32+
var name = GuideMEProxy.instance().getGuideDisplayName(guideId);
33+
if (name != null) {
34+
return name;
35+
}
3336
}
3437
return super.getName(stack);
3538
}
3639

3740
@Override
3841
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> lines,
3942
TooltipFlag tooltipFlag) {
40-
var guideId = stack.get(GuideME.GUIDE_ID_COMPONENT);
41-
GuideMEProxy.instance().addGuideTooltip(
42-
guideId,
43-
context,
44-
lines,
45-
tooltipFlag);
43+
var guideId = getGuideId(stack);
44+
if (guideId != null) {
45+
GuideMEProxy.instance().addGuideTooltip(
46+
guideId,
47+
context,
48+
lines,
49+
tooltipFlag);
50+
}
4651
}
4752

4853
@Override
4954
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
5055
var stack = player.getItemInHand(hand);
5156

52-
var guideId = player.getItemInHand(hand).get(GuideME.GUIDE_ID_COMPONENT);
57+
var guideId = getGuideId(player.getItemInHand(hand));
5358

5459
if (level.isClientSide) {
5560
if (guideId == null) {
@@ -61,4 +66,9 @@ public InteractionResultHolder<ItemStack> use(Level level, Player player, Intera
6166

6267
return InteractionResultHolder.success(stack);
6368
}
69+
70+
@Nullable
71+
public static ResourceLocation getGuideId(ItemStack stack) {
72+
return stack.get(GuideME.GUIDE_ID_COMPONENT);
73+
}
6474
}

src/main/java/guideme/internal/item/GuideItemDispatchUnbakedModel.java

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

33
import com.google.common.cache.CacheBuilder;
44
import com.google.common.cache.CacheLoader;
5-
import guideme.internal.GuideME;
65
import guideme.internal.GuideRegistry;
76
import java.util.function.Function;
87
import net.minecraft.client.multiplayer.ClientLevel;
@@ -43,7 +42,7 @@ public BakedModel load(ResourceLocation modelId) {
4342
@Override
4443
public @Nullable BakedModel resolve(BakedModel model, ItemStack stack, @Nullable ClientLevel level,
4544
@Nullable LivingEntity entity, int seed) {
46-
var guideId = stack.get(GuideME.GUIDE_ID_COMPONENT);
45+
var guideId = GuideItem.getGuideId(stack);
4746
if (guideId != null) {
4847
var guide = GuideRegistry.getById(guideId);
4948
if (guide != null && guide.getItemSettings().itemModel().isPresent()) {

0 commit comments

Comments
 (0)