Octo-Studios / relics

Other
42 stars 32 forks source link

Runic Altar and Runic Anvil's items do not sync in multiplayer #79

Closed LTCatt closed 1 year ago

LTCatt commented 2 years ago
  1. Get two players into a multiplayer game
  2. Player A places items into the block
  3. Player B cannot see the item, but can take it away
  4. Then player A can still see the item, but can't take it away
LTCatt commented 2 years ago

import it.hurts.sskirillss.relics.tiles.RunicAnvilTile; import it.hurts.sskirillss.relics.tiles.TileBase; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntityType; 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.CallbackInfoReturnable;

@Mixin(RunicAnvilTile.class) public abstract class FixRunicAnvilSync extends TileBase implements ITickableTileEntity { public FixRunicAnvilSync(TileEntityType<?> tileEntityTypeIn) {super(tileEntityTypeIn);}

@Inject(method = "insertItem(Lnet/minecraft/item/ItemStack;)Z", at = @At("RETURN"), remap = false)
private void injectedInsert(ItemStack stack, CallbackInfoReturnable<Boolean> cir) {
    world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 2);
}
@Inject(method = "takeItem(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("RETURN"), remap = false)
private void injectedTake(LivingEntity entity, CallbackInfoReturnable<Boolean> cir) {
    world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 2);
}

}


package net.hexdragon.eoutils.mixin.relics;

import it.hurts.sskirillss.relics.tiles.RunicAltarTile; import it.hurts.sskirillss.relics.tiles.TileBase; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; 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;

@Mixin(RunicAltarTile.class) public abstract class FixRunicAltarSync extends TileBase implements ITickableTileEntity { public FixRunicAltarSync(TileEntityType<?> tileEntityTypeIn) {super(tileEntityTypeIn);}

@Inject(method = "setStack(Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/Direction;)V", at = @At("RETURN"), remap = false)
private void injectedInsert(ItemStack stack, Direction direction, CallbackInfo ci) {
    world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 2);
}

}

SSKirillSS commented 1 year ago

Fixed in https://github.com/SSKirillSS/relics/commit/d4771405650a5493de7510fc4dff27656502b18a