From 0cf015bd7c173c0bae584534d2e7e0fff7ff50e9 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Wed, 26 Mar 2025 21:01:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E6=B3=A8=E5=86=8CMenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../block/ReforgingTableBlock.java | 19 ++++++++++++------- .../superbwarfare/init/ModItems.java | 2 +- .../superbwarfare/init/ModMenuTypes.java | 12 ++++++------ .../superbwarfare/init/ModScreens.java | 13 ++++++++----- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/block/ReforgingTableBlock.java b/src/main/java/com/atsuishio/superbwarfare/block/ReforgingTableBlock.java index 032c060bd..26b52b264 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/ReforgingTableBlock.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/ReforgingTableBlock.java @@ -1,11 +1,15 @@ package com.atsuishio.superbwarfare.block; +import com.atsuishio.superbwarfare.menu.ReforgingTableMenu; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.SimpleMenuProvider; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerLevelAccess; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -25,6 +29,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; +import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @SuppressWarnings("deprecation") @@ -118,11 +123,11 @@ public class ReforgingTableBlock extends Block { return super.updateShape(state, facing, facingState, world, currentPos, facingPos); } - // TODO Menu -// @Override -// @Nullable -// public MenuProvider getMenuProvider(BlockState pState, Level pLevel, BlockPos pPos) { -// return new SimpleMenuProvider((i, inventory, player) -> -// new ReforgingTableMenu(i, inventory, ContainerLevelAccess.create(pLevel, pPos)), CONTAINER_TITLE); -// } + @Override + @Nullable + @ParametersAreNonnullByDefault + public MenuProvider getMenuProvider(BlockState pState, Level pLevel, BlockPos pPos) { + return new SimpleMenuProvider((i, inventory, player) -> + new ReforgingTableMenu(i, inventory, ContainerLevelAccess.create(pLevel, pPos)), CONTAINER_TITLE); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java index 144c3fa49..bfbe7eb18 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java @@ -251,7 +251,7 @@ public class ModItems { public static final DeferredHolder TUNGSTEN_BLOCK = block(ModBlocks.TUNGSTEN_BLOCK); public static final DeferredHolder SILVER_BLOCK = block(ModBlocks.SILVER_BLOCK); public static final DeferredHolder CEMENTED_CARBIDE_BLOCK = block(ModBlocks.CEMENTED_CARBIDE_BLOCK); -// public static final DeferredHolder FUMO_25 = block(ModBlocks.FUMO_25); + public static final DeferredHolder FUMO_25 = block(ModBlocks.FUMO_25); /** * Perk Items diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModMenuTypes.java b/src/main/java/com/atsuishio/superbwarfare/init/ModMenuTypes.java index b1357b023..9ac0de46d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModMenuTypes.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModMenuTypes.java @@ -6,26 +6,26 @@ import com.atsuishio.superbwarfare.menu.FuMO25Menu; import com.atsuishio.superbwarfare.menu.ReforgingTableMenu; import com.atsuishio.superbwarfare.menu.VehicleMenu; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; import net.neoforged.neoforge.common.extensions.IMenuTypeExtension; -import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.function.Supplier; + public class ModMenuTypes { public static final DeferredRegister> REGISTRY = DeferredRegister.create(BuiltInRegistries.MENU, ModUtils.MODID); - public static final DeferredHolder, MenuType> REFORGING_TABLE_MENU = + public static final Supplier> REFORGING_TABLE_MENU = REGISTRY.register("reforging_table_menu", () -> IMenuTypeExtension.create((windowId, inv, data) -> new ReforgingTableMenu(windowId, inv))); - public static final DeferredHolder, MenuType> CHARGING_STATION_MENU = + public static final Supplier> CHARGING_STATION_MENU = REGISTRY.register("charging_station_menu", () -> IMenuTypeExtension.create((windowId, inv, data) -> new ChargingStationMenu(windowId, inv))); - public static final DeferredHolder, MenuType> VEHICLE_MENU = + public static final Supplier> VEHICLE_MENU = REGISTRY.register("vehicle_menu", () -> IMenuTypeExtension.create((windowId, inv, data) -> new VehicleMenu(windowId, inv))); - public static final DeferredHolder, MenuType> FUMO_25_MENU = + public static final Supplier> FUMO_25_MENU = REGISTRY.register("fumo_25_menu", () -> IMenuTypeExtension.create((windowId, inv, data) -> new FuMO25Menu(windowId, inv))); } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModScreens.java b/src/main/java/com/atsuishio/superbwarfare/init/ModScreens.java index 84746d4c5..f8f33d501 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModScreens.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModScreens.java @@ -1,6 +1,10 @@ package com.atsuishio.superbwarfare.init; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.screens.ChargingStationScreen; +import com.atsuishio.superbwarfare.client.screens.FuMO25Screen; +import com.atsuishio.superbwarfare.client.screens.ReforgingTableScreen; +import com.atsuishio.superbwarfare.client.screens.VehicleScreen; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -11,10 +15,9 @@ public class ModScreens { @SubscribeEvent public static void clientLoad(RegisterMenuScreensEvent event) { - // TODO 正确注册menu -// event.register(ModMenuTypes.REFORGING_TABLE_MENU.get(), ReforgingTableScreen::new); -// event.register(ModMenuTypes.CHARGING_STATION_MENU.get(), ChargingStationScreen::new); -// event.register(ModMenuTypes.VEHICLE_MENU.get(), VehicleScreen::new); -// event.register(ModMenuTypes.FUMO_25_MENU.get(), FuMO25Screen::new); + event.register(ModMenuTypes.REFORGING_TABLE_MENU.get(), ReforgingTableScreen::new); + event.register(ModMenuTypes.CHARGING_STATION_MENU.get(), ChargingStationScreen::new); + event.register(ModMenuTypes.VEHICLE_MENU.get(), VehicleScreen::new); + event.register(ModMenuTypes.FUMO_25_MENU.get(), FuMO25Screen::new); } }