From eadfba05e816e32f526e20d84fb29fb7a9edb986 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 07:51:47 +0200 Subject: [PATCH 01/19] some mild work on porting to 1.21.9 --- .vscode/launch.json | 71 ++++++ .../java/tschipp/carryon/CarryOnCommon.java | 8 +- .../tschipp/carryon/CarryOnCommonClient.java | 9 +- .../client/keybinds/CarryOnKeybinds.java | 9 +- .../keybinds/ConflictFreeKeyMapping.java | 43 ---- .../client/modeloverride/ModelOverride.java | 1 - .../client/render/CarriedObjectRender.java | 82 +++---- .../client/render/CarryOnRenderType.java | 219 +++++++++--------- .../carryon/common/carry/CarryOnData.java | 2 - .../common/carry/CarryOnDataManager.java | 5 - .../carryon/common/carry/PickupHandler.java | 11 +- .../common/carry/PlacementHandler.java | 12 +- .../carryon/common/scripting/Matchables.java | 7 +- .../common/scripting/ScriptManager.java | 1 - .../scripting/ScriptReloadListener.java | 7 - .../tschipp/carryon/mixin/EntityMixin.java | 7 - .../carryon/mixin/HumanoidModelMixin.java | 1 - .../tschipp/carryon/mixin/InventoryMixin.java | 2 - .../tschipp/carryon/mixin/MinecraftMixin.java | 1 - .../tschipp/carryon/mixin/PlayerMixin.java | 8 - .../carryon/mixin/PlayerRenderStateMixin.java | 4 +- .../carryon/networking/PacketBase.java | 5 - ...ientboundStartRidingOtherPlayerPacket.java | 2 +- .../ClientboundStartRidingPacket.java | 2 - .../ClientboundSyncScriptsPacket.java | 4 - .../ServerboundCarryKeyPressedPacket.java | 5 - .../platform/services/IPlatformHelper.java | 4 - Fabric/build.gradle | 4 +- .../carryon/CarryOnFabricClientMod.java | 7 - .../tschipp/carryon/CarryOnFabricMod.java | 1 - .../carryon/compat/ArchitecturyCompat.java | 1 - .../tschipp/carryon/events/ClientEvents.java | 7 - .../tschipp/carryon/events/CommonEvents.java | 4 +- .../mixin/ItemInHandRendererMixin.java | 15 +- .../platform/FabricPlatformHelper.java | 6 - .../tschipp/carryon/events/ClientEvents.java | 9 +- NeoForge/build.gradle | 2 +- .../java/tschipp/carryon/CarryOnNeoForge.java | 4 - .../carryon/compat/ClothConfigCompatNeo.java | 7 - .../config/neoforge/ConfigLoaderImpl.java | 9 - .../tschipp/carryon/events/ClientEvents.java | 11 +- .../tschipp/carryon/events/CommonEvents.java | 8 +- .../tschipp/carryon/events/ModBusEvents.java | 2 - .../carryon/events/ModClientEvents.java | 2 - .../platform/NeoForgePlatformHelper.java | 7 +- build.gradle | 2 +- gradle.properties | 29 +-- settings.gradle | 1 + 48 files changed, 273 insertions(+), 397 deletions(-) create mode 100644 .vscode/launch.json delete mode 100644 Common/src/main/java/tschipp/carryon/client/keybinds/ConflictFreeKeyMapping.java diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..4f25261 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,71 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "java", + "request": "launch", + "name": "NeoForge Client (:NeoForge)", + "presentation": { + "group": "Mod Development - NeoForge", + "order": 0 + }, + "projectName": "NeoForge", + "mainClass": "net.neoforged.devlaunch.Main", + "args": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/clientRunProgramArgs.txt" + ], + "vmArgs": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/clientRunVmArgs.txt", + "-Dfml.modFolders\u003dcarryon%%/home/hanro/Documents/GitHub/CarryOn/NeoForge/bin/main" + ], + "cwd": "${workspaceFolder}/NeoForge/run", + "env": {}, + "console": "internalConsole", + "shortenCommandLine": "none" + }, + { + "type": "java", + "request": "launch", + "name": "NeoForge Data (:NeoForge)", + "presentation": { + "group": "Mod Development - NeoForge", + "order": 1 + }, + "projectName": "NeoForge", + "mainClass": "net.neoforged.devlaunch.Main", + "args": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/dataRunProgramArgs.txt" + ], + "vmArgs": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/dataRunVmArgs.txt", + "-Dfml.modFolders\u003dcarryon%%/home/hanro/Documents/GitHub/CarryOn/NeoForge/bin/main" + ], + "cwd": "${workspaceFolder}/NeoForge/run", + "env": {}, + "console": "internalConsole", + "shortenCommandLine": "none" + }, + { + "type": "java", + "request": "launch", + "name": "NeoForge Server (:NeoForge)", + "presentation": { + "group": "Mod Development - NeoForge", + "order": 2 + }, + "projectName": "NeoForge", + "mainClass": "net.neoforged.devlaunch.Main", + "args": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/serverRunProgramArgs.txt" + ], + "vmArgs": [ + "@/home/hanro/Documents/GitHub/CarryOn/NeoForge/build/moddev/serverRunVmArgs.txt", + "-Dfml.modFolders\u003dcarryon%%/home/hanro/Documents/GitHub/CarryOn/NeoForge/bin/main" + ], + "cwd": "${workspaceFolder}/NeoForge/run", + "env": {}, + "console": "internalConsole", + "shortenCommandLine": "none" + } + ] +} \ No newline at end of file diff --git a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java index 40cba15..d327d95 100644 --- a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java +++ b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java @@ -26,10 +26,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -108,6 +105,7 @@ public class CarryOnCommon public static void onCarryTick(ServerPlayer player) { + CarryOnData carry = CarryOnDataManager.getCarryData(player); if(carry.isCarrying()) { @@ -115,7 +113,7 @@ public class CarryOnCommon { String cmd = carry.getActiveScript().get().scriptEffects().commandLoop(); if(!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } Inventory inv = player.getInventory(); @@ -153,7 +151,7 @@ public class CarryOnCommon public static void onPlayerAttacked(Player player) { - if (Constants.COMMON_CONFIG.settings.dropCarriedWhenHit && !player.level().isClientSide) + if (Constants.COMMON_CONFIG.settings.dropCarriedWhenHit && !player.level().isClientSide()) { CarryOnData carry = CarryOnDataManager.getCarryData(player); if (carry.isCarrying()) diff --git a/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java b/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java index 2cd4463..d2b50e1 100644 --- a/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java +++ b/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java @@ -34,11 +34,11 @@ public class CarryOnCommonClient Player player = mc.player; if(player != null) { CarryOnData carry = CarryOnDataManager.getCarryData(player); - if ((CarryOnKeybinds.carryKey.isUnbound() ? player.isShiftKeyDown() : (CarryOnKeybinds.carryKey.isDown() || checkMouse())) && !carry.isKeyPressed()) { + if ((CarryOnKeybinds.carryKey.isUnbound() ? player.isShiftKeyDown() : (CarryOnKeybinds.carryKey.isDown())) && !carry.isKeyPressed()) { CarryOnKeybinds.onCarryKey(true); carry.setKeyPressed(true); CarryOnDataManager.setCarryData(player, carry); - } else if (!(CarryOnKeybinds.carryKey.isUnbound() ? player.isShiftKeyDown() : (CarryOnKeybinds.carryKey.isDown() || checkMouse()) ) && carry.isKeyPressed()) { + } else if (!(CarryOnKeybinds.carryKey.isUnbound() ? player.isShiftKeyDown() : (CarryOnKeybinds.carryKey.isDown() ) ) && carry.isKeyPressed()) { CarryOnKeybinds.onCarryKey(false); carry.setKeyPressed(false); CarryOnDataManager.setCarryData(player, carry); @@ -46,11 +46,6 @@ public class CarryOnCommonClient } } - private static boolean checkMouse() - { - Minecraft mc = Minecraft.getInstance(); - return (CarryOnKeybinds.carryKey.matchesMouse(0) && mc.mouseHandler.isLeftPressed()) || (CarryOnKeybinds.carryKey.matchesMouse(1) && mc.mouseHandler.isRightPressed()) || (CarryOnKeybinds.carryKey.matchesMouse(3) && mc.mouseHandler.isMiddlePressed()); - } public static void onCarryClientTick() { diff --git a/Common/src/main/java/tschipp/carryon/client/keybinds/CarryOnKeybinds.java b/Common/src/main/java/tschipp/carryon/client/keybinds/CarryOnKeybinds.java index bc1a4e6..9b0aea5 100644 --- a/Common/src/main/java/tschipp/carryon/client/keybinds/CarryOnKeybinds.java +++ b/Common/src/main/java/tschipp/carryon/client/keybinds/CarryOnKeybinds.java @@ -22,11 +22,13 @@ package tschipp.carryon.client.keybinds; import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.KeyMapping; +import net.minecraft.resources.ResourceLocation; import tschipp.carryon.Constants; import tschipp.carryon.networking.serverbound.ServerboundCarryKeyPressedPacket; import tschipp.carryon.platform.Services; import java.util.function.Consumer; +import net.minecraft.client.KeyMapping.Category; public class CarryOnKeybinds { @@ -34,10 +36,13 @@ public class CarryOnKeybinds public static void registerKeybinds(Consumer registrar) { + Category category = Category.register(ResourceLocation.withDefaultNamespace("key.carry.category")); + + if(Services.PLATFORM.isModLoaded("amecsapi")) - carryKey = new ConflictFreeKeyMapping("key.carry.desc", InputConstants.KEY_LSHIFT, "key.carry.category"); + carryKey = new KeyMapping("key.carry.desc", InputConstants.KEY_LSHIFT, category); else - carryKey = new ConflictFreeKeyMapping("key.carry.desc", Services.PLATFORM.getPlatformName().equals("Forge") ? InputConstants.KEY_LSHIFT : InputConstants.UNKNOWN.getValue(), "key.carry.category"); + carryKey = new KeyMapping("key.carry.desc", Services.PLATFORM.getPlatformName().equals("Forge") ? InputConstants.KEY_LSHIFT : InputConstants.UNKNOWN.getValue(), category); registrar.accept(carryKey); } diff --git a/Common/src/main/java/tschipp/carryon/client/keybinds/ConflictFreeKeyMapping.java b/Common/src/main/java/tschipp/carryon/client/keybinds/ConflictFreeKeyMapping.java deleted file mode 100644 index 074195b..0000000 --- a/Common/src/main/java/tschipp/carryon/client/keybinds/ConflictFreeKeyMapping.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * GNU Lesser General Public License v3 - * Copyright (C) 2024 Tschipp - * mrtschipp@gmail.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -package tschipp.carryon.client.keybinds; - -import com.mojang.blaze3d.platform.InputConstants.Type; -import net.minecraft.client.KeyMapping; - -public class ConflictFreeKeyMapping extends KeyMapping -{ - public ConflictFreeKeyMapping(String $$0, int $$1, String $$2) - { - super($$0, $$1, $$2); - } - - public ConflictFreeKeyMapping(String $$0, Type $$1, int $$2, String $$3) - { - super($$0, $$1, $$2, $$3); - } - - @Override - public boolean same(KeyMapping $$0) - { - return false; - } -} diff --git a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java index 09c1b0a..58fa3d8 100644 --- a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java +++ b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java @@ -23,7 +23,6 @@ package tschipp.carryon.client.modeloverride; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.datafixers.util.Either; -import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import net.minecraft.commands.arguments.blocks.BlockStateParser; import net.minecraft.commands.arguments.blocks.BlockStateParser.BlockResult; diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java index 5090b6e..44a3353 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java @@ -20,34 +20,24 @@ package tschipp.carryon.client.render; -import com.mojang.blaze3d.pipeline.BlendFunction; -import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.pipeline.RenderTarget; -import com.mojang.blaze3d.platform.DepthTestFunction; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.textures.GpuTexture; import com.mojang.blaze3d.vertex.*; import com.mojang.math.Axis; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.ShaderDefines; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.state.CameraRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import org.jetbrains.annotations.NotNull; import org.joml.Matrix4f; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; @@ -62,16 +52,7 @@ import java.util.*; public class CarriedObjectRender { - private static final SequencedMap builders = new LinkedHashMap<>(Map.of( - RenderType.glint(), new ByteBufferBuilder(RenderType.glint().bufferSize()), - RenderType.armorEntityGlint(), new ByteBufferBuilder(RenderType.armorEntityGlint().bufferSize()), - RenderType.glintTranslucent(), new ByteBufferBuilder(RenderType.glintTranslucent().bufferSize()), - RenderType.entityGlint(), new ByteBufferBuilder(RenderType.entityGlint().bufferSize()) - //RenderType.entityGlintDirect(), new ByteBufferBuilder(RenderType.entityGlintDirect().bufferSize()) - )); - - - public static boolean drawFirstPerson(Player player, MultiBufferSource buffer, PoseStack matrix, int light, float partialTicks) + public static boolean drawFirstPerson(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector) { if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod")) return false; @@ -79,9 +60,9 @@ public class CarriedObjectRender CarryOnData carry = CarryOnDataManager.getCarryData(player); try { if (carry.isCarrying(CarryType.BLOCK)) - drawFirstPersonBlock(player, buffer, matrix, light, CarryRenderHelper.getRenderState(player)); + drawFirstPersonBlock(player, matrix, light, CarryRenderHelper.getRenderState(player), nodeCollector); else if (carry.isCarrying(CarryType.ENTITY)) - drawFirstPersonEntity(player, buffer, matrix, light, partialTicks); + drawFirstPersonEntity(player, matrix, light, partialTicks,nodeCollector); } catch (Exception e) { @@ -101,7 +82,7 @@ public class CarriedObjectRender return carry.isCarrying(); } - private static void drawFirstPersonBlock(Player player, MultiBufferSource buffer, PoseStack matrix, int light, BlockState state) + private static void drawFirstPersonBlock(Player player, PoseStack matrix, int light, BlockState state,SubmitNodeCollector nodeCollector) { matrix.pushPose(); matrix.scale(2.5f, 2.5f, 2.5f); @@ -128,8 +109,8 @@ public class CarriedObjectRender ItemStack renderStack = CarryRenderHelper.getRenderItemStack(player); Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, player.level(), null, 0); - renderState.render(matrix, buffer, light, OverlayTexture.NO_OVERLAY); - + //renderState.render(matrix, light, OverlayTexture.NO_OVERLAY); +renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); //RenderSystem.enableCull(); @@ -137,8 +118,10 @@ public class CarriedObjectRender matrix.popPose(); } - private static void drawFirstPersonEntity(Player player, MultiBufferSource buffer, PoseStack matrix, int light, float partialTicks) { + private static void drawFirstPersonEntity(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector) { EntityRenderDispatcher manager = Minecraft.getInstance().getEntityRenderDispatcher(); + + Entity entity = CarryRenderHelper.getRenderEntity(player); CarryOnData carry = CarryOnDataManager.getCarryData(player); @@ -159,7 +142,7 @@ public class CarriedObjectRender matrix.mulPose(Axis.YP.rotationDegrees(180)); matrix.translate(0.0, -height - .2, width * 1.3 + 0.1); - manager.setRenderShadow(false); + // manager.setRenderShadow(false); Optional res = carry.getActiveScript(); if(res.isPresent()) @@ -175,12 +158,15 @@ public class CarriedObjectRender ((LivingEntity) entity).hurtTime = 0; try { - manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); + manager.submit(manager.extractEntity(entity, 0), new CameraRenderState(), 0, 0, 0, matrix, nodeCollector); + // manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); + //nodeCollector.submit + //manager.getRenderer(entity).submit(new EntityRenderState(), matrix, nodeCollector, null); } catch (Exception e) { } - manager.setRenderShadow(true); + // manager.setRenderShadow(true); matrix.popPose(); } @@ -193,21 +179,17 @@ public class CarriedObjectRender * @param partialticks * @param mat */ - public static void drawThirdPerson(float partialticks, Matrix4f mat) { + public static void drawThirdPerson(float partialticks, Matrix4f mat,SubmitNodeCollector nodeCollector) { Minecraft mc = Minecraft.getInstance(); Level level = mc.level; - int light = 0; int perspective = CarryRenderHelper.getPerspective(); - EntityRenderDispatcher manager = mc.getEntityRenderDispatcher(); PoseStack matrix = new PoseStack(); matrix.mulPose(mat); - //RenderSystem.enableBlend(); - //RenderSystem.disableCull(); - //RenderSystem.disableDepthTest(); - - BufferSource buffer = MultiBufferSource.immediateWithBuffers(builders, builders.get(RenderType.glint())); + // RenderSystem.enableBlend(); + // RenderSystem.disableCull(); + // RenderSystem.disableDepthTest(); ItemStackRenderState renderState = new ItemStackRenderState(); var layer = renderState.newLayer(); layer.setRenderType(RenderType.glint()); @@ -221,7 +203,6 @@ public class CarriedObjectRender if (perspective == 0 && player == mc.player && !(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod") || Services.PLATFORM.isModLoaded("realcamera"))) continue; - light = manager.getPackedLightCoords(player, partialticks); if (carry.isCarrying(CarryType.BLOCK)) { BlockState state = CarryRenderHelper.getRenderState(player); @@ -245,7 +226,9 @@ public class CarriedObjectRender //RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - renderState.render(copy, buffer, light, OverlayTexture.NO_OVERLAY); + renderState.submit(copy, null, 0, OverlayTexture.NO_OVERLAY, 0); + + // renderState.render(copy, buffer, light, OverlayTexture.NO_OVERLAY); matrix.popPose(); } else if (carry.isCarrying(CarryType.ENTITY)) { @@ -254,7 +237,7 @@ public class CarriedObjectRender if (entity != null) { CarryRenderHelper.applyEntityTransformations(player, partialticks, matrix, entity); - manager.setRenderShadow(false); + // manager.setRenderShadow(false); Optional res = carry.getActiveScript(); res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script)); @@ -264,9 +247,9 @@ public class CarriedObjectRender //RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); + // manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); matrix.popPose(); - manager.setRenderShadow(true); + // manager.setRenderShadow(true); matrix.popPose(); } } @@ -278,16 +261,7 @@ public class CarriedObjectRender } } - buffer.endLastBatch(); - - buffer.endBatch(RenderType.entitySolid(TextureAtlas.LOCATION_BLOCKS)); - buffer.endBatch(RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS)); - buffer.endBatch(RenderType.entityCutoutNoCull(TextureAtlas.LOCATION_BLOCKS)); - buffer.endBatch(RenderType.entitySmoothCutout(TextureAtlas.LOCATION_BLOCKS)); - - //RenderSystem.enableDepthTest(); - //RenderSystem.enableCull(); - //RenderSystem.disableBlend(); + } } diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java b/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java index 9e1739a..ca5dabd 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java @@ -1,111 +1,108 @@ -//package tschipp.carryon.client.render; -// -//import com.mojang.blaze3d.pipeline.BlendFunction; -//import com.mojang.blaze3d.pipeline.RenderPipeline; -//import com.mojang.blaze3d.pipeline.RenderTarget; -//import com.mojang.blaze3d.platform.DepthTestFunction; -//import com.mojang.blaze3d.vertex.MeshData; -//import com.mojang.blaze3d.vertex.VertexFormat; -//import net.minecraft.client.renderer.RenderType; -//import org.jetbrains.annotations.NotNull; -// -//import java.util.IdentityHashMap; -//import java.util.Map; -// -////Credit: klikli for the idea and code for this wrapper -//public class CarryOnRenderType extends RenderType { -// -// private static final Map remappedTypes = new IdentityHashMap<>(); -// private final RenderPipeline pipeline; -// private final RenderType original; -// -// private CarryOnRenderType(RenderType original, RenderPipeline pipeline) { -// super(String.format("%s_carryon", original.toString()), original.bufferSize(), original.affectsCrumbling(), true, original::setupRenderState, original::clearRenderState); -// this.pipeline = pipeline; -// this.original = original; -// } -// -// public static RenderType remap(RenderType in) { -// return remappedTypes.computeIfAbsent(in, (type) -> { -// -// //modify the pipeline -// var pipeline = toBuilder(in.getRenderPipeline()) -// .withBlend(BlendFunction.TRANSLUCENT) -// .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) -// .withCull(false); -// -// return new CarryOnRenderType(type, pipeline.build()); -// }); -// } -// -// private static RenderPipeline.Builder toBuilder(RenderPipeline pipeline) { -// RenderPipeline.Builder builder = RenderPipeline.builder(); -// builder.withLocation(pipeline.getLocation()); -// builder.withFragmentShader(pipeline.getFragmentShader()); -// builder.withVertexShader(pipeline.getVertexShader()); -// -// if (!pipeline.getShaderDefines().isEmpty()) { -// for (Map.Entry entry : pipeline.getShaderDefines().values().entrySet()) { -// try { -// int parsed = Integer.parseInt(entry.getValue()); -// builder.withShaderDefine(entry.getKey(), parsed); -// } catch (NumberFormatException e) { -// float parsed = Float.parseFloat(entry.getValue()); -// builder.withShaderDefine(entry.getKey(), parsed); -// } -// } -// for (String flag : pipeline.getShaderDefines().flags()) { -// builder.withShaderDefine(flag); -// } -// } -// -// if (!pipeline.getSamplers().isEmpty()) { -// pipeline.getSamplers().forEach(builder::withSampler); -// } -// -// if (!pipeline.getUniforms().isEmpty()) { -// pipeline.getUniforms().forEach(u -> builder.withUniform(u.name(), u.type())); -// } -// -// builder.withDepthTestFunction(pipeline.getDepthTestFunction()); -// builder.withPolygonMode(pipeline.getPolygonMode()); -// builder.withCull(pipeline.isCull()); -// builder.withColorWrite(pipeline.isWriteColor(), pipeline.isWriteAlpha()); -// builder.withDepthWrite(pipeline.isWriteDepth()); -// builder.withColorLogic(pipeline.getColorLogic()); -// -// if (pipeline.getBlendFunction().isPresent()) -// builder.withBlend(pipeline.getBlendFunction().get()); -// else -// builder.withoutBlend(); -// builder.withVertexFormat(pipeline.getVertexFormat(), pipeline.getVertexFormatMode()); -// builder.withDepthBias(pipeline.getDepthBiasScaleFactor(), pipeline.getDepthBiasConstant()); -// -// return builder; -// } -// -// @Override -// public void draw(@NotNull MeshData meshData) { -// this.original.draw(meshData); -// } -// -// @Override -// public @NotNull RenderTarget getRenderTarget() { -// return this.original.getRenderTarget(); -// } -// -// @Override -// public @NotNull RenderPipeline getRenderPipeline() { -// return this.pipeline; //get our own modified pipeline -// } -// -// @Override -// public @NotNull VertexFormat format() { -// return this.original.format(); -// } -// -// @Override -// public VertexFormat.@NotNull Mode mode() { -// return this.original.mode(); -// } -//} +package tschipp.carryon.client.render; + +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.platform.DepthTestFunction; +import com.mojang.blaze3d.vertex.MeshData; +import com.mojang.blaze3d.vertex.VertexFormat; +import net.minecraft.client.renderer.RenderType; +import org.jetbrains.annotations.NotNull; + +import java.util.IdentityHashMap; +import java.util.Map; + +//Credit: klikli for the idea and code for this wrapper +public class CarryOnRenderType extends RenderType { + + private static final Map remappedTypes = new IdentityHashMap<>(); + private final RenderPipeline pipeline; + private final RenderType original; + + private CarryOnRenderType(RenderType original, RenderPipeline pipeline) { + super(String.format("%s_carryon", original.toString()), original.bufferSize(), original.affectsCrumbling(), true, original::setupRenderState, original::clearRenderState); + this.pipeline = pipeline; + this.original = original; + } + + public static RenderType remap(RenderType in) { + return remappedTypes.computeIfAbsent(in, (type) -> { + + //modify the pipeline + var pipeline = toBuilder(in.pipeline()) + .withBlend(BlendFunction.TRANSLUCENT) + .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) + .withCull(false); + + return new CarryOnRenderType(type, pipeline.build()); + }); + } + + private static RenderPipeline.Builder toBuilder(RenderPipeline pipeline) { + RenderPipeline.Builder builder = RenderPipeline.builder(); + builder.withLocation(pipeline.getLocation()); + builder.withFragmentShader(pipeline.getFragmentShader()); + builder.withVertexShader(pipeline.getVertexShader()); + + if (!pipeline.getShaderDefines().isEmpty()) { + for (Map.Entry entry : pipeline.getShaderDefines().values().entrySet()) { + try { + int parsed = Integer.parseInt(entry.getValue()); + builder.withShaderDefine(entry.getKey(), parsed); + } catch (NumberFormatException e) { + float parsed = Float.parseFloat(entry.getValue()); + builder.withShaderDefine(entry.getKey(), parsed); + } + } + for (String flag : pipeline.getShaderDefines().flags()) { + builder.withShaderDefine(flag); + } + } + + if (!pipeline.getSamplers().isEmpty()) { + pipeline.getSamplers().forEach(builder::withSampler); + } + + if (!pipeline.getUniforms().isEmpty()) { + pipeline.getUniforms().forEach(u -> builder.withUniform(u.name(), u.type())); + } + + builder.withDepthTestFunction(pipeline.getDepthTestFunction()); + builder.withPolygonMode(pipeline.getPolygonMode()); + builder.withCull(pipeline.isCull()); + builder.withColorWrite(pipeline.isWriteColor(), pipeline.isWriteAlpha()); + builder.withDepthWrite(pipeline.isWriteDepth()); + builder.withColorLogic(pipeline.getColorLogic()); + + if (pipeline.getBlendFunction().isPresent()) + builder.withBlend(pipeline.getBlendFunction().get()); + else + builder.withoutBlend(); + builder.withVertexFormat(pipeline.getVertexFormat(), pipeline.getVertexFormatMode()); + builder.withDepthBias(pipeline.getDepthBiasScaleFactor(), pipeline.getDepthBiasConstant()); + + return builder; + } + + @Override + public void draw(@NotNull MeshData meshData) { + this.original.draw(meshData); + } + + + + + @Override + public @NotNull VertexFormat format() { + return this.original.format(); + } + + @Override + public VertexFormat.@NotNull Mode mode() { + return this.original.mode(); + } + + @Override + public RenderPipeline pipeline() { + return this.pipeline; //get our own modified pipeline + } +} diff --git a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java index 9224cfb..6aa089c 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java @@ -22,7 +22,6 @@ package tschipp.carryon.common.carry; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.BuiltInRegistries; @@ -50,7 +49,6 @@ import tschipp.carryon.Constants; import tschipp.carryon.common.scripting.CarryOnScript; import javax.annotation.Nullable; -import java.util.Objects; import java.util.Optional; public class CarryOnData { diff --git a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java index 8a96518..cdf09cf 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnDataManager.java @@ -20,11 +20,6 @@ package tschipp.carryon.common.carry; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.syncher.EntityDataAccessor; -import net.minecraft.network.syncher.EntityDataSerializers; -import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import tschipp.carryon.platform.Services; diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java index 6f3d371..ff0fed8 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java @@ -50,7 +50,6 @@ import tschipp.carryon.common.pickupcondition.PickupConditionHandler; import tschipp.carryon.common.scripting.CarryOnScript; import tschipp.carryon.common.scripting.ScriptManager; import tschipp.carryon.networking.clientbound.ClientboundStartRidingOtherPlayerPacket; -import tschipp.carryon.networking.clientbound.ClientboundStartRidingPacket; import tschipp.carryon.platform.Services; import javax.annotation.Nullable; @@ -142,7 +141,7 @@ public class PickupHandler { String cmd = script.scriptEffects().commandInit(); if(!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } carry.setBlock(state, blockEntity, player, pos); @@ -174,7 +173,7 @@ public class PickupHandler { if (entity instanceof TamableAnimal tame) { UUID owner = tame.getOwnerReference().getUUID(); - UUID playerID = player.getGameProfile().getId(); + UUID playerID = player.getGameProfile().id(); if (owner != null && !owner.equals(playerID)) return false; } @@ -232,10 +231,10 @@ public class PickupHandler { if (result.isPresent()) { String cmd = result.get().scriptEffects().commandInit(); if (!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } - otherPlayer.startRiding(player, true); + otherPlayer.startRiding(player, true,true); Services.PLATFORM.sendPacketToAllPlayers(Constants.PACKET_ID_START_RIDING_OTHER, new ClientboundStartRidingOtherPlayerPacket(player.getId(), otherPlayer.getId(), true), player.level()); carry.setCarryingPlayer(); player.swing(InteractionHand.MAIN_HAND, true); @@ -257,7 +256,7 @@ public class PickupHandler { { String cmd = result.get().scriptEffects().commandInit(); if(!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } carry.setEntity(entity); diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java index e871dcf..db41e5b 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java @@ -27,7 +27,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Mob; @@ -44,7 +43,6 @@ import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; -import tschipp.carryon.CarryOnCommon; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData.CarryType; import tschipp.carryon.common.config.ListHandler; @@ -99,7 +97,7 @@ public class PlacementHandler ScriptEffects effects = carry.getActiveScript().get().scriptEffects(); String cmd = effects.commandPlace(); if (!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } level.setBlockAndUpdate(pos, state); @@ -199,7 +197,7 @@ public class PlacementHandler ScriptEffects effects = carry.getActiveScript().get().scriptEffects(); String cmd = effects.commandPlace(); if (!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } level.addFreshEntity(entity); @@ -257,20 +255,20 @@ public class PlacementHandler level.addFreshEntity(entityHeld); entityHeld.teleportTo(tempX, tempY, tempZ); } - entityHeld.startRiding(topEntity, false); + entityHeld.startRiding(topEntity, false,false); } else { if (carry.isCarrying(CarryType.ENTITY)) { entityHeld.setPos(entityClicked.getX(), entityClicked.getY(), entityClicked.getZ()); level.addFreshEntity(entityHeld); } - entityHeld.startRiding(topEntity, false); + entityHeld.startRiding(topEntity, false,false); } if (carry.getActiveScript().isPresent()) { ScriptEffects effects = carry.getActiveScript().get().scriptEffects(); String cmd = effects.commandPlace(); if (!cmd.isEmpty()) - player.getServer().getCommands().performPrefixedCommand(player.getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().getName() + " run " + cmd); + player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } player.swing(InteractionHand.MAIN_HAND, true); diff --git a/Common/src/main/java/tschipp/carryon/common/scripting/Matchables.java b/Common/src/main/java/tschipp/carryon/common/scripting/Matchables.java index db8a4ab..3d96eba 100644 --- a/Common/src/main/java/tschipp/carryon/common/scripting/Matchables.java +++ b/Common/src/main/java/tschipp/carryon/common/scripting/Matchables.java @@ -22,10 +22,8 @@ package tschipp.carryon.common.scripting; import com.mojang.serialization.Codec; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.resources.ResourceLocation; @@ -34,7 +32,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.Objective; -import net.minecraft.world.scores.Score; import net.minecraft.world.scores.Scoreboard; import tschipp.carryon.platform.Services; @@ -127,7 +124,7 @@ public final class Matchables @Override public boolean matches(ServerPlayer player) { - ServerAdvancementManager manager = player.getServer().getAdvancements(); + ServerAdvancementManager manager = player.level().getServer().getAdvancements(); AdvancementHolder adv = manager.get(ResourceLocation.parse(advancement.isEmpty() ? "" : advancement)); boolean achievement = adv == null ? true : player.getAdvancements().getOrStartProgress(adv).isDone(); @@ -167,7 +164,7 @@ public final class Matchables if (cond == null || cond.isEmpty()) return true; - Scoreboard score = player.getScoreboard(); + Scoreboard score = player.level().getScoreboard(); String numb; String scorename; int iE = cond.indexOf("="); diff --git a/Common/src/main/java/tschipp/carryon/common/scripting/ScriptManager.java b/Common/src/main/java/tschipp/carryon/common/scripting/ScriptManager.java index 9e8687e..b634fe0 100644 --- a/Common/src/main/java/tschipp/carryon/common/scripting/ScriptManager.java +++ b/Common/src/main/java/tschipp/carryon/common/scripting/ScriptManager.java @@ -23,7 +23,6 @@ package tschipp.carryon.common.scripting; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; import net.minecraft.util.ProblemReporter; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; diff --git a/Common/src/main/java/tschipp/carryon/common/scripting/ScriptReloadListener.java b/Common/src/main/java/tschipp/carryon/common/scripting/ScriptReloadListener.java index 0c998ac..8698299 100644 --- a/Common/src/main/java/tschipp/carryon/common/scripting/ScriptReloadListener.java +++ b/Common/src/main/java/tschipp/carryon/common/scripting/ScriptReloadListener.java @@ -20,13 +20,8 @@ package tschipp.carryon.common.scripting; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import com.mojang.serialization.JsonOps; -import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.resources.FileToIdConverter; @@ -37,11 +32,9 @@ import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener; import net.minecraft.util.profiling.ProfilerFiller; import org.jetbrains.annotations.NotNull; import tschipp.carryon.Constants; -import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.networking.clientbound.ClientboundSyncScriptsPacket; import tschipp.carryon.platform.Services; -import java.util.Collections; import java.util.Map; public class ScriptReloadListener extends SimpleJsonResourceReloadListener diff --git a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java index 8e4e662..c434768 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java @@ -20,7 +20,6 @@ package tschipp.carryon.mixin; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -50,12 +49,6 @@ public abstract class EntityMixin @Shadow public abstract void onPassengerTurned(Entity $$0); - @ModifyExpressionValue(method = "startRiding(Lnet/minecraft/world/entity/Entity;Z)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/EntityType;canSerialize()Z")) - private boolean onStartRidingCheck(boolean original, Entity entity, boolean force) { - if (force && entity instanceof Player) return true; - return original; - } - @Inject(method = "positionRider(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/entity/Entity$MoveFunction;)V", at = @At("HEAD"), cancellable = true) private void onPositionPassenger(Entity entity, MoveFunction move, CallbackInfo ci) { diff --git a/Common/src/main/java/tschipp/carryon/mixin/HumanoidModelMixin.java b/Common/src/main/java/tschipp/carryon/mixin/HumanoidModelMixin.java index 0a9074c..dd672b7 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/HumanoidModelMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/HumanoidModelMixin.java @@ -23,7 +23,6 @@ package tschipp.carryon.mixin; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.entity.state.HumanoidRenderState; -import net.minecraft.client.renderer.entity.state.PlayerRenderState; import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java index 78a701f..4446fdf 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java @@ -23,7 +23,6 @@ package tschipp.carryon.mixin; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.core.NonNullList; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -33,7 +32,6 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; diff --git a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java index bbe8a51..da24a56 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java @@ -25,7 +25,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Inventory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; import tschipp.carryon.common.carry.CarryOnDataManager; @Mixin(Minecraft.class) diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java index 7248965..1806385 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java @@ -21,20 +21,12 @@ package tschipp.carryon.mixin; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.syncher.EntityDataAccessor; -import net.minecraft.network.syncher.EntityDataSerializers; -import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.storage.ValueInput; -import net.minecraft.world.level.storage.ValueOutput; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java index 0575c53..b8cb7be 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java @@ -1,12 +1,12 @@ package tschipp.carryon.mixin; -import net.minecraft.client.renderer.entity.state.PlayerRenderState; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import tschipp.carryon.client.render.ICarryOnRenderState; import tschipp.carryon.common.carry.CarryOnData; -@Mixin(PlayerRenderState.class) +@Mixin(HumanoidRenderState.class) public class PlayerRenderStateMixin implements ICarryOnRenderState { @Unique diff --git a/Common/src/main/java/tschipp/carryon/networking/PacketBase.java b/Common/src/main/java/tschipp/carryon/networking/PacketBase.java index f43a452..82d1cb3 100644 --- a/Common/src/main/java/tschipp/carryon/networking/PacketBase.java +++ b/Common/src/main/java/tschipp/carryon/networking/PacketBase.java @@ -20,12 +20,7 @@ package tschipp.carryon.networking; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; public interface PacketBase extends CustomPacketPayload { diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket.java index 3dfa75f..c267814 100644 --- a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingOtherPlayerPacket.java @@ -47,7 +47,7 @@ public record ClientboundStartRidingOtherPlayerPacket(int mount, int rider, bool if(mount != null && rider != null) if(ride) - rider.startRiding(mount, true); + rider.startRiding(mount, true,true); else rider.stopRiding(); } diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java index 7cac4e4..2595b7a 100644 --- a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundStartRidingPacket.java @@ -20,12 +20,10 @@ package tschipp.carryon.networking.clientbound; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import tschipp.carryon.Constants; diff --git a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java index 727db6f..1a0988c 100644 --- a/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/clientbound/ClientboundSyncScriptsPacket.java @@ -22,16 +22,12 @@ package tschipp.carryon.networking.clientbound; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import tschipp.carryon.Constants; import tschipp.carryon.common.scripting.CarryOnScript; diff --git a/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java b/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java index 460d418..b98ed28 100644 --- a/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java +++ b/Common/src/main/java/tschipp/carryon/networking/serverbound/ServerboundCarryKeyPressedPacket.java @@ -20,20 +20,15 @@ package tschipp.carryon.networking.serverbound; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; import tschipp.carryon.networking.PacketBase; -import tschipp.carryon.networking.clientbound.ClientboundStartRidingPacket; -import tschipp.carryon.networking.clientbound.ClientboundSyncScriptsPacket; public record ServerboundCarryKeyPressedPacket(boolean pressed) implements PacketBase { diff --git a/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java b/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java index 07c1d68..73a1351 100644 --- a/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java +++ b/Common/src/main/java/tschipp/carryon/platform/services/IPlatformHelper.java @@ -20,9 +20,7 @@ package tschipp.carryon.platform.services; -import net.minecraft.core.HolderLookup; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; @@ -30,12 +28,10 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import tschipp.carryon.common.carry.CarryOnData; -import tschipp.carryon.common.carry.CarryOnDataManager; import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.networking.PacketBase; import java.util.function.BiConsumer; -import java.util.function.Function; public interface IPlatformHelper { diff --git a/Fabric/build.gradle b/Fabric/build.gradle index ed15c5b..26efa73 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -1,6 +1,6 @@ plugins { id 'multiloader-loader' - id 'fabric-loom' version '1.10-SNAPSHOT' + id 'fabric-loom' version "${loom_version}" } repositories { @@ -32,7 +32,7 @@ dependencies { modApi("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } - modApi "com.terraformersmc:modmenu:15.0.0-beta.3" + modApi "com.terraformersmc:modmenu:16.0.0-rc.1" } loom { diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java index fbd4b1d..9798475 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricClientMod.java @@ -23,20 +23,13 @@ package tschipp.carryon; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import tschipp.carryon.client.keybinds.CarryOnKeybinds; import tschipp.carryon.events.ClientEvents; import tschipp.carryon.networking.PacketBase; import java.util.function.BiConsumer; -import java.util.function.Function; public class CarryOnFabricClientMod implements ClientModInitializer { diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index e5c7c43..cf9947b 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -22,7 +22,6 @@ package tschipp.carryon; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.attachment.v1.AttachmentRegistry; -import net.fabricmc.fabric.api.attachment.v1.AttachmentSyncPredicate; import net.fabricmc.fabric.api.attachment.v1.AttachmentType; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; diff --git a/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java b/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java index 0d8a3e2..9a2245a 100644 --- a/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java +++ b/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java @@ -20,7 +20,6 @@ package tschipp.carryon.compat; -import net.fabricmc.fabric.api.event.Event; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; diff --git a/Fabric/src/main/java/tschipp/carryon/events/ClientEvents.java b/Fabric/src/main/java/tschipp/carryon/events/ClientEvents.java index 6e5d8b2..8061030 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -20,11 +20,8 @@ package tschipp.carryon.events; -import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; import tschipp.carryon.CarryOnCommonClient; -import tschipp.carryon.client.render.CarriedObjectRender; public class ClientEvents { @@ -34,10 +31,6 @@ public class ClientEvents { CarryOnCommonClient.checkForKeybinds(); CarryOnCommonClient.onCarryClientTick(); }); - - WorldRenderEvents.LAST.register(event -> { - CarriedObjectRender.drawThirdPerson(event.tickCounter().getGameTimeDeltaPartialTick(true), new PoseStack().last().pose()); - }); } } diff --git a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java index fc7f9ac..f0de4d7 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -55,7 +55,7 @@ public class CommonEvents { UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> { - if(world.isClientSide) + if(world.isClientSide()) return InteractionResult.PASS; BlockPos pos = hitResult.getBlockPos(); @@ -96,7 +96,7 @@ public class CommonEvents { UseEntityCallback.EVENT.register((player, level, hand, entity, hitResult) -> { - if(level.isClientSide) + if(level.isClientSide()) return InteractionResult.PASS; CarryOnData carry = CarryOnDataManager.getCarryData(player); diff --git a/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java b/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java index fc12a3e..0e015e5 100644 --- a/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java +++ b/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java @@ -21,31 +21,24 @@ package tschipp.carryon.mixin; import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderBuffers; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import tschipp.carryon.client.render.CarriedObjectRender; -import tschipp.carryon.client.render.CarryRenderHelper; -import tschipp.carryon.platform.Services; @Mixin(ItemInHandRenderer.class) public class ItemInHandRendererMixin { - @Inject(at = @At(value = "HEAD"), method = "renderArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", cancellable = true) - private void onRenderHand(AbstractClientPlayer player, float partialTicks, float pitch, InteractionHand hand, float pSwingProgress, ItemStack pStack, float pEquippedProgress, PoseStack poseStack, MultiBufferSource buffer, int light, CallbackInfo ci) + @Inject(at = @At(value = "HEAD"), method = "renderArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", cancellable = true) + private void renderArmWithItem(AbstractClientPlayer player, float partialTick, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equippedProgress, PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, CallbackInfo ci) { - if(CarryRenderHelper.getPerspective() == 0 && CarriedObjectRender.drawFirstPerson(player, buffer, poseStack, light, partialTicks)) + if(CarriedObjectRender.drawFirstPerson(player, poseStack, packedLight, partialTick,nodeCollector)) ci.cancel(); } diff --git a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java index 64d4bdf..740c144 100644 --- a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java +++ b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java @@ -20,17 +20,12 @@ package tschipp.carryon.platform; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.PlayPayloadHandler; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.codec.StreamDecoder; -import net.minecraft.network.codec.StreamMemberEncoder; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -44,7 +39,6 @@ import tschipp.carryon.networking.PacketBase; import tschipp.carryon.platform.services.IPlatformHelper; import java.util.function.BiConsumer; -import java.util.function.Function; public class FabricPlatformHelper implements IPlatformHelper { diff --git a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java index 4e557af..295758f 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -23,14 +23,12 @@ package tschipp.carryon.events; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.event.TickEvent.ClientTickEvent; -import net.minecraftforge.event.TickEvent.Phase; import net.minecraftforge.eventbus.api.listener.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import tschipp.carryon.CarryOnCommonClient; @@ -47,13 +45,12 @@ public class ClientEvents { public static boolean renderHand(RenderHandEvent event) { Player player = Minecraft.getInstance().player; - MultiBufferSource buffer = event.getMultiBufferSource(); PoseStack matrix = event.getPoseStack(); int light = event.getPackedLight(); float partialTicks = event.getPartialTick(); - +SubmitNodeCollector nodes =event.getNodeCollector(); //If true, cancels event - return CarriedObjectRender.drawFirstPerson(player, buffer, matrix, light, partialTicks) && CarryRenderHelper.getPerspective() == 0; + return CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0; } /* diff --git a/NeoForge/build.gradle b/NeoForge/build.gradle index 57aa5d8..895e732 100644 --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle @@ -47,7 +47,7 @@ neoForge { dependencies { - api "me.shedaniel.cloth:cloth-config-neoforge:${cloth_config_version}" + compileOnly "me.shedaniel.cloth:cloth-config-neoforge:${cloth_config_version}" } sourceSets.main.resources { srcDir 'src/generated/resources' } diff --git a/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java b/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java index d7db9dc..30c386c 100644 --- a/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java +++ b/NeoForge/src/main/java/tschipp/carryon/CarryOnNeoForge.java @@ -21,14 +21,10 @@ package tschipp.carryon; import net.minecraft.nbt.CompoundTag; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.neoforge.attachment.AttachmentType; -import net.neoforged.neoforge.client.gui.ConfigurationScreen; -import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; import net.neoforged.neoforge.network.registration.PayloadRegistrar; import net.neoforged.neoforge.registries.DeferredRegister; diff --git a/NeoForge/src/main/java/tschipp/carryon/compat/ClothConfigCompatNeo.java b/NeoForge/src/main/java/tschipp/carryon/compat/ClothConfigCompatNeo.java index 4822691..540c874 100644 --- a/NeoForge/src/main/java/tschipp/carryon/compat/ClothConfigCompatNeo.java +++ b/NeoForge/src/main/java/tschipp/carryon/compat/ClothConfigCompatNeo.java @@ -1,18 +1,11 @@ package tschipp.carryon.compat; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.Component; import net.neoforged.fml.ModContainer; import net.neoforged.neoforge.client.gui.IConfigScreenFactory; -import tschipp.carryon.config.AnnotationData; -import tschipp.carryon.config.BuiltCategory; import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.config.neoforge.ConfigLoaderImpl; -import javax.annotation.Nullable; -import java.util.List; -import java.util.Optional; public record ClothConfigCompatNeo(BuiltConfig client, BuiltConfig common) implements IConfigScreenFactory { diff --git a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java index b289711..a6869fe 100644 --- a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java +++ b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java @@ -22,25 +22,16 @@ package tschipp.carryon.config.neoforge; import com.electronwill.nightconfig.core.AbstractConfig; import com.electronwill.nightconfig.core.UnmodifiableConfig; -import net.minecraft.client.Minecraft; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; -import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; -import net.neoforged.fml.config.IConfigSpec; import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.config.ModConfigEvent; import net.neoforged.neoforge.common.ModConfigSpec; -import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.server.ServerLifecycleHooks; import tschipp.carryon.Constants; import tschipp.carryon.config.*; import java.util.*; -import java.util.function.Consumer; @EventBusSubscriber(modid = Constants.MOD_ID) public class ConfigLoaderImpl { diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java index 001b50e..cdec802 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -23,12 +23,11 @@ package tschipp.carryon.events; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.world.entity.player.Player; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.RenderHandEvent; import net.neoforged.neoforge.client.event.RenderLevelStageEvent; @@ -47,19 +46,19 @@ public class ClientEvents { public static void renderHand(RenderHandEvent event) { Player player = Minecraft.getInstance().player; - MultiBufferSource buffer = event.getMultiBufferSource(); PoseStack matrix = event.getPoseStack(); int light = event.getPackedLight(); float partialTicks = event.getPartialTick(); +SubmitNodeCollector nodes =event.getSubmitNodeCollector(); - if(CarriedObjectRender.drawFirstPerson(player, buffer, matrix, light, partialTicks) && CarryRenderHelper.getPerspective() == 0) + if(CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0) event.setCanceled(true); } @SubscribeEvent - public static void onRenderLevel(RenderLevelStageEvent.AfterParticles event) + public static void onRenderLevel(RenderLevelStageEvent.AfterEntities event) { - CarriedObjectRender.drawThirdPerson(event.getPartialTick().getGameTimeDeltaPartialTick(true), event.getPoseStack().last().pose()); + CarriedObjectRender.drawThirdPerson(event.getLevelRenderer().getTicks(), event.getPoseStack().last().pose()); } @SubscribeEvent diff --git a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java index 6a0d8f1..a6ca397 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -31,11 +31,9 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; -import net.neoforged.bus.api.Event; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.util.BlockSnapshot; import net.neoforged.neoforge.event.*; @@ -68,7 +66,7 @@ public class CommonEvents Level level = event.getLevel(); BlockPos pos = event.getPos(); - if (level.isClientSide) + if (level.isClientSide()) return; boolean success = false; @@ -122,7 +120,7 @@ public class CommonEvents Level level = event.getLevel(); Entity target = event.getTarget(); - if (level.isClientSide) + if (level.isClientSide()) return; CarryOnData carry = CarryOnDataManager.getCarryData(player); @@ -180,7 +178,7 @@ public class CommonEvents @SubscribeEvent public static void onClone(PlayerEvent.Clone event) { - if (!event.getOriginal().level().isClientSide) + if (!event.getOriginal().level().isClientSide()) PlacementHandler.placeCarriedOnDeath((ServerPlayer) event.getOriginal(), (ServerPlayer) event.getEntity(), event.isWasDeath()); } diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java index bfdae94..96f1be6 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ModBusEvents.java @@ -24,10 +24,8 @@ import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.InterModComms; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.InterModProcessEvent; import tschipp.carryon.Constants; -import tschipp.carryon.client.modeloverride.ModelOverrideHandler; import tschipp.carryon.common.config.ListHandler; import java.util.stream.Stream; diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java index d974390..55b02da 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ModClientEvents.java @@ -21,10 +21,8 @@ package tschipp.carryon.events; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import tschipp.carryon.Constants; import tschipp.carryon.client.keybinds.CarryOnKeybinds; diff --git a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java index 00ba272..15f651e 100644 --- a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java +++ b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java @@ -20,12 +20,10 @@ package tschipp.carryon.platform; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.codec.StreamDecoder; -import net.minecraft.network.codec.StreamMemberEncoder; + import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -45,7 +43,6 @@ import tschipp.carryon.networking.PacketBase; import tschipp.carryon.platform.services.IPlatformHelper; import java.util.function.BiConsumer; -import java.util.function.Function; public class NeoForgePlatformHelper implements IPlatformHelper { @@ -64,7 +61,7 @@ public class NeoForgePlatformHelper implements IPlatformHelper { @Override public boolean isDevelopmentEnvironment() { - return !FMLLoader.isProduction(); + return !FMLLoader.getCurrent().isProduction(); } @Override diff --git a/build.gradle b/build.gradle index cc63bd5..dc85e78 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { // see https://fabricmc.net/develop/ for new versions - id 'fabric-loom' version '1.10-SNAPSHOT' apply false + id 'fabric-loom' version "${loom_version}" apply false // see https://projects.neoforged.net/neoforged/moddevgradle for new versions id 'net.neoforged.moddev' version "${mod_dev_version}" apply false } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 51e46db..1995668 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,34 +3,35 @@ version=2.7.0 group=tschipp.carryon # Common -minecraft_version=1.21.8 +minecraft_version=1.21.9 mod_name=Carry On mod_author=Tschipp, PurpliciousCow mod_id=carryon license=GNU LGPLv3 credits= description=Carry On is a simple mod that improves game interaction by allowing players to pick up, carry, and place single block Tile Entities using only their empty hands. -minecraft_version_range=[1.21.8, 1.22) -neo_form_version=1.21.8-20250717.133445 +minecraft_version_range=[1.21.9, 1.22) +neo_form_version=1.21.9-20250930.151910 java_version=21 -parchment_version=2025.07.20 +parchment_version=2025.10.05 mod_dev_version=2.0.107 # Forge -forge_version=58.0.10 -forge_loader_version_range=[57,) -parchment_mappings=2025.07.20-1.21.8 +forge_version=59.0.5 +forge_loader_version_range=[59,) +parchment_mappings=2025.10.05-1.21.9 //forge_ats_enabled=true # Fabric -fabric_version=0.132.0+1.21.8 -fabric_loader_version=0.17.2 -parchment_mappings_fabric=1.21.8:2025.07.20 +fabric_version=0.134.0+1.21.9 +fabric_loader_version=0.17.3 +parchment_mappings_fabric=1.21.9:2025.10.05 +loom_version=1.11-SNAPSHOT # Neoforge -neoforge_version=21.8.36 +neoforge_version=21.9.16-beta neoforge_loader_version_range=[4,) -neogradle.subsystems.parchment.minecraftVersion=1.21.8 -neogradle.subsystems.parchment.mappingsVersion=2025.07.20 +neogradle.subsystems.parchment.minecraftVersion=1.21.9 +neogradle.subsystems.parchment.mappingsVersion=2025.10.05 # Gradle @@ -38,4 +39,4 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false mixinextras_version=0.3.6 -cloth_config_version=19.0.147 \ No newline at end of file +cloth_config_version=20.0.148 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 8ca4152..c8f1b50 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,6 +12,7 @@ pluginManagement { } filter { includeGroup('net.fabricmc') + includeGroup('net.fabricmc.unpick') includeGroup('fabric-loom') } } From 32db7222b718c6f46b5128a19bea64d9f1eb4bdb Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 08:07:18 +0200 Subject: [PATCH 02/19] Swear I did fix this --- .../carryon/client/render/CarriedObjectRender.java | 2 +- .../java/tschipp/carryon/events/CommonEvents.java | 11 ++++------- .../tschipp/carryon/mixin/ParticleEngineMixin.java | 14 +++++++------- .../carryon/platform/ForgePlatformHelper.java | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java index 44a3353..3114a16 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java @@ -179,7 +179,7 @@ renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); * @param partialticks * @param mat */ - public static void drawThirdPerson(float partialticks, Matrix4f mat,SubmitNodeCollector nodeCollector) { + public static void drawThirdPerson(float partialticks, Matrix4f mat) { Minecraft mc = Minecraft.getInstance(); Level level = mc.level; int perspective = CarryRenderHelper.getPerspective(); diff --git a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java index b91d5f9..063aa45 100644 --- a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -30,11 +30,9 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.BlockSnapshot; import net.minecraftforge.common.util.Result; import net.minecraftforge.event.*; -import net.minecraftforge.event.TickEvent.Phase; import net.minecraftforge.event.TickEvent.ServerTickEvent; import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; @@ -50,7 +48,6 @@ import net.minecraftforge.event.level.BlockEvent.EntityPlaceEvent; import net.minecraftforge.eventbus.api.listener.Priority; import net.minecraftforge.eventbus.api.listener.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import oshi.jna.platform.mac.SystemB; import tschipp.carryon.CarryOnCommon; import tschipp.carryon.Constants; import tschipp.carryon.carry.CarryOnDataCapabilityProvider; @@ -74,7 +71,7 @@ public class CommonEvents Level level = event.getLevel(); BlockPos pos = event.getPos(); - if (level.isClientSide) + if (level.isClientSide()) return false; boolean success = false; @@ -122,7 +119,7 @@ public class CommonEvents Level level = event.getLevel(); Entity target = event.getTarget(); - if (level.isClientSide) + if (level.isClientSide()) return false; CarryOnData carry = CarryOnDataManager.getCarryData(player); @@ -173,14 +170,14 @@ public class CommonEvents @SubscribeEvent public static void onServerTick(ServerTickEvent.Post event) { - for (ServerPlayer player : event.getServer().getPlayerList().getPlayers()) + for (ServerPlayer player : event.server().getPlayerList().getPlayers()) CarryOnCommon.onCarryTick(player); } @SubscribeEvent public static void onClone(Clone event) { - if (!event.getOriginal().level().isClientSide) { + if (!event.getOriginal().level().isClientSide()) { Player newPlayer = event.getEntity(); Player oldPlayer = event.getOriginal(); oldPlayer.reviveCaps(); diff --git a/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java b/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java index 44632dc..8eb29fd 100644 --- a/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java +++ b/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java @@ -37,11 +37,11 @@ public class ParticleEngineMixin { //I am injecting into a lambda, lord help me - @Inject(method = "render(Lnet/minecraft/client/Camera;FLnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/culling/Frustum;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V", - shift = At.Shift.AFTER)) - private void onRenderLevel(Camera p_107340_, float partialTick, MultiBufferSource.BufferSource p_377798_, Frustum frustum, CallbackInfo ci) - { - CarriedObjectRender.drawThirdPerson(partialTick, new PoseStack().last().pose()); - } + // @Inject(method = "render(Lnet/minecraft/client/Camera;FLnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/culling/Frustum;)V", + // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V", + // shift = At.Shift.AFTER)) + // private void onRenderLevel(Camera p_107340_, float partialTick, Frustum frustum, CallbackInfo ci) + // { + // CarriedObjectRender.drawThirdPerson(partialTick, new PoseStack().last().pose()); + // } } diff --git a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java index 54d6fbd..bb522eb 100644 --- a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java +++ b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java @@ -129,7 +129,7 @@ public class ForgePlatformHelper implements IPlatformHelper { public void setCarryData(Player player, CarryOnData data) { var cap = player.getCapability(CarryOnDataCapabilityProvider.CARRY_ON_DATA_CAPABILITY).orElse(new CarryOnDataCapability()); cap.setCarryData(data); - if(!player.level().isClientSide) { + if(!player.level().isClientSide()) { sendPacketToAllPlayers(Constants.PACKET_ID_SYNC_SCRIPTS, new ClientboundSyncCarryDataPacket(player.getId(), data), (ServerLevel) player.level()); } } From 41b518942dc3770ef77f3c2e9e26e595ec591cfc Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 08:16:00 +0200 Subject: [PATCH 03/19] Update CarryOnRenderType.java --- .../client/render/CarryOnRenderType.java | 172 +++++++++--------- 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java b/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java index ca5dabd..41c05de 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java @@ -1,108 +1,108 @@ -package tschipp.carryon.client.render; +// package tschipp.carryon.client.render; -import com.mojang.blaze3d.pipeline.BlendFunction; -import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.platform.DepthTestFunction; -import com.mojang.blaze3d.vertex.MeshData; -import com.mojang.blaze3d.vertex.VertexFormat; -import net.minecraft.client.renderer.RenderType; -import org.jetbrains.annotations.NotNull; +// import com.mojang.blaze3d.pipeline.BlendFunction; +// import com.mojang.blaze3d.pipeline.RenderPipeline; +// import com.mojang.blaze3d.platform.DepthTestFunction; +// import com.mojang.blaze3d.vertex.MeshData; +// import com.mojang.blaze3d.vertex.VertexFormat; +// import net.minecraft.client.renderer.RenderType; +// import org.jetbrains.annotations.NotNull; -import java.util.IdentityHashMap; -import java.util.Map; +// import java.util.IdentityHashMap; +// import java.util.Map; -//Credit: klikli for the idea and code for this wrapper -public class CarryOnRenderType extends RenderType { +// //Credit: klikli for the idea and code for this wrapper +// public class CarryOnRenderType extends RenderType { - private static final Map remappedTypes = new IdentityHashMap<>(); - private final RenderPipeline pipeline; - private final RenderType original; +// private static final Map remappedTypes = new IdentityHashMap<>(); +// private final RenderPipeline pipeline; +// private final RenderType original; - private CarryOnRenderType(RenderType original, RenderPipeline pipeline) { - super(String.format("%s_carryon", original.toString()), original.bufferSize(), original.affectsCrumbling(), true, original::setupRenderState, original::clearRenderState); - this.pipeline = pipeline; - this.original = original; - } +// private CarryOnRenderType(RenderType original, RenderPipeline pipeline) { +// super(String.format("%s_carryon", original.toString()), original.bufferSize(), original.affectsCrumbling(), true, original::setupRenderState, original::clearRenderState); +// this.pipeline = pipeline; +// this.original = original; +// } - public static RenderType remap(RenderType in) { - return remappedTypes.computeIfAbsent(in, (type) -> { +// public static RenderType remap(RenderType in) { +// return remappedTypes.computeIfAbsent(in, (type) -> { - //modify the pipeline - var pipeline = toBuilder(in.pipeline()) - .withBlend(BlendFunction.TRANSLUCENT) - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) - .withCull(false); +// //modify the pipeline +// var pipeline = toBuilder(in.pipeline()) +// .withBlend(BlendFunction.TRANSLUCENT) +// .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) +// .withCull(false); - return new CarryOnRenderType(type, pipeline.build()); - }); - } +// return new CarryOnRenderType(type, pipeline.build()); +// }); +// } - private static RenderPipeline.Builder toBuilder(RenderPipeline pipeline) { - RenderPipeline.Builder builder = RenderPipeline.builder(); - builder.withLocation(pipeline.getLocation()); - builder.withFragmentShader(pipeline.getFragmentShader()); - builder.withVertexShader(pipeline.getVertexShader()); +// private static RenderPipeline.Builder toBuilder(RenderPipeline pipeline) { +// RenderPipeline.Builder builder = RenderPipeline.builder(); +// builder.withLocation(pipeline.getLocation()); +// builder.withFragmentShader(pipeline.getFragmentShader()); +// builder.withVertexShader(pipeline.getVertexShader()); - if (!pipeline.getShaderDefines().isEmpty()) { - for (Map.Entry entry : pipeline.getShaderDefines().values().entrySet()) { - try { - int parsed = Integer.parseInt(entry.getValue()); - builder.withShaderDefine(entry.getKey(), parsed); - } catch (NumberFormatException e) { - float parsed = Float.parseFloat(entry.getValue()); - builder.withShaderDefine(entry.getKey(), parsed); - } - } - for (String flag : pipeline.getShaderDefines().flags()) { - builder.withShaderDefine(flag); - } - } +// if (!pipeline.getShaderDefines().isEmpty()) { +// for (Map.Entry entry : pipeline.getShaderDefines().values().entrySet()) { +// try { +// int parsed = Integer.parseInt(entry.getValue()); +// builder.withShaderDefine(entry.getKey(), parsed); +// } catch (NumberFormatException e) { +// float parsed = Float.parseFloat(entry.getValue()); +// builder.withShaderDefine(entry.getKey(), parsed); +// } +// } +// for (String flag : pipeline.getShaderDefines().flags()) { +// builder.withShaderDefine(flag); +// } +// } - if (!pipeline.getSamplers().isEmpty()) { - pipeline.getSamplers().forEach(builder::withSampler); - } +// if (!pipeline.getSamplers().isEmpty()) { +// pipeline.getSamplers().forEach(builder::withSampler); +// } - if (!pipeline.getUniforms().isEmpty()) { - pipeline.getUniforms().forEach(u -> builder.withUniform(u.name(), u.type())); - } +// if (!pipeline.getUniforms().isEmpty()) { +// pipeline.getUniforms().forEach(u -> builder.withUniform(u.name(), u.type())); +// } - builder.withDepthTestFunction(pipeline.getDepthTestFunction()); - builder.withPolygonMode(pipeline.getPolygonMode()); - builder.withCull(pipeline.isCull()); - builder.withColorWrite(pipeline.isWriteColor(), pipeline.isWriteAlpha()); - builder.withDepthWrite(pipeline.isWriteDepth()); - builder.withColorLogic(pipeline.getColorLogic()); +// builder.withDepthTestFunction(pipeline.getDepthTestFunction()); +// builder.withPolygonMode(pipeline.getPolygonMode()); +// builder.withCull(pipeline.isCull()); +// builder.withColorWrite(pipeline.isWriteColor(), pipeline.isWriteAlpha()); +// builder.withDepthWrite(pipeline.isWriteDepth()); +// builder.withColorLogic(pipeline.getColorLogic()); - if (pipeline.getBlendFunction().isPresent()) - builder.withBlend(pipeline.getBlendFunction().get()); - else - builder.withoutBlend(); - builder.withVertexFormat(pipeline.getVertexFormat(), pipeline.getVertexFormatMode()); - builder.withDepthBias(pipeline.getDepthBiasScaleFactor(), pipeline.getDepthBiasConstant()); +// if (pipeline.getBlendFunction().isPresent()) +// builder.withBlend(pipeline.getBlendFunction().get()); +// else +// builder.withoutBlend(); +// builder.withVertexFormat(pipeline.getVertexFormat(), pipeline.getVertexFormatMode()); +// builder.withDepthBias(pipeline.getDepthBiasScaleFactor(), pipeline.getDepthBiasConstant()); - return builder; - } +// return builder; +// } - @Override - public void draw(@NotNull MeshData meshData) { - this.original.draw(meshData); - } +// @Override +// public void draw(@NotNull MeshData meshData) { +// this.original.draw(meshData); +// } - @Override - public @NotNull VertexFormat format() { - return this.original.format(); - } +// @Override +// public @NotNull VertexFormat format() { +// return this.original.format(); +// } - @Override - public VertexFormat.@NotNull Mode mode() { - return this.original.mode(); - } +// @Override +// public VertexFormat.@NotNull Mode mode() { +// return this.original.mode(); +// } - @Override - public RenderPipeline pipeline() { - return this.pipeline; //get our own modified pipeline - } -} +// @Override +// public RenderPipeline pipeline() { +// return this.pipeline; //get our own modified pipeline +// } +// } From 98247bceb211cb61ea146aaa677a95c8ed03aea9 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 08:18:23 +0200 Subject: [PATCH 04/19] Update ClientEvents.java --- Forge/src/main/java/tschipp/carryon/events/ClientEvents.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java index 295758f..92434f5 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -48,7 +48,7 @@ public class ClientEvents { PoseStack matrix = event.getPoseStack(); int light = event.getPackedLight(); float partialTicks = event.getPartialTick(); -SubmitNodeCollector nodes =event.getNodeCollector(); + SubmitNodeCollector nodes =event.getNodeCollector(); //If true, cancels event return CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0; } From af25f681be371ba1a15e563cf726df4ddd65601f Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 08:27:25 +0200 Subject: [PATCH 05/19] fixes the kick on respawn bug --- Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index cf9947b..933dbfa 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -38,7 +38,7 @@ public class CarryOnFabricMod implements ModInitializer { builder -> builder .initializer(() -> new CarryOnData(new CompoundTag())) .persistent(CarryOnData.CODEC) - .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null) + .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null && !p.isRemoved()) .copyOnDeath() ); From 9d6ffc37ca7a6495aa7b29236803c5c12c28436f Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 09:11:08 +0200 Subject: [PATCH 06/19] Fixes kick on death on neoforge --- Common/build.gradle | 2 +- NeoForge/build.gradle | 2 +- .../carryon/carry/CarryOnDataSyncHandler.java | 2 +- gradle.properties | 19 ++++++++++--------- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index 2890640..4916994 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -20,7 +20,7 @@ neoForge { accessTransformers.from(at.absolutePath) } parchment { - minecraftVersion = minecraft_version + minecraftVersion = parchment_game_version mappingsVersion = parchment_version } } diff --git a/NeoForge/build.gradle b/NeoForge/build.gradle index 895e732..91d6424 100644 --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle @@ -20,7 +20,7 @@ neoForge { accessTransformers.from(at.absolutePath) } parchment { - minecraftVersion = minecraft_version + minecraftVersion = parchment_game_version mappingsVersion = parchment_version } runs { diff --git a/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java b/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java index 16fa62f..edc005f 100644 --- a/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java +++ b/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java @@ -20,7 +20,7 @@ public class CarryOnDataSyncHandler implements AttachmentSyncHandler Date: Wed, 15 Oct 2025 09:47:48 +0200 Subject: [PATCH 07/19] forge fix --- Forge/src/main/java/tschipp/carryon/CarryOnForge.java | 1 - .../java/tschipp/carryon/events/ModClientEvents.java | 11 ++--------- .../tschipp/carryon/platform/ForgePlatformHelper.java | 4 ---- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/Forge/src/main/java/tschipp/carryon/CarryOnForge.java b/Forge/src/main/java/tschipp/carryon/CarryOnForge.java index 292bf7b..9c773ee 100644 --- a/Forge/src/main/java/tschipp/carryon/CarryOnForge.java +++ b/Forge/src/main/java/tschipp/carryon/CarryOnForge.java @@ -30,7 +30,6 @@ import net.minecraftforge.network.ChannelBuilder; import net.minecraftforge.network.SimpleChannel; import tschipp.carryon.config.forge.ConfigLoaderImpl; import tschipp.carryon.networking.ClientboundSyncCarryDataPacket; -import tschipp.carryon.networking.clientbound.ClientboundStartRidingPacket; import tschipp.carryon.platform.Services; @Mod(Constants.MOD_ID) diff --git a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java index 98c4e34..0fa5770 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java @@ -21,17 +21,13 @@ package tschipp.carryon.events; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.ConfigScreenHandler; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.eventbus.api.listener.SubscribeEvent; -import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import tschipp.carryon.Constants; import tschipp.carryon.client.keybinds.CarryOnKeybinds; -import tschipp.carryon.compat.ClothConfigCompatForge; import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.config.forge.ConfigLoaderImpl; import tschipp.carryon.platform.Services; @@ -39,13 +35,10 @@ import tschipp.carryon.platform.Services; @Mod.EventBusSubscriber(bus = Bus.MOD, modid = Constants.MOD_ID, value=Dist.CLIENT) public class ModClientEvents { - @SubscribeEvent - public static void registerKeybinds(RegisterKeyMappingsEvent event) - { - CarryOnKeybinds.registerKeybinds(event::register); + static{ + RegisterKeyMappingsEvent.BUS.addListener((e)->CarryOnKeybinds.registerKeybinds(e::register)); } - @SubscribeEvent public static void clientSetup(FMLClientSetupEvent event) { diff --git a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java index bb522eb..cc4d147 100644 --- a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java +++ b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java @@ -21,7 +21,6 @@ package tschipp.carryon.platform; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; @@ -31,14 +30,12 @@ import net.minecraft.world.entity.player.Player; import net.minecraftforge.event.network.CustomPayloadEvent; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.loading.FMLLoader; -import net.minecraftforge.network.NetworkDirection; import net.minecraftforge.network.PacketDistributor; import tschipp.carryon.CarryOnCommonClient; import tschipp.carryon.CarryOnForge; import tschipp.carryon.Constants; import tschipp.carryon.carry.CarryOnDataCapability; import tschipp.carryon.carry.CarryOnDataCapabilityProvider; -import tschipp.carryon.carry.ICarryOnDataCapability; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.config.forge.ConfigLoaderImpl; @@ -47,7 +44,6 @@ import tschipp.carryon.networking.PacketBase; import tschipp.carryon.platform.services.IPlatformHelper; import java.util.function.BiConsumer; -import java.util.function.Function; public class ForgePlatformHelper implements IPlatformHelper { From efdd3277cc56b2ad65124d3d72a8dafb4b1aa6c2 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 19:23:41 +0200 Subject: [PATCH 08/19] confusing "and" and for an "or" --- Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index 933dbfa..7d1e124 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -38,7 +38,7 @@ public class CarryOnFabricMod implements ModInitializer { builder -> builder .initializer(() -> new CarryOnData(new CompoundTag())) .persistent(CarryOnData.CODEC) - .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null && !p.isRemoved()) + .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null || !p.isRemoved()) .copyOnDeath() ); From e3be9c84dac4c11d6cc313f06c46571d72074372 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 21:18:32 +0200 Subject: [PATCH 09/19] Revert "confusing "and" and for an "or"" This reverts commit efdd3277cc56b2ad65124d3d72a8dafb4b1aa6c2. --- Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index 7d1e124..933dbfa 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -38,7 +38,7 @@ public class CarryOnFabricMod implements ModInitializer { builder -> builder .initializer(() -> new CarryOnData(new CompoundTag())) .persistent(CarryOnData.CODEC) - .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null || !p.isRemoved()) + .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null && !p.isRemoved()) .copyOnDeath() ); From ef8362e72872deb9ed35786d0544e2a161cbf956 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 21:51:52 +0200 Subject: [PATCH 10/19] Update CarryOnFabricMod.java --- .../java/tschipp/carryon/CarryOnFabricMod.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index 933dbfa..d1655fe 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -25,10 +25,10 @@ import net.fabricmc.fabric.api.attachment.v1.AttachmentRegistry; import net.fabricmc.fabric.api.attachment.v1.AttachmentType; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.config.fabric.ConfigLoaderImpl; import tschipp.carryon.events.CommonEvents; - import java.io.IOException; public class CarryOnFabricMod implements ModInitializer { @@ -37,9 +37,15 @@ public class CarryOnFabricMod implements ModInitializer { ResourceLocation.fromNamespaceAndPath(Constants.MOD_ID, "carry_on_data"), builder -> builder .initializer(() -> new CarryOnData(new CompoundTag())) - .persistent(CarryOnData.CODEC) - .syncWith(CarryOnData.STREAM_CODEC, (t, p) -> p.connection != null && !p.isRemoved()) - .copyOnDeath() + .syncWith(CarryOnData.STREAM_CODEC, (t, p) ->{ + ServerPlayer player = (ServerPlayer) t; + // the isAlive check avoids us syncing attachment data about dead players. Which causes a disconnect + // player.tickCount > 0 avoids us syncing attachment data about players the instant they spawn. + // Which also causes a disconnect as the player entity may not be synced yet. + + return p.connection != null && player.isAlive() && player.tickCount >0; + }) + ); From 5cf2e87fe8c6746b31917eac5ac78cbf4e3d4f1b Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 21:52:23 +0200 Subject: [PATCH 11/19] Update CarryOnFabricMod.java --- Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index d1655fe..8d6442a 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -43,7 +43,7 @@ public class CarryOnFabricMod implements ModInitializer { // player.tickCount > 0 avoids us syncing attachment data about players the instant they spawn. // Which also causes a disconnect as the player entity may not be synced yet. - return p.connection != null && player.isAlive() && player.tickCount >0; + return p.connection != null && player.isAlive() && player.tickCount > 0; }) From d35cb4ed723d9699995d2bb61a745b48499fd84c Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 15 Oct 2025 22:03:28 +0200 Subject: [PATCH 12/19] Bug fixes - Ports fabric disconnect fix to neoforge - Fixes console error when trying to pickup non owned tamable mobs. --- .../tschipp/carryon/common/carry/PickupHandler.java | 13 +++++++++---- .../carryon/carry/CarryOnDataSyncHandler.java | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java index ff0fed8..4d14f3f 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java @@ -32,6 +32,8 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity.RemovalReason; +import net.minecraft.world.entity.EntityReference; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.TamableAnimal; import net.minecraft.world.entity.animal.Animal; @@ -172,10 +174,13 @@ public class PickupHandler { if (entity instanceof TamableAnimal tame) { - UUID owner = tame.getOwnerReference().getUUID(); - UUID playerID = player.getGameProfile().id(); - if (owner != null && !owner.equals(playerID)) - return false; + EntityReference ref = tame.getOwnerReference(); + if (ref != null) { + UUID owner = tame.getOwnerReference().getUUID(); + UUID playerID = player.getGameProfile().id(); + if (!owner.equals(playerID)) + return false; + } } if(!ListHandler.isPermitted(entity)) diff --git a/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java b/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java index edc005f..3f9b4d7 100644 --- a/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java +++ b/NeoForge/src/main/java/tschipp/carryon/carry/CarryOnDataSyncHandler.java @@ -20,7 +20,11 @@ public class CarryOnDataSyncHandler implements AttachmentSyncHandler Date: Wed, 15 Oct 2025 22:03:53 +0200 Subject: [PATCH 13/19] Update PickupHandler.java --- .../main/java/tschipp/carryon/common/carry/PickupHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java index 4d14f3f..dc9f9f4 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java @@ -176,7 +176,7 @@ public class PickupHandler { { EntityReference ref = tame.getOwnerReference(); if (ref != null) { - UUID owner = tame.getOwnerReference().getUUID(); + UUID owner = ref.getUUID(); UUID playerID = player.getGameProfile().id(); if (!owner.equals(playerID)) return false; From 9a484df16ebb7d14ce1a0004f905986b0df517b1 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Thu, 16 Oct 2025 07:50:31 +0200 Subject: [PATCH 14/19] Fixed bugs related to picking up players - Fixed slowness getting stuck when the other player dismounted with shift - Fixed bug where player couldn't press shift to dismount - Fixed being unable to place other player back down --- .../carryon/common/carry/CarryOnData.java | 21 ++++++++++++++++++- .../carryon/common/carry/PickupHandler.java | 4 ++-- .../common/carry/PlacementHandler.java | 2 +- .../tschipp/carryon/mixin/EntityMixin.java | 10 +++++++++ .../tschipp/carryon/mixin/PlayerMixin.java | 19 +++++++++++++++++ 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java index 6aa089c..b8a0156 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java @@ -38,6 +38,7 @@ import net.minecraft.world.entity.AreaEffectCloud; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -50,6 +51,7 @@ import tschipp.carryon.common.scripting.CarryOnScript; import javax.annotation.Nullable; import java.util.Optional; +import java.util.UUID; public class CarryOnData { @@ -103,6 +105,11 @@ public class CarryOnData { } + public CarryType getType() + { + return this.type; + } + public CompoundTag getNbt() { nbt.putString("type", type.toString()); @@ -201,8 +208,20 @@ public class CarryOnData { this.activeScript = script; } - public void setCarryingPlayer() { + public void setCarryingPlayer(Player player) + { this.type = CarryType.PLAYER; + nbt.putString("player", player.getStringUUID().toString()); + } + + public Player getCarryingPlayer(Level level) + { + if(this.type != CarryType.PLAYER) + throw new IllegalStateException("Called getCarryingPlayer on data that contained " + this.type); + if(!nbt.contains("player")) + return null; + UUID uuid = UUID.fromString(nbt.getString("player").get()); + return level.getServer().getPlayerList().getPlayer(uuid); } public boolean isCarrying() diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java index dc9f9f4..0963957 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java @@ -239,9 +239,9 @@ public class PickupHandler { player.level().getServer().getCommands().performPrefixedCommand(player.level().getServer().createCommandSourceStack(), "/execute as " + player.getGameProfile().name() + " run " + cmd); } - otherPlayer.startRiding(player, true,true); + otherPlayer.startRiding(player, true, false); Services.PLATFORM.sendPacketToAllPlayers(Constants.PACKET_ID_START_RIDING_OTHER, new ClientboundStartRidingOtherPlayerPacket(player.getId(), otherPlayer.getId(), true), player.level()); - carry.setCarryingPlayer(); + carry.setCarryingPlayer(otherPlayer); player.swing(InteractionHand.MAIN_HAND, true); player.level().playSound(null, player.getOnPos(), SoundEvents.ARMOR_EQUIP_GENERIC.value(), SoundSource.AMBIENT, 1.0f, 0.5f); CarryOnDataManager.setCarryData(player, carry); diff --git a/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java b/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java index db41e5b..64b2860 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java @@ -175,7 +175,7 @@ public class PlacementHandler Vec3 placementPos = Vec3.atBottomCenterOf(pos); if (carry.isCarrying(CarryType.PLAYER)) { - Entity otherPlayer = player.getFirstPassenger(); + Entity otherPlayer = carry.getCarryingPlayer(level); player.ejectPassengers(); Services.PLATFORM.sendPacketToAllPlayers(Constants.PACKET_ID_START_RIDING_OTHER, new ClientboundStartRidingOtherPlayerPacket(player.getId(), otherPlayer.getId(), false), player.level()); carry.clear(); diff --git a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java index c434768..9a314e0 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java @@ -34,6 +34,9 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; + import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData.CarryType; @@ -47,6 +50,13 @@ public abstract class EntityMixin @Shadow public boolean hasPassenger(Entity pEntity) {throw new IllegalStateException("EntityMixin application failed");} + + @ModifyExpressionValue(method = "startRiding(Lnet/minecraft/world/entity/Entity;ZZ)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/EntityType;canSerialize()Z")) + private boolean onStartRidingCheck(boolean original, Entity entity, boolean force) { + if (force && entity instanceof Player) return true; + return original; + } + @Shadow public abstract void onPassengerTurned(Entity $$0); @Inject(method = "positionRider(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/entity/Entity$MoveFunction;)V", at = @At("HEAD"), cancellable = true) diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java index 1806385..3c67966 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java @@ -21,17 +21,23 @@ package tschipp.carryon.mixin; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.storage.ValueInput; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; +import tschipp.carryon.common.carry.PlacementHandler; +import tschipp.carryon.common.carry.CarryOnData.CarryType; import java.util.Optional; @@ -50,4 +56,17 @@ public abstract class PlayerMixin extends LivingEntity { res.ifPresent(data -> CarryOnDataManager.setCarryData((Player)((Object)this), data)); } + + @Override + public void stopRiding() { + Entity entity = this.getVehicle(); + if (entity instanceof Player && entity.getPassengers().size() < 2){ + CarryOnData carry = CarryOnDataManager.getCarryData((Player) entity); + if (carry.getType() == CarryType.PLAYER){ + carry.clear(); + ((Player) entity).removeEffect(MobEffects.SLOWNESS); + } + } + super.stopRiding(); + } } From 21f09b2526aa1c9410e9c7190bc4dd8605f03b43 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 22 Oct 2025 19:37:26 +0200 Subject: [PATCH 15/19] Update CommonEvents.java --- .../java/tschipp/carryon/events/CommonEvents.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java index f0de4d7..cb9d6f0 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -21,6 +21,7 @@ package tschipp.carryon.events; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; @@ -33,6 +34,7 @@ import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.packs.PackType; import net.minecraft.world.InteractionResult; +import net.minecraft.world.level.GameRules; import tschipp.carryon.CarryOnCommon; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData.CarryType; @@ -132,10 +134,13 @@ public class CommonEvents { CarryOnCommon.onCarryTick(player); }); - - ServerPlayerEvents.COPY_FROM.register(((oldPlayer, newPlayer, alive) -> { - PlacementHandler.placeCarriedOnDeath(oldPlayer, newPlayer, !alive); - })); + ServerLivingEntityEvents.AFTER_DEATH.register((entity, damageSource)->{ + if (!(entity instanceof ServerPlayer)) return; + var player = (ServerPlayer) entity; + var carry = CarryOnDataManager.getCarryData(player); + if (!carry.isCarrying() || player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !carry.isCarrying(CarryType.PLAYER)) return; + PlacementHandler.placeCarried(player); + }); PlayerBlockBreakEvents.BEFORE.register(((world, player, pos, state, blockEntity) -> { From 6f0c20077aaa3d44fc9bca7bf8c634668e15ba81 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Wed, 22 Oct 2025 19:42:01 +0200 Subject: [PATCH 16/19] Update CommonEvents.java --- Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java index cb9d6f0..6b9a67b 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -138,8 +138,7 @@ public class CommonEvents { if (!(entity instanceof ServerPlayer)) return; var player = (ServerPlayer) entity; var carry = CarryOnDataManager.getCarryData(player); - if (!carry.isCarrying() || player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !carry.isCarrying(CarryType.PLAYER)) return; - PlacementHandler.placeCarried(player); + if (carry.isCarrying(CarryType.PLAYER) || !player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)) PlacementHandler.placeCarried(player); }); From 08b2a41043a6747f49a52be76ee1a846e73a24db Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Fri, 24 Oct 2025 22:27:31 +0200 Subject: [PATCH 17/19] Fixed 3rd person rendering --- .../client/modeloverride/ModelOverride.java | 11 +- .../client/render/CarriedObjectRender.java | 153 ++++-------------- .../client/render/CarryRenderHelper.java | 2 +- .../render/CarryingItemRenderLayer.java | 22 +++ .../client/render/ICarryOnRenderState.java | 5 + .../carryon/compat/ClothConfigCompat.java | 2 - .../carryon/mixin/AvatarRendererMixin.java | 30 ++++ .../tschipp/carryon/mixin/EntityMixin.java | 2 +- .../carryon/mixin/EntityRendererMixin.java | 2 + .../tschipp/carryon/mixin/PlayerMixin.java | 4 - .../carryon/mixin/PlayerRenderStateMixin.java | 16 ++ Common/src/main/resources/carryon.mixins.json | 3 +- .../tschipp/carryon/CarryOnFabricMod.java | 3 +- .../mixin/ItemInHandRendererMixin.java | 2 +- .../carryon/carry/ICarryOnDataCapability.java | 1 - .../tschipp/carryon/events/ClientEvents.java | 11 +- .../tschipp/carryon/events/ClientEvents.java | 10 +- 17 files changed, 113 insertions(+), 166 deletions(-) create mode 100644 Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java create mode 100644 Common/src/main/java/tschipp/carryon/mixin/AvatarRendererMixin.java diff --git a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java index 58fa3d8..52d2cb2 100644 --- a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java +++ b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java @@ -39,22 +39,13 @@ import tschipp.carryon.common.scripting.Matchables.NBTCondition; import javax.annotation.Nullable; import java.util.Map; -public class ModelOverride -{ - //public static Codec CODEC = Codec.STRING.comapFlatMap(ModelOverride::of, override -> override.raw); - - private String raw; +public class ModelOverride { private BlockResult parsedBlock; - private Type type; - private Either parsedRHS; private Either renderObject; private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either parsedRHS) { - this.raw = raw; this.parsedBlock = parsedBlock; - this.type = type; - this.parsedRHS = parsedRHS; parsedRHS.ifLeft(res -> { ItemStack stack = new ItemStack(res.item()); diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java index 3114a16..3ce70e7 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java @@ -35,10 +35,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import org.joml.Matrix4f; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData.CarryType; @@ -51,8 +49,7 @@ import java.util.*; public class CarriedObjectRender { - - public static boolean drawFirstPerson(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector) + public static boolean draw(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector, boolean firstPerson) { if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod")) return false; @@ -60,9 +57,9 @@ public class CarriedObjectRender CarryOnData carry = CarryOnDataManager.getCarryData(player); try { if (carry.isCarrying(CarryType.BLOCK)) - drawFirstPersonBlock(player, matrix, light, CarryRenderHelper.getRenderState(player), nodeCollector); + drawBlock(player, matrix, light, CarryRenderHelper.getRenderState(player), nodeCollector, firstPerson); else if (carry.isCarrying(CarryType.ENTITY)) - drawFirstPersonEntity(player, matrix, light, partialTicks,nodeCollector); + drawEntity(player, matrix, light, partialTicks,nodeCollector, firstPerson); } catch (Exception e) { @@ -82,13 +79,18 @@ public class CarriedObjectRender return carry.isCarrying(); } - private static void drawFirstPersonBlock(Player player, PoseStack matrix, int light, BlockState state,SubmitNodeCollector nodeCollector) + private static void drawBlock(Player player, PoseStack matrix, int light, BlockState state,SubmitNodeCollector nodeCollector, boolean firstPerson) { matrix.pushPose(); - matrix.scale(2.5f, 2.5f, 2.5f); - matrix.translate(0, -0.5, -1); - //RenderSystem.enableBlend(); - //RenderSystem.disableCull(); + if (firstPerson){ + matrix.scale(2.5f, 2.5f, 2.5f); + matrix.translate(0, -0.5, -1); + }else{ + matrix.scale(0.6f, 0.6f, 0.6f); + matrix.translate(0, 0.5, -0.8); + matrix.mulPose(Axis.ZN.rotationDegrees(180)); + + } CarryOnData carry = CarryOnDataManager.getCarryData(player); ItemStackRenderState renderState = new ItemStackRenderState(); @@ -105,20 +107,13 @@ public class CarriedObjectRender if(carry.getActiveScript().isPresent()) CarryRenderHelper.performScriptTransformation(matrix, carry.getActiveScript().get()); - //RenderSystem.setShaderTexture(0, GpuTexture); - ItemStack renderStack = CarryRenderHelper.getRenderItemStack(player); Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, player.level(), null, 0); - //renderState.render(matrix, light, OverlayTexture.NO_OVERLAY); -renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); - - - //RenderSystem.enableCull(); - //RenderSystem.disableBlend(); + renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); matrix.popPose(); } - private static void drawFirstPersonEntity(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector) { + private static void drawEntity(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector, boolean firstPerson) { EntityRenderDispatcher manager = Minecraft.getInstance().getEntityRenderDispatcher(); @@ -136,13 +131,17 @@ renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); float height = entity.getBbHeight(); float width = entity.getBbWidth(); - - matrix.pushPose(); - matrix.scale(0.8f, 0.8f, 0.8f); - matrix.mulPose(Axis.YP.rotationDegrees(180)); - matrix.translate(0.0, -height - .2, width * 1.3 + 0.1); - - // manager.setRenderShadow(false); + matrix.pushPose(); + matrix.mulPose(Axis.YP.rotationDegrees(180)); + if (firstPerson){ + matrix.scale(0.8f, 0.8f, 0.8f); + matrix.translate(0.0, -height - .2, width * 1.3 + 0.1); + }else{ + float multiplier = Math.min(9.9f, height * width) ; + matrix.scale((10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f); + matrix.translate(0.0, height / 2 + -(height / 4) + 0.5f, width - 0.1 < 0.7 ? width - 0.1 + (0.7 - (width - 0.1)) : width - 0.1); + matrix.mulPose(Axis.ZN.rotationDegrees(180)); + } Optional res = carry.getActiveScript(); if(res.isPresent()) @@ -158,111 +157,13 @@ renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0); ((LivingEntity) entity).hurtTime = 0; try { - manager.submit(manager.extractEntity(entity, 0), new CameraRenderState(), 0, 0, 0, matrix, nodeCollector); - // manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); - //nodeCollector.submit - //manager.getRenderer(entity).submit(new EntityRenderState(), matrix, nodeCollector, null); + manager.submit(manager.extractEntity(entity, 0), new CameraRenderState(), 0, 0, 0, matrix, nodeCollector); } catch (Exception e) { } - // manager.setRenderShadow(true); matrix.popPose(); - } - - // RenderSystem.disableAlphaTest(); } - - /** - * Draws the third person view of entities and blocks - * @param partialticks - * @param mat - */ - public static void drawThirdPerson(float partialticks, Matrix4f mat) { - Minecraft mc = Minecraft.getInstance(); - Level level = mc.level; - int perspective = CarryRenderHelper.getPerspective(); - - PoseStack matrix = new PoseStack(); - matrix.mulPose(mat); - - // RenderSystem.enableBlend(); - // RenderSystem.disableCull(); - // RenderSystem.disableDepthTest(); - ItemStackRenderState renderState = new ItemStackRenderState(); - var layer = renderState.newLayer(); - layer.setRenderType(RenderType.glint()); - - for (Player player : level.players()) - { - try { - - CarryOnData carry = CarryOnDataManager.getCarryData(player); - - if (perspective == 0 && player == mc.player && !(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod") || Services.PLATFORM.isModLoaded("realcamera"))) - continue; - - - if (carry.isCarrying(CarryType.BLOCK)) { - BlockState state = CarryRenderHelper.getRenderState(player); - - CarryRenderHelper.applyBlockTransformations(player, partialticks, matrix, state.getBlock()); - - ItemStack renderItemStack = CarryRenderHelper.getRenderItemStack(player); - - mc.getItemModelResolver().updateForTopItem(renderState, renderItemStack, ItemDisplayContext.NONE, level, null, 0); - - Optional res = carry.getActiveScript(); - res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script)); - - //RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); - //RenderSystem.enableCull(); - - PoseStack.Pose p = matrix.last(); - PoseStack copy = new PoseStack(); - copy.mulPose(p.pose()); - matrix.popPose(); - - //RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - - renderState.submit(copy, null, 0, OverlayTexture.NO_OVERLAY, 0); - - // renderState.render(copy, buffer, light, OverlayTexture.NO_OVERLAY); - - matrix.popPose(); - } else if (carry.isCarrying(CarryType.ENTITY)) { - Entity entity = CarryRenderHelper.getRenderEntity(player); - - if (entity != null) { - CarryRenderHelper.applyEntityTransformations(player, partialticks, matrix, entity); - - // manager.setRenderShadow(false); - - Optional res = carry.getActiveScript(); - res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script)); - - if (entity instanceof LivingEntity le) - le.hurtTime = 0; - - //RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - - // manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light); - matrix.popPose(); - // manager.setRenderShadow(true); - matrix.popPose(); - } - } - - - } - catch (Exception e) - { - } - - } - - } - } diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java b/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java index 5a4893b..c6f98c9 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java @@ -156,7 +156,7 @@ public class CarryRenderHelper public static void applyBlockTransformations(Player player, float partialticks, PoseStack matrix, Block block) { - int perspective = CarryRenderHelper.getPerspective(); + //int perspective = CarryRenderHelper.getPerspective(); applyGeneralTransformations(player, partialticks, matrix); diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java b/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java new file mode 100644 index 0000000..98e41a1 --- /dev/null +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java @@ -0,0 +1,22 @@ +package tschipp.carryon.client.render; + +import com.mojang.blaze3d.vertex.PoseStack; + +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; + +public class CarryingItemRenderLayer extends RenderLayer { + public CarryingItemRenderLayer(RenderLayerParent renderer) { + super(renderer); + } + @Override + public void submit(PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, + AvatarRenderState renderState, float yRot, float xRot) { + if (renderState instanceof ICarryOnRenderState carryOnRenderState){ + CarriedObjectRender.draw(carryOnRenderState.getPlayer(), poseStack, packedLight, 0, nodeCollector,false); + } + } +} diff --git a/Common/src/main/java/tschipp/carryon/client/render/ICarryOnRenderState.java b/Common/src/main/java/tschipp/carryon/client/render/ICarryOnRenderState.java index 8215fde..28377b1 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/ICarryOnRenderState.java +++ b/Common/src/main/java/tschipp/carryon/client/render/ICarryOnRenderState.java @@ -1,5 +1,6 @@ package tschipp.carryon.client.render; +import net.minecraft.world.entity.player.Player; import tschipp.carryon.common.carry.CarryOnData; public interface ICarryOnRenderState { @@ -12,4 +13,8 @@ public interface ICarryOnRenderState { void setRenderWidth(float val); + Player getPlayer(); + + void setPlayer(Player player); + } diff --git a/Common/src/main/java/tschipp/carryon/compat/ClothConfigCompat.java b/Common/src/main/java/tschipp/carryon/compat/ClothConfigCompat.java index 597c2af..3bfb0ba 100644 --- a/Common/src/main/java/tschipp/carryon/compat/ClothConfigCompat.java +++ b/Common/src/main/java/tschipp/carryon/compat/ClothConfigCompat.java @@ -4,13 +4,11 @@ import me.shedaniel.clothconfig2.api.ConfigBuilder; import me.shedaniel.clothconfig2.api.ConfigCategory; import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import me.shedaniel.clothconfig2.impl.builders.SubCategoryBuilder; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import tschipp.carryon.config.AnnotationData; import tschipp.carryon.config.BuiltCategory; import tschipp.carryon.config.BuiltConfig; -import tschipp.carryon.config.ConfigLoader; import javax.annotation.Nullable; import java.util.List; diff --git a/Common/src/main/java/tschipp/carryon/mixin/AvatarRendererMixin.java b/Common/src/main/java/tschipp/carryon/mixin/AvatarRendererMixin.java new file mode 100644 index 0000000..f87c942 --- /dev/null +++ b/Common/src/main/java/tschipp/carryon/mixin/AvatarRendererMixin.java @@ -0,0 +1,30 @@ +package tschipp.carryon.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.client.entity.ClientAvatarEntity; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.world.entity.Avatar; +import tschipp.carryon.client.render.CarryingItemRenderLayer; + +@Mixin(AvatarRenderer.class) +public abstract class AvatarRendererMixin extends LivingEntityRenderer { + + public AvatarRendererMixin(Context context, PlayerModel model, float shadowRadius) { + super(context, model, shadowRadius); + } + + @Inject(method = "(Lnet/minecraft/client/renderer/entity/EntityRendererProvider$Context;Z)V", at = @At("RETURN")) + public void init(EntityRendererProvider.Context context, boolean slim, CallbackInfo info) { + //Player + this.addLayer(new CarryingItemRenderLayer(this)); + } +} diff --git a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java index 9a314e0..fff8e74 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/EntityMixin.java @@ -95,7 +95,7 @@ public abstract class EntityMixin @Inject(method = "onPassengerTurned(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD")) private void onPassengerTurned(Entity toUpdate, CallbackInfo ci) { - if((Object)this instanceof Player thisPlayer && toUpdate instanceof Player otherPlayer) + if((Object)this instanceof Player thisPlayer && toUpdate instanceof Player) { CarryOnData carry = CarryOnDataManager.getCarryData(thisPlayer); if(carry.isCarrying(CarryType.PLAYER)) { diff --git a/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java b/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java index b990b44..8a08264 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java @@ -30,6 +30,8 @@ public class EntityRendererMixin { ICarryOnRenderState carryOnRenderState = (ICarryOnRenderState) state; carryOnRenderState.setCarryOnData(carry); carryOnRenderState.setRenderWidth(CarryRenderHelper.getRenderWidth(player)); + + carryOnRenderState.setPlayer(player); } } } diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java index 3c67966..ea2f242 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java @@ -20,8 +20,6 @@ package tschipp.carryon.mixin; - -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -30,13 +28,11 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.storage.ValueInput; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; -import tschipp.carryon.common.carry.PlacementHandler; import tschipp.carryon.common.carry.CarryOnData.CarryType; import java.util.Optional; diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java index b8cb7be..cfb18f0 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerRenderStateMixin.java @@ -1,6 +1,8 @@ package tschipp.carryon.mixin; import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import net.minecraft.world.entity.player.Player; + import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import tschipp.carryon.client.render.ICarryOnRenderState; @@ -15,6 +17,10 @@ public class PlayerRenderStateMixin implements ICarryOnRenderState { @Unique public float renderWidth = 0f; + + @Unique + public Player player = null; + @Unique @Override public CarryOnData getCarryOnData() { @@ -38,4 +44,14 @@ public class PlayerRenderStateMixin implements ICarryOnRenderState { public void setRenderWidth(float val) { renderWidth = val; } + + @Override + public Player getPlayer() { + return player; + } + + @Override + public void setPlayer(Player player) { + this.player = player; + } } diff --git a/Common/src/main/resources/carryon.mixins.json b/Common/src/main/resources/carryon.mixins.json index 820444e..04c7f9d 100644 --- a/Common/src/main/resources/carryon.mixins.json +++ b/Common/src/main/resources/carryon.mixins.json @@ -12,7 +12,8 @@ "HumanoidModelMixin", "MinecraftMixin", "PlayerRenderStateMixin", - "EntityRendererMixin" + "EntityRendererMixin", + "AvatarRendererMixin" ], "server": [ ], diff --git a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java index 8d6442a..4506c4f 100644 --- a/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java +++ b/Fabric/src/main/java/tschipp/carryon/CarryOnFabricMod.java @@ -37,14 +37,15 @@ public class CarryOnFabricMod implements ModInitializer { ResourceLocation.fromNamespaceAndPath(Constants.MOD_ID, "carry_on_data"), builder -> builder .initializer(() -> new CarryOnData(new CompoundTag())) + .persistent(CarryOnData.CODEC) .syncWith(CarryOnData.STREAM_CODEC, (t, p) ->{ ServerPlayer player = (ServerPlayer) t; // the isAlive check avoids us syncing attachment data about dead players. Which causes a disconnect // player.tickCount > 0 avoids us syncing attachment data about players the instant they spawn. // Which also causes a disconnect as the player entity may not be synced yet. - return p.connection != null && player.isAlive() && player.tickCount > 0; }) + ); diff --git a/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java b/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java index 0e015e5..62c4e91 100644 --- a/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java +++ b/Fabric/src/main/java/tschipp/carryon/mixin/ItemInHandRendererMixin.java @@ -38,7 +38,7 @@ public class ItemInHandRendererMixin @Inject(at = @At(value = "HEAD"), method = "renderArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", cancellable = true) private void renderArmWithItem(AbstractClientPlayer player, float partialTick, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equippedProgress, PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, CallbackInfo ci) { - if(CarriedObjectRender.drawFirstPerson(player, poseStack, packedLight, partialTick,nodeCollector)) + if(CarriedObjectRender.draw(player, poseStack, packedLight, partialTick,nodeCollector,true)) ci.cancel(); } diff --git a/Forge/src/main/java/tschipp/carryon/carry/ICarryOnDataCapability.java b/Forge/src/main/java/tschipp/carryon/carry/ICarryOnDataCapability.java index 49ab1f8..17c9e11 100644 --- a/Forge/src/main/java/tschipp/carryon/carry/ICarryOnDataCapability.java +++ b/Forge/src/main/java/tschipp/carryon/carry/ICarryOnDataCapability.java @@ -2,7 +2,6 @@ package tschipp.carryon.carry; import net.minecraftforge.common.capabilities.AutoRegisterCapability; import tschipp.carryon.common.carry.CarryOnData; -import tschipp.carryon.common.carry.CarryOnDataManager; @AutoRegisterCapability public interface ICarryOnDataCapability { diff --git a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java index 92434f5..fb6076d 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -50,18 +50,9 @@ public class ClientEvents { float partialTicks = event.getPartialTick(); SubmitNodeCollector nodes =event.getNodeCollector(); //If true, cancels event - return CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0; + return CarriedObjectRender.draw(player, matrix, light, partialTicks,nodes,true) && CarryRenderHelper.getPerspective() == 0; } - /* - @SubscribeEvent - public static void onRenderLevel(Render event) - { - if(event.getStage() == Stage.AFTER_PARTICLES) - CarriedObjectRender.drawThirdPerson(Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(true), event.getPoseStack()); - } - */ - @SubscribeEvent public static boolean onGuiInit(ScreenEvent.Init.Pre event) { diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java index cdec802..c02f711 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -49,18 +49,12 @@ public class ClientEvents { PoseStack matrix = event.getPoseStack(); int light = event.getPackedLight(); float partialTicks = event.getPartialTick(); -SubmitNodeCollector nodes =event.getSubmitNodeCollector(); + SubmitNodeCollector nodes =event.getSubmitNodeCollector(); - if(CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0) + if(CarriedObjectRender.draw(player, matrix, light, partialTicks,nodes,true) && CarryRenderHelper.getPerspective() == 0) event.setCanceled(true); } - @SubscribeEvent - public static void onRenderLevel(RenderLevelStageEvent.AfterEntities event) - { - CarriedObjectRender.drawThirdPerson(event.getLevelRenderer().getTicks(), event.getPoseStack().last().pose()); - } - @SubscribeEvent public static void onGuiInit(ScreenEvent.Init.Pre event) { From 69eb8062283fe5e876c46022303b41e2c504c103 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Sat, 25 Oct 2025 09:05:48 +0200 Subject: [PATCH 18/19] code cleanup --- .../carryon/compat/ArchitecturyCompat.java | 1 + .../config/fabric/ConfigLoaderImpl.java | 3 +- .../tschipp/carryon/events/CommonEvents.java | 1 - .../platform/FabricPlatformHelper.java | 2 + .../compat/ClothConfigCompatForge.java | 17 ------- .../config/forge/ConfigLoaderImpl.java | 9 +--- .../tschipp/carryon/events/CommonEvents.java | 2 +- .../tschipp/carryon/events/ModBusEvents.java | 2 - .../carryon/events/ModClientEvents.java | 4 +- .../carryon/mixin/ParticleEngineMixin.java | 47 ------------------- .../ClientboundSyncCarryDataPacket.java | 1 - .../carryon/platform/ForgePlatformHelper.java | 2 + .../main/resources/carryon.forge.mixins.json | 1 - .../config/neoforge/ConfigLoaderImpl.java | 1 + .../tschipp/carryon/events/ClientEvents.java | 1 - .../platform/NeoForgePlatformHelper.java | 2 + 16 files changed, 12 insertions(+), 84 deletions(-) delete mode 100644 Forge/src/main/java/tschipp/carryon/compat/ClothConfigCompatForge.java delete mode 100644 Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java diff --git a/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java b/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java index 9a2245a..3963d6f 100644 --- a/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java +++ b/Fabric/src/main/java/tschipp/carryon/compat/ArchitecturyCompat.java @@ -38,6 +38,7 @@ public class ArchitecturyCompat { private static Method PLACE_BLOCK; private static Method IS_FALSE; + @SuppressWarnings("unchecked") private static void setup( ) { try { Class BlockEvent = Class.forName("dev.architectury.event.events.common.BlockEvent"); diff --git a/Fabric/src/main/java/tschipp/carryon/config/fabric/ConfigLoaderImpl.java b/Fabric/src/main/java/tschipp/carryon/config/fabric/ConfigLoaderImpl.java index fd385ea..b48a683 100644 --- a/Fabric/src/main/java/tschipp/carryon/config/fabric/ConfigLoaderImpl.java +++ b/Fabric/src/main/java/tschipp/carryon/config/fabric/ConfigLoaderImpl.java @@ -23,8 +23,6 @@ package tschipp.carryon.config.fabric; import com.google.gson.*; import net.fabricmc.loader.api.FabricLoader; import org.apache.commons.io.FileUtils; -import tschipp.carryon.Constants; -import tschipp.carryon.common.config.CarryConfig; import tschipp.carryon.common.config.ListHandler; import tschipp.carryon.config.*; @@ -149,6 +147,7 @@ public class ConfigLoaderImpl { builder.add(category.category, categoryJson); } + @SuppressWarnings("unchecked") private static void buildProperty(JsonObject builder, PropertyData data) throws IllegalAccessException { AnnotationData annotationData = data.getData(); builder.addProperty("//"+data.getId(), annotationData.description()); diff --git a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java index 6b9a67b..fa828c8 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -22,7 +22,6 @@ package tschipp.carryon.events; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; -import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; diff --git a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java index 740c144..3412f62 100644 --- a/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java +++ b/Fabric/src/main/java/tschipp/carryon/platform/FabricPlatformHelper.java @@ -64,6 +64,7 @@ public class FabricPlatformHelper implements IPlatformHelper { ConfigLoaderImpl.registerConfig(cfg); } + @SuppressWarnings("unchecked") @Override public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { @@ -76,6 +77,7 @@ public class FabricPlatformHelper implements IPlatformHelper { }); } + @SuppressWarnings("unchecked") @Override public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { diff --git a/Forge/src/main/java/tschipp/carryon/compat/ClothConfigCompatForge.java b/Forge/src/main/java/tschipp/carryon/compat/ClothConfigCompatForge.java deleted file mode 100644 index 516b364..0000000 --- a/Forge/src/main/java/tschipp/carryon/compat/ClothConfigCompatForge.java +++ /dev/null @@ -1,17 +0,0 @@ -package tschipp.carryon.compat; - -import net.minecraft.client.gui.screens.Screen; -import tschipp.carryon.config.BuiltConfig; -import tschipp.carryon.config.forge.ConfigLoaderImpl; - -public class ClothConfigCompatForge { - -// public static Screen createScreen(BuiltConfig client, BuiltConfig common, Screen screen) { -// -// return ClothConfigCompat.getConfigScreen(client, common, screen, () -> { -// ConfigLoaderImpl.saveConfig(client); ConfigLoaderImpl.saveConfig(common);}); -// } -} - - - diff --git a/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java b/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java index 39bda58..ea4c147 100644 --- a/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java +++ b/Forge/src/main/java/tschipp/carryon/config/forge/ConfigLoaderImpl.java @@ -22,21 +22,13 @@ package tschipp.carryon.config.forge; import com.electronwill.nightconfig.core.AbstractConfig; import com.electronwill.nightconfig.core.UnmodifiableConfig; -import net.minecraft.client.Minecraft; -import net.minecraft.server.MinecraftServer; -import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.common.util.LogicalSidedProvider; import net.minecraftforge.eventbus.api.listener.SubscribeEvent; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.IConfigSpec; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.config.ModConfigEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.fml.loading.FMLServiceProvider; -import net.minecraftforge.server.ServerLifecycleHooks; import tschipp.carryon.Constants; import tschipp.carryon.config.*; @@ -119,6 +111,7 @@ public class ConfigLoaderImpl { builder.pop(); } + @SuppressWarnings("unchecked") private static void buildProperty(ForgeConfigSpec.Builder builder, PropertyData data) throws IllegalAccessException { AnnotationData annotationData = data.getData(); builder.comment(annotationData.description()); diff --git a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java index 063aa45..c7945ea 100644 --- a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -223,7 +223,7 @@ public class CommonEvents @SubscribeEvent public static void onAttachCapabilities(AttachCapabilitiesEvent.Entities event) { - if (event.getObject() instanceof Player player) { + if (event.getObject() instanceof Player) { event.addCapability(ResourceLocation.fromNamespaceAndPath(Constants.MOD_ID, "carry_on_data"), new CarryOnDataCapabilityProvider()); } } diff --git a/Forge/src/main/java/tschipp/carryon/events/ModBusEvents.java b/Forge/src/main/java/tschipp/carryon/events/ModBusEvents.java index aa8d7f8..3bac03b 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ModBusEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ModBusEvents.java @@ -24,10 +24,8 @@ import net.minecraftforge.eventbus.api.listener.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.InterModComms.IMCMessage; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import tschipp.carryon.Constants; -import tschipp.carryon.client.modeloverride.ModelOverrideHandler; import tschipp.carryon.common.config.ListHandler; import java.util.stream.Stream; diff --git a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java index 0fa5770..91396b7 100644 --- a/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/ModClientEvents.java @@ -43,9 +43,7 @@ public class ModClientEvents public static void clientSetup(FMLClientSetupEvent event) { if(Services.PLATFORM.isModLoaded("cloth_config")) { - - BuiltConfig[] configs = ConfigLoaderImpl.CONFIGS.values().toArray(new BuiltConfig[0]); - //ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, prevScreen) -> ClothConfigCompatForge.createScreen(configs[1], configs[0], prevScreen))); + ConfigLoaderImpl.CONFIGS.values().toArray(new BuiltConfig[0]); } } } diff --git a/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java b/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java deleted file mode 100644 index 8eb29fd..0000000 --- a/Forge/src/main/java/tschipp/carryon/mixin/ParticleEngineMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * GNU Lesser General Public License v3 - * Copyright (C) 2024 Tschipp - * mrtschipp@gmail.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -package tschipp.carryon.mixin; - -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Camera; -import net.minecraft.client.particle.ParticleEngine; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.culling.Frustum; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import tschipp.carryon.client.render.CarriedObjectRender; - -@Mixin(ParticleEngine.class) -public class ParticleEngineMixin -{ - //I am injecting into a lambda, lord help me - - // @Inject(method = "render(Lnet/minecraft/client/Camera;FLnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/culling/Frustum;)V", - // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V", - // shift = At.Shift.AFTER)) - // private void onRenderLevel(Camera p_107340_, float partialTick, Frustum frustum, CallbackInfo ci) - // { - // CarriedObjectRender.drawThirdPerson(partialTick, new PoseStack().last().pose()); - // } -} diff --git a/Forge/src/main/java/tschipp/carryon/networking/ClientboundSyncCarryDataPacket.java b/Forge/src/main/java/tschipp/carryon/networking/ClientboundSyncCarryDataPacket.java index 25e37c4..e78deb7 100644 --- a/Forge/src/main/java/tschipp/carryon/networking/ClientboundSyncCarryDataPacket.java +++ b/Forge/src/main/java/tschipp/carryon/networking/ClientboundSyncCarryDataPacket.java @@ -9,7 +9,6 @@ import net.minecraft.world.entity.player.Player; import tschipp.carryon.Constants; import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnDataManager; -import tschipp.carryon.networking.clientbound.ClientboundStartRidingPacket; public record ClientboundSyncCarryDataPacket(int iden, CarryOnData data) implements PacketBase { diff --git a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java index cc4d147..eed5a2d 100644 --- a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java +++ b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java @@ -70,6 +70,7 @@ public class ForgePlatformHelper implements IPlatformHelper { ConfigLoaderImpl.registerConfig(cfg); } + @SuppressWarnings("unchecked") @Override public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { @@ -86,6 +87,7 @@ public class ForgePlatformHelper implements IPlatformHelper { CarryOnForge.network.messageBuilder(clazz).codec((StreamCodec) codec).consumerMainThread(serverHandler).add(); } + @SuppressWarnings("unchecked") @Override public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { diff --git a/Forge/src/main/resources/carryon.forge.mixins.json b/Forge/src/main/resources/carryon.forge.mixins.json index 0df58a2..8536f54 100644 --- a/Forge/src/main/resources/carryon.forge.mixins.json +++ b/Forge/src/main/resources/carryon.forge.mixins.json @@ -6,7 +6,6 @@ "mixins": [ ], "client": [ - "ParticleEngineMixin" ], "server": [ ], diff --git a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java index a6869fe..a9c2448 100644 --- a/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java +++ b/NeoForge/src/main/java/tschipp/carryon/config/neoforge/ConfigLoaderImpl.java @@ -111,6 +111,7 @@ public class ConfigLoaderImpl { builder.pop(); } + @SuppressWarnings("unchecked") private static void buildProperty(ModConfigSpec.Builder builder, PropertyData data) throws IllegalAccessException { AnnotationData annotationData = data.getData(); builder.comment(annotationData.description()); diff --git a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java index c02f711..12e8b7b 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/ClientEvents.java @@ -30,7 +30,6 @@ import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.RenderHandEvent; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent; import net.neoforged.neoforge.client.event.ScreenEvent; import tschipp.carryon.CarryOnCommonClient; import tschipp.carryon.Constants; diff --git a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java index 15f651e..d2fd1d0 100644 --- a/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java +++ b/NeoForge/src/main/java/tschipp/carryon/platform/NeoForgePlatformHelper.java @@ -69,6 +69,7 @@ public class NeoForgePlatformHelper implements IPlatformHelper { ConfigLoaderImpl.registerConfig(cfg); } + @SuppressWarnings("unchecked") @Override public void registerServerboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { PayloadRegistrar registrar = (PayloadRegistrar) args[0]; @@ -82,6 +83,7 @@ public class NeoForgePlatformHelper implements IPlatformHelper { registrar.playToServer(type, (StreamCodec)codec, serverHandler); } + @SuppressWarnings("unchecked") @Override public void registerClientboundPacket(CustomPacketPayload.Type type, Class clazz, StreamCodec codec, BiConsumer handler, Object... args) { From e1e122ae9bb2a0942138a5f8a34b926efc457040 Mon Sep 17 00:00:00 2001 From: Hanro50 Date: Sat, 25 Oct 2025 09:53:14 +0200 Subject: [PATCH 19/19] Fixed crash with mannequin --- .../java/tschipp/carryon/client/render/CarriedObjectRender.java | 2 +- .../tschipp/carryon/client/render/CarryingItemRenderLayer.java | 2 +- .../main/java/tschipp/carryon/mixin/EntityRendererMixin.java | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java index 3ce70e7..c272d11 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java @@ -51,7 +51,7 @@ public class CarriedObjectRender { public static boolean draw(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector, boolean firstPerson) { - if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod")) + if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod") || player == null) return false; CarryOnData carry = CarryOnDataManager.getCarryData(player); diff --git a/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java b/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java index 98e41a1..876ce7f 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryingItemRenderLayer.java @@ -16,7 +16,7 @@ public class CarryingItemRenderLayer extends RenderLayer< public void submit(PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, AvatarRenderState renderState, float yRot, float xRot) { if (renderState instanceof ICarryOnRenderState carryOnRenderState){ - CarriedObjectRender.draw(carryOnRenderState.getPlayer(), poseStack, packedLight, 0, nodeCollector,false); + CarriedObjectRender.draw(carryOnRenderState.getPlayer(), poseStack, packedLight, 0, nodeCollector,false); } } } diff --git a/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java b/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java index 8a08264..7059083 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/EntityRendererMixin.java @@ -23,7 +23,6 @@ public class EntityRendererMixin { shift = At.Shift.AFTER ), method = "createRenderState(Lnet/minecraft/world/entity/Entity;F)Lnet/minecraft/client/renderer/entity/state/EntityRenderState;") private void onCreateRenderState(Entity entity, float $$1, CallbackInfoReturnable cir, @Local(ordinal = 0) EntityRenderState state) { - if (entity instanceof Player player) { CarryOnData carry = CarryOnDataManager.getCarryData(player);