添加滚轮缩放瞄准倍率功能,删除迫击炮GUI,优化迫击炮操作方式

This commit is contained in:
Atsuihsio 2024-06-18 00:44:38 +08:00
parent 58a12c2cf9
commit 22a54742d6
16 changed files with 174 additions and 271 deletions

View file

@ -14,7 +14,7 @@ def getGitCommitHash() {
return stdout.toString().trim() return stdout.toString().trim()
} }
version = '0.1.3-SNAPSHOT-' + getGitCommitHash() version = '0.1.4-SNAPSHOT-' + getGitCommitHash()
group = 'com.Atsushio.target' group = 'com.Atsushio.target'
archivesBaseName = 'target' archivesBaseName = 'target'

View file

@ -95,13 +95,14 @@ public class TargetMod {
addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::buffer, DoubleJumpMessage::new, DoubleJumpMessage::handler); addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::buffer, DoubleJumpMessage::new, DoubleJumpMessage::handler);
addNetworkMessage(GunsDataMessage.class, GunsDataMessage::encode, GunsDataMessage::decode, GunsDataMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(GunsDataMessage.class, GunsDataMessage::encode, GunsDataMessage::decode, GunsDataMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(FireMessage.class, FireMessage::buffer, FireMessage::new, FireMessage::handler); addNetworkMessage(FireMessage.class, FireMessage::buffer, FireMessage::new, FireMessage::handler);
addNetworkMessage(MortarGUIButtonMessage.class, MortarGUIButtonMessage::buffer, MortarGUIButtonMessage::new, MortarGUIButtonMessage::handler);
addNetworkMessage(FireModeMessage.class, FireModeMessage::buffer, FireModeMessage::new, FireModeMessage::handler); addNetworkMessage(FireModeMessage.class, FireModeMessage::buffer, FireModeMessage::new, FireModeMessage::handler);
addNetworkMessage(GunRecycleGuiButtonMessage.class, GunRecycleGuiButtonMessage::buffer, GunRecycleGuiButtonMessage::new, GunRecycleGuiButtonMessage::handler); addNetworkMessage(GunRecycleGuiButtonMessage.class, GunRecycleGuiButtonMessage::buffer, GunRecycleGuiButtonMessage::new, GunRecycleGuiButtonMessage::handler);
addNetworkMessage(ReloadMessage.class, ReloadMessage::buffer, ReloadMessage::new, ReloadMessage::handler); addNetworkMessage(ReloadMessage.class, ReloadMessage::buffer, ReloadMessage::new, ReloadMessage::handler);
addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(SensitivityMessage.class, SensitivityMessage::encode, SensitivityMessage::decode, SensitivityMessage::handler); addNetworkMessage(SensitivityMessage.class, SensitivityMessage::encode, SensitivityMessage::decode, SensitivityMessage::handler);
addNetworkMessage(AdjustZoomFovMessage.class, AdjustZoomFovMessage::encode, AdjustZoomFovMessage::decode, AdjustZoomFovMessage::handler);
addNetworkMessage(AdjustMortarAngleMessage.class, AdjustMortarAngleMessage::encode, AdjustMortarAngleMessage::decode, AdjustMortarAngleMessage::handler);
event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)), event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)),
Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), TargetModPotion.SHOCK.get()))); Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), TargetModPotion.SHOCK.get())));

View file

