From d1227d3d872cf7e0d3f9715fc52472da6f7e7636 Mon Sep 17 00:00:00 2001 From: Tschipp <11649893+Tschipp@users.noreply.github.com> Date: Tue, 8 Jul 2025 10:51:36 +0200 Subject: [PATCH] Updated to 1.21.5 --- .../java/tschipp/carryon/CarryOnCommon.java | 4 +- .../tschipp/carryon/CarryOnCommonClient.java | 2 +- .../client/render/CarriedObjectRender.java | 73 ++++++----- .../client/render/CarryOnRenderType.java | 113 ++++++++++++++++++ .../client/render/CarryRenderHelper.java | 9 -- .../carryon/common/carry/CarryOnData.java | 20 ++-- .../carryon/common/carry/PickupHandler.java | 2 +- .../common/carry/PlacementHandler.java | 2 +- .../tschipp/carryon/mixin/InventoryMixin.java | 2 +- .../tschipp/carryon/mixin/MinecraftMixin.java | 2 +- .../tschipp/carryon/mixin/PlayerMixin.java | 4 +- Fabric/build.gradle | 2 +- Forge/build.gradle | 2 +- .../tschipp/carryon/events/CommonEvents.java | 2 +- gradle.properties | 24 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 16 files changed, 183 insertions(+), 82 deletions(-) create mode 100644 Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java diff --git a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java index 5ae81f7..d38db0b 100644 --- a/Common/src/main/java/tschipp/carryon/CarryOnCommon.java +++ b/Common/src/main/java/tschipp/carryon/CarryOnCommon.java @@ -112,10 +112,10 @@ public class CarryOnCommon if (!Constants.COMMON_CONFIG.settings.slownessInCreative && player.isCreative()) return; - player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 1, potionLevel(carry, player.level()), false, false)); + player.addEffect(new MobEffectInstance(MobEffects.SLOWNESS, 1, potionLevel(carry, player.level()), false, false)); Inventory inv = player.getInventory(); - inv.selected = carry.getSelected(); + inv.setSelectedSlot(carry.getSelected()); } } diff --git a/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java b/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java index 3ada76e..2cd4463 100644 --- a/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java +++ b/Common/src/main/java/tschipp/carryon/CarryOnCommonClient.java @@ -59,7 +59,7 @@ public class CarryOnCommonClient CarryOnData carry = CarryOnDataManager.getCarryData(player); if(carry.isCarrying()) { - player.getInventory().selected = carry.getSelected(); + player.getInventory().setSelectedSlot(carry.getSelected()); } } } 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 77e6051..037f789 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarriedObjectRender.java @@ -20,21 +20,23 @@ 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.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.ByteBufferBuilder; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; +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.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.LivingEntity; @@ -45,6 +47,7 @@ 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; @@ -54,22 +57,20 @@ import tschipp.carryon.common.scripting.CarryOnScript; import tschipp.carryon.common.scripting.CarryOnScript.ScriptRender; import tschipp.carryon.platform.Services; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; -import java.util.SequencedMap; +import java.util.*; public class CarriedObjectRender { - private static 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()) + private static final SequencedMap builders = new LinkedHashMap<>(Map.of( + RenderType.glint(), new ByteBufferBuilder(CarryOnRenderType.remap(RenderType.glint()).bufferSize()), + RenderType.armorEntityGlint(), new ByteBufferBuilder(CarryOnRenderType.remap(RenderType.armorEntityGlint()).bufferSize()), + RenderType.glintTranslucent(), new ByteBufferBuilder(CarryOnRenderType.remap(RenderType.glintTranslucent()).bufferSize()), + RenderType.entityGlint(), new ByteBufferBuilder(CarryOnRenderType.remap(RenderType.entityGlint()).bufferSize()) //RenderType.entityGlintDirect(), new ByteBufferBuilder(RenderType.entityGlintDirect().bufferSize()) )); + public static boolean drawFirstPerson(Player player, MultiBufferSource buffer, PoseStack matrix, int light, float partialTicks) { if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod")) @@ -105,11 +106,13 @@ public class CarriedObjectRender matrix.pushPose(); matrix.scale(2.5f, 2.5f, 2.5f); matrix.translate(0, -0.5, -1); - RenderSystem.enableBlend(); - RenderSystem.disableCull(); + //RenderSystem.enableBlend(); + //RenderSystem.disableCull(); CarryOnData carry = CarryOnDataManager.getCarryData(player); ItemStackRenderState renderState = new ItemStackRenderState(); + var layer = renderState.newLayer(); + layer.setRenderType(CarryOnRenderType.remap(RenderType.glint())); if (Constants.CLIENT_CONFIG.facePlayer != CarryRenderHelper.isChest(state.getBlock())) { matrix.mulPose(Axis.YP.rotationDegrees(180)); @@ -121,16 +124,16 @@ public class CarriedObjectRender if(carry.getActiveScript().isPresent()) CarryRenderHelper.performScriptTransformation(matrix, carry.getActiveScript().get()); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); + //RenderSystem.setShaderTexture(0, GpuTexture); ItemStack renderStack = CarryRenderHelper.getRenderItemStack(player); - Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, false, player.level(), null, 0); + Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, player.level(), null, 0); renderState.render(matrix, buffer, light, OverlayTexture.NO_OVERLAY); - RenderSystem.enableCull(); - RenderSystem.disableBlend(); + //RenderSystem.enableCull(); + //RenderSystem.disableBlend(); matrix.popPose(); } @@ -197,12 +200,14 @@ public class CarriedObjectRender PoseStack matrix = new PoseStack(); matrix.mulPose(mat); - RenderSystem.enableBlend(); - RenderSystem.disableCull(); - RenderSystem.disableDepthTest(); + //RenderSystem.enableBlend(); + //RenderSystem.disableCull(); + //RenderSystem.disableDepthTest(); BufferSource buffer = MultiBufferSource.immediateWithBuffers(builders, builders.get(RenderType.glint())); ItemStackRenderState renderState = new ItemStackRenderState(); + var layer = renderState.newLayer(); + layer.setRenderType(RenderType.glint()); for (Player player : level.players()) { @@ -222,16 +227,13 @@ public class CarriedObjectRender ItemStack renderItemStack = CarryRenderHelper.getRenderItemStack(player); - mc.getItemModelResolver().updateForTopItem(renderState, renderItemStack, ItemDisplayContext.NONE, false, level, null, 0); + mc.getItemModelResolver().updateForTopItem(renderState, renderItemStack, ItemDisplayContext.NONE, level, null, 0); Optional res = carry.getActiveScript(); - if (res.isPresent()) { - CarryOnScript script = res.get(); - CarryRenderHelper.performScriptTransformation(matrix, script); - } + res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script)); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); - RenderSystem.enableCull(); + //RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); + //RenderSystem.enableCull(); PoseStack.Pose p = matrix.last(); PoseStack copy = new PoseStack(); @@ -252,10 +254,7 @@ public class CarriedObjectRender manager.setRenderShadow(false); Optional res = carry.getActiveScript(); - if (res.isPresent()) { - CarryOnScript script = res.get(); - CarryRenderHelper.performScriptTransformation(matrix, script); - } + res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script)); if (entity instanceof LivingEntity le) le.hurtTime = 0; @@ -283,9 +282,9 @@ public class CarriedObjectRender buffer.endBatch(RenderType.entityCutoutNoCull(TextureAtlas.LOCATION_BLOCKS)); buffer.endBatch(RenderType.entitySmoothCutout(TextureAtlas.LOCATION_BLOCKS)); - RenderSystem.enableDepthTest(); - RenderSystem.enableCull(); - RenderSystem.disableBlend(); + //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 new file mode 100644 index 0000000..dabd416 --- /dev/null +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryOnRenderType.java @@ -0,0 +1,113 @@ +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 net.minecraft.client.renderer.ShaderDefines; +import org.jetbrains.annotations.NotNull; + +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.Optional; + +//Credit: klikli +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(); + } +} 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 8ed979a..1e0c144 100644 --- a/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java +++ b/Common/src/main/java/tschipp/carryon/client/render/CarryRenderHelper.java @@ -23,25 +23,16 @@ package tschipp.carryon.client.render; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.renderer.item.ItemStackRenderState; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; 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 a4e357d..7c07eec 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/CarryOnData.java @@ -54,14 +54,13 @@ public class CarryOnData { public CarryOnData(CompoundTag data) { if(data.contains("type")) - this.type = CarryType.valueOf(data.getString("type")); + this.type = CarryType.valueOf(data.getStringOr("type", "INVALID")); else this.type = CarryType.INVALID; this.nbt = data; - if(data.contains("keyPressed")) - this.keyPressed = data.getBoolean("keyPressed"); + this.keyPressed = data.getBooleanOr("keyPressed", false); if(data.contains("activeScript")) { @@ -69,8 +68,7 @@ public class CarryOnData { this.activeScript = res.getOrThrow((s) -> {throw new RuntimeException("Failed to decode activeScript during CarryOnData serialization: " + s);}); } - if(data.contains("selected")) - this.selectedSlot = data.getInt("selected"); + this.selectedSlot = data.getIntOr("selected", 0); } @@ -91,9 +89,9 @@ public class CarryOnData { public CompoundTag getContentNbt() { if(type == CarryType.BLOCK && nbt.contains("block")) - return nbt.getCompound("block"); + return nbt.getCompoundOrEmpty("block"); else if(type == CarryType.ENTITY && nbt.contains("entity")) - return nbt.getCompound("entity"); + return nbt.getCompoundOrEmpty("entity"); return null; } @@ -119,7 +117,7 @@ public class CarryOnData { if(this.type != CarryType.BLOCK) throw new IllegalStateException("Called getBlock on data that contained " + this.type); - return NbtUtils.readBlockState(BuiltInRegistries.BLOCK, nbt.getCompound("block")); + return NbtUtils.readBlockState(BuiltInRegistries.BLOCK, nbt.getCompoundOrEmpty("block")); } @Nullable @@ -131,7 +129,7 @@ public class CarryOnData { if(!nbt.contains("tile")) return null; - return BlockEntity.loadStatic(pos, this.getBlock(), nbt.getCompound("tile"), lookup); + return BlockEntity.loadStatic(pos, this.getBlock(), nbt.getCompoundOrEmpty("tile"), lookup); } public void setEntity(Entity entity) @@ -147,7 +145,7 @@ public class CarryOnData { if(this.type != CarryType.ENTITY) throw new IllegalStateException("Called getEntity on data that contained " + this.type); - var optionalEntity = EntityType.create(nbt.getCompound("entity"), level, EntitySpawnReason.BUCKET); + var optionalEntity = EntityType.create(nbt.getCompoundOrEmpty("entity"), level, EntitySpawnReason.BUCKET); if(optionalEntity.isPresent()) return optionalEntity.get(); @@ -212,7 +210,7 @@ public class CarryOnData { { if(!this.nbt.contains("tick")) return -1; - return this.nbt.getInt("tick"); + return this.nbt.getIntOr("tick", -1); } public enum CarryType { 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 3192c44..fac27ec 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PickupHandler.java @@ -162,7 +162,7 @@ public class PickupHandler { if (entity instanceof TamableAnimal tame) { - UUID owner = tame.getOwnerUUID(); + UUID owner = tame.getOwnerReference().getUUID(); UUID playerID = player.getGameProfile().getId(); if (owner != null && !owner.equals(playerID)) return false; 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 d40b740..a66a6e2 100644 --- a/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java +++ b/Common/src/main/java/tschipp/carryon/common/carry/PlacementHandler.java @@ -283,7 +283,7 @@ public class PlacementHandler if (((ServerLevel) oldPlayer.level()).getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) || !died) { if (!carry.isCarrying(CarryType.PLAYER)) { CarryOnDataManager.setCarryData(newPlayer, carry); - newPlayer.getInventory().selected = oldPlayer.getInventory().selected; + newPlayer.getInventory().setSelectedSlot(oldPlayer.getInventory().getSelectedSlot()); return; } } diff --git a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java index 0380fc0..363cc5b 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/InventoryMixin.java @@ -76,7 +76,7 @@ public class InventoryMixin info.cancel(); } - @Inject(method = "setSelectedHotbarSlot(I)V", at = @At("HEAD"), cancellable = true) + @Inject(method = "setSelectedSlot(I)V", at = @At("HEAD"), cancellable = true) private void onSwapPaint(int $$0, CallbackInfo info) { if(CarryOnDataManager.getCarryData(player).isCarrying()) diff --git a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java index 36cf776..bbe8a51 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/MinecraftMixin.java @@ -31,7 +31,7 @@ import tschipp.carryon.common.carry.CarryOnDataManager; @Mixin(Minecraft.class) public class MinecraftMixin { - @WrapWithCondition(method = "handleKeybinds()V", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/player/Inventory;selected:I", ordinal = 0, opcode = 181)) //Opcode for PUTFIELD + @WrapWithCondition(method = "handleKeybinds()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Inventory;setSelectedSlot(I)V", ordinal = 0)) private boolean allowSlotSelection(Inventory inv,int slot) { return !CarryOnDataManager.getCarryData(inv.player).isCarrying(); diff --git a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java index 4a7458a..5a9f7ae 100644 --- a/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java +++ b/Common/src/main/java/tschipp/carryon/mixin/PlayerMixin.java @@ -48,7 +48,7 @@ public abstract class PlayerMixin extends LivingEntity implements CarryOnDataMan @Override public void setCarryOnData(CarryOnData data) { - data.setSelected(this.getInventory().selected); + data.setSelected(this.getInventory().getSelectedSlot()); CompoundTag nbt = data.getNbt(); nbt.putInt("tick", tickCount); this.getEntityData().set(CARRY_DATA_KEY, nbt); @@ -87,7 +87,7 @@ public abstract class PlayerMixin extends LivingEntity implements CarryOnDataMan private void onReadAdditionalSaveData(CompoundTag tag, CallbackInfo info) { if (tag.contains("CarryOnData")) { - CarryOnData data = new CarryOnData(tag.getCompound("CarryOnData")); + CarryOnData data = new CarryOnData(tag.getCompoundOrEmpty("CarryOnData")); setCarryOnData(data); } } diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 6360d91..121076c 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java' id 'maven-publish' id 'idea' - id 'fabric-loom' version '1.8-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' } base { archivesName = "${mod_id}-fabric-${minecraft_version}" diff --git a/Forge/build.gradle b/Forge/build.gradle index e6e71f7..d1a1aa3 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -36,7 +36,7 @@ jarJar.enable() build.dependsOn tasks.jarJar minecraft { - mappings channel: 'official', version: "1.21.4" + mappings channel: 'parchment', version: "${parchment_mappings}" copyIdeResources = true reobf = false diff --git a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java index a07d33b..3e59c7e 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -23,6 +23,7 @@ package tschipp.carryon.events; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.TriState; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntitySpawnReason; @@ -37,7 +38,6 @@ 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.common.util.TriState; import net.neoforged.neoforge.event.*; import net.neoforged.neoforge.event.entity.living.MobSpawnEvent; import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; diff --git a/gradle.properties b/gradle.properties index 9eb7bd4..fa20bbd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,33 +1,33 @@ # Project -version=2.3.0 +version=2.4.0 group=tschipp.carryon # Common -minecraft_version=1.21.4 +minecraft_version=1.21.5 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.4, 1.22) +minecraft_version_range=[1.21.5, 1.22) # Forge -forge_version=54.1.3 -forge_loader_version_range=[54,) -forge_version_range=[54,) -parchment_mappings=2025.03.23-1.21.4 +forge_version=55.0.6 +forge_loader_version_range=[55,) +forge_version_range=[55,) +parchment_mappings=2025.04.19-1.21.5 //forge_ats_enabled=true # Fabric -fabric_version=0.119.2+1.21.4 +fabric_version=0.121.0+1.21.5 fabric_loader_version=0.16.13 -parchment_mappings_fabric=1.21.4:2025.03.23 +parchment_mappings_fabric=1.21.5:2025.04.19 # Neoforge -neoforge_version=21.4.132 +neoforge_version=21.5.78 neoforge_loader_version_range=[4,) -neogradle.subsystems.parchment.minecraftVersion=1.21.4 -neogradle.subsystems.parchment.mappingsVersion=2025.03.23 +neogradle.subsystems.parchment.minecraftVersion=1.21.5 +neogradle.subsystems.parchment.mappingsVersion=2025.04.19 # Gradle diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e5b2968..0b2d9ab 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists