diff --git a/src/generated/resources/assets/minecraft/atlases/blocks.json b/src/generated/resources/assets/minecraft/atlases/blocks.json index 0f02623e..d05dad10 100644 --- a/src/generated/resources/assets/minecraft/atlases/blocks.json +++ b/src/generated/resources/assets/minecraft/atlases/blocks.json @@ -4,6 +4,11 @@ "type": "minecraft:directory", "prefix": "misc/", "source": "misc" + }, + { + "type": "minecraft:directory", + "prefix": "models/", + "source": "models" } ] } \ No newline at end of file diff --git a/src/main/java/committee/nova/mods/avaritia/api/client/model/Quad.java b/src/main/java/committee/nova/mods/avaritia/api/client/model/Quad.java index 593d8b35..e7eabe08 100644 --- a/src/main/java/committee/nova/mods/avaritia/api/client/model/Quad.java +++ b/src/main/java/committee/nova/mods/avaritia/api/client/model/Quad.java @@ -22,7 +22,7 @@ import com.mojang.blaze3d.vertex.VertexFormat; import committee.nova.mods.avaritia.util.client.VertexUtils; import committee.nova.mods.avaritia.util.math.InterpHelper; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import committee.nova.mods.avaritia.util.vec.Cuboid6; import committee.nova.mods.avaritia.util.vec.Vector3; import net.minecraft.client.renderer.block.model.BakedQuad; @@ -175,9 +175,9 @@ public void clamp(AABB bb) { public void clamp(Cuboid6 cuboid) { for (Vertex vertex : vertices) { float[] vec = vertex.vec; - vec[0] = (float) MathUtil.clip(vec[0], cuboid.min.x, cuboid.max.x); - vec[1] = (float) MathUtil.clip(vec[1], cuboid.min.y, cuboid.max.y); - vec[2] = (float) MathUtil.clip(vec[2], cuboid.min.z, cuboid.max.z); + vec[0] = (float) MathUtils.clip(vec[0], cuboid.min.x, cuboid.max.x); + vec[1] = (float) MathUtils.clip(vec[1], cuboid.min.y, cuboid.max.y); + vec[2] = (float) MathUtils.clip(vec[2], cuboid.min.z, cuboid.max.z); } calculateOrientation(true); } diff --git a/src/main/java/committee/nova/mods/avaritia/api/common/tile/BaseTileEntity.java b/src/main/java/committee/nova/mods/avaritia/api/common/tile/BaseTileEntity.java index af248927..cdbf5cc1 100644 --- a/src/main/java/committee/nova/mods/avaritia/api/common/tile/BaseTileEntity.java +++ b/src/main/java/committee/nova/mods/avaritia/api/common/tile/BaseTileEntity.java @@ -1,6 +1,6 @@ package committee.nova.mods.avaritia.api.common.tile; -import committee.nova.mods.avaritia.util.TileEntityUtil; +import committee.nova.mods.avaritia.util.TileEntityUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; @@ -47,13 +47,13 @@ public void setChangedFast() { public void setChangedAndDispatch() { this.setChanged(); - TileEntityUtil.dispatchToNearbyPlayers(this); + TileEntityUtils.dispatchToNearbyPlayers(this); this.isChanged = false; } public void dispatchIfChanged() { if (this.isChanged) { - TileEntityUtil.dispatchToNearbyPlayers(this); + TileEntityUtils.dispatchToNearbyPlayers(this); this.isChanged = false; } } diff --git a/src/main/java/committee/nova/mods/avaritia/client/AvaritiaClient.java b/src/main/java/committee/nova/mods/avaritia/client/AvaritiaClient.java index a937211e..83a052b8 100644 --- a/src/main/java/committee/nova/mods/avaritia/client/AvaritiaClient.java +++ b/src/main/java/committee/nova/mods/avaritia/client/AvaritiaClient.java @@ -2,19 +2,16 @@ import committee.nova.mods.avaritia.Static; import committee.nova.mods.avaritia.api.iface.IColored; -import committee.nova.mods.avaritia.client.model.CosmicModelLoader; -import committee.nova.mods.avaritia.client.model.GapingVoidModel; -import committee.nova.mods.avaritia.client.model.HaloModelLoader; -import committee.nova.mods.avaritia.client.model.WingModel; -import committee.nova.mods.avaritia.client.render.layer.EyeInfinityLayer; -import committee.nova.mods.avaritia.client.render.layer.WingInfinityLayer; +import committee.nova.mods.avaritia.client.model.*; import committee.nova.mods.avaritia.client.shader.AvaritiaShaders; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModItems; import committee.nova.mods.avaritia.init.registry.ModMenus; import committee.nova.mods.avaritia.init.registry.ModTileEntities; -import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.model.PlayerModel; import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.*; import net.minecraftforge.eventbus.api.EventPriority; @@ -47,8 +44,7 @@ public static void onRegisterShaders(RegisterShadersEvent event){ @SubscribeEvent public static void registerEntityLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { event.registerLayerDefinition(GapingVoidModel.LAYER_LOCATION, GapingVoidModel::createBodyLayer); - event.registerLayerDefinition(WingModel.LAYER_LOCATION, WingModel::createBodyLayer); - + //event.registerLayerDefinition(WingModel.LAYER_LOCATION, WingModel::createBodyLayer); } @SubscribeEvent @@ -69,14 +65,12 @@ public static void registerLoaders(ModelEvent.RegisterGeometryLoaders event) { @SubscribeEvent public static void addPlayerLayer(EntityRenderersEvent.AddLayers event) { - event.getSkins().forEach(skin -> { - EntityRenderer renderer = event.getSkin(skin); - if (renderer != null && renderer instanceof LivingEntityRenderer livingRender){ - livingRender.addLayer(new WingInfinityLayer(livingRender)); - livingRender.addLayer(new EyeInfinityLayer(livingRender)); - } - }); - + addLayer(event, "default"); + addLayer(event, "slim"); + } + private static void addLayer(final EntityRenderersEvent.AddLayers e, final String s) { + final LivingEntityRenderer entityRenderer = e.getSkin(s); + entityRenderer.addLayer(new InfinityArmorModel.PlayerRender((RenderLayerParent>)entityRenderer)); } } diff --git a/src/main/java/committee/nova/mods/avaritia/client/model/ArmorInfinityModel.java b/src/main/java/committee/nova/mods/avaritia/client/model/ArmorInfinityModel.java deleted file mode 100644 index 18978137..00000000 --- a/src/main/java/committee/nova/mods/avaritia/client/model/ArmorInfinityModel.java +++ /dev/null @@ -1,17 +0,0 @@ -package committee.nova.mods.avaritia.client.model; - -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.world.entity.player.Player; - -/** - * Description: - * Author: cnlimiter - * Date: 2022/4/23 23:50 - * Version: 1.0 - */ -public class ArmorInfinityModel extends HumanoidModel { - public ArmorInfinityModel(ModelPart pRoot) { - super(pRoot); - } -} diff --git a/src/main/java/committee/nova/mods/avaritia/client/model/CosmicBakeModel.java b/src/main/java/committee/nova/mods/avaritia/client/model/CosmicBakeModel.java index c1e27a28..b588b25e 100644 --- a/src/main/java/committee/nova/mods/avaritia/client/model/CosmicBakeModel.java +++ b/src/main/java/committee/nova/mods/avaritia/client/model/CosmicBakeModel.java @@ -71,12 +71,11 @@ public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseSt final Minecraft mc = Minecraft.getInstance(); float yaw = 0.0f; float pitch = 0.0f; - float scale = 1.0f; - if (transformType != ItemDisplayContext.GUI) { - yaw = (float)((double)(mc.player.getYRot() * 2.0F) * 3.141592653589793D / 360.0D); - pitch = -((float)((double)(mc.player.getXRot() * 2.0F) * 3.141592653589793D / 360.0D)); - } else { - scale = 25.0F; + float scale = 25.0f; + if (!AvaritiaShaders.inventoryRender) { + yaw = (float)(mc.player.getYRot() * 2.0f * 3.141592653589793 / 360.0); + pitch = -(float)(mc.player.getXRot() * 2.0f * 3.141592653589793 / 360.0); + scale = 1.0f; } if (AvaritiaShaders.cosmicOpacity != null) { AvaritiaShaders.cosmicOpacity.set(1.0F); diff --git a/src/main/java/committee/nova/mods/avaritia/client/model/InfinityArmorModel.java b/src/main/java/committee/nova/mods/avaritia/client/model/InfinityArmorModel.java new file mode 100644 index 00000000..66bf131c --- /dev/null +++ b/src/main/java/committee/nova/mods/avaritia/client/model/InfinityArmorModel.java @@ -0,0 +1,307 @@ +package committee.nova.mods.avaritia.client.model; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat; +import committee.nova.mods.avaritia.Static; +import committee.nova.mods.avaritia.client.shader.AvaritiaShaders; +import committee.nova.mods.avaritia.init.registry.ModItems; +import committee.nova.mods.avaritia.util.AbilityUtils; +import committee.nova.mods.avaritia.util.client.ColorUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderStateShard; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Random; + +/** + * Description: + * Author: cnlimiter + * Date: 2022/4/23 23:50 + * Version: 1.0 + */ +public class InfinityArmorModel extends HumanoidModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(Static.MOD_ID, "infinity_armor"), "main"); + + private final ResourceLocation eyeTex = Static.rl("textures/models/infinity_armor_eyes.png"); + private final ResourceLocation wingTex = Static.rl("textures/models/infinity_armor_wing.png");; + private final ResourceLocation wingGlowTex = Static.rl("textures/models/infinity_armor_wingglow.png");; + private static boolean modelRender; + private static boolean playerFlying; + private static boolean player; + private static boolean legs = true; + private Minecraft mc; + private MultiBufferSource bufferSource; + private Random random; + private HumanoidModel humanoidModel; + private ModelPart bipedLeftWing; + private ModelPart bipedRightWing; + + public static TextureAtlasSprite MASK = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(new ResourceLocation(Static.MOD_ID, "models/infinity_armor_mask")); + public static TextureAtlasSprite MASK_INV = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(new ResourceLocation(Static.MOD_ID, "models/infinity_armor_mask")); + public static TextureAtlasSprite WING = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(new ResourceLocation(Static.MOD_ID, "models/infinity_armor_mask")); + + + + public InfinityArmorModel(ModelPart pRoot, final int x) { + super(createMesh(new CubeDeformation(1.0f), 0.0f).getRoot().bake(64, 64)); + this.mc = Minecraft.getInstance(); + this.bufferSource = this.mc.renderBuffers().bufferSource(); + this.random = new Random(); + this.humanoidModel = new HumanoidModel<>(createMesh(new CubeDeformation(0.0f), 0.0f).getRoot().bake(64, 64)); + } + + public InfinityArmorModel(ModelPart pRoot){ + super(pRoot); + this.mc = Minecraft.getInstance(); + this.bufferSource = this.mc.renderBuffers().bufferSource(); + this.random = new Random(); + this.humanoidModel = new HumanoidModel<>(createMesh(new CubeDeformation(0.0f), 0.0f).getRoot().bake(64, 64)); + } + + private RenderType glow(final ResourceLocation tex) { + return RenderType.create("", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 0, RenderType.CompositeState.builder() + .setShaderState(RenderType.POSITION_COLOR_TEX_LIGHTMAP_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(tex, false, false)) + .setTransparencyState(RenderType.LIGHTNING_TRANSPARENCY) + .setCullState(RenderType.NO_CULL) + .setLayeringState(RenderType.VIEW_OFFSET_Z_LAYERING) + .createCompositeState(true)); + } + + private RenderType mask(final ResourceLocation tex) { + return RenderType.create("", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 0, RenderType.CompositeState.builder() + .setShaderState(new RenderStateShard.ShaderStateShard(() -> AvaritiaShaders.cosmicShader)) + .setTextureState(new RenderStateShard.TextureStateShard(tex, false, false)) + .setTransparencyState(RenderType.TRANSLUCENT_TRANSPARENCY).setLightmapState(RenderType.LIGHTMAP) + .setWriteMaskState(RenderStateShard.COLOR_WRITE).setCullState(RenderType.NO_CULL) + .setLayeringState(RenderType.VIEW_OFFSET_Z_LAYERING) + .createCompositeState(true)); + } + + private static RenderType mask2(final ResourceLocation tex) { + return RenderType.create("", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 0, RenderType.CompositeState.builder() + .setShaderState(new RenderStateShard.ShaderStateShard(() -> AvaritiaShaders.cosmicShader2)) + .setTextureState(new RenderStateShard.TextureStateShard(tex, false, false)) + .setTransparencyState(RenderType.TRANSLUCENT_TRANSPARENCY) + .setLightmapState(RenderType.LIGHTMAP).setWriteMaskState(RenderStateShard.COLOR_WRITE) + .setCullState(RenderType.NO_CULL) + .createCompositeState(true)); + } + + public static MeshDefinition createMesh(final CubeDeformation deformation, final float f, final boolean islegs) { + InfinityArmorModel.legs = islegs; + final int heightoffset = 0; + final int legoffset = islegs ? 32 : 0; + final MeshDefinition meshDefinition = new MeshDefinition(); + final PartDefinition p = meshDefinition.getRoot(); + p.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0f, -8.0f, -4.0f, 8.0f, 8.0f, 8.0f, deformation), PartPose.offset(0.0f, 0.0f + f, 0.0f)); + p.addOrReplaceChild("hat", CubeListBuilder.create().texOffs(32, 0).addBox(-4.0f, -8.0f, -4.0f, 8.0f, 8.0f, 8.0f, new CubeDeformation(0.5f)), PartPose.offset(0.0f, 0.0f, 0.0f)); + p.addOrReplaceChild("body", CubeListBuilder.create().texOffs(16, 16).addBox(-4.0f, 0.0f, -2.0f, 8.0f, 12.0f, 4.0f, deformation), PartPose.offset(0.0f, 0.0f + f, 0.0f)); + p.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(40, 16).addBox(-3.0f, -2.0f, -2.0f, 4.0f, 12.0f, 4.0f, deformation), PartPose.offset(-5.0f, 2.0f + f, 0.0f)); + p.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(40, 16).mirror().addBox(-1.0f, -2.0f, -2.0f, 4.0f, 12.0f, 4.0f, deformation), PartPose.offset(5.0f, 2.0f + f, 0.0f)); + p.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(0, 16).addBox(-2.0f, 0.0f, -2.0f, 4.0f, 12.0f, 4.0f, deformation), PartPose.offset(-1.9f, 12.0f + f, 0.0f)); + p.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(0, 16).mirror().addBox(-2.0f, 0.0f, -2.0f, 4.0f, 12.0f, 4.0f, deformation), PartPose.offset(1.9f, 12.0f + f, 0.0f)); + if (islegs) { + p.addOrReplaceChild("body", CubeListBuilder.create().texOffs(16, 16 + legoffset).addBox(-4.0f, 0.0f, -2.0f, 8.0f, 12.0f, 4.0f, new CubeDeformation(0.5f)), PartPose.offset(0.0f, (float)(0 + heightoffset), 0.0f)); + p.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(0, 16 + legoffset).addBox(-2.0f, 0.0f, -2.0f, 4.0f, 12.0f, 4.0f, new CubeDeformation(0.5f)), PartPose.offset(-1.9f, (float)(12 + heightoffset), 0.0f)); + p.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(0, 16 + legoffset).mirror().addBox(-2.0f, 0.0f, -2.0f, 4.0f, 12.0f, 4.0f, new CubeDeformation(0.5f)), PartPose.offset(1.9f, (float)(12 + heightoffset), 0.0f)); + } + return meshDefinition; + } + + + private LayerDefinition rebuildWings() { + final MeshDefinition m = new MeshDefinition(); + final PartDefinition p = m.getRoot(); + p.addOrReplaceChild("bipedRightWing", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(0.0f, -11.6f, 0.0f, 0.0f, 32.0f, 32.0f, new CubeDeformation(0.0f)), PartPose.offsetAndRotation(-1.5f, 0.0f, 2.0f, 0.0f, 1.2566371f, 0.0f)); + p.addOrReplaceChild("bipedLeftWing", CubeListBuilder.create().texOffs(0, 0).addBox(0.0f, -11.6f, 0.0f, 0.0f, 32.0f, 32.0f, new CubeDeformation(0.0f)), PartPose.offsetAndRotation(1.5f, 0.0f, 2.0f, 0.0f, -1.2566371f, 0.0f)); + return LayerDefinition.create(m, 64, 64); + } + + private void renderToBufferWing(@NotNull PoseStack pPoseStack, @NotNull VertexConsumer pBuffer, int pPackedLight, int pPackedOverlay, float pRed, float pGreen, float pBlue, float pAlpha) { + final ModelPart h = this.rebuildWings().bakeRoot(); + this.bipedRightWing = h.getChild("bipedRightWing"); + this.bipedLeftWing = h.getChild("bipedLeftWing"); + this.bipedRightWing.render(pPoseStack, pBuffer, pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + this.bipedLeftWing.render(pPoseStack, pBuffer, pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + } + + @Override + public void renderToBuffer(@NotNull PoseStack pPoseStack, @NotNull VertexConsumer pBuffer, int pPackedLight, int pPackedOverlay, float pRed, float pGreen, float pBlue, float pAlpha) { + final InfinityArmorModel model = new InfinityArmorModel(this.rebuildWings().bakeRoot(), 0); + this.copyBipedAngles(this, this.humanoidModel); + super.renderToBuffer(pPoseStack, pBuffer, pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + final long time = this.mc.player.level().getGameTime(); + final double pulse = Math.sin(time / 10.0) * 0.5 + 0.5; + final double pulse_mag_sqr = pulse * pulse * pulse * pulse * pulse * pulse; + float f; + float f2; + float f3; + if (this.young) { + f = 1.5f / this.babyHeadScale; + f2 = 1.0f / this.babyBodyScale; + f3 = 1.0f; + } else { + f = 1.0f; + f2 = 1.0f; + f3 = 0.0f; + } + AvaritiaShaders.cosmicOpacity.set(1.0f); + AvaritiaShaders.cosmicOpacity2.set(0.2f); + if (AvaritiaShaders.inventoryRender) { + AvaritiaShaders.cosmicExternalScale.set(25.0f); + } + else { + AvaritiaShaders.cosmicExternalScale.set(1.0f); + AvaritiaShaders.cosmicYaw.set((float)(this.mc.player.getYRot() * 2.0f * 3.141592653589793 / 360.0)); + AvaritiaShaders.cosmicPitch.set(-(float)(this.mc.player.getXRot() * 2.0f * 3.141592653589793 / 360.0)); + } + pPoseStack.pushPose(); + pPoseStack.scale(f, f, f); + pPoseStack.translate(0.0, this.babyYHeadOffset / 16.0f * f3, 0.0); + this.head.render(pPoseStack, material(MASK).buffer(this.bufferSource, this::mask), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + if (InfinityArmorModel.modelRender && !InfinityArmorModel.player) { + this.hatsOver().forEach(t -> t.render(pPoseStack, material(MASK_INV).buffer(this.bufferSource, InfinityArmorModel::mask2), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha)); + } + pPoseStack.popPose(); + pPoseStack.pushPose(); + pPoseStack.scale(f2, f2, f2); + pPoseStack.translate(0.0, this.bodyYOffset / 16.0f * f3, 0.0); + if (InfinityArmorModel.modelRender && !InfinityArmorModel.player) { + this.bodyPartsOver().forEach(t -> t.render(pPoseStack, material(MASK_INV).buffer(this.bufferSource, InfinityArmorModel::mask2), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha)); + } + this.bodyParts().forEach(t -> t.render(pPoseStack, material(MASK).buffer(this.bufferSource, this::mask), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha)); + this.bodyParts().forEach(t -> t.render(pPoseStack, this.vertex(this.glow(this.eyeTex)), pPackedLight, pPackedOverlay, 0.84f, 1.0f, 0.95f, (float)(pulse_mag_sqr * 0.5))); + pPoseStack.popPose(); + pPoseStack.pushPose(); + this.random.setSeed(time / 3L * 1723609L); + final float[] col = ColorUtils.HSVtoRGB(this.random.nextFloat() * 6.0f, 1.0f, 1.0f); + pPoseStack.scale(f, f, f); + pPoseStack.translate(0.0, this.babyYHeadOffset / 16.0f * f3, -0.029999999329447746); + this.hat.render(pPoseStack, material(MASK).buffer(this.bufferSource, this::mask), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + if (InfinityArmorModel.modelRender) { + this.hat.render(pPoseStack, this.vertex(RenderType.create("", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 0, RenderType.CompositeState.builder() + .setShaderState(RenderType.POSITION_COLOR_TEX_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(this.eyeTex, false, false)) + .setCullState(RenderType.NO_CULL) + .createCompositeState(true))), pPackedLight, pPackedOverlay, col[0], col[1], col[2], 1.0f); + } + pPoseStack.popPose(); + if (InfinityArmorModel.playerFlying && !AvaritiaShaders.inventoryRender) { + pPoseStack.pushPose(); + this.rebuildWings(); + pPoseStack.scale(f2, f2, f2); + pPoseStack.translate(0.0, this.bodyYOffset / 16.0f * f3, 0.0); + model.renderToBufferWing(pPoseStack, this.mc.renderBuffers().bufferSource().getBuffer(RenderType.armorCutoutNoCull(this.wingTex)), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + model.renderToBufferWing(pPoseStack, material(WING).buffer(this.bufferSource, this::mask), pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); + model.renderToBufferWing(pPoseStack, this.mc.renderBuffers().bufferSource().getBuffer(this.glow(this.wingGlowTex)), pPackedLight, pPackedOverlay, 0.84f, 1.0f, 0.95f, (float)(pulse_mag_sqr * 0.5)); + pPoseStack.popPose(); + } + } + + public void update(final LivingEntity e, final ItemStack itemStack, final EquipmentSlot equipmentSlot) { + InfinityArmorModel.modelRender = false; + InfinityArmorModel.playerFlying = false; + InfinityArmorModel.player = false; + final ItemStack hats = e.getItemBySlot(EquipmentSlot.HEAD); + final ItemStack chest = e.getItemBySlot(EquipmentSlot.CHEST); + final ItemStack leg = e.getItemBySlot(EquipmentSlot.LEGS); + final ItemStack foot = e.getItemBySlot(EquipmentSlot.FEET); + final boolean hasHat = hats != null && hats.getItem() == ModItems.infinity_helmet.get(); + final boolean hasChest = chest != null && chest.getItem() == ModItems.infinity_chestplate.get(); + final boolean hasLeg = leg != null && leg.getItem() == ModItems.infinity_pants.get(); + final boolean hasFoot = foot != null && foot.getItem() == ModItems.infinity_boots.get(); + if (hasHat && hasChest && hasLeg && hasFoot) { + InfinityArmorModel.modelRender = true; + } + if (e instanceof Player) { + InfinityArmorModel.player = true; + if (hasChest && ((Player)e).getAbilities().flying) { + InfinityArmorModel.playerFlying = true; + } + } + this.crouching = e.isCrouching(); + this.young = e.isBaby(); + this.riding = e.isPassenger(); + } + + public VertexConsumer vertex(final RenderType t) { + return this.bufferSource.getBuffer(t); + } + + public static Material material(final TextureAtlasSprite t) { + return new Material(InventoryMenu.BLOCK_ATLAS, t.atlasLocation()); + } + + @Override + public @NotNull Iterable bodyParts() { + return ImmutableList.of(this.body, this.rightArm, this.leftArm, this.rightLeg, this.leftLeg); + } + + public Iterable hatsOver() { + return ImmutableList.of(this.humanoidModel.hat, this.humanoidModel.head); + } + + public Iterable bodyPartsOver() { + return ImmutableList.of(this.humanoidModel.body, this.humanoidModel.rightArm, this.humanoidModel.leftArm, this.humanoidModel.rightLeg, this.humanoidModel.leftLeg); + } + + private void copyPartAngles(final ModelPart from, final ModelPart to) { + to.xRot = from.xRot; + to.yRot = from.yRot; + to.zRot = from.zRot; + to.x = from.x; + to.y = from.y; + to.z = from.z; + } + + private void copyBipedAngles(final HumanoidModel from, final HumanoidModel to) { + this.copyPartAngles(from.head, to.head); + this.copyPartAngles(from.hat, to.hat); + this.copyPartAngles(from.body, to.body); + this.copyPartAngles(from.leftArm, to.leftArm); + this.copyPartAngles(from.leftLeg, to.leftLeg); + this.copyPartAngles(from.rightArm, to.rightArm); + this.copyPartAngles(from.rightLeg, to.rightLeg); + } + + public static class PlayerRender extends RenderLayer> + { + public Iterable playerParts() { + return ImmutableList.of((this.getParentModel()).head, (this.getParentModel()).hat, (this.getParentModel()).body, (this.getParentModel()).leftArm, this.getParentModel().rightArm, (this.getParentModel()).leftLeg, (this.getParentModel()).rightLeg); + } + + public PlayerRender(final RenderLayerParent> t) { + super(t); + } + + @Override + public void render(final @NotNull PoseStack pPoseStack, final @NotNull MultiBufferSource pBuffer, final int pPackedLight, final @NotNull Player l, final float pLimbSwing, float pLimbSwingAmount, float pPartialTick, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) { + if (AbilityUtils.isInfinite(l)) { + AvaritiaShaders.cosmicOpacity2.set(0.8f); + this.playerParts().forEach(t -> t.render(pPoseStack, InfinityArmorModel.material(MASK_INV).buffer(pBuffer, InfinityArmorModel::mask2), pPackedLight, 1, 1.0f, 1.0f, 1.0f, 1.0f)); + } + } + } +} diff --git a/src/main/java/committee/nova/mods/avaritia/client/render/entity/HeavenArrowRender.java b/src/main/java/committee/nova/mods/avaritia/client/render/entity/HeavenArrowRender.java index b0119670..e1a0ad7f 100644 --- a/src/main/java/committee/nova/mods/avaritia/client/render/entity/HeavenArrowRender.java +++ b/src/main/java/committee/nova/mods/avaritia/client/render/entity/HeavenArrowRender.java @@ -1,13 +1,25 @@ package committee.nova.mods.avaritia.client.render.entity; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.math.Axis; import committee.nova.mods.avaritia.Static; import committee.nova.mods.avaritia.common.entity.arrow.HeavenArrowEntity; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderStateShard; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.ArrowRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; +import org.joml.Matrix3f; +import org.joml.Matrix4f; /** * Description: @@ -30,5 +42,44 @@ public HeavenArrowRender(EntityRendererProvider.Context p_174008_) { return tex; } + @Override + public void render(@NotNull HeavenArrowEntity arrowEntity, float pEntityYaw, float partialTicks, @NotNull PoseStack pPoseStack, @NotNull MultiBufferSource pBuffer, int pPackedLight) { + pPoseStack.pushPose(); + pPoseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, arrowEntity.yRotO, arrowEntity.getYRot()) - 90.0f)); + pPoseStack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, arrowEntity.xRotO, arrowEntity.getXRot()))); + final float f9 = arrowEntity.shakeTime - partialTicks; + if (f9 > 0.0f) { + pPoseStack.mulPose(Axis.ZP.rotationDegrees(-Mth.sin(f9 * 3.0f) * f9)); + } + pPoseStack.mulPose(Axis.XP.rotationDegrees(45.0f)); + pPoseStack.scale(0.05625f, 0.05625f, 0.05625f); + pPoseStack.translate(-4.0, 0.0, 0.0); + final VertexConsumer ivertexbuilder = pBuffer.getBuffer(RenderType.create("entity_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, RenderType.CompositeState.builder() + .setShaderState(RenderType.POSITION_COLOR_TEX_LIGHTMAP_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(this.getTextureLocation(arrowEntity), false, false)) + .setOverlayState(RenderType.OVERLAY).createCompositeState(true))); + final PoseStack.Pose matrixstack$entry = pPoseStack.last(); + final Matrix4f matrix4f = matrixstack$entry.pose(); + final Matrix3f matrix3f = matrixstack$entry.normal(); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, -2, -2, 0.0f, 0.15625f, -1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, -2, 2, 0.15625f, 0.15625f, -1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, 2, 2, 0.15625f, 0.3125f, -1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, 2, -2, 0.0f, 0.3125f, -1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, 2, -2, 0.0f, 0.15625f, 1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, 2, 2, 0.15625f, 0.15625f, 1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, -2, 2, 0.15625f, 0.3125f, 1, 0, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -7, -2, -2, 0.0f, 0.3125f, 1, 0, 0, pPackedLight); + for (int j = 0; j < 4; ++j) { + pPoseStack.mulPose(Axis.XP.rotationDegrees(90.0f)); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -8, -2, 0, 0.0f, 0.0f, 0, 1, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, 8, -2, 0, 0.5f, 0.0f, 0, 1, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, 8, 2, 0, 0.5f, 0.15625f, 0, 1, 0, pPackedLight); + this.drawVertex(matrix4f, matrix3f, ivertexbuilder, -8, 2, 0, 0.0f, 0.15625f, 0, 1, 0, pPackedLight); + } + pPoseStack.popPose(); + } + public void drawVertex(final Matrix4f m1, final Matrix3f m2, final VertexConsumer v, final int offsetX, final int offsetY, final int offsetZ, final float textureX, final float textureY, final int pContext9_, final int pContext10_, final int pContext11_, final int packedLightIn) { + v.vertex(m1, (float)offsetX, (float)offsetY, (float)offsetZ).color(255, 255, 255, 255).uv(textureX, textureY).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(packedLightIn).normal(m2, (float)pContext9_, (float)pContext11_, (float)pContext10_).endVertex(); + } } diff --git a/src/main/java/committee/nova/mods/avaritia/client/render/layer/EyeInfinityLayer.java b/src/main/java/committee/nova/mods/avaritia/client/render/layer/EyeInfinityLayer.java index 76abf884..6d66f073 100644 --- a/src/main/java/committee/nova/mods/avaritia/client/render/layer/EyeInfinityLayer.java +++ b/src/main/java/committee/nova/mods/avaritia/client/render/layer/EyeInfinityLayer.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import committee.nova.mods.avaritia.Static; -import committee.nova.mods.avaritia.util.AbilityUtil; +import committee.nova.mods.avaritia.util.AbilityUtils; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -34,7 +34,7 @@ public EyeInfinityLayer(RenderLayerParent cosmicShader)) @@ -64,6 +83,21 @@ public static void onRegisterShaders(RegisterShadersEvent event){ }); }); + event.registerShader(CCShaderInstance.create(event.getResourceProvider(), new ResourceLocation(Static.MOD_ID, "cosmic"), DefaultVertexFormat.BLOCK), e -> { + cosmicShader2 = (CCShaderInstance)e; + cosmicTime2 = Objects.requireNonNull(cosmicShader2.getUniform("time")); + cosmicYaw2 = Objects.requireNonNull(cosmicShader2.getUniform("yaw")); + cosmicPitch2 = Objects.requireNonNull(cosmicShader2.getUniform("pitch")); + cosmicExternalScale2 = Objects.requireNonNull(cosmicShader2.getUniform("externalScale")); + cosmicOpacity2 = Objects.requireNonNull(cosmicShader2.getUniform("opacity")); + cosmicUVs2 = Objects.requireNonNull(cosmicShader2.getUniform("cosmicuvs")); + cosmicTime2.set((float)renderTime + renderFrame); + cosmicShader2.onApply(() -> { + cosmicTime2.set((float)renderTime + renderFrame); + }); + }); + + } @SubscribeEvent @@ -73,10 +107,16 @@ public static void onRenderTick(TickEvent.RenderTickEvent event) { for (int i = 0; i < 10; ++i) { TextureAtlasSprite sprite = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(new ResourceLocation(Static.MOD_ID, "misc/cosmic_" + i)); //SpriteRegistryHandler.sprites.getTextureLocations().forEach(Static.LOGGER::info); - AvaritiaShaders.COSMIC_UVS[i * 4] = sprite.getU0(); - AvaritiaShaders.COSMIC_UVS[i * 4 + 1] = sprite.getV0(); - AvaritiaShaders.COSMIC_UVS[i * 4 + 2] = sprite.getU1(); - AvaritiaShaders.COSMIC_UVS[i * 4 + 3] = sprite.getV1(); + COSMIC_UVS[i * 4] = sprite.getU0(); + COSMIC_UVS[i * 4 + 1] = sprite.getV0(); + COSMIC_UVS[i * 4 + 2] = sprite.getU1(); + COSMIC_UVS[i * 4 + 3] = sprite.getV1(); + } + if (cosmicUVs != null) { + cosmicUVs.set(COSMIC_UVS); + } + if (cosmicUVs2 != null) { + cosmicUVs2.set(COSMIC_UVS); } if (cosmicUVs != null) cosmicUVs.set(COSMIC_UVS); } @@ -96,4 +136,16 @@ public static void renderTick(TickEvent.RenderTickEvent event) { renderFrame = event.renderTickTime; } } + + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public static void drawScreenPre(final ScreenEvent.Render.Pre e) { + AvaritiaShaders.inventoryRender = true; + } + + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public static void drawScreenPost(final ScreenEvent.Render.Post e) { + AvaritiaShaders.inventoryRender = false; + } } diff --git a/src/main/java/committee/nova/mods/avaritia/common/item/ArmorInfinityItem.java b/src/main/java/committee/nova/mods/avaritia/common/item/InfinityArmorItem.java similarity index 58% rename from src/main/java/committee/nova/mods/avaritia/common/item/ArmorInfinityItem.java rename to src/main/java/committee/nova/mods/avaritia/common/item/InfinityArmorItem.java index 36505d7f..8f44380c 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/item/ArmorInfinityItem.java +++ b/src/main/java/committee/nova/mods/avaritia/common/item/InfinityArmorItem.java @@ -1,11 +1,15 @@ package committee.nova.mods.avaritia.common.item; +import committee.nova.mods.avaritia.Static; +import committee.nova.mods.avaritia.client.model.InfinityArmorModel; import committee.nova.mods.avaritia.common.entity.ImmortalItemEntity; import committee.nova.mods.avaritia.init.registry.ModArmorMaterial; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.lang.TextUtil; +import committee.nova.mods.avaritia.util.lang.TextUtils; import net.minecraft.ChatFormatting; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.Entity; @@ -20,10 +24,12 @@ import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.Consumer; /** * Description: @@ -31,8 +37,8 @@ * Date: 2022/4/21 15:12 * Version: 1.0 */ -public class ArmorInfinityItem extends ArmorItem { - public ArmorInfinityItem(Type pSlot) { +public class InfinityArmorItem extends ArmorItem { + public InfinityArmorItem(Type pSlot) { super( ModArmorMaterial.infinite_armor, pSlot, @@ -70,19 +76,19 @@ public boolean makesPiglinsNeutral(ItemStack stack, LivingEntity wearer) { public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List tooltip, @NotNull TooltipFlag pIsAdvanced) { if (type.getSlot() == EquipmentSlot.HEAD) { tooltip.add(Component.literal("")); - tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtil.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("effect.minecraft.night_vision"))); + tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtils.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("effect.minecraft.night_vision"))); } if (type.getSlot() == EquipmentSlot.CHEST) { tooltip.add(Component.literal("")); - tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtil.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.flying_speed"))); + tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtils.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.flying_speed"))); } if (type.getSlot() == EquipmentSlot.LEGS) { tooltip.add(Component.literal("")); - tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtil.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.walking_speed"))); + tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtils.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.walking_speed"))); } if (type.getSlot() == EquipmentSlot.FEET) { tooltip.add(Component.literal("")); - tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtil.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.movement_speed"))); + tooltip.add(Component.literal(ChatFormatting.BLUE + "+" + ChatFormatting.ITALIC + TextUtils.makeSANIC(I18n.get("tooltip.infinity")) + ChatFormatting.RESET + ChatFormatting.BLUE + "% ").append(I18n.get("attribute.name.generic.movement_speed"))); } super.appendHoverText(pStack, pLevel, tooltip, pIsAdvanced); } @@ -98,5 +104,20 @@ public Entity createEntity(Level level, Entity location, ItemStack stack) { return ImmortalItemEntity.create(ModEntities.IMMORTAL.get(), level, location.getX(), location.getY(), location.getZ(), stack); } + @OnlyIn(Dist.CLIENT) + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientItemExtensions() { + @Override + public @NotNull HumanoidModel getHumanoidArmorModel(LivingEntity entityLiving, ItemStack itemstack, EquipmentSlot armorSlot, HumanoidModel _deafult) { + InfinityArmorModel model = armorSlot == EquipmentSlot.LEGS ? new InfinityArmorModel(InfinityArmorModel.createMesh(new CubeDeformation(1.0F), 0.0F, true).getRoot().bake(64, 64)) : new InfinityArmorModel(InfinityArmorModel.createMesh(new CubeDeformation(1.0F), 0.0F, false).getRoot().bake(64, 64)); + model.update(entityLiving, itemstack, armorSlot); + return model; + } + }); + } + @Override + public @Nullable String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return Static.MOD_ID + ":textures/models/infinity_armor.png"; + } } diff --git a/src/main/java/committee/nova/mods/avaritia/common/item/MatterClusterItem.java b/src/main/java/committee/nova/mods/avaritia/common/item/MatterClusterItem.java index e337787e..68f9f5b9 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/item/MatterClusterItem.java +++ b/src/main/java/committee/nova/mods/avaritia/common/item/MatterClusterItem.java @@ -4,7 +4,7 @@ import committee.nova.mods.avaritia.common.entity.ImmortalItemEntity; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.ToolUtil; +import committee.nova.mods.avaritia.util.ToolUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; @@ -49,7 +49,7 @@ public MatterClusterItem() { } public static List makeClusters(Set input) { - Map items = ToolUtil.collateMatterCluster(input); + Map items = ToolUtils.collateMatterCluster(input); List clusters = new ArrayList<>(); List> itemlist = new ArrayList<>(items.entrySet()); @@ -223,7 +223,7 @@ public void appendHoverText(ItemStack stack, Level worldIn, @NotNull List drops = ToolUtil.collateMatterClusterContents(Objects.requireNonNull(MatterClusterItem.getClusterData(stack))); + List drops = ToolUtils.collateMatterClusterContents(Objects.requireNonNull(MatterClusterItem.getClusterData(stack))); for (ItemStack drop : drops) { Containers.dropItemStack(world, pos.x, pos.y, pos.z, drop); diff --git a/src/main/java/committee/nova/mods/avaritia/common/item/singularity/SingularityItem.java b/src/main/java/committee/nova/mods/avaritia/common/item/singularity/SingularityItem.java index a2ece735..52cda86f 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/item/singularity/SingularityItem.java +++ b/src/main/java/committee/nova/mods/avaritia/common/item/singularity/SingularityItem.java @@ -5,7 +5,7 @@ import committee.nova.mods.avaritia.common.entity.ImmortalItemEntity; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModTooltips; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import committee.nova.mods.avaritia.util.lang.Localizable; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -35,7 +35,7 @@ public SingularityItem(Function properties) { } @Override public @NotNull Component getName(@NotNull ItemStack stack) { - var singularity = SingularityUtil.getSingularity(stack); + var singularity = SingularityUtils.getSingularity(stack); if (singularity == null) { return Localizable.of(this.getDescriptionId(stack)).args("NULL").build(); @@ -47,7 +47,7 @@ public SingularityItem(Function properties) { @OnlyIn(Dist.CLIENT) @Override public void appendHoverText(@NotNull ItemStack stack, Level level, @NotNull List tooltip, @NotNull TooltipFlag flag) { - var singularity = SingularityUtil.getSingularity(stack); + var singularity = SingularityUtils.getSingularity(stack); if (singularity != null) { var modid = singularity.getId().getNamespace(); @@ -62,7 +62,7 @@ public void appendHoverText(@NotNull ItemStack stack, Level level, @NotNull List @Override public int getColor(int i, ItemStack stack) { - var singularity = SingularityUtil.getSingularity(stack); + var singularity = SingularityUtils.getSingularity(stack); if (singularity == null) return -1; diff --git a/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityAxeItem.java b/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityAxeItem.java index fcd287c5..cdf3150e 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityAxeItem.java +++ b/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityAxeItem.java @@ -3,7 +3,7 @@ import committee.nova.mods.avaritia.common.entity.ImmortalItemEntity; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.ToolUtil; +import committee.nova.mods.avaritia.util.ToolUtils; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; @@ -71,7 +71,7 @@ public int getEnchantmentValue(ItemStack stack) { @Override public boolean onBlockStartBreak(ItemStack stack, BlockPos pos, Player player) { if (player.isCrouching() && !player.level().isClientSide) { - ToolUtil.breakRangeBlocks(player, stack, pos, 13, ToolUtil.materialsAxe); + ToolUtils.breakRangeBlocks(player, stack, pos, 13, ToolUtils.materialsAxe); } return false; } diff --git a/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityHoeItem.java b/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityHoeItem.java index 599387c8..54550939 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityHoeItem.java +++ b/src/main/java/committee/nova/mods/avaritia/common/item/tools/InfinityHoeItem.java @@ -4,8 +4,8 @@ import committee.nova.mods.avaritia.init.handler.ItemCaptureHandler; import committee.nova.mods.avaritia.init.registry.ModEntities; import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.ItemStackUtil; -import committee.nova.mods.avaritia.util.ToolUtil; +import committee.nova.mods.avaritia.util.ItemStackUtils; +import committee.nova.mods.avaritia.util.ToolUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; @@ -84,23 +84,23 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state //harvest if (block instanceof CropBlock) { //common if (block instanceof BeetrootBlock ? state.getValue(BeetrootBlock.AGE) >= 3 : state.getValue(CropBlock.AGE) >= 7) { - ToolUtil.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); + ToolUtils.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); pLevel.setBlock(pos, state.setValue(block instanceof BeetrootBlock ? BeetrootBlock.AGE : CropBlock.AGE, 0), 11); } } if (block instanceof CocoaBlock) { //coca if (state.getValue(CocoaBlock.AGE) >= 2) { - ToolUtil.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); + ToolUtils.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); pLevel.setBlock(pos, state.setValue(CocoaBlock.AGE, 0), 11); } } if (block instanceof StemGrownBlock) { //pumpkin - ToolUtil.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); + ToolUtils.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); pLevel.setBlock(pos, Blocks.AIR.defaultBlockState(), 11); } if (block instanceof SweetBerryBushBlock) { //SweetBerry if (state.getValue(SweetBerryBushBlock.AGE) >= 3) { - ToolUtil.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); + ToolUtils.putMapDrops(pLevel, pos, pPlayer, new ItemStack(this), map); pLevel.setBlock(pos, state.setValue(SweetBerryBushBlock.AGE, 0), 11); } } @@ -112,7 +112,7 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state } ItemCaptureHandler.enableItemCapture(false); Set drops = ItemCaptureHandler.getCapturedDrops(); - ToolUtil.spawnClusters(pLevel, pPlayer, map.keySet()); + ToolUtils.spawnClusters(pLevel, pPlayer, map.keySet()); pPlayer.getCooldowns().addCooldown(heldItem.getItem(), 20); } pLevel.playSound(pPlayer, pPlayer.getOnPos(), SoundEvents.PLAYER_LEVELUP, SoundSource.PLAYERS, 1.0f, 5.0f); @@ -162,7 +162,7 @@ public float getDestroySpeed(@NotNull ItemStack stack, @NotNull BlockState state } ItemCaptureHandler.enableItemCapture(false); Set drops = ItemCaptureHandler.getCapturedDrops(); - ToolUtil.spawnClusters(world, playerentity, map.keySet()); + ToolUtils.spawnClusters(world, playerentity, map.keySet()); Iterable inBoxMutable = BlockPos.betweenClosed(minPos, maxPos.offset(0, 3, 0)); Iterable allInBoxMutable = BlockPos.betweenClosed(minPos.offset(-1, 0, -1), maxPos.offset(1, 4, 1)); @@ -196,11 +196,11 @@ private void harvest(Level world, BlockPos pos, Player player, Map use(Level level, Player player, @NotNull InteractionHand hand) { var heldItem = player.getItemInHand(hand); if (!level.isClientSide) { - AbilityUtil.attackAOE(player, ModConfig.swordAttackRange.get(), ModConfig.swordRangeDamage.get(), player.isCrouching() && ModConfig.isSwordAttackAnimal.get()); + AbilityUtils.attackAOE(player, ModConfig.swordAttackRange.get(), ModConfig.swordRangeDamage.get(), player.isCrouching() && ModConfig.isSwordAttackAnimal.get()); player.getCooldowns().addCooldown(heldItem.getItem(), 20); } level.playSound(player, player.getOnPos(), SoundEvents.PLAYER_LEVELUP, SoundSource.PLAYERS, 1.0f, 5.0f); @@ -96,7 +96,7 @@ public boolean hurtEnemy(@NotNull ItemStack stack, @NotNull LivingEntity victim, @Override public boolean onLeftClickEntity(ItemStack stack, Player player, Entity entity) { if (!entity.level().isClientSide && entity instanceof Player victim) { - if (victim.isCreative() && !victim.isDeadOrDying() && victim.getHealth() > 0 && !AbilityUtil.isInfinite(victim)) { + if (victim.isCreative() && !victim.isDeadOrDying() && victim.getHealth() > 0 && !AbilityUtils.isInfinite(victim)) { victim.getCombatTracker().recordDamage(player.damageSources().source(ModDamageTypes.INFINITY, player, victim), victim.getHealth()); victim.setHealth(0); victim.die(player.damageSources().source(ModDamageTypes.INFINITY, player, victim)); diff --git a/src/main/java/committee/nova/mods/avaritia/common/tile/CompressorTile.java b/src/main/java/committee/nova/mods/avaritia/common/tile/CompressorTile.java index 7c3a1889..c3646e2a 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/tile/CompressorTile.java +++ b/src/main/java/committee/nova/mods/avaritia/common/tile/CompressorTile.java @@ -6,7 +6,7 @@ import committee.nova.mods.avaritia.common.menu.CompressorMenu; import committee.nova.mods.avaritia.init.registry.ModRecipeTypes; import committee.nova.mods.avaritia.init.registry.ModTileEntities; -import committee.nova.mods.avaritia.util.ItemStackUtil; +import committee.nova.mods.avaritia.util.ItemStackUtils; import committee.nova.mods.avaritia.util.lang.Localizable; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -72,7 +72,7 @@ public static void tick(Level level, BlockPos pos, BlockState state, CompressorT } if (tile.recipe != null && tile.materialCount < tile.recipe.getInputCount()) { - if (ItemStackUtil.areStacksEqual(input, tile.materialStack)) { + if (ItemStackUtils.areStacksEqual(input, tile.materialStack)) { int consumeAmount = input.getCount(); consumeAmount = Math.min(consumeAmount, tile.recipe.getInputCount() - tile.materialCount); @@ -94,7 +94,7 @@ public static void tick(Level level, BlockPos pos, BlockState state, CompressorT if (tile.progress >= tile.recipe.getTimeRequire()) { var result = tile.recipe.assemble(tile.inventory); - if (ItemStackUtil.canCombineStacks(result, output)) { + if (ItemStackUtils.canCombineStacks(result, output)) { tile.updateResult(result); tile.progress = 0; tile.materialCount -= tile.recipe.getInputCount(); @@ -110,10 +110,10 @@ public static void tick(Level level, BlockPos pos, BlockState state, CompressorT } if (tile.ejecting) { - if (tile.materialCount > 0 && !tile.materialStack.isEmpty() && (output.isEmpty() || ItemStackUtil.areStacksEqual(tile.materialStack, output))) { + if (tile.materialCount > 0 && !tile.materialStack.isEmpty() && (output.isEmpty() || ItemStackUtils.areStacksEqual(tile.materialStack, output))) { int addCount = Math.min(tile.materialCount, tile.materialStack.getMaxStackSize() - output.getCount()); if (addCount > 0) { - var toAdd = ItemStackUtil.withSize(tile.materialStack, addCount, false); + var toAdd = ItemStackUtils.withSize(tile.materialStack, addCount, false); tile.updateResult(toAdd); tile.materialCount -= addCount; @@ -225,7 +225,7 @@ private void updateResult(ItemStack stack) { if (result.isEmpty()) { this.inventory.setStackInSlot(0, stack); } else { - this.inventory.setStackInSlot(0, ItemStackUtil.grow(result, stack.getCount())); + this.inventory.setStackInSlot(0, ItemStackUtils.grow(result, stack.getCount())); } } } diff --git a/src/main/java/committee/nova/mods/avaritia/common/tile/collector/AbsNeutronCollectorTile.java b/src/main/java/committee/nova/mods/avaritia/common/tile/collector/AbsNeutronCollectorTile.java index 93ff85a7..ba7de75b 100644 --- a/src/main/java/committee/nova/mods/avaritia/common/tile/collector/AbsNeutronCollectorTile.java +++ b/src/main/java/committee/nova/mods/avaritia/common/tile/collector/AbsNeutronCollectorTile.java @@ -3,7 +3,7 @@ import committee.nova.mods.avaritia.api.common.item.BaseItemStackHandler; import committee.nova.mods.avaritia.api.common.tile.BaseInventoryTileEntity; import committee.nova.mods.avaritia.common.menu.NeutronCollectorMenu; -import committee.nova.mods.avaritia.util.ItemStackUtil; +import committee.nova.mods.avaritia.util.ItemStackUtils; import committee.nova.mods.avaritia.util.lang.Localizable; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -59,7 +59,7 @@ public static void tick(Level level, BlockPos pos, BlockState state, AbsNeutronC tile.inventory.setStackInSlot(0, ItemHandlerHelper.copyStackWithSize(stack, 1)); } else if (result.is(tile.production)) { if (result.getCount() < 64) { - tile.inventory.setStackInSlot(0, ItemStackUtil.grow(result, 1)); + tile.inventory.setStackInSlot(0, ItemStackUtils.grow(result, 1)); } } tile.progress = 0; diff --git a/src/main/java/committee/nova/mods/avaritia/init/compat/jei/JeiCompat.java b/src/main/java/committee/nova/mods/avaritia/init/compat/jei/JeiCompat.java index 95a8ef37..b7d49841 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/compat/jei/JeiCompat.java +++ b/src/main/java/committee/nova/mods/avaritia/init/compat/jei/JeiCompat.java @@ -10,7 +10,7 @@ import committee.nova.mods.avaritia.init.registry.ModItems; import committee.nova.mods.avaritia.init.registry.ModMenus; import committee.nova.mods.avaritia.init.registry.ModRecipeTypes; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.constants.VanillaTypes; @@ -84,7 +84,7 @@ public void registerGuiHandlers(IGuiHandlerRegistration registration) { public void registerItemSubtypes(@NotNull ISubtypeRegistration registration) { ModItems.singularity.ifPresent(item -> { registration.registerSubtypeInterpreter(VanillaTypes.ITEM_STACK, item, (stack, context) -> { - var singularity = SingularityUtil.getSingularity(stack); + var singularity = SingularityUtils.getSingularity(stack); return singularity != null ? singularity.getId().toString() : ""; }); }); diff --git a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModAdvancements.java b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModAdvancements.java index 6c88dad0..120d0777 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModAdvancements.java +++ b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModAdvancements.java @@ -5,7 +5,7 @@ import committee.nova.mods.avaritia.init.registry.ModItems; import committee.nova.mods.avaritia.init.registry.ModSingularities; import committee.nova.mods.avaritia.init.registry.ModTags; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.FrameType; import net.minecraft.advancements.RequirementsStrategy; @@ -108,7 +108,7 @@ public void generate(@NotNull Advancement root, HolderLookup.@NotNull Provider h .requirements(RequirementsStrategy.OR) .save(consumer, Static.MOD_ID + ":main/neutron_compressor"); Advancement singularity = Advancement.Builder.advancement() - .display(SingularityUtil.getItemForSingularity(ModSingularities.REDSTONE), Component.translatable("advancements.avaritia.singularity.title"), Component.translatable("advancements.avaritia.singularity.desc"), null, FrameType.GOAL, true, true, true) + .display(SingularityUtils.getItemForSingularity(ModSingularities.REDSTONE), Component.translatable("advancements.avaritia.singularity.title"), Component.translatable("advancements.avaritia.singularity.desc"), null, FrameType.GOAL, true, true, true) .parent(neutron_compressor) .addCriterion("main", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ModTags.SINGULARITY).build())) .requirements(RequirementsStrategy.OR) diff --git a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModItemTags.java b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModItemTags.java index 2c6deed5..dfd1659e 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModItemTags.java +++ b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModItemTags.java @@ -1,19 +1,13 @@ package committee.nova.mods.avaritia.init.data.provider; import committee.nova.mods.avaritia.Static; -import committee.nova.mods.avaritia.init.handler.SingularityRegistryHandler; -import committee.nova.mods.avaritia.init.registry.ModBlocks; import committee.nova.mods.avaritia.init.registry.ModItems; import committee.nova.mods.avaritia.init.registry.ModTags; -import committee.nova.mods.avaritia.util.SingularityUtil; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.Registries; -import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.IntrinsicHolderTagsProvider; -import net.minecraft.tags.BlockTags; import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModSpriteSource.java b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModSpriteSource.java index d50b66cf..6d137e27 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModSpriteSource.java +++ b/src/main/java/committee/nova/mods/avaritia/init/data/provider/ModSpriteSource.java @@ -2,7 +2,6 @@ import committee.nova.mods.avaritia.Static; import net.minecraft.client.renderer.texture.atlas.sources.DirectoryLister; -import net.minecraft.client.renderer.texture.atlas.sources.SingleFile; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.data.SpriteSourceProvider; @@ -24,5 +23,6 @@ public ModSpriteSource(PackOutput output, ExistingFileHelper fileHelper) { @Override protected void addSources() { atlas(SpriteSourceProvider.BLOCKS_ATLAS).addSource(new DirectoryLister("misc", "misc/")); + atlas(SpriteSourceProvider.BLOCKS_ATLAS).addSource(new DirectoryLister("models", "models/")); } } diff --git a/src/main/java/committee/nova/mods/avaritia/init/data/provider/recipe/ModRecipes.java b/src/main/java/committee/nova/mods/avaritia/init/data/provider/recipe/ModRecipes.java index b6206ee7..879a7cc3 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/data/provider/recipe/ModRecipes.java +++ b/src/main/java/committee/nova/mods/avaritia/init/data/provider/recipe/ModRecipes.java @@ -3,17 +3,15 @@ import committee.nova.mods.avaritia.init.registry.ModBlocks; import committee.nova.mods.avaritia.init.registry.ModItems; import committee.nova.mods.avaritia.init.registry.ModSingularities; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import org.jetbrains.annotations.NotNull; @@ -410,7 +408,7 @@ protected void buildRecipes(@NotNull Consumer consumer) { .define('B', ModItems.neutron_ingot.get()) .define('C', ModItems.neutron_gear.get()) .define('X', ModBlocks.denser_neutron_collector.get()) - .define('Y', SingularityUtil.getItemForSingularity(ModSingularities.REDSTONE)) + .define('Y', SingularityUtils.getItemForSingularity(ModSingularities.REDSTONE)) .showNotification(true) .unlockedBy("has_item", has(ModBlocks.denser_neutron_collector.get())).save(consumer); diff --git a/src/main/java/committee/nova/mods/avaritia/init/handler/AbilityHandler.java b/src/main/java/committee/nova/mods/avaritia/init/handler/AbilityHandler.java index 37b71238..3b1c8c50 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/handler/AbilityHandler.java +++ b/src/main/java/committee/nova/mods/avaritia/init/handler/AbilityHandler.java @@ -2,20 +2,14 @@ import com.google.common.collect.Collections2; import com.google.common.collect.Lists; -import committee.nova.mods.avaritia.common.item.ArmorInfinityItem; -import committee.nova.mods.avaritia.init.registry.ModDamageTypes; -import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.AbilityUtil; -import committee.nova.mods.avaritia.util.PlayerUtil; +import committee.nova.mods.avaritia.common.item.InfinityArmorItem; +import committee.nova.mods.avaritia.util.PlayerUtils; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent; @@ -25,7 +19,7 @@ import java.util.*; -import static committee.nova.mods.avaritia.util.AbilityUtil.isPlayerWearing; +import static committee.nova.mods.avaritia.util.AbilityUtils.isPlayerWearing; import static net.minecraft.world.entity.EquipmentSlot.*; /** @@ -48,10 +42,10 @@ public static void updateAbilities(LivingEvent.LivingTickEvent event) { if (event.getEntity() instanceof Player player) { String key = player.getGameProfile().getName() + ":" + player.level().isClientSide; - boolean hasHelmet = isPlayerWearing(event.getEntity(), HEAD, item -> item instanceof ArmorInfinityItem); - boolean hasChest = isPlayerWearing(event.getEntity(), CHEST, item -> item instanceof ArmorInfinityItem); - boolean hasLeggings = isPlayerWearing(event.getEntity(), LEGS, item -> item instanceof ArmorInfinityItem); - boolean hasBoots = isPlayerWearing(event.getEntity(), FEET, item -> item instanceof ArmorInfinityItem); + boolean hasHelmet = isPlayerWearing(event.getEntity(), HEAD, item -> item instanceof InfinityArmorItem); + boolean hasChest = isPlayerWearing(event.getEntity(), CHEST, item -> item instanceof InfinityArmorItem); + boolean hasLeggings = isPlayerWearing(event.getEntity(), LEGS, item -> item instanceof InfinityArmorItem); + boolean hasBoots = isPlayerWearing(event.getEntity(), FEET, item -> item instanceof InfinityArmorItem); handleHelmetStateChange(player, key, hasHelmet); @@ -63,7 +57,7 @@ public static void updateAbilities(LivingEvent.LivingTickEvent event) { } private static void handleChestStateChange(Player player, String key, boolean hasChest) { - boolean isFlyingGameMode = !PlayerUtil.isPlayingMode(player); + boolean isFlyingGameMode = !PlayerUtils.isPlayingMode(player); FlightInfo flightInfo = entitiesWithFlight.computeIfAbsent(key, uuid -> new FlightInfo()); if (isFlyingGameMode || hasChest) { if (!flightInfo.hadFlightItem) { diff --git a/src/main/java/committee/nova/mods/avaritia/init/handler/DynamicRecipeHandler.java b/src/main/java/committee/nova/mods/avaritia/init/handler/DynamicRecipeHandler.java index e7fc1ea8..b9a1c186 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/handler/DynamicRecipeHandler.java +++ b/src/main/java/committee/nova/mods/avaritia/init/handler/DynamicRecipeHandler.java @@ -5,9 +5,8 @@ import committee.nova.mods.avaritia.common.crafting.recipe.InfinityCatalystCraftRecipe; import committee.nova.mods.avaritia.common.item.singularity.Singularity; import committee.nova.mods.avaritia.init.event.RegisterRecipesEvent; -import committee.nova.mods.avaritia.init.registry.ModRecipeTypes; import committee.nova.mods.avaritia.util.RecipeUtil; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -29,7 +28,7 @@ public static void onRegisterRecipes(RegisterRecipesEvent event) { .stream() .filter(singularity -> singularity.getIngredient() != Ingredient.EMPTY) .limit(81) - .map(SingularityUtil::getItemForSingularity) + .map(SingularityUtils::getItemForSingularity) .map(Ingredient::of) .forEach(infinity_catalyst.inputs::add); event.register(new InfinityCatalystCraftRecipe(Static.rl("infinity_catalyst"), infinity_catalyst.inputs)); @@ -54,7 +53,7 @@ private static CompressorRecipe makeSingularityRecipe(Singularity singularity) { var id = singularity.getId(); var recipeId = new ResourceLocation(Static.MOD_ID, id.getPath() + "_singularity"); - var output = SingularityUtil.getItemForSingularity(singularity); + var output = SingularityUtils.getItemForSingularity(singularity); int ingredientCount = singularity.getIngredientCount(); int timeRequired = singularity.getTimeRequired(); diff --git a/src/main/java/committee/nova/mods/avaritia/init/handler/InfinityHandler.java b/src/main/java/committee/nova/mods/avaritia/init/handler/InfinityHandler.java index 6b19b55e..8da50275 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/handler/InfinityHandler.java +++ b/src/main/java/committee/nova/mods/avaritia/init/handler/InfinityHandler.java @@ -1,15 +1,15 @@ package committee.nova.mods.avaritia.init.handler; import committee.nova.mods.avaritia.common.entity.ImmortalItemEntity; -import committee.nova.mods.avaritia.common.item.ArmorInfinityItem; +import committee.nova.mods.avaritia.common.item.InfinityArmorItem; import committee.nova.mods.avaritia.common.item.MatterClusterItem; import committee.nova.mods.avaritia.common.item.tools.*; import committee.nova.mods.avaritia.common.net.TotemPacket; import committee.nova.mods.avaritia.init.registry.ModDamageTypes; import committee.nova.mods.avaritia.init.registry.ModItems; -import committee.nova.mods.avaritia.util.AbilityUtil; -import committee.nova.mods.avaritia.util.ToolUtil; -import committee.nova.mods.avaritia.util.lang.TextUtil; +import committee.nova.mods.avaritia.util.AbilityUtils; +import committee.nova.mods.avaritia.util.ToolUtils; +import committee.nova.mods.avaritia.util.lang.TextUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; @@ -70,7 +70,7 @@ private static boolean isGarbageBlock(BlockState state) { } public static void applyLuck(BlockEvent.BreakEvent event, int multiplier) { - if (ToolUtil.canUseTool(event.getState(), ToolUtil.materialsPick)) { + if (ToolUtils.canUseTool(event.getState(), ToolUtils.materialsPick)) { LootParams.Builder lootcontext$builder = (new LootParams.Builder((ServerLevel) event.getPlayer().level())).withLuck(event.getPlayer().level().random.nextFloat()).withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(event.getPos())).withParameter(LootContextParams.TOOL, ItemStack.EMPTY).withOptionalParameter(LootContextParams.BLOCK_ENTITY, event.getPlayer().level().getBlockEntity(event.getPos())); List drops = event.getState().getDrops(lootcontext$builder); for (ItemStack drop : drops) { @@ -208,17 +208,17 @@ public static void onTooltip(ItemTooltipEvent event) { if (event.getItemStack().getItem() instanceof InfinitySwordItem) { for (int x = 0; x < event.getToolTip().size(); x++) { if (event.getToolTip().get(x).getString().contains(I18n.get("tooltip.infinity.desc")) || event.getToolTip().get(x).getString().equals(I18n.get("attribute.name.generic.attack_damage"))) { - event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtil.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.infinity.desc").withStyle(ChatFormatting.BLUE))); + event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtils.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.infinity.desc").withStyle(ChatFormatting.BLUE))); return; } } - } else if (event.getItemStack().getItem() instanceof ArmorInfinityItem) { + } else if (event.getItemStack().getItem() instanceof InfinityArmorItem) { for (int x = 0; x < event.getToolTip().size(); x++) { if (event.getToolTip().get(x).getString().contains(I18n.get("tooltip.armor.desc"))) { - event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtil.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.armor.desc").withStyle(ChatFormatting.BLUE))); + event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtils.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.armor.desc").withStyle(ChatFormatting.BLUE))); return; } else if (event.getToolTip().get(x).getString().contains(I18n.get("tooltip.armor_toughness.desc"))) { - event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtil.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.armor_toughness.desc").withStyle(ChatFormatting.BLUE))); + event.getToolTip().set(x, Component.literal("+").withStyle(ChatFormatting.BLUE).append(Component.literal(TextUtils.makeFabulous(I18n.get("tooltip.infinity")))).append(" ").append(Component.translatable("tooltip.armor_toughness.desc").withStyle(ChatFormatting.BLUE))); return; } @@ -230,7 +230,7 @@ public static void onTooltip(ItemTooltipEvent event) { @SubscribeEvent public static void onDeath(LivingDeathEvent event) { if (event.getEntity() instanceof ServerPlayer player) { - if (AbilityUtil.isInfinite(player) && !(event.getSource() instanceof ModDamageTypes.DamageSourceRandomMessages)) { + if (AbilityUtils.isInfinite(player) && !(event.getSource() instanceof ModDamageTypes.DamageSourceRandomMessages)) { event.setCanceled(true); player.setHealth(player.getMaxHealth()); } @@ -244,7 +244,7 @@ public static void onDeath(LivingDeathEvent event) { player.setHealth(player.getMaxHealth()); player.addEffect(new MobEffectInstance(MobEffects.JUMP, 800, 1)); player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 800, 1)); - AbilityUtil.attackAOE(player, 8, 1000.0f, false); + AbilityUtils.attackAOE(player, 8, 1000.0f, false); player.displayClientMessage(Component.translatable("tooltip.avaritia.totem_break"), false); }else { player.setHealth(10.0F); @@ -268,7 +268,7 @@ public static void onGetHurt(LivingHurtEvent event) { if (!player.getMainHandItem().isEmpty() && player.getMainHandItem().is(ModItems.infinity_sword.get()) && player.getMainHandItem().useOnRelease()) { event.setCanceled(true); } - if (AbilityUtil.isInfinite(player) && !event.getSource().is(ModDamageTypes.INFINITY)) { + if (AbilityUtils.isInfinite(player) && !event.getSource().is(ModDamageTypes.INFINITY)) { event.setCanceled(true); } } @@ -279,7 +279,7 @@ public static void onAttacked(LivingAttackEvent event) { if (!(event.getEntity() instanceof Player player)) { return; } - if (AbilityUtil.isInfinite(player) && !event.getSource().is(ModDamageTypes.INFINITY)) { + if (AbilityUtils.isInfinite(player) && !event.getSource().is(ModDamageTypes.INFINITY)) { event.setCanceled(true); } } @@ -322,7 +322,7 @@ public static void onLivingDrops(LivingDropsEvent event) { public static void entityItemUnDeath(ItemEvent event) { ItemEntity entityItem = event.getEntity(); Item item = entityItem.getItem().getItem(); - if (item instanceof ArmorInfinityItem || item instanceof InfinityAxeItem || item instanceof InfinityBowItem || + if (item instanceof InfinityArmorItem || item instanceof InfinityAxeItem || item instanceof InfinityBowItem || item instanceof InfinityHoeItem || item instanceof InfinityShovelItem || item instanceof InfinityPickaxeItem || item instanceof InfinitySwordItem) { entityItem.setInvulnerable(true); diff --git a/src/main/java/committee/nova/mods/avaritia/init/handler/ModelBakeReplaceHandler.java b/src/main/java/committee/nova/mods/avaritia/init/handler/ModelBakeReplaceHandler.java index b357c892..bd15289e 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/handler/ModelBakeReplaceHandler.java +++ b/src/main/java/committee/nova/mods/avaritia/init/handler/ModelBakeReplaceHandler.java @@ -2,12 +2,15 @@ import committee.nova.mods.avaritia.Static; import committee.nova.mods.avaritia.client.model.bake.InfinitySwordBakeModel; +import committee.nova.mods.avaritia.client.shader.AvaritiaShaders; import committee.nova.mods.avaritia.init.registry.ModItems; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; @@ -25,7 +28,7 @@ */ @Mod.EventBusSubscriber(modid = Static.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModelBakeReplaceHandler { - @SubscribeEvent + //@SubscribeEvent public static void onModelBaked(ModelEvent.ModifyBakingResult event){ Map modelRegistry = event.getModels(); ModelResourceLocation location = new ModelResourceLocation(Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(ModItems.infinity_sword.get())), "inventory"); @@ -39,4 +42,5 @@ public static void onModelBaked(ModelEvent.ModifyBakingResult event){ //event.getModels().replace(location, obsidianWrenchBakedModel); } } + } diff --git a/src/main/java/committee/nova/mods/avaritia/init/handler/SingularityRegistryHandler.java b/src/main/java/committee/nova/mods/avaritia/init/handler/SingularityRegistryHandler.java index 618e507c..ceb9c6cb 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/handler/SingularityRegistryHandler.java +++ b/src/main/java/committee/nova/mods/avaritia/init/handler/SingularityRegistryHandler.java @@ -10,7 +10,7 @@ import committee.nova.mods.avaritia.common.item.singularity.Singularity; import committee.nova.mods.avaritia.common.net.SyncSingularitiesPacket; import committee.nova.mods.avaritia.init.registry.ModSingularities; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.ICondition; @@ -87,7 +87,7 @@ public void writeDefaultSingularityFiles() { if (!dir.exists() && dir.mkdirs()) { Static.LOGGER.warn("Could not find default singularities,try to generate!"); for (var singularity : ModSingularities.getDefaults()) { - var json = SingularityUtil.writeToJson(singularity); + var json = SingularityUtils.writeToJson(singularity); FileWriter writer = null; try { @@ -161,7 +161,7 @@ private void loadFiles(File dir, ICondition.IContext context) { var name = file.getName().replace(".json", ""); json = JsonParser.parseReader(reader).getAsJsonObject(); - singularity = SingularityUtil.loadFromJson(new ResourceLocation(Static.MOD_ID, name), json, context); + singularity = SingularityUtils.loadFromJson(new ResourceLocation(Static.MOD_ID, name), json, context); reader.close(); } catch (Exception e) { diff --git a/src/main/java/committee/nova/mods/avaritia/init/registry/ModCreativeModeTabs.java b/src/main/java/committee/nova/mods/avaritia/init/registry/ModCreativeModeTabs.java index 1cf790f3..b6d0bcea 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/registry/ModCreativeModeTabs.java +++ b/src/main/java/committee/nova/mods/avaritia/init/registry/ModCreativeModeTabs.java @@ -2,7 +2,7 @@ import committee.nova.mods.avaritia.Static; import committee.nova.mods.avaritia.init.handler.SingularityRegistryHandler; -import committee.nova.mods.avaritia.util.SingularityUtil; +import committee.nova.mods.avaritia.util.SingularityUtils; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; @@ -28,7 +28,7 @@ public class ModCreativeModeTabs{ .displayItems((parameters, output) -> { for (var singularity : SingularityRegistryHandler.getInstance().getSingularities()) { if (singularity.isEnabled()) { - output.accept(SingularityUtil.getItemForSingularity(singularity)); + output.accept(SingularityUtils.getItemForSingularity(singularity)); } } ModItems.ITEMS.getEntries().forEach(itemRegistryObject -> { diff --git a/src/main/java/committee/nova/mods/avaritia/init/registry/ModItems.java b/src/main/java/committee/nova/mods/avaritia/init/registry/ModItems.java index 508a998f..bd3a8726 100644 --- a/src/main/java/committee/nova/mods/avaritia/init/registry/ModItems.java +++ b/src/main/java/committee/nova/mods/avaritia/init/registry/ModItems.java @@ -2,7 +2,7 @@ import committee.nova.mods.avaritia.Static; import committee.nova.mods.avaritia.api.common.item.BaseItem; -import committee.nova.mods.avaritia.common.item.ArmorInfinityItem; +import committee.nova.mods.avaritia.common.item.InfinityArmorItem; import committee.nova.mods.avaritia.common.item.EndestPearlItem; import committee.nova.mods.avaritia.common.item.MatterClusterItem; import committee.nova.mods.avaritia.common.item.resources.ResourceItem; @@ -39,10 +39,10 @@ public class ModItems { public static RegistryObject skull_sword = item("skull_fire_sword", SkullsSwordItem::new); public static RegistryObject infinity_bow = item("infinity_bow", InfinityBowItem::new); //armors - public static RegistryObject infinity_helmet = item("infinity_helmet", () -> new ArmorInfinityItem(ArmorItem.Type.HELMET)); - public static RegistryObject infinity_chestplate = item("infinity_chestplate", () -> new ArmorInfinityItem(ArmorItem.Type.CHESTPLATE)); - public static RegistryObject infinity_pants = item("infinity_pants", () -> new ArmorInfinityItem(ArmorItem.Type.LEGGINGS)); - public static RegistryObject infinity_boots = item("infinity_boots", () -> new ArmorInfinityItem(ArmorItem.Type.BOOTS)); + public static RegistryObject infinity_helmet = item("infinity_helmet", () -> new InfinityArmorItem(ArmorItem.Type.HELMET)); + public static RegistryObject infinity_chestplate = item("infinity_chestplate", () -> new InfinityArmorItem(ArmorItem.Type.CHESTPLATE)); + public static RegistryObject infinity_pants = item("infinity_pants", () -> new InfinityArmorItem(ArmorItem.Type.LEGGINGS)); + public static RegistryObject infinity_boots = item("infinity_boots", () -> new InfinityArmorItem(ArmorItem.Type.BOOTS)); public static RegistryObject ultimate_stew = item("ultimate_stew", () -> new Item(new Item.Properties().rarity(Rarity.EPIC).food(ModFoods.ultimate_stew))); public static RegistryObject cosmic_meatballs = item("cosmic_meatballs", () -> new Item(new Item.Properties().rarity(Rarity.EPIC).food(ModFoods.cosmic_meatballs))); //resource diff --git a/src/main/java/committee/nova/mods/avaritia/util/AbilityUtil.java b/src/main/java/committee/nova/mods/avaritia/util/AbilityUtils.java similarity index 97% rename from src/main/java/committee/nova/mods/avaritia/util/AbilityUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/AbilityUtils.java index 1dbbab64..8e2de43d 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/AbilityUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/AbilityUtils.java @@ -1,6 +1,6 @@ package committee.nova.mods.avaritia.util; -import committee.nova.mods.avaritia.common.item.ArmorInfinityItem; +import committee.nova.mods.avaritia.common.item.InfinityArmorItem; import committee.nova.mods.avaritia.init.registry.ModDamageTypes; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; @@ -31,7 +31,7 @@ * @Description: */ -public class AbilityUtil { +public class AbilityUtils { public static void sweepAttack(Level level, LivingEntity livingEntity, LivingEntity victim) { if (livingEntity instanceof Player player){ for(LivingEntity livingentity : level.getEntitiesOfClass(LivingEntity.class, player.getItemInHand(InteractionHand.MAIN_HAND).getSweepHitBox(player, victim))) { @@ -85,7 +85,7 @@ public static boolean isInfinite(LivingEntity player) { continue; } ItemStack stack = player.getItemBySlot(slot); - if (stack.isEmpty() || !(stack.getItem() instanceof ArmorInfinityItem)) { + if (stack.isEmpty() || !(stack.getItem() instanceof InfinityArmorItem)) { return false; } } diff --git a/src/main/java/committee/nova/mods/avaritia/util/ItemStackUtil.java b/src/main/java/committee/nova/mods/avaritia/util/ItemStackUtils.java similarity index 89% rename from src/main/java/committee/nova/mods/avaritia/util/ItemStackUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/ItemStackUtils.java index bdf96ae4..64371fa8 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/ItemStackUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/ItemStackUtils.java @@ -13,8 +13,8 @@ * Date: 2022/4/2 14:18 * Version: 1.0 */ -public class ItemStackUtil { - public ItemStackUtil() { +public class ItemStackUtils { + public ItemStackUtils() { } public static ItemStack mapEquals(ItemStack stack, Map map) { @@ -74,8 +74,8 @@ public static boolean compareTags(ItemStack stack1, ItemStack stack2) { } else if (stack1.hasTag() && !stack2.hasTag()) { return false; } else { - Set stack1Keys = NBTUtil.getTagCompound(stack1).getAllKeys(); - Set stack2Keys = NBTUtil.getTagCompound(stack2).getAllKeys(); + Set stack1Keys = NBTUtils.getTagCompound(stack1).getAllKeys(); + Set stack2Keys = NBTUtils.getTagCompound(stack2).getAllKeys(); Iterator iterator = stack1Keys.iterator(); String key; @@ -88,7 +88,7 @@ public static boolean compareTags(ItemStack stack1, ItemStack stack2) { if (!stack2Keys.contains(key)) { return false; } - } while (NbtUtils.compareNbt(NBTUtil.getTag(stack1, key), NBTUtil.getTag(stack2, key), true)); + } while (NbtUtils.compareNbt(NBTUtils.getTag(stack1, key), NBTUtils.getTag(stack2, key), true)); return false; } diff --git a/src/main/java/committee/nova/mods/avaritia/util/NBTUtil.java b/src/main/java/committee/nova/mods/avaritia/util/NBTUtils.java similarity index 97% rename from src/main/java/committee/nova/mods/avaritia/util/NBTUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/NBTUtils.java index 9e6ae840..45b7ae2a 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/NBTUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/NBTUtils.java @@ -10,7 +10,7 @@ * Date: 2022/4/2 12:40 * Version: 1.0 */ -public class NBTUtil { +public class NBTUtils { public static String getString(ItemStack stack, String key) { return stack.hasTag() ? getTagCompound(stack).getString(key) : ""; } diff --git a/src/main/java/committee/nova/mods/avaritia/util/PlayerUtil.java b/src/main/java/committee/nova/mods/avaritia/util/PlayerUtils.java similarity index 92% rename from src/main/java/committee/nova/mods/avaritia/util/PlayerUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/PlayerUtils.java index 0754eaa2..fc1173ba 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/PlayerUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/PlayerUtils.java @@ -10,7 +10,7 @@ * @description * @date 2024/3/28 12:58 */ -public class PlayerUtil { +public class PlayerUtils { public static boolean isPlayingMode(Player player) { return !player.isCreative() && !player.isSpectator(); } diff --git a/src/main/java/committee/nova/mods/avaritia/util/SingularityUtil.java b/src/main/java/committee/nova/mods/avaritia/util/SingularityUtils.java similarity index 98% rename from src/main/java/committee/nova/mods/avaritia/util/SingularityUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/SingularityUtils.java index a2c5a282..31fba365 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/SingularityUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/SingularityUtils.java @@ -22,7 +22,7 @@ * Date: 2022/4/2 12:39 * Version: 1.0 */ -public class SingularityUtil { +public class SingularityUtils { public static Singularity loadFromJson(ResourceLocation id, JsonObject json, ICondition.IContext context) { if (!CraftingHelper.processConditions(json, "conditions", context)) { Static.LOGGER.info("Skipping loading Singularity {} as its conditions were not met!", id); @@ -121,7 +121,7 @@ public static ItemStack getItemForSingularity(Singularity singularity) { } public static Singularity getSingularity(ItemStack stack) { - var id = NBTUtil.getString(stack, "Id"); + var id = NBTUtils.getString(stack, "Id"); if (!id.isEmpty()) { return SingularityRegistryHandler.getInstance().getSingularityById(ResourceLocation.tryParse(id)); } diff --git a/src/main/java/committee/nova/mods/avaritia/util/TileEntityUtil.java b/src/main/java/committee/nova/mods/avaritia/util/TileEntityUtils.java similarity index 97% rename from src/main/java/committee/nova/mods/avaritia/util/TileEntityUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/TileEntityUtils.java index 2c04b146..ab1e2d6c 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/TileEntityUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/TileEntityUtils.java @@ -11,7 +11,7 @@ * Date: 2022/4/2 11:03 * Version: 1.0 */ -public class TileEntityUtil { +public class TileEntityUtils { public static void dispatchToNearbyPlayers(BlockEntity tile) { var level = tile.getLevel(); diff --git a/src/main/java/committee/nova/mods/avaritia/util/ToolUtil.java b/src/main/java/committee/nova/mods/avaritia/util/ToolUtils.java similarity index 95% rename from src/main/java/committee/nova/mods/avaritia/util/ToolUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/ToolUtils.java index ec177de4..10b65385 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/ToolUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/ToolUtils.java @@ -2,7 +2,7 @@ import com.google.common.collect.Sets; import committee.nova.mods.avaritia.api.common.item.ItemStackWrapper; -import committee.nova.mods.avaritia.common.item.ArmorInfinityItem; +import committee.nova.mods.avaritia.common.item.InfinityArmorItem; import committee.nova.mods.avaritia.common.item.MatterClusterItem; import committee.nova.mods.avaritia.init.handler.ItemCaptureHandler; import committee.nova.mods.avaritia.init.registry.ModItems; @@ -39,7 +39,7 @@ * Date: 2022/3/31 10:50 * Version: 1.0 */ -public class ToolUtil { +public class ToolUtils { public static final Set> materialsPick = Sets.newHashSet( BlockTags.MINEABLE_WITH_PICKAXE, Tags.Blocks.STONE, Tags.Blocks.STORAGE_BLOCKS, @@ -67,7 +67,7 @@ public static void breakRangeBlocks(Player player, ItemStack stack, BlockPos pos BlockHitResult traceResult = RayTracer.retrace(player, range); var world = player.level(); var state = world.getBlockState(pos); - if (!ToolUtil.canUseTool(state, keySets)) { + if (!ToolUtils.canUseTool(state, keySets)) { return; } @@ -80,7 +80,7 @@ public static void breakRangeBlocks(Player player, ItemStack stack, BlockPos pos var minOffset = new BlockPos(-range, doY ? -1 : -range, -range); var maxOffset = new BlockPos(range, doY ? range * 2 - 2 : range, range); - ToolUtil.breakBlocks(world, player, stack, pos, minOffset, maxOffset, keySets, false); + ToolUtils.breakBlocks(world, player, stack, pos, minOffset, maxOffset, keySets, false); } @@ -120,7 +120,7 @@ public static void spawnClusters(Level world, Player player, Set drop } public static void putMapItem(ItemStack drop, Map map) { - ItemStack itemStack = ItemStackUtil.mapEquals(drop, map); + ItemStack itemStack = ItemStackUtils.mapEquals(drop, map); if (!itemStack.isEmpty()) map.put(itemStack, map.get(itemStack) + drop.getCount()); else map.put(drop, drop.getCount()); @@ -165,7 +165,7 @@ public static void removeBlockWithDrops(Level world, Player player, BlockPos pos } //if material contains - if (!block.canHarvestBlock(state, world, pos, player) || !ToolUtil.canUseTool(state, validMaterials)) { + if (!block.canHarvestBlock(state, world, pos, player) || !ToolUtils.canUseTool(state, validMaterials)) { return; } @@ -236,6 +236,6 @@ public static Map collateMatterCluster(Set public static boolean isInfiniteChest(LivingEntity player) { ItemStack stack = player.getItemBySlot(EquipmentSlot.CHEST); - return !stack.isEmpty() && stack.getItem() instanceof ArmorInfinityItem; + return !stack.isEmpty() && stack.getItem() instanceof InfinityArmorItem; } } diff --git a/src/main/java/committee/nova/mods/avaritia/util/client/ColorUtils.java b/src/main/java/committee/nova/mods/avaritia/util/client/ColorUtils.java new file mode 100644 index 00000000..9f5e7e99 --- /dev/null +++ b/src/main/java/committee/nova/mods/avaritia/util/client/ColorUtils.java @@ -0,0 +1,66 @@ +package committee.nova.mods.avaritia.util.client; + +/** + * ColorUtils + * + * @author cnlimiter + * @version 1.0 + * @description + * @date 2024/6/9 下午11:28 + */ +public class ColorUtils { + public static float[] HSVtoRGB(float h, float s, float v) { + float[] hsv = new float[3]; + float[] rgb = new float[3]; + hsv[0] = h; + hsv[1] = s; + hsv[2] = v; + if (hsv[0] == -1.0F) { + rgb[0] = rgb[1] = rgb[2] = hsv[2]; + return rgb; + } else { + int i = (int)Math.floor((double)hsv[0]); + float f = hsv[0] - (float)i; + if (i % 2 == 0) { + f = 1.0F - f; + } + + float m = hsv[2] * (1.0F - hsv[1]); + float n = hsv[2] * (1.0F - hsv[1] * f); + switch (i) { + case 0: + case 6: + rgb[0] = hsv[2]; + rgb[1] = n; + rgb[2] = m; + break; + case 1: + rgb[0] = n; + rgb[1] = hsv[2]; + rgb[2] = m; + break; + case 2: + rgb[0] = m; + rgb[1] = hsv[2]; + rgb[2] = n; + break; + case 3: + rgb[0] = m; + rgb[1] = n; + rgb[2] = hsv[2]; + break; + case 4: + rgb[0] = n; + rgb[1] = m; + rgb[2] = hsv[2]; + break; + case 5: + rgb[0] = hsv[2]; + rgb[1] = m; + rgb[2] = n; + } + + return rgb; + } + } +} diff --git a/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtil.java b/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtil.java deleted file mode 100644 index 1d26a9f5..00000000 --- a/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtil.java +++ /dev/null @@ -1,157 +0,0 @@ -package committee.nova.mods.avaritia.util.client; - -import com.google.common.collect.ImmutableMap; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Transformation; -import committee.nova.mods.avaritia.api.client.model.PerspectiveModelState; -import net.minecraft.client.renderer.block.model.ItemTransform; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.world.item.ItemDisplayContext; -import org.joml.Matrix3f; -import org.joml.Matrix4f; -import org.joml.Quaternionf; -import org.joml.Vector3f; - -import java.util.HashMap; -import java.util.Map; - -import static org.joml.Math.cos; -import static org.joml.Math.sin; - -/** - * Name: Avaritia-forge / TransformUtil - * Author: cnlimiter - * CreateTime: 2023/9/24 5:11 - * Description: - */ - -public class TransformUtil { - private static final Transformation flipX = new Transformation(null, null, new Vector3f(-1, 1, 1), null); - public static final PerspectiveModelState IDENTITY = PerspectiveModelState.IDENTITY; - public static final PerspectiveModelState DEFAULT_BLOCK; - public static final PerspectiveModelState DEFAULT_ITEM; - public static final PerspectiveModelState DEFAULT_TOOL; - public static final PerspectiveModelState DEFAULT_BOW; - public static final PerspectiveModelState DEFAULT_HANDHELD_ROD; - - static { - Map map; - Transformation thirdPerson; - Transformation firstPerson; - - //@formatter:off - map = new HashMap<>(); - thirdPerson = create(0F,2.5F, 0F,75F, 45F, 0F,0.375F ); - map.put(ItemDisplayContext.GUI, create(0F, 0F, 0F,30F,225F, 0F,0.625F)); - map.put(ItemDisplayContext.GROUND, create(0F, 3F, 0F, 0F, 0F, 0F, 0.25F)); - map.put(ItemDisplayContext.FIXED, create(0F, 0F, 0F, 0F, 0F, 0F, 0.5F)); - map.put(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, thirdPerson); - map.put(ItemDisplayContext.THIRD_PERSON_LEFT_HAND, flipLeft(thirdPerson)); - map.put(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND, create(0F, 0F, 0F, 0F, 45F, 0F, 0.4F)); - map.put(ItemDisplayContext.FIRST_PERSON_LEFT_HAND, create(0F, 0F, 0F, 0F, 225F, 0F, 0.4F)); - DEFAULT_BLOCK = new PerspectiveModelState(ImmutableMap.copyOf(map)); - - map = new HashMap<>(); - thirdPerson = create( 0F, 3F, 1F, 0F, 0F, 0F, 0.55F); - firstPerson = create(1.13F,3.2F,1.13F, 0F,-90F,25F, 0.68F); - map.put(ItemDisplayContext.GROUND, create( 0F, 2F, 0F, 0F, 0F, 0F, 0.5F)); - map.put(ItemDisplayContext.HEAD, create( 0F, 13F, 7F, 0F,180F, 0F, 1F)); - map.put(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, thirdPerson); - map.put(ItemDisplayContext.THIRD_PERSON_LEFT_HAND, flipLeft(thirdPerson)); - map.put(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND, firstPerson); - map.put(ItemDisplayContext.FIRST_PERSON_LEFT_HAND, flipLeft(firstPerson)); - DEFAULT_ITEM = new PerspectiveModelState(ImmutableMap.copyOf(map)); - - map = new HashMap<>(); - map.put(ItemDisplayContext.GROUND, create( 0F, 2F, 0F, 0F, 0F, 0F, 0.5F)); - map.put(ItemDisplayContext.FIXED, create( 0F, 0F, 0F, 0F,180F, 0F, 1F)); - map.put(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, create( 0F, 4F, 0.5F, 0F,-90F, 55,0.85F)); - map.put(ItemDisplayContext.THIRD_PERSON_LEFT_HAND, create( 0F, 4F, 0.5F, 0F, 90F,-55,0.85F)); - map.put(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND, create(1.13F,3.2F,1.13F, 0F,-90F, 25,0.68F)); - map.put(ItemDisplayContext.FIRST_PERSON_LEFT_HAND, create(1.13F,3.2F,1.13F, 0F, 90F,-25,0.68F)); - DEFAULT_TOOL = new PerspectiveModelState(ImmutableMap.copyOf(map)); - - map = new HashMap<>(); - map.put(ItemDisplayContext.GROUND, create( 0F, 2F, 0F, 0F, 0F, 0F, 0.5F)); - map.put(ItemDisplayContext.FIXED, create( 0F, 0F, 0F, 0F, 180F, 0F, 1F)); - map.put(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, create( -1F, -2F, 2.5F,-80F, 260F,-40F, 0.9F)); - map.put(ItemDisplayContext.THIRD_PERSON_LEFT_HAND, create( -1F, -2F, 2.5F,-80F,-280F, 40F, 0.9F)); - map.put(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND, create(1.13F,3.2F,1.13F, 0F, -90F, 25F,0.68F)); - map.put(ItemDisplayContext.FIRST_PERSON_LEFT_HAND, create(1.13F,3.2F,1.13F, 0F, 90F,-25F,0.68F)); - DEFAULT_BOW = new PerspectiveModelState(ImmutableMap.copyOf(map)); - - map = new HashMap<>(); - map.put(ItemDisplayContext.GROUND, create(0F, 2F, 0F, 0F, 0F, 0F, 0.5F)); - map.put(ItemDisplayContext.THIRD_PERSON_RIGHT_HAND, create(0F, 4F,2.5F, 0F, 90F, 55F,0.85F)); - map.put(ItemDisplayContext.THIRD_PERSON_LEFT_HAND, create(0F, 4F,2.5F, 0F,-90F,-55F,0.85F)); - map.put(ItemDisplayContext.FIRST_PERSON_RIGHT_HAND, create(0F,1.6F,0.8F, 0F, 90F, 25F,0.68F)); - map.put(ItemDisplayContext.FIRST_PERSON_LEFT_HAND, create(0F,1.6F,0.8F, 0F,-90F,-25F,0.68F)); - DEFAULT_HANDHELD_ROD = new PerspectiveModelState(ImmutableMap.copyOf(map)); - //@formatter:on - } - public static Transformation create(float tx, float ty, float tz, float rx, float ry, float rz, float s) { - return create(new Vector3f(tx / 16, ty / 16, tz / 16), new Vector3f(rx, ry, rz), new Vector3f(s, s, s)); - } - - - public static Transformation create(Vector3f transform, Vector3f rotation, Vector3f scale) { - return new Transformation(transform, toQuaternionf(rotation.x(), rotation.y(), rotation.z(), true), scale, null); - } - public static Transformation create(ItemTransform transform) { - if (ItemTransform.NO_TRANSFORM.equals(transform)) return Transformation.identity(); - - return create(transform.translation, transform.rotation, transform.scale); - } - - public static Quaternionf toQuaternionf(float x, float y, float z, boolean p_80133_) { - if (p_80133_) { - x *= ((float)Math.PI / 180F); - y *= ((float)Math.PI / 180F); - z *= ((float)Math.PI / 180F); - } - - float f = sin(0.5F * x); - float f1 = cos(0.5F * x); - float f2 = sin(0.5F * y); - float f3 = cos(0.5F * y); - float f4 = sin(0.5F * z); - float f5 = cos(0.5F * z); - var i = f * f3 * f5 + f1 * f2 * f4; - var j = f1 * f2 * f5 - f * f3 * f4; - var k = f * f2 * f5 + f1 * f3 * f4; - var r = f1 * f3 * f5 - f * f2 * f4; - return new Quaternionf(i, j, k, r); - } - - public static Transformation flipLeft(Transformation transform) { - return flipX.compose(transform).compose(flipX); - } - public static ModelState stateFromItemTransforms(ItemTransforms itemTransforms) { - if (itemTransforms == ItemTransforms.NO_TRANSFORMS) return IDENTITY; - - ImmutableMap.Builder map = ImmutableMap.builder(); - - for (ItemDisplayContext value : ItemDisplayContext.values()) { - map.put(value, create(itemTransforms.getTransform(value))); - } - - return new PerspectiveModelState(map.build()); - } - - - public static void applyLeftyFlip(PoseStack pStack) { - if (!pStack.clear()) { - Matrix4f tMat = pStack.last().pose(); - Matrix3f nMat = pStack.last().normal(); - - flipX.getMatrix().mul(tMat, tMat); - tMat.mul(flipX.getMatrix()); - flipX.getNormalMatrix().mul(nMat, nMat); - nMat.mul(flipX.getNormalMatrix()); - - pStack.last().pose().mul(tMat); - pStack.last().normal().mul(nMat); - } - } -} diff --git a/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtils.java b/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtils.java index 7a039544..dff0784b 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtils.java +++ b/src/main/java/committee/nova/mods/avaritia/util/client/TransformUtils.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Transformation; import committee.nova.mods.avaritia.api.client.model.PerspectiveModelState; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import committee.nova.mods.avaritia.util.vec.Vector3; import net.minecraft.client.renderer.block.model.ItemTransform; import net.minecraft.client.renderer.block.model.ItemTransforms; @@ -131,7 +131,7 @@ public static Transformation create(Vector3 transform, Vector3 rotation, Vector3 public static Transformation create(Vector3f transform, Vector3f rotation, Vector3f scale) { return new Transformation( transform, - new Quaternionf().rotationXYZ((float) (rotation.x() * MathUtil.torad), (float) (rotation.y() * MathUtil.torad), (float) (rotation.z() * MathUtil.torad)), + new Quaternionf().rotationXYZ((float) (rotation.x() * MathUtils.torad), (float) (rotation.y() * MathUtils.torad), (float) (rotation.z() * MathUtils.torad)), scale, null ); diff --git a/src/main/java/committee/nova/mods/avaritia/util/client/colour/Colour.java b/src/main/java/committee/nova/mods/avaritia/util/client/colour/Colour.java index 4adc979c..786a10a2 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/client/colour/Colour.java +++ b/src/main/java/committee/nova/mods/avaritia/util/client/colour/Colour.java @@ -1,7 +1,7 @@ package committee.nova.mods.avaritia.util.client.colour; import committee.nova.mods.avaritia.util.java.Copyable; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import static java.lang.Math.max; @@ -79,9 +79,9 @@ public Colour interpolate(Colour colour2, double d) { } public Colour multiplyC(double d) { - r = (byte) MathUtil.clip((r & 0xFF) * d, 0, 255); - g = (byte) MathUtil.clip((g & 0xFF) * d, 0, 255); - b = (byte) MathUtil.clip((b & 0xFF) * d, 0, 255); + r = (byte) MathUtils.clip((r & 0xFF) * d, 0, 255); + g = (byte) MathUtils.clip((g & 0xFF) * d, 0, 255); + b = (byte) MathUtils.clip((b & 0xFF) * d, 0, 255); return this; } diff --git a/src/main/java/committee/nova/mods/avaritia/util/client/colour/CustomGradient.java b/src/main/java/committee/nova/mods/avaritia/util/client/colour/CustomGradient.java index 05730d18..a1e9e3a5 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/client/colour/CustomGradient.java +++ b/src/main/java/committee/nova/mods/avaritia/util/client/colour/CustomGradient.java @@ -1,7 +1,7 @@ package committee.nova.mods.avaritia.util.client.colour; import committee.nova.mods.avaritia.util.client.TextureUtils; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import net.minecraft.resources.ResourceLocation; import java.awt.image.BufferedImage; @@ -29,7 +29,7 @@ public ColourRGBA getColour(double position) { } public int getColourI(double position) { - int off = (int) MathUtil.clip(gradient.length * position, 0, gradient.length - 1); + int off = (int) MathUtils.clip(gradient.length * position, 0, gradient.length - 1); return gradient[off]; } } diff --git a/src/main/java/committee/nova/mods/avaritia/util/lang/TextUtil.java b/src/main/java/committee/nova/mods/avaritia/util/lang/TextUtils.java similarity index 98% rename from src/main/java/committee/nova/mods/avaritia/util/lang/TextUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/lang/TextUtils.java index 55726dc7..9e15b563 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/lang/TextUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/lang/TextUtils.java @@ -11,7 +11,7 @@ * Date: 2022/4/21 15:33 * Version: 1.0 */ -public class TextUtil { +public class TextUtils { private static final ChatFormatting[] fabulousness = new ChatFormatting[]{RED, GOLD, YELLOW, GREEN, AQUA, BLUE, LIGHT_PURPLE}; private static final ChatFormatting[] sanic = new ChatFormatting[]{BLUE, BLUE, BLUE, BLUE, WHITE, BLUE, WHITE, WHITE, BLUE, WHITE, WHITE, BLUE, RED, WHITE, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY, GRAY}; diff --git a/src/main/java/committee/nova/mods/avaritia/util/math/MathUtil.java b/src/main/java/committee/nova/mods/avaritia/util/math/MathUtils.java similarity index 99% rename from src/main/java/committee/nova/mods/avaritia/util/math/MathUtil.java rename to src/main/java/committee/nova/mods/avaritia/util/math/MathUtils.java index da7daaa7..f5a753e3 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/math/MathUtil.java +++ b/src/main/java/committee/nova/mods/avaritia/util/math/MathUtils.java @@ -10,7 +10,7 @@ * Date: 2022/5/15 9:32 * Version: 1.0 */ -public class MathUtil { +public class MathUtils { public static final double phi = 1.618033988749894; public static final double pi = Math.PI; public static final double todeg = 57.29577951308232; diff --git a/src/main/java/committee/nova/mods/avaritia/util/vec/Rotation.java b/src/main/java/committee/nova/mods/avaritia/util/vec/Rotation.java index ecd749f3..31f81565 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/vec/Rotation.java +++ b/src/main/java/committee/nova/mods/avaritia/util/vec/Rotation.java @@ -1,6 +1,6 @@ package committee.nova.mods.avaritia.util.vec; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import org.jetbrains.annotations.Nullable; @@ -305,7 +305,7 @@ public Transformation merge(Transformation next) { @Override public boolean isRedundant() { - return MathUtil.between(-1E-5, angle, 1E-5); + return MathUtils.between(-1E-5, angle, 1E-5); } @Override diff --git a/src/main/java/committee/nova/mods/avaritia/util/vec/Vector3.java b/src/main/java/committee/nova/mods/avaritia/util/vec/Vector3.java index 53f9be64..2af91be9 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/vec/Vector3.java +++ b/src/main/java/committee/nova/mods/avaritia/util/vec/Vector3.java @@ -1,7 +1,7 @@ package committee.nova.mods.avaritia.util.vec; import committee.nova.mods.avaritia.util.java.Copyable; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; @@ -116,7 +116,7 @@ public Vec3 vec3() { } public BlockPos pos() { - return new BlockPos(MathUtil.floor(x), MathUtil.floor(y), MathUtil.floor(z)); + return new BlockPos(MathUtils.floor(x), MathUtils.floor(y), MathUtils.floor(z)); } public CompoundTag writeToNBT(CompoundTag tag) { @@ -251,16 +251,16 @@ public Vector3 divide(BlockPos pos) { } public Vector3 floor() { - x = MathUtil.floor(x); - y = MathUtil.floor(y); - z = MathUtil.floor(z); + x = MathUtils.floor(x); + y = MathUtils.floor(y); + z = MathUtils.floor(z); return this; } public Vector3 ceil() { - x = MathUtil.ceil(x); - y = MathUtil.ceil(y); - z = MathUtil.ceil(z); + x = MathUtils.ceil(x); + y = MathUtils.ceil(y); + z = MathUtils.ceil(z); return this; } @@ -403,11 +403,11 @@ public Vector3 YZintercept(Vector3 end, double px) { } double d = (px - x) / dx; - if (MathUtil.between(-1E-5, d, 1E-5)) { + if (MathUtils.between(-1E-5, d, 1E-5)) { return this; } - if (!MathUtil.between(0, d, 1)) { + if (!MathUtils.between(0, d, 1)) { return null; } @@ -428,11 +428,11 @@ public Vector3 XZintercept(Vector3 end, double py) { } double d = (py - y) / dy; - if (MathUtil.between(-1E-5, d, 1E-5)) { + if (MathUtils.between(-1E-5, d, 1E-5)) { return this; } - if (!MathUtil.between(0, d, 1)) { + if (!MathUtils.between(0, d, 1)) { return null; } @@ -453,11 +453,11 @@ public Vector3 XYintercept(Vector3 end, double pz) { } double d = (pz - z) / dz; - if (MathUtil.between(-1E-5, d, 1E-5)) { + if (MathUtils.between(-1E-5, d, 1E-5)) { return this; } - if (!MathUtil.between(0, d, 1)) { + if (!MathUtils.between(0, d, 1)) { return null; } @@ -529,7 +529,7 @@ public boolean equals(Object o) { * @return true if this is equal to v within +-1E-5 */ public boolean equalsT(Vector3 v) { - return MathUtil.between(x - 1E-5, v.x, x + 1E-5) && MathUtil.between(y - 1E-5, v.y, y + 1E-5) && MathUtil.between(z - 1E-5, v.z, z + 1E-5); + return MathUtils.between(x - 1E-5, v.x, x + 1E-5) && MathUtils.between(y - 1E-5, v.y, y + 1E-5) && MathUtils.between(z - 1E-5, v.z, z + 1E-5); } @Override diff --git a/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVRotation.java b/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVRotation.java index edb98e8e..e137ceac 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVRotation.java +++ b/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVRotation.java @@ -1,6 +1,6 @@ package committee.nova.mods.avaritia.util.vec.uv; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import org.jetbrains.annotations.Nullable; import java.math.BigDecimal; @@ -48,7 +48,7 @@ public UVTransformation merge(UVTransformation next) { @Override public boolean isRedundant() { - return MathUtil.between(-1E-5, angle, 1E-5); + return MathUtils.between(-1E-5, angle, 1E-5); } @Override diff --git a/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVTranslation.java b/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVTranslation.java index 4f42f79f..bc5eafdb 100644 --- a/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVTranslation.java +++ b/src/main/java/committee/nova/mods/avaritia/util/vec/uv/UVTranslation.java @@ -1,6 +1,6 @@ package committee.nova.mods.avaritia.util.vec.uv; -import committee.nova.mods.avaritia.util.math.MathUtil; +import committee.nova.mods.avaritia.util.math.MathUtils; import java.math.BigDecimal; import java.math.MathContext; @@ -47,7 +47,7 @@ public UVTransformation merge(UVTransformation next) { @Override public boolean isRedundant() { - return MathUtil.between(-1E-5, du, 1E-5) && MathUtil.between(-1E-5, dv, 1E-5); + return MathUtils.between(-1E-5, du, 1E-5) && MathUtils.between(-1E-5, dv, 1E-5); } @Override diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 71f68c68..99af57b4 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -69,6 +69,11 @@ public net.minecraft.client.renderer.RenderStateShard * # Everything. public net.minecraft.client.renderer.RenderType *() # All Methods public net.minecraft.client.renderer.RenderType * # All Fields. +public-f net.minecraft.client.model.AgeableListModel f_102010_ # babyHeadScale +public-f net.minecraft.client.model.AgeableListModel f_102011_ # babyBodyScale +public-f net.minecraft.client.model.AgeableListModel f_170338_ # babyYHeadOffset +public-f net.minecraft.client.model.AgeableListModel f_102012_ # bodyYOffset + public net.minecraft.world.entity.projectile.AbstractArrow f_36696_ # lastState public net.minecraft.world.entity.projectile.AbstractArrow f_36699_ # knockback public net.minecraft.world.entity.projectile.AbstractArrow f_36701_ # piercingIgnoreEntityIds diff --git a/src/main/resources/assets/avaritia/shaders/core/cosmic.fsh b/src/main/resources/assets/avaritia/shaders/core/cosmic.fsh index eaf59b11..85405d8b 100644 --- a/src/main/resources/assets/avaritia/shaders/core/cosmic.fsh +++ b/src/main/resources/assets/avaritia/shaders/core/cosmic.fsh @@ -42,9 +42,9 @@ mat4 rotationMatrix(vec3 axis, float angle) float oc = 1.0 - c; return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0, - oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, - oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, - 0.0, 0.0, 0.0, 1.0); + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, + 0.0, 0.0, 0.0, 1.0); } void main (void) diff --git a/src/main/resources/assets/avaritia/shaders/core/cosmic.vsh b/src/main/resources/assets/avaritia/shaders/core/cosmic.vsh index 0e8f2f44..a19b35f2 100644 --- a/src/main/resources/assets/avaritia/shaders/core/cosmic.vsh +++ b/src/main/resources/assets/avaritia/shaders/core/cosmic.vsh @@ -25,7 +25,7 @@ void main() { gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0); fPos = (ModelViewMat * vec4(Position, 1.0)).xyz; - vertexDistance = fog_distance(ModelViewMat, Position, FogShape); + vertexDistance = length((ModelViewMat * vec4(Position, 1.0)).xyz); vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); diff --git a/src/main/resources/assets/avaritia/textures/item/misc/halo128.png b/src/main/resources/assets/avaritia/textures/misc/halo128.png similarity index 100% rename from src/main/resources/assets/avaritia/textures/item/misc/halo128.png rename to src/main/resources/assets/avaritia/textures/misc/halo128.png diff --git a/src/main/resources/assets/avaritia/textures/item/misc/halo128.png.mcmeta b/src/main/resources/assets/avaritia/textures/misc/halo128.png.mcmeta similarity index 100% rename from src/main/resources/assets/avaritia/textures/item/misc/halo128.png.mcmeta rename to src/main/resources/assets/avaritia/textures/misc/halo128.png.mcmeta diff --git a/src/main/resources/assets/avaritia/textures/item/misc/halo_noise.png b/src/main/resources/assets/avaritia/textures/misc/halo_noise.png similarity index 100% rename from src/main/resources/assets/avaritia/textures/item/misc/halo_noise.png rename to src/main/resources/assets/avaritia/textures/misc/halo_noise.png diff --git a/src/main/resources/assets/avaritia/textures/item/misc/halo_noise.png.mcmeta b/src/main/resources/assets/avaritia/textures/misc/halo_noise.png.mcmeta similarity index 100% rename from src/main/resources/assets/avaritia/textures/item/misc/halo_noise.png.mcmeta rename to src/main/resources/assets/avaritia/textures/misc/halo_noise.png.mcmeta diff --git a/src/main/resources/assets/avaritia/textures/models/infinity_armor.png b/src/main/resources/assets/avaritia/textures/models/infinity_armor.png new file mode 100644 index 00000000..ae9096cc Binary files /dev/null and b/src/main/resources/assets/avaritia/textures/models/infinity_armor.png differ diff --git a/src/main/resources/assets/avaritia/textures/item/misc/halo.png b/src/main/resources/assets/avaritia/textures/models/infinity_armor_eyes.png similarity index 77% rename from src/main/resources/assets/avaritia/textures/item/misc/halo.png rename to src/main/resources/assets/avaritia/textures/models/infinity_armor_eyes.png index 5c6f1c50..b390022e 100644 Binary files a/src/main/resources/assets/avaritia/textures/item/misc/halo.png and b/src/main/resources/assets/avaritia/textures/models/infinity_armor_eyes.png differ