Fix mixin conflict with questadditions (#587 #892)

This commit is contained in:
IzzelAliz 2023-02-26 15:16:20 +08:00
parent 7a29402e9e
commit 07a3fd1b5d
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -282,7 +282,9 @@ public abstract class ServerPlayerGameModeMixin implements PlayerInteractionMana
public InteractionResult useItemOn(ServerPlayer playerIn, Level worldIn, ItemStack stackIn, InteractionHand handIn, BlockHitResult blockRaytraceResultIn) {
BlockPos blockpos = blockRaytraceResultIn.getBlockPos();
BlockState blockstate = worldIn.getBlockState(blockpos);
InteractionResult resultType = InteractionResult.PASS;
// InteractionResult resultType = InteractionResult.PASS;
{ // compatible with questadditions
// these variables are not available inside next if block
boolean cancelledBlock = false;
if (!blockstate.getBlock().isEnabled(worldIn.enabledFeatures())) {
return InteractionResult.FAIL;
@ -310,8 +312,10 @@ public abstract class ServerPlayerGameModeMixin implements PlayerInteractionMana
playerIn.connection.send(new ClientboundBlockUpdatePacket(level, blockpos.above()));
}
((ServerPlayerEntityBridge) playerIn).bridge$getBukkitEntity().updateInventory();
resultType = ((bukkitEvent.useItemInHand() != Event.Result.ALLOW) ? InteractionResult.SUCCESS : InteractionResult.PASS);
} else if (this.gameModeForPlayer == GameType.SPECTATOR) {
return ((bukkitEvent.useItemInHand() != Event.Result.ALLOW) ? InteractionResult.SUCCESS : InteractionResult.PASS);
}
}
if (this.gameModeForPlayer == GameType.SPECTATOR) {
MenuProvider inamedcontainerprovider = blockstate.getMenuProvider(worldIn, blockpos);
if (inamedcontainerprovider != null) {
playerIn.openMenu(inamedcontainerprovider);
@ -330,6 +334,7 @@ public abstract class ServerPlayerGameModeMixin implements PlayerInteractionMana
boolean flag = !playerIn.getMainHandItem().isEmpty() || !playerIn.getOffhandItem().isEmpty();
boolean flag1 = (playerIn.isSecondaryUseActive() && flag) && !(playerIn.getMainHandItem().doesSneakBypassUse(worldIn, blockpos, playerIn) && playerIn.getOffhandItem().doesSneakBypassUse(worldIn, blockpos, playerIn));
ItemStack itemstack = stackIn.copy();
InteractionResult resultType = InteractionResult.PASS;
if (event.getUseBlock() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && !flag1)) {
resultType = blockstate.use(worldIn, playerIn, handIn, blockRaytraceResultIn);
if (resultType.consumesAction()) {
@ -357,6 +362,5 @@ public abstract class ServerPlayerGameModeMixin implements PlayerInteractionMana
return resultType;
}
}
return resultType;
}
}