Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 50 lines 2.0 kB view raw
1package net.lerariemann.infinity.item; 2 3import dev.architectury.core.item.ArchitecturyBucketItem; 4import net.lerariemann.infinity.registry.core.ModBlocks; 5import net.lerariemann.infinity.util.VersionMethods; 6import net.lerariemann.infinity.util.platform.InfinityPlatform; 7import net.minecraft.advancements.CriteriaTriggers; 8import net.minecraft.core.BlockPos; 9import net.minecraft.server.level.ServerPlayer; 10import net.minecraft.world.InteractionResult; 11import net.minecraft.world.entity.player.Player; 12import net.minecraft.world.item.Item; 13import net.minecraft.world.item.ItemStack; 14import net.minecraft.world.item.ItemUtils; 15import net.minecraft.world.item.Items; 16import net.minecraft.world.item.context.UseOnContext; 17import net.minecraft.world.level.Level; 18import net.minecraft.world.level.block.Blocks; 19import net.minecraft.world.level.block.state.BlockState; 20 21public class IridescenceBucketItem extends ArchitecturyBucketItem { 22 public IridescenceBucketItem(Item.Properties properties) { 23 super(InfinityPlatform.INSTANCE.getIridescenceStill(), properties.craftRemainder(Items.BUCKET).stacksTo(1)); 24 } 25 26 @Override 27 public InteractionResult useOn(UseOnContext context) { 28 Level level = context.getLevel(); 29 BlockPos blockPos = context.getClickedPos(); 30 BlockState blockState = level.getBlockState(blockPos); 31 32 Player player = context.getPlayer(); 33 34 if (!blockState.is(Blocks.CAULDRON) || player == null) 35 return InteractionResult.PASS; 36 37 this.playEmptySound(player, level, blockPos); 38 39 ItemStack itemStack = context.getItemInHand(); 40 ItemStack itemStack2 = ItemUtils.createFilledResult(itemStack, player, Items.BUCKET.getDefaultInstance()); 41 42 player.setItemInHand(context.getHand(), itemStack2); 43 level.setBlockAndUpdate(blockPos, ModBlocks.IRIDESCENCE_CAULDRON.get().defaultBlockState()); 44 45 if (player instanceof ServerPlayer serverPlayer) 46 CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(serverPlayer, blockPos, itemStack); 47 48 return VersionMethods.sidedSuccess(level.isClientSide()); 49 } 50}