@ -2,18 +2,22 @@ package net.mcreator.target.client;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.MortarEntity;
import net.mcreator.target.entity.Target1Entity;
import net.mcreator.target.entity.TargetEntity;
import net.mcreator.target.init.TargetModKeyMappings; import net.mcreator.target.init.TargetModKeyMappings;
import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModMobEffects;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.item.gun.GunItem; import net.mcreator.target.item.gun.GunItem;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.FireMessage; import net.mcreator.target.network.message.*;
import net.mcreator.target.network.message.SensitivityMessage; import net.mcreator.target.tools.TraceTool;
import net.mcreator.target.network.message.ZoomMessage;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@ -106,11 +110,29 @@ public class ClickHandler {
@SubscribeEvent @SubscribeEvent
public static void onMouseScrolling(InputEvent.MouseScrollingEvent event) { public static void onMouseScrolling(InputEvent.MouseScrollingEvent event) {
if (notInGame()) return;
Player player = Minecraft.getInstance().player; Player player = Minecraft.getInstance().player;
ItemStack stack = player.getMainHandItem();
var tag = stack.getOrCreateTag();
double scroll = event.getScrollDelta();
if (notInGame()) return;
if (player == null) return; if (player == null) return;
if (stack.is(TargetModTags.Items.GUN) && (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zoom) {
if (tag.getDouble("min_zoom") != 0 && tag.getDouble("max_zoom") != 0) {
TargetMod.PACKET_HANDLER.sendToServer(new AdjustZoomFovMessage(scroll));
}
event.setCanceled(true);
}
Entity looking = TraceTool.findLookingEntity(player, 6);
if (looking == null) return;
if (looking instanceof MortarEntity && player.isShiftKeyDown()){
TargetMod.PACKET_HANDLER.sendToServer(new AdjustMortarAngleMessage(scroll));
event.setCanceled(true);
}
if (Minecraft.getInstance().player.hasEffect(TargetModMobEffects.SHOCK.get())) { if (Minecraft.getInstance().player.hasEffect(TargetModMobEffects.SHOCK.get())) {
event.setCanceled(true); event.setCanceled(true);
} }

View file

@ -1,137 +0,0 @@
package net.mcreator.target.client.gui;
import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.target.TargetMod;
import net.mcreator.target.network.message.MortarGUIButtonMessage;
import net.mcreator.target.tools.TraceTool;
import net.mcreator.target.world.inventory.MortarGUIMenu;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import java.text.DecimalFormat;
import java.util.HashMap;
public class MortarGUIScreen extends AbstractContainerScreen<MortarGUIMenu> {
private final static HashMap<String, Object> GUI_STATE = MortarGUIMenu.GUI_STATE;
private final int x, y, z;
private final Player entity;
Button button_angle_add_1;
Button button_angle_reduce_1;
Button button_angle_add_10;
Button button_angle_reduce_10;
Button button_angle_reduce_05;
Button button_angle_add_05;
public MortarGUIScreen(MortarGUIMenu container, Inventory inventory, Component text) {
super(container, inventory, text);
this.x = container.x;
this.y = container.y;
this.z = container.z;
this.entity = container.entity;
this.imageWidth = 0;
this.imageHeight = 166;
}
private static final ResourceLocation texture = new ResourceLocation("target:textures/screens/mortar_gui.png");
@Override
public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
this.renderBackground(guiGraphics);
super.render(guiGraphics, mouseX, mouseY, partialTicks);
this.renderTooltip(guiGraphics, mouseX, mouseY);
}
@Override
protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) {
RenderSystem.setShaderColor(1, 1, 1, 1);
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
guiGraphics.blit(texture, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
RenderSystem.disableBlend();
}
@Override
public boolean keyPressed(int key, int b, int c) {
if (key == 256) {
if (this.minecraft != null && this.minecraft.player != null) {
this.minecraft.player.closeContainer();
}
return true;
}
return super.keyPressed(key, b, c);
}
@Override
public void containerTick() {
super.containerTick();
}
private String getAngleString(Entity entity) {
if (entity == null) return "";
Entity mortar = TraceTool.findLookingEntity(entity, 6);
if (mortar == null) return "";
return "Angle: " + new DecimalFormat("##.#").format(-mortar.getXRot());
}
@Override
protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
guiGraphics.drawString(this.font, getAngleString(entity), -18, 98, -1, false);
Entity looking = TraceTool.findLookingEntity(entity, 6);
var range = looking == null ? 0 : -looking.getXRot();
guiGraphics.drawString(this.font, Component.literal("Range:" + (int) RangeHelper.getRange(range)), -18, 108, -16711885, false);
}
@Override
public void onClose() {
super.onClose();
}
@Override
public void init() {
super.init();
button_angle_add_1 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_add_1"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(0, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 0);
}).bounds(this.leftPos + 42, this.topPos + 124, 29, 20).build();
GUI_STATE.put("button:button_angle_add_1", button_angle_add_1);
this.addRenderableWidget(button_angle_add_1);
button_angle_reduce_1 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_reduce_1"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(1, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 1);
}).bounds(this.leftPos - 73, this.topPos + 124, 30, 20).build();
GUI_STATE.put("button:button_angle_reduce_1", button_angle_reduce_1);
this.addRenderableWidget(button_angle_reduce_1);
button_angle_add_10 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_add_10"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(2, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 2);
}).bounds(this.leftPos + 43, this.topPos + 151, 28, 20).build();
GUI_STATE.put("button:button_angle_add_10", button_angle_add_10);
this.addRenderableWidget(button_angle_add_10);
button_angle_reduce_10 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_reduce_10"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(3, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 3);
}).bounds(this.leftPos - 73, this.topPos + 151, 30, 20).build();
GUI_STATE.put("button:button_angle_reduce_10", button_angle_reduce_10);
this.addRenderableWidget(button_angle_reduce_10);
button_angle_reduce_05 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_reduce_05"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(4, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 4);
}).bounds(this.leftPos - 73, this.topPos + 97, 30, 20).build();
GUI_STATE.put("button:button_angle_reduce_05", button_angle_reduce_05);
this.addRenderableWidget(button_angle_reduce_05);
button_angle_add_05 = Button.builder(Component.translatable("gui.target.mortar_gui.button_angle_add_05"), e -> {
TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(5, x, y, z));
MortarGUIButtonMessage.handleButtonAction(entity, 5);
}).bounds(this.leftPos + 42, this.topPos + 97, 29, 20).build();
GUI_STATE.put("button:button_angle_add_05", button_angle_add_05);
this.addRenderableWidget(button_angle_add_05);
}
}

