mirror of
https://github.com/ViaVersion/ViaFabricPlus.git
synced 2025-02-19 02:11:23 +01:00
Implemented Movement changes
This commit is contained in:
parent
efc94bf685
commit
89c41ffdc5
@ -40,9 +40,7 @@ import java.io.File;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO | Port
|
* TODO | Port
|
||||||
* - Sign interactions
|
|
||||||
* - TakeItemEntityPacket isEmpty case
|
* - TakeItemEntityPacket isEmpty case
|
||||||
* - Entity#move has changed
|
|
||||||
* <p>
|
* <p>
|
||||||
* TODO | Protocol translation
|
* TODO | Protocol translation
|
||||||
* - BucketItem#use canPlaceOn in <= 1.13 is missing
|
* - BucketItem#use canPlaceOn in <= 1.13 is missing
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.block;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||||
|
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
|
||||||
|
import net.minecraft.block.AbstractSignBlock;
|
||||||
|
import net.minecraft.block.entity.SignBlockEntity;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
@Mixin(AbstractSignBlock.class)
|
||||||
|
public class MixinAbstractSignBlock {
|
||||||
|
|
||||||
|
@Redirect(method = "onUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/SignBlockEntity;isWaxed()Z", ordinal = 1))
|
||||||
|
public boolean removeCondition(SignBlockEntity instance) {
|
||||||
|
if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_19_4)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return instance.isWaxed();
|
||||||
|
}
|
||||||
|
}
|
@ -20,10 +20,13 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity;
|
|||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||||
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
|
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
|
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.FenceGateBlock;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.fluid.Fluid;
|
import net.minecraft.fluid.Fluid;
|
||||||
import net.minecraft.fluid.FluidState;
|
import net.minecraft.fluid.FluidState;
|
||||||
|
import net.minecraft.registry.tag.BlockTags;
|
||||||
import net.minecraft.registry.tag.TagKey;
|
import net.minecraft.registry.tag.TagKey;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Box;
|
import net.minecraft.util.math.Box;
|
||||||
@ -67,8 +70,11 @@ public abstract class MixinEntity {
|
|||||||
|
|
||||||
@Inject(method = "getVelocityAffectingPos", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "getVelocityAffectingPos", at = @At("HEAD"), cancellable = true)
|
||||||
public void injectGetVelocityAffectingPos(CallbackInfoReturnable<BlockPos> cir) {
|
public void injectGetVelocityAffectingPos(CallbackInfoReturnable<BlockPos> cir) {
|
||||||
if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_14_4)) {
|
if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_19_4)) {
|
||||||
cir.setReturnValue(BlockPos.ofFloored(pos.x, getBoundingBox().minY - 1, pos.z));
|
cir.setReturnValue(BlockPos.ofFloored(pos.x, getBoundingBox().minY - 0.5000001, pos.z));
|
||||||
|
if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_14_4)) {
|
||||||
|
cir.setReturnValue(BlockPos.ofFloored(pos.x, getBoundingBox().minY - 1, pos.z));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,4 +170,21 @@ public abstract class MixinEntity {
|
|||||||
instance.onLanding();
|
instance.onLanding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "getPosWithYOffset", at = @At("HEAD"), cancellable = true)
|
||||||
|
public void changeLogic(float offset, CallbackInfoReturnable<BlockPos> cir) {
|
||||||
|
if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_19_4)) {
|
||||||
|
final BlockPos blockPos = new BlockPos(MathHelper.floor(this.pos.x), MathHelper.floor(this.pos.y - (double)offset), MathHelper.floor(this.pos.z));
|
||||||
|
|
||||||
|
if (this.world.getBlockState(blockPos).isAir()) {
|
||||||
|
final BlockPos downBlockPos = blockPos.down();
|
||||||
|
BlockState blockState = this.world.getBlockState(downBlockPos);
|
||||||
|
|
||||||
|
if (blockState.isIn(BlockTags.FENCES) || blockState.isIn(BlockTags.WALLS) || blockState.getBlock() instanceof FenceGateBlock) {
|
||||||
|
cir.setReturnValue(downBlockPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cir.setReturnValue(blockPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,6 +165,7 @@
|
|||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
"fixes.minecraft.block.MixinAbstractSignBlock",
|
||||||
"fixes.minecraft.entity.MixinBoatEntity",
|
"fixes.minecraft.entity.MixinBoatEntity",
|
||||||
"fixes.minecraft.entity.MixinCamelEntity",
|
"fixes.minecraft.entity.MixinCamelEntity",
|
||||||
"fixes.minecraft.item.MixinBrushItem"
|
"fixes.minecraft.item.MixinBrushItem"
|
||||||
|
Loading…
Reference in New Issue
Block a user