mod for the islanders smp
at master 33 lines 1.4 kB view raw
1package net.radsteve.islanders.mixin; 2 3import com.llamalad7.mixinextras.sugar.Local; 4import net.minecraft.entity.ItemEntity; 5import net.minecraft.entity.LivingEntity; 6import net.minecraft.item.ItemStack; 7import net.minecraft.server.network.ServerPlayerEntity; 8import net.radsteve.islanders.SpecialItem; 9import net.radsteve.islanders.event.ItemDropCallback; 10import org.spongepowered.asm.mixin.Mixin; 11import org.spongepowered.asm.mixin.injection.At; 12import org.spongepowered.asm.mixin.injection.Inject; 13import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 14 15@Mixin(LivingEntity.class) 16public abstract class LivingEntityMixin { 17 @Inject(method = "dropItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;spawnEntity(Lnet/minecraft/entity/Entity;)Z")) 18 private void islanders$dropItem(ItemStack stack, boolean dropAtSelf, boolean retainOwnership, CallbackInfoReturnable<ItemEntity> cir, @Local ItemEntity entity) { 19 if (!(LivingEntity.class.cast(this) instanceof final ServerPlayerEntity player)) { 20 return; 21 } 22 23 final SpecialItem item = SpecialItem.Companion.find(stack); 24 25 if (item != null) { 26 entity.setGlowing(true); 27 entity.setNeverDespawn(); 28 entity.getWorld().getScoreboard().addScoreHolderToTeam(entity.getNameForScoreboard(), item.getTeam()); 29 } 30 31 ItemDropCallback.Companion.getEVENT().invoker().onDrop(stack, entity, player); 32 } 33}