View file

@ -159,36 +159,19 @@ public class MortarEntity extends PathfinderMob implements GeoEntity, AnimatedEn
@Override @Override
public InteractionResult mobInteract(Player player, InteractionHand hand) { public InteractionResult mobInteract(Player player, InteractionHand hand) {
super.mobInteract(player, hand); super.mobInteract(player, hand);
double x = this.getX();
double y = this.getY();
double z = this.getZ();
ItemStack mainHandItem = player.getMainHandItem(); ItemStack mainHandItem = player.getMainHandItem();
if (mainHandItem.getItem() == ItemStack.EMPTY.getItem()) { if (player.isShiftKeyDown()) {
if (player.isShiftKeyDown()) { this.setYRot(player.getYRot());
this.setYRot(player.getYRot()); this.setXRot(this.getXRot());
this.setXRot(this.getXRot()); this.setYBodyRot(this.getYRot());
this.setYBodyRot(this.getYRot()); this.setYHeadRot(this.getYRot());
this.setYHeadRot(this.getYRot()); this.yRotO = this.getYRot();
this.yRotO = this.getYRot(); this.xRotO = this.getXRot();
this.xRotO = this.getXRot(); this.yBodyRotO = this.getYRot();
this.yBodyRotO = this.getYRot(); this.yHeadRotO = this.getYRot();
this.yHeadRotO = this.getYRot();
} else if (player instanceof ServerPlayer serverPlayer) {
NetworkHooks.openScreen(serverPlayer, new MenuProvider() {
@Override
public Component getDisplayName() {
return Component.literal("MortarGUI");
}
@Override
public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
return new MortarGUIMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(BlockPos.containing(x, y, z)));
}
}, BlockPos.containing(x, y, z));
}
} }
if (mainHandItem.getItem() == TargetModItems.MORTAR_SHELLS.get() && !player.getCooldowns().isOnCooldown(TargetModItems.MORTAR_SHELLS.get())) { if (mainHandItem.getItem() == TargetModItems.MORTAR_SHELLS.get() && !player.getCooldowns().isOnCooldown(TargetModItems.MORTAR_SHELLS.get()) && !player.isShiftKeyDown()) {
player.getCooldowns().addCooldown(TargetModItems.MORTAR_SHELLS.get(), 30); player.getCooldowns().addCooldown(TargetModItems.MORTAR_SHELLS.get(), 30);
if (!player.isCreative()) { if (!player.isCreative()) {
player.getInventory().clearOrCountMatchingItems(p -> TargetModItems.MORTAR_SHELLS.get() == p.getItem(), 1, player.inventoryMenu.getCraftSlots()); player.getInventory().clearOrCountMatchingItems(p -> TargetModItems.MORTAR_SHELLS.get() == p.getItem(), 1, player.inventoryMenu.getCraftSlots());

View file

@ -1,6 +1,7 @@
package net.mcreator.target.event; package net.mcreator.target.event;
import net.mcreator.target.init.TargetModAttributes; import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModMobEffects;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
@ -385,7 +386,8 @@ public class ClientEventHandler {
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
double p = player.getPersistentData().getDouble("zoom_pos"); double p = player.getPersistentData().getDouble("zoom_pos");
double zoom = stack.getOrCreateTag().getDouble("zoom");
double zoom = stack.getOrCreateTag().getDouble("zoom") + stack.getOrCreateTag().getDouble("custom_zoom");
if (stack.is(TargetModTags.Items.GUN)) { if (stack.is(TargetModTags.Items.GUN)) {
event.setFOV(event.getFOV() / (1.0 + p * (zoom - 1))); event.setFOV(event.getFOV() / (1.0 + p * (zoom - 1)));

View file

@ -1,7 +1,6 @@
package net.mcreator.target.init; package net.mcreator.target.init;
import net.mcreator.target.client.gui.GunRecycleGuiScreen; import net.mcreator.target.client.gui.GunRecycleGuiScreen;
import net.mcreator.target.client.gui.MortarGUIScreen;
import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -13,7 +12,6 @@ public class TargetModScreens {
@SubscribeEvent @SubscribeEvent
public static void clientLoad(FMLClientSetupEvent event) { public static void clientLoad(FMLClientSetupEvent event) {
event.enqueueWork(() -> { event.enqueueWork(() -> {
MenuScreens.register(TargetModMenus.MORTAR_GUI.get(), MortarGUIScreen::new);
MenuScreens.register(TargetModMenus.GUN_RECYCLE_GUI.get(), GunRecycleGuiScreen::new); MenuScreens.register(TargetModMenus.GUN_RECYCLE_GUI.get(), GunRecycleGuiScreen::new);
}); });
} }

View file

@ -181,5 +181,6 @@ public class TargetModSounds {
public static final RegistryObject<SoundEvent> M_870_VERYFAR = REGISTRY.register("m_870_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_veryfar"))); public static final RegistryObject<SoundEvent> M_870_VERYFAR = REGISTRY.register("m_870_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_veryfar")));
public static final RegistryObject<SoundEvent> M_870_PREPARE_ALT = REGISTRY.register("m_870_preparealt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_preparealt"))); public static final RegistryObject<SoundEvent> M_870_PREPARE_ALT = REGISTRY.register("m_870_preparealt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_preparealt")));
public static final RegistryObject<SoundEvent> M_870_RELOAD_LOOP = REGISTRY.register("m_870_reloadloop", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_reloadloop"))); public static final RegistryObject<SoundEvent> M_870_RELOAD_LOOP = REGISTRY.register("m_870_reloadloop", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_870_reloadloop")));
public static final RegistryObject<SoundEvent> BULLET_SUPPLY = REGISTRY.register("bulletsupply", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "bulletsupply"))); public static final RegistryObject<SoundEvent> BULLET_SUPPLY = REGISTRY.register("bullet_supply", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "bullet_supply")));
public static final RegistryObject<SoundEvent> ADJUST_FOV = REGISTRY.register("adjust_fov", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "adjust_fov")));
} }

