添加新的接口
This commit is contained in:
parent
8c7169a01a
commit
2f0866e00b
4 changed files with 48 additions and 8 deletions
|
@ -13,6 +13,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.WeaponVehicleEntity;
|
|||
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||
import com.atsuishio.superbwarfare.event.ClientMouseHandler;
|
||||
import com.atsuishio.superbwarfare.init.*;
|
||||
import com.atsuishio.superbwarfare.item.ItemScreenProvider;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.network.message.send.*;
|
||||
import com.atsuishio.superbwarfare.tools.NBTTool;
|
||||
|
@ -272,14 +273,21 @@ public class ClickHandler {
|
|||
if (key == ModKeyMappings.DISMOUNT.getKey().getValue()) {
|
||||
handleDismountPress(player);
|
||||
}
|
||||
if (key == ModKeyMappings.EDIT_MODE.getKey().getValue() && ClientEventHandler.burstFireAmount == 0
|
||||
&& stack.getItem() instanceof GunItem gunItem && gunItem.isCustomizable(stack)) {
|
||||
ClientEventHandler.holdFire = false;
|
||||
if (key == ModKeyMappings.EDIT_MODE.getKey().getValue()) {
|
||||
if (ClientEventHandler.burstFireAmount == 0 && stack.getItem() instanceof GunItem gunItem && gunItem.isCustomizable(stack)) {
|
||||
ClientEventHandler.holdFire = false;
|
||||
|
||||
if (!isEditing) {
|
||||
player.playSound(ModSounds.EDIT_MODE.get(), 1, 1);
|
||||
if (!isEditing) {
|
||||
player.playSound(ModSounds.EDIT_MODE.get(), 1, 1);
|
||||
}
|
||||
isEditing = !isEditing;
|
||||
}
|
||||
if (stack.getItem() instanceof ItemScreenProvider provider) {
|
||||
var screen = provider.getItemScreen(stack, player);
|
||||
if (screen != null) {
|
||||
Minecraft.getInstance().setScreen(screen);
|
||||
}
|
||||
}
|
||||
isEditing = !isEditing;
|
||||
}
|
||||
|
||||
if (key == ModKeyMappings.BREATH.getKey().getValue() && !exhaustion && zoom) {
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
package com.atsuishio.superbwarfare.client.screens;
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
// TODO 完成这个screen
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
@ -13,8 +15,13 @@ public class FiringParametersScreen extends Screen {
|
|||
public static final Component TITLE = Component.translatable("item.superbwarfare.firing_parameters");
|
||||
private final ItemStack stack;
|
||||
|
||||
protected FiringParametersScreen(ItemStack stack) {
|
||||
public FiringParametersScreen(ItemStack stack) {
|
||||
super(TITLE);
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(@NotNull GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
|
||||
super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.atsuishio.superbwarfare.item;
|
||||
|
||||
import com.atsuishio.superbwarfare.client.screens.FiringParametersScreen;
|
||||
import com.atsuishio.superbwarfare.component.ModDataComponents;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
|
@ -13,12 +15,15 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.minecraft.world.item.TooltipFlag;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
|
||||
public class FiringParameters extends Item {
|
||||
public class FiringParameters extends Item implements ItemScreenProvider {
|
||||
|
||||
public record Parameters(BlockPos pos, boolean isDepressed) {
|
||||
}
|
||||
|
@ -84,4 +89,10 @@ public class FiringParameters extends Item {
|
|||
: "tips.superbwarfare.mortar.target_pos.lofted_trajectory"
|
||||
).withStyle(ChatFormatting.GRAY));
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Override
|
||||
public @Nullable Screen getItemScreen(ItemStack stack, Player player) {
|
||||
return new FiringParametersScreen(stack);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.atsuishio.superbwarfare.item;
|
||||
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface ItemScreenProvider {
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Nullable Screen getItemScreen(ItemStack stack, Player player);
|
||||
}
|
Loading…
Add table
Reference in a new issue