使集装箱在JEI里正确显示

This commit is contained in:
Light_Quanta 2025-02-23 03:17:36 +08:00
parent cd6fb8e5eb
commit 3869cd084b
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
3 changed files with 30 additions and 11 deletions

View file

@ -38,6 +38,12 @@ public class SbwJEIPlugin implements IModPlugin {
@Override
public void registerItemSubtypes(ISubtypeRegistration registration) {
registration.registerSubtypeInterpreter(ModItems.CONTAINER.get(), (ingredient, context) -> {
assert ingredient.getTag() != null;
return ingredient.getTag().getCompound("BlockEntityTag").getString("EntityType");
}
);
registration.registerSubtypeInterpreter(ModItems.POTION_MORTAR_SHELL.get(), (stack, context) -> {
if (!stack.hasTag()) {
return IIngredientSubtypeInterpreter.NONE;

View file

@ -2,7 +2,6 @@ package com.atsuishio.superbwarfare.init;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.item.ArmorPlate;
import com.atsuishio.superbwarfare.item.ContainerBlockItem;
import com.atsuishio.superbwarfare.item.gun.handgun.*;
import com.atsuishio.superbwarfare.item.gun.launcher.JavelinItem;
import com.atsuishio.superbwarfare.item.gun.launcher.M79Item;
@ -36,6 +35,10 @@ import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
import java.util.function.Supplier;
import static com.atsuishio.superbwarfare.item.ContainerBlockItem.CONTAINER_ENTITIES;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModTabs {
@ -117,16 +120,7 @@ public class ModTabs {
.withTabsBefore(AMMO_TAB.getKey())
.displayItems((param, output) -> ModItems.ITEMS.getEntries().forEach(registryObject -> {
if (registryObject.get() == ModItems.CONTAINER.get()) {
output.accept(ContainerBlockItem.createInstance(ModEntities.MK_42.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.MLE_1934.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.ANNIHILATOR.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.LASER_TOWER.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.SPEEDBOAT.get(), true));
output.accept(ContainerBlockItem.createInstance(ModEntities.AH_6.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.LAV_150.get(), true));
output.accept(ContainerBlockItem.createInstance(ModEntities.BMP_2.get(), true));
output.accept(ContainerBlockItem.createInstance(ModEntities.WHEEL_CHAIR.get()));
output.accept(ContainerBlockItem.createInstance(ModEntities.TOM_6.get()));
CONTAINER_ENTITIES.stream().map(Supplier::get).forEach(output::accept);
} else {
output.accept(registryObject.get());
if (registryObject.get() == ModItems.ARMOR_PLATE.get()) {

View file

@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.item;
import com.atsuishio.superbwarfare.client.renderer.block.ContainerBlockItemRenderer;
import com.atsuishio.superbwarfare.init.ModBlockEntities;
import com.atsuishio.superbwarfare.init.ModBlocks;
import com.atsuishio.superbwarfare.init.ModEntities;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.InteractionHand;
@ -29,10 +30,28 @@ import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.core.object.PlayState;
import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class ContainerBlockItem extends BlockItem implements GeoItem {
/**
* 集装箱可用实体列表
*/
public static final List<Supplier<ItemStack>> CONTAINER_ENTITIES = List.of(
() -> ContainerBlockItem.createInstance(ModEntities.MK_42.get()),
() -> ContainerBlockItem.createInstance(ModEntities.MLE_1934.get()),
() -> ContainerBlockItem.createInstance(ModEntities.ANNIHILATOR.get()),
() -> ContainerBlockItem.createInstance(ModEntities.LASER_TOWER.get()),
() -> ContainerBlockItem.createInstance(ModEntities.SPEEDBOAT.get(), true),
() -> ContainerBlockItem.createInstance(ModEntities.AH_6.get()),
() -> ContainerBlockItem.createInstance(ModEntities.LAV_150.get(), true),
() -> ContainerBlockItem.createInstance(ModEntities.BMP_2.get(), true),
() -> ContainerBlockItem.createInstance(ModEntities.WHEEL_CHAIR.get()),
() -> ContainerBlockItem.createInstance(ModEntities.TOM_6.get())
);
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public ContainerBlockItem() {