View file

@ -0,0 +1,61 @@
package net.mcreator.target.network.message;
import net.mcreator.target.client.gui.RangeHelper;
import net.mcreator.target.entity.MortarEntity;
import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.tools.SoundTool;
import net.mcreator.target.tools.TraceTool;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class AdjustMortarAngleMessage {
private final double scroll;
public AdjustMortarAngleMessage(double scroll) {
this.scroll = scroll;
}
public static void encode(AdjustMortarAngleMessage message, FriendlyByteBuf byteBuf) {
byteBuf.writeDouble(message.scroll);
}
public static AdjustMortarAngleMessage decode(FriendlyByteBuf byteBuf) {
return new AdjustMortarAngleMessage(byteBuf.readDouble());
}
public static void handler(AdjustMortarAngleMessage message, Supplier<NetworkEvent.Context> context) {
context.get().enqueueWork(() -> {
ServerPlayer player = context.get().getSender();
if (player == null) {
return;
}
Entity looking = TraceTool.findLookingEntity(player, 6);
if (looking == null) return;
double angle = 0;
if (looking instanceof LivingEntity living){
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue(Mth.clamp(living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() + message.scroll,20,89));
angle = living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue();
}
var range = -looking.getXRot();
player.displayClientMessage(Component.literal("Angle:" + new java.text.DecimalFormat("##.#").format(angle) + " Range:" + new java.text.DecimalFormat("##.#").format((int) RangeHelper.getRange(range)) + "M"), true);
SoundTool.playLocalSound(player, TargetModSounds.ADJUST_FOV.get(), 1f, 0.7f);
});
context.get().setPacketHandled(true);
}
}

View file

@ -0,0 +1,53 @@
package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.tools.SoundTool;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class AdjustZoomFovMessage {
private final double scroll;
public AdjustZoomFovMessage(double scroll) {
this.scroll = scroll;
}
public static void encode(AdjustZoomFovMessage message, FriendlyByteBuf byteBuf) {
byteBuf.writeDouble(message.scroll);
}
public static AdjustZoomFovMessage decode(FriendlyByteBuf byteBuf) {
return new AdjustZoomFovMessage(byteBuf.readDouble());
}
public static void handler(AdjustZoomFovMessage message, Supplier<NetworkEvent.Context> context) {
context.get().enqueueWork(() -> {
ServerPlayer player = context.get().getSender();
if (player == null) {
return;
}
ItemStack stack = player.getMainHandItem();
var tag = stack.getOrCreateTag();
if (!stack.is(TargetModTags.Items.GUN)) {
return;
}
double min_zoom = tag.getDouble("min_zoom") - tag.getDouble("zoom");
double max_zoom = tag.getDouble("max_zoom") - tag.getDouble("zoom");
tag.putDouble("custom_zoom", Mth.clamp(tag.getDouble("custom_zoom") + 0.5 * message.scroll, min_zoom,max_zoom));
if (tag.getDouble("custom_zoom") > min_zoom && tag.getDouble("custom_zoom") < max_zoom) {
SoundTool.playLocalSound(player, TargetModSounds.ADJUST_FOV.get(), 1f, 0.7f);
}
});
context.get().setPacketHandled(true);
}
}

View file

@ -1,95 +0,0 @@
package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.tools.TraceTool;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class MortarGUIButtonMessage {
private final int buttonID, x, y, z;
public MortarGUIButtonMessage(FriendlyByteBuf buffer) {
this.buttonID = buffer.readInt();
this.x = buffer.readInt();
this.y = buffer.readInt();
this.z = buffer.readInt();
}
public MortarGUIButtonMessage(int buttonID, int x, int y, int z) {
this.buttonID = buttonID;
this.x = x;
this.y = y;
this.z = z;
}
public static void buffer(MortarGUIButtonMessage message, FriendlyByteBuf buffer) {
buffer.writeInt(message.buttonID);
buffer.writeInt(message.x);
buffer.writeInt(message.y);
buffer.writeInt(message.z);
}
public static void handler(MortarGUIButtonMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
NetworkEvent.Context context = contextSupplier.get();
context.enqueueWork(() -> {
Player entity = context.getSender();
if (entity == null) return;
int buttonID = message.buttonID;
int x = message.x;
int y = message.y;
int z = message.z;
if (!entity.level().isLoaded(new BlockPos(x, y, z))) return;
handleButtonAction(entity, buttonID);
});
context.setPacketHandled(true);
}
public static void handleButtonAction(Player player, int buttonID) {
Entity looking = TraceTool.findLookingEntity(player, 6);
if (looking == null) return;
if (looking instanceof LivingEntity living) {
switch (buttonID) {
case 0 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() < 89) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() + 1));
}
}
case 1 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() > 21) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() - 1));
}
}
case 2 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() < 78) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() + 10));
}
}
case 3 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() > 31) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() - 10));
}
}
case 4 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() > 20.5) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() - 0.5));
}
}
case 5 -> {
if (living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() < 88.5) {
living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).setBaseValue((living.getAttribute(TargetModAttributes.MORTAR_PITCH.get()).getBaseValue() + 0.5));
}
}
}
}
}
}

View file

@ -1514,5 +1514,13 @@
"stream": false "stream": false
} }
] ]
},
"adjust_fov": {
"sounds": [
{
"name": "target:adjust_fov",
"stream": false
}
]
} }
} }

Binary file not shown.

View file

@ -1,6 +1,8 @@
{ {
"zoom_speed": 0.6, "zoom_speed": 0.6,
"zoom": 6, "zoom": 6,
"min_zoom": 4,
"max_zoom": 10,
"bipod": 1, "bipod": 1,
"dev": 6, "dev": 6,
"recoil_x": 0.008, "recoil_x": 0.008,

View file

@ -1,6 +1,8 @@
{ {
"zoom_speed": 0.75, "zoom_speed": 0.75,
"zoom": 8, "zoom": 6,
"min_zoom": 4,
"max_zoom": 8,
"dev": 6, "dev": 6,
"recoil_x": 0.007, "recoil_x": 0.007,
"recoil_y": 0.013, "recoil_y": 0.013,

View file

@ -1,6 +1,8 @@
{ {
"zoom_speed": 0.85, "zoom_speed": 0.85,
"zoom": 4, "zoom": 4,
"min_zoom": 1.25,
"max_zoom": 6,
"dev": 6, "dev": 6,
"bipod": 1, "bipod": 1,
"recoil_x": 0.006, "recoil_x": 0.006,