From eedf4b64cf157a08b6f292d17433d452a776245a Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Sat, 23 Nov 2024 11:49:24 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/23=20=E6=90=9E=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AATOP=E6=A3=80=E6=B5=8B=20=E5=92=8C=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 19 ++++++ gradle.properties | 5 +- .../leashedplayer/ClientEventHandler.java | 61 +++++++++++++------ ...derer.java => ChestItemLayerRenderer.java} | 40 ++++++------ 4 files changed, 84 insertions(+), 41 deletions(-) rename src/main/java/com/r3944realms/leashedplayer/client/renders/entities/{ChestItemFeatureRenderer.java => ChestItemLayerRenderer.java} (65%) diff --git a/build.gradle b/build.gradle index 58babaf..69cbecd 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,19 @@ version = mod_version group = mod_group_id repositories { + maven { + // location of the maven that hosts JEI files since January 2023 + name = "Jared's maven" + url = "https://maven.blamejared.com/" + } + maven { + // location of a maven mirror for JEI files, as a fallback + name = "ModMaven" + url = "https://modmaven.dev" + } + maven { // TOP + url "https://maven.k-4u.nl" + } mavenLocal() } @@ -96,6 +109,12 @@ dependencies { // And its provides the option to then use net.minecraft as the group, and one of; client, server or joined as the module name, plus the game version as version. // For all intends and purposes: You can treat this dependency as if it is a normal library you would use. implementation "net.neoforged:neoforge:${neo_version}" + compileOnly "mcjty.theoneprobe:theoneprobe:${top_version}" + runtimeOnly("mezz.jei:jei-${mc_version}-neoforge:${jei_version}") + // compile against the JEI API but do not include it at runtime + compileOnly("mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}") + // at runtime, use the full JEI jar for NeoForge + runtimeOnly("mezz.jei:jei-${mc_version}-neoforge:${jei_version}") // compileOnly("mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}") // Example optional mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime diff --git a/gradle.properties b/gradle.properties index 683c44b..297c024 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,9 +21,10 @@ neo_version=21.0.157 neo_version_range=[21.0.0-beta,) # The loader version range can only use the major version of FML as bounds loader_version_range=[4,) +top_version = 1.21_neo-12.0.4-6 #jei_setting -#jei_version=19.5.0.59 -#mc_version=1.21 +jei_version=19.8.2.99 +mc_version=1.21 ## Mod Properties # The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63} diff --git a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java index 310d186..520f1f2 100644 --- a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java @@ -1,14 +1,14 @@ package com.r3944realms.leashedplayer; -import com.r3944realms.leashedplayer.client.renders.entities.ChestItemFeatureRenderer; +import com.r3944realms.leashedplayer.client.renders.entities.ChestItemLayerRenderer; import com.r3944realms.leashedplayer.client.renders.entities.KidPlayerRenderer; import com.r3944realms.leashedplayer.client.renders.entities.LeashRopeArrowRenderer; import com.r3944realms.leashedplayer.client.renders.entities.SpectralLeashRopeArrowRenderer; import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; import com.r3944realms.leashedplayer.content.items.ModItemRegister; import com.r3944realms.leashedplayer.content.items.type.ILeashRopeArrow; +import mcjty.theoneprobe.config.Config; import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.client.resources.PlayerSkin; @@ -16,22 +16,44 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FastColor; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.item.component.ChargedProjectiles; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.ModList; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent; +import net.neoforged.neoforge.client.event.ScreenEvent; -@EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD, modid = LeashedPlayer.MOD_ID) -public class ClientEventHandler { - @SubscribeEvent - public static void onRegisterItemProperties(FMLClientSetupEvent event) { + +public abstract class ClientEventHandler { + @EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME, modid = LeashedPlayer.MOD_ID) + public static class Game extends ClientEventHandler { + private static final boolean IS_TOP_LOADED = ModList.get().isLoaded("theoneprobe"); + private static int OldSelect = 0; + @SubscribeEvent + public static void onScreenOpen(ScreenEvent.Opening event) { + if (IS_TOP_LOADED) { + OldSelect = Config.needsProbe.get(); + Config.setProbeNeeded(Config.PROBE_NEEDED); + + } + } + @SubscribeEvent + public static void onScreenClose(ScreenEvent.Closing event) { + if (IS_TOP_LOADED) { + Config.setProbeNeeded(OldSelect); + } + } + } + @EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD, modid = LeashedPlayer.MOD_ID) + public static class Mod extends ClientEventHandler { + @SubscribeEvent + public static void onRegisterItemProperties (FMLClientSetupEvent event){ event.enqueueWork(() -> { ItemProperties.register(Items.CROSSBOW, ResourceLocation.withDefaultNamespace("leash_rope_arrow"), ((pStack, pLevel, pEntity, pSeed) -> { @@ -40,34 +62,35 @@ public class ClientEventHandler { })); ItemProperties.register(Items.BOW, ResourceLocation.withDefaultNamespace("leash_rope_arrow_pulling"), ((pStack, pLevel, pEntity, pSeed) -> - (pEntity != null && pEntity.isUsingItem() && pEntity.getUseItem() == pStack && ILeashRopeArrow.isLeashRopeArrow(pStack, pEntity)) ? 1.0F: 0.0F - )); + (pEntity != null && pEntity.isUsingItem() && pEntity.getUseItem() == pStack && ILeashRopeArrow.isLeashRopeArrow(pStack, pEntity)) ? 1.0F : 0.0F + )); }); } - @SubscribeEvent - public static void onRegisterRenderer(EntityRenderersEvent.RegisterRenderers event) { + + @SubscribeEvent + public static void onRegisterRenderer (EntityRenderersEvent.RegisterRenderers event){ event.registerEntityRenderer(ModEntityRegister.LEASH_ROPE_ARROW.get(), LeashRopeArrowRenderer::new); event.registerEntityRenderer(ModEntityRegister.SPECTRAL_LEASH_ROPE_ARROW.get(), SpectralLeashRopeArrowRenderer::new); event.registerEntityRenderer(ModEntityRegister.KID.get(), KidPlayerRenderer::create); } - @SubscribeEvent - public static void onAddLayers(EntityRenderersEvent.AddLayers event) { + @SubscribeEvent + public static void onAddLayers (EntityRenderersEvent.AddLayers event){ PlayerRenderer renderer = event.getSkin(PlayerSkin.Model.WIDE); if (renderer instanceof PlayerRenderer playerRenderer) { - playerRenderer.addLayer(new ChestItemFeatureRenderer<>(playerRenderer, event.getContext().getItemInHandRenderer())); + playerRenderer.addLayer(new ChestItemLayerRenderer<>(playerRenderer, event.getContext().getItemInHandRenderer())); } PlayerRenderer slimRenderer = event.getSkin(PlayerSkin.Model.SLIM); if (slimRenderer instanceof PlayerRenderer slimPlayerRenderer) { - slimPlayerRenderer.addLayer(new ChestItemFeatureRenderer<>(slimPlayerRenderer, event.getContext().getItemInHandRenderer())); + slimPlayerRenderer.addLayer(new ChestItemLayerRenderer<>(slimPlayerRenderer, event.getContext().getItemInHandRenderer())); } } - @SubscribeEvent - public static void onRegisterItemColorHandlers(RegisterColorHandlersEvent.Item event) { + @SubscribeEvent + public static void onRegisterItemColorHandlers (RegisterColorHandlersEvent.Item event){ event.register( (color, i) -> i > 0 ? -1 @@ -75,5 +98,5 @@ public class ClientEventHandler { ModItemRegister.TIPPED_LEASH_ROPE_ARROW.get() ); } - + } } diff --git a/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemFeatureRenderer.java b/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemLayerRenderer.java similarity index 65% rename from src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemFeatureRenderer.java rename to src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemLayerRenderer.java index a6b1507..193ec09 100644 --- a/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemFeatureRenderer.java +++ b/src/main/java/com/r3944realms/leashedplayer/client/renders/entities/ChestItemLayerRenderer.java @@ -14,11 +14,11 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class ChestItemFeatureRenderer> extends RenderLayer { +public class ChestItemLayerRenderer> extends RenderLayer { private final ItemInHandRenderer heldItemRenderer; - public ChestItemFeatureRenderer(RenderLayerParent context, ItemInHandRenderer heldItemRenderer) { + public ChestItemLayerRenderer(RenderLayerParent context, ItemInHandRenderer heldItemRenderer) { super(context); this.heldItemRenderer = heldItemRenderer; } @@ -34,10 +34,10 @@ public class ChestItemFeatureRenderer) this.getParentModel()).rightArm.translateAndRotate(matrices); @@ -45,10 +45,10 @@ public class ChestItemFeatureRenderer) this.getParentModel()).leftArm.translateAndRotate(matrices); @@ -56,58 +56,58 @@ public class ChestItemFeatureRenderer) this.getParentModel()).rightLeg.translateAndRotate(matrices); matrices.mulPose(Axis.XP.rotationDegrees(180)); matrices.scale(2/3f, 2/3f, 2/3f); matrices.translate(0, -1/6f, 0); matrices.mulPose(Axis.YP.rotationDegrees(180)); - this.heldItemRenderer.renderItem((LivingEntity) entity, legsStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, legsStack, mode, false, matrices, vertexConsumers, light); matrices.scale(1.01f, 1.01f, 1.01f); matrices.translate(0, -1/3f, 0); - this.heldItemRenderer.renderItem((LivingEntity) entity, legsStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, legsStack, mode, false, matrices, vertexConsumers, light); matrices.popPose(); matrices.pushPose(); - ((PlayerModel) this.getParentModel()).leftLeg.translateAndRotate(matrices); + ((PlayerModel) this.getParentModel()).leftLeg.translateAndRotate(matrices); matrices.mulPose(Axis.XP.rotationDegrees(180)); matrices.scale(2/3f, 2/3f, 2/3f); matrices.translate(0, -1/6f, 0); matrices.mulPose(Axis.YP.rotationDegrees(180)); - this.heldItemRenderer.renderItem((LivingEntity) entity, legsStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, legsStack, mode, false, matrices, vertexConsumers, light); matrices.scale(1.01f, 1.01f, 1.01f); matrices.translate(0, -1/3f, 0); - this.heldItemRenderer.renderItem((LivingEntity) entity, legsStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, legsStack, mode, false, matrices, vertexConsumers, light); matrices.popPose(); } } - ItemStack feetStack = ((LivingEntity) entity).getItemBySlot(EquipmentSlot.FEET); + ItemStack feetStack = entity.getItemBySlot(EquipmentSlot.FEET); if (!feetStack.isEmpty()) { if (!(entity.getEquipmentSlotForItem(feetStack).equals(EquipmentSlot.FEET))) { matrices.pushPose(); - ((PlayerModel) this.getParentModel()).rightLeg.translateAndRotate(matrices); + ((PlayerModel) this.getParentModel()).rightLeg.translateAndRotate(matrices); matrices.mulPose(Axis.XP.rotationDegrees(180)); matrices.scale(0.75f, 0.75f, 0.75f); matrices.translate(0, -0.8f, 0); matrices.mulPose(Axis.YP.rotationDegrees(180)); - this.heldItemRenderer.renderItem((LivingEntity) entity, feetStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, feetStack, mode, false, matrices, vertexConsumers, light); matrices.popPose(); matrices.pushPose(); - ((PlayerModel) this.getParentModel()).leftLeg.translateAndRotate(matrices); + ((PlayerModel) this.getParentModel()).leftLeg.translateAndRotate(matrices); matrices.mulPose(Axis.XP.rotationDegrees(180)); matrices.scale(0.75f, 0.75f, 0.75f); matrices.translate(0, -0.8f, 0); matrices.mulPose(Axis.YP.rotationDegrees(180)); - this.heldItemRenderer.renderItem((LivingEntity) entity, feetStack, mode, false, matrices, vertexConsumers, light); + this.heldItemRenderer.renderItem(entity, feetStack, mode, false, matrices, vertexConsumers, light); matrices.popPose(); } }