From 23df8f7a2ff1428e2bdca5906d470eb0679d131d Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sat, 22 Jun 2024 19:47:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=89=8D=E7=BD=AE=E7=89=88?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=85=89=E5=89=91=E9=99=84?= =?UTF-8?q?=E9=AD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcreator.gradle | 2 +- .../target/event/ClientEventHandler.java | 22 ++++---- .../target/event/GunEventHandler.java | 3 +- .../target/event/PlayerEventHandler.java | 3 +- .../target/init/EntityAnimationFactory.java | 22 -------- .../target/init/ItemAnimationFactory.java | 53 ------------------- .../net/mcreator/target/item/LightSaber.java | 5 ++ 7 files changed, 21 insertions(+), 89 deletions(-) delete mode 100644 src/main/java/net/mcreator/target/init/EntityAnimationFactory.java delete mode 100644 src/main/java/net/mcreator/target/init/ItemAnimationFactory.java diff --git a/mcreator.gradle b/mcreator.gradle index 08befe200..033f074c4 100644 --- a/mcreator.gradle +++ b/mcreator.gradle @@ -34,7 +34,7 @@ repositories { } dependencies { - implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.20.1:4.4.4') + implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.20.1:4.4.6') } minecraft { diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index 02b4c3726..0454bb5b2 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -47,7 +47,7 @@ public class ClientEventHandler { public static void computeCameraAngles(ViewportEvent.ComputeCameraAngles event) { ClientLevel level = Minecraft.getInstance().level; Entity entity = event.getCamera().getEntity(); - if (level != null && entity instanceof LivingEntity living) { + if (level != null && entity instanceof LivingEntity living && living.getMainHandItem().is(TargetModTags.Items.GUN)) { handleWeaponCrossHair(living); handleWeaponSway(living); handleWeaponMove(living); @@ -374,24 +374,24 @@ public class ClientEventHandler { @SubscribeEvent public static void onFovUpdate(ViewportEvent.ComputeFov event) { - if (!event.usedConfiguredFov()) { - return; - } - Player player = Minecraft.getInstance().player; + ItemStack stack = player.getMainHandItem(); + if (player == null) { return; } - ItemStack stack = player.getMainHandItem(); - - double p = player.getPersistentData().getDouble("zoom_pos"); - - double zoom = stack.getOrCreateTag().getDouble("zoom") + stack.getOrCreateTag().getDouble("custom_zoom"); - if (stack.is(TargetModTags.Items.GUN)) { + if (!event.usedConfiguredFov()) { + return; + } + + double p = player.getPersistentData().getDouble("zoom_pos"); + double zoom = stack.getOrCreateTag().getDouble("zoom") + stack.getOrCreateTag().getDouble("custom_zoom"); + event.setFOV(event.getFOV() / (1.0 + p * (zoom - 1))); player.getPersistentData().putDouble("fov", event.getFOV()); + } } diff --git a/src/main/java/net/mcreator/target/event/GunEventHandler.java b/src/main/java/net/mcreator/target/event/GunEventHandler.java index 0b0e916f6..53a980fa7 100644 --- a/src/main/java/net/mcreator/target/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/target/event/GunEventHandler.java @@ -29,12 +29,13 @@ public class GunEventHandler { @SubscribeEvent public static void onPlayerTick(TickEvent.PlayerTickEvent event) { Player player = event.player; + ItemStack stack = player.getMainHandItem(); if (player == null) { return; } - if (event.phase == TickEvent.Phase.END) { + if (event.phase == TickEvent.Phase.END && stack.is(TargetModTags.Items.GUN)) { handleGunFire(player); handleMiniGunFire(player); } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index e06ed23c9..bd52971b8 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -48,12 +48,13 @@ public class PlayerEventHandler { @SubscribeEvent public static void onPlayerTick(TickEvent.PlayerTickEvent event) { Player player = event.player; + ItemStack stack = player.getMainHandItem(); if (player == null) { return; } - if (event.phase == TickEvent.Phase.END) { + if (event.phase == TickEvent.Phase.END && stack.is(TargetModTags.Items.GUN)) { handlePlayerProne(player); handlePlayerSprint(player); handleWeaponLevel(player); diff --git a/src/main/java/net/mcreator/target/init/EntityAnimationFactory.java b/src/main/java/net/mcreator/target/init/EntityAnimationFactory.java deleted file mode 100644 index 4831e4858..000000000 --- a/src/main/java/net/mcreator/target/init/EntityAnimationFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mcreator.target.init; - -import net.mcreator.target.entity.AnimatedEntity; -import net.minecraftforge.event.entity.living.LivingEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber -public class EntityAnimationFactory { - @SubscribeEvent - public static void onEntityTick(LivingEvent.LivingTickEvent event) { - if (event == null || event.getEntity() == null) return; - - if (event.getEntity() instanceof AnimatedEntity entity) { - String animation = entity.getSyncedAnimation(); - if (!animation.equals("undefined")) { - entity.setAnimation("undefined"); - entity.setAnimationProcedure(animation); - } - } - } -} diff --git a/src/main/java/net/mcreator/target/init/ItemAnimationFactory.java b/src/main/java/net/mcreator/target/init/ItemAnimationFactory.java deleted file mode 100644 index 435e8c0c0..000000000 --- a/src/main/java/net/mcreator/target/init/ItemAnimationFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.mcreator.target.init; - -import net.mcreator.target.item.AnimatedItem; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import software.bernie.geckolib.animatable.GeoItem; - -@Mod.EventBusSubscriber -public class ItemAnimationFactory { - public static void disableUseAnim() { - try { - ItemInHandRenderer renderer = Minecraft.getInstance().gameRenderer.itemInHandRenderer; - renderer.mainHandHeight = 1F; - renderer.oMainHandHeight = 1F; - renderer.offHandHeight = 1F; - renderer.oOffHandHeight = 1F; - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static void setAnimationState(ItemStack itemStack, boolean isClientSide) { - if (!itemStack.getOrCreateTag().getString("gecko_animation").isEmpty() && !(itemStack.getItem() instanceof ArmorItem)) { - String animation = itemStack.getOrCreateTag().getString("gecko_animation"); - itemStack.getOrCreateTag().putString("gecko_animation", ""); - - if (itemStack.getItem() instanceof AnimatedItem animatable && isClientSide) { - animatable.setAnimationProcedure(animation); - disableUseAnim(); - } - } - } - - @SubscribeEvent - public static void animatedItems(TickEvent.PlayerTickEvent event) { - ItemStack mainHandItemStack = event.player.getMainHandItem(); - Item mainHandItem = mainHandItemStack.getItem(); - ItemStack offhandItemStack = event.player.getOffhandItem(); - Item offhandItem = offhandItemStack.getItem(); - - if (event.phase == TickEvent.Phase.START && (mainHandItem instanceof GeoItem || offhandItem instanceof GeoItem)) { - boolean isClientSide = event.player.level().isClientSide(); - setAnimationState(mainHandItemStack, isClientSide); - setAnimationState(offhandItemStack, isClientSide); - } - } -} diff --git a/src/main/java/net/mcreator/target/item/LightSaber.java b/src/main/java/net/mcreator/target/item/LightSaber.java index ab53e326d..4d64d4ea3 100644 --- a/src/main/java/net/mcreator/target/item/LightSaber.java +++ b/src/main/java/net/mcreator/target/item/LightSaber.java @@ -109,6 +109,11 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem { return 22; } + @Override + public boolean isEnchantable(ItemStack stack) { + return true; + } + @Override public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { return enchantment.category == EnchantmentCategory.BREAKABLE || enchantment.category == EnchantmentCategory.WEAPON;