Skip to content

Commit

Permalink
Merge branch 'ViaVersion:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
lowercasebtw authored Dec 7, 2024
2 parents 7bae13b + 0497870 commit 4ae8e90
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,6 @@
import java.util.concurrent.CompletableFuture;

/*
* TODO | Port 1.21.4
* - PlayerEntity#tick -> hasVehicle check at the top
* - Entity#move
* - LivingEntity#baseTick
* - NameTagItem use
* - MooshroomEntity interaction changes relevant?
*
* TODO | Port 1.21.3
* - VehicleMovePacket handling now has distance check in ClientPlayNetworkHandler
* - Illusioner/Sniffer don't override visibility bounding box anymore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ public static void doItemPick(final MinecraftClient client) {
addBlockEntityNbt(itemStack, blockEntity, client.world.getRegistryManager());
}
}
} else if (crosshairTarget.getType() == HitResult.Type.ENTITY && creativeMode) {
} else {
if (crosshairTarget.getType() != HitResult.Type.ENTITY || !creativeMode) {
return;
}
final Entity entity = ((EntityHitResult) crosshairTarget).getEntity();
itemStack = entity.getPickBlockStack();
if (itemStack == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public abstract class MixinMinecraftClient {
public Keyboard keyboard;

@Inject(method = "doItemPick", at = @At("HEAD"), cancellable = true)
public void pickItemClientside(CallbackInfo ci) {
private void pickItemClientside(CallbackInfo ci) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
ItemPick1_21_3.doItemPick((MinecraftClient) (Object) this);
ci.cancel();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2024 FlorianMichael/EnZaXD <[email protected]> and RK_01/RaphiMC
* Copyright (C) 2023-2024 contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity;

import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.CowEntity;
import net.minecraft.entity.passive.MooshroomEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.world.World;
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.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(MooshroomEntity.class)
public abstract class MixinMooshroomEntity extends AnimalEntity {

protected MixinMooshroomEntity(EntityType<? extends AnimalEntity> entityType, World world) {
super(entityType, world);
}

@Inject(method = "interactMob", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/MooshroomEntity;getStewEffectFrom(Lnet/minecraft/item/ItemStack;)Ljava/util/Optional;"), cancellable = true)
private void checkForItemTags(PlayerEntity player, Hand hand, CallbackInfoReturnable<ActionResult> cir) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
final ItemStack itemStack = player.getStackInHand(hand);
if (!itemStack.isIn(ItemTags.SMALL_FLOWERS)) {
cir.setReturnValue(super.interactMob(player, hand));
}
}
}

@Redirect(method = "interactMob", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/CowEntity;interactMob(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;", ordinal = 0))
private ActionResult directPass(CowEntity instance, PlayerEntity player, Hand hand) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
return ActionResult.PASS;
} else {
return instance.interactMob(player, hand);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@ protected MixinPlayerEntity(EntityType<? extends LivingEntity> entityType, World
}

@Inject(method = "isClimbing", at = @At("HEAD"), cancellable = true)
public void allowClimbingWhileFlying(CallbackInfoReturnable<Boolean> cir) {
private void allowClimbingWhileFlying(CallbackInfoReturnable<Boolean> cir) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
cir.setReturnValue(super.isClimbing());
}
}

@Inject(method = "isLoaded", at = @At("HEAD"), cancellable = true)
public void alwaysLoadPlayer(CallbackInfoReturnable<Boolean> cir) {
private void alwaysLoadPlayer(CallbackInfoReturnable<Boolean> cir) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
cir.setReturnValue(true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public abstract class MixinBundleItem {

@Redirect(method = "use", at = @At(value = "FIELD", target = "Lnet/minecraft/util/ActionResult;SUCCESS:Lnet/minecraft/util/ActionResult$Success;"))
public ActionResult.Success dontSwing() {
private ActionResult.Success dontSwing() {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
return ActionResult.CONSUME;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public abstract class MixinItemRenderer {

@Redirect(method = "update(Lnet/minecraft/client/render/item/ItemRenderState;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)V",
at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;get(Lnet/minecraft/component/ComponentType;)Ljava/lang/Object;"))
public Object removeModel(ItemStack instance, ComponentType componentType) {
private Object removeModel(ItemStack instance, ComponentType componentType) {
if (VisualSettings.global().replacePetrifiedOakSlab.isEnabled() && instance.isOf(Items.PETRIFIED_OAK_SLAB)) {
return viaFabricPlus$missingIdentifier;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ private boolean changePacketOrder(ClientConnection instance, Packet<?> packet) {
}

@Inject(method = "onPlayerPositionLook", at = @At("RETURN"))
public void changePacketOrder(PlayerPositionLookS2CPacket packet, CallbackInfo ci) {
private void changePacketOrder(PlayerPositionLookS2CPacket packet, CallbackInfo ci) {
if (viaFabricPlus$teleportConfirmPacket != null) {
this.connection.send(viaFabricPlus$teleportConfirmPacket);
viaFabricPlus$teleportConfirmPacket = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public abstract class MixinClientPlayerInteractionManager implements IClientPlay
private final ClientPlayerInteractionManager1_18_2 viaFabricPlus$1_18_2InteractionManager = new ClientPlayerInteractionManager1_18_2();

@Inject(method = {"pickItemFromBlock", "pickItemFromEntity"}, at = @At("HEAD"), cancellable = true)
public void pickItemClientside(CallbackInfo ci) {
private void pickItemClientside(CallbackInfo ci) {
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_21_2)) {
ViaFabricPlus.global().getLogger().error("Directly calling pickItemFromBlock or pickItemFromEntity is not supported in <=1.21.3. Use MinecraftClient#doItemPick instead.");
ci.cancel();
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/viafabricplus.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
"fixes.minecraft.item.MixinBowItem",
"fixes.minecraft.item.MixinBrushItem",
"fixes.minecraft.item.MixinBucketItem",
"fixes.minecraft.item.MixinBundleItem",
"fixes.minecraft.item.MixinDrawContext",
"fixes.minecraft.item.MixinEnderEyeItem",
"fixes.minecraft.item.MixinEnderPearlItem",
Expand Down Expand Up @@ -219,7 +220,7 @@
"viabedrock.MixinJoinPackets",
"vialegacy.MixinExtensionProtocolMetadataStorage",
"vialegacy.MixinViaLegacyConfig",
"fixes.minecraft.item.MixinBundleItem"
"fixes.minecraft.entity.MixinMooshroomEntity"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 4ae8e90

Please sign in to comment.