π§±Overview
Codecs and small utility classes.
Ephemeral2
Ephemeral2public void dropItems(List<ItemStack> items, BlockPos pos, ServerPlayer player) {
for (ItemStack item : items) {
dropItem(item);
}
}
public void dropItem(ItemStack item, BlockPos pos) {
level.createItem(item, pos);
}@Unique
private final Ephemeral2<ServerPlayer> SAVED_PLAYER = new Ephemeral2<>();
@Inject(method="dropItems", at = @At("HEAD"))
private void recordPlayer(List<ItemStack> items, BlockPos pos, ServerPlayer player, CallbackInfo ci) {
SAVED_PLAYER.push(player, items.size());
}
@Inject(method="dropItem", at = @At("HEAD"), cancellable = true)
private void usePlayer(ItemStack item, BlockPos pos, CallbackInfo ci) {
ServerPlayer player = SAVED_PLAYER.pop();
// here we'd use the player
}ResultHolder
ResultHolderMemoizer
ServerTracker
ServerTrackerLast updated