Search in sources :

Example 1 with MusicDiscItem

use of net.minecraft.item.MusicDiscItem in project SophisticatedBackpacks by P3pp3rF1y.

the class EntityBackpackAdditionHandler method addJukeboxUpgradeAndRandomDisc.

private static void addJukeboxUpgradeAndRandomDisc(MonsterEntity monster, IBackpackWrapper w) {
    w.getUpgradeHandler().setStackInSlot(0, new ItemStack(ModItems.JUKEBOX_UPGRADE.get()));
    Iterator<JukeboxUpgradeItem.Wrapper> it = w.getUpgradeHandler().getTypeWrappers(JukeboxUpgradeItem.TYPE).iterator();
    if (it.hasNext()) {
        JukeboxUpgradeItem.Wrapper wrapper = it.next();
        List<MusicDiscItem> musicDiscs = getMusicDiscs();
        wrapper.setDisc(new ItemStack(musicDiscs.get(monster.level.random.nextInt(musicDiscs.size()))));
    }
}
Also used : MusicDiscItem(net.minecraft.item.MusicDiscItem) CapabilityBackpackWrapper(net.p3pp3rf1y.sophisticatedbackpacks.api.CapabilityBackpackWrapper) IBackpackWrapper(net.p3pp3rf1y.sophisticatedbackpacks.api.IBackpackWrapper) ItemStack(net.minecraft.item.ItemStack) JukeboxUpgradeItem(net.p3pp3rf1y.sophisticatedbackpacks.upgrades.jukebox.JukeboxUpgradeItem)

Example 2 with MusicDiscItem

use of net.minecraft.item.MusicDiscItem in project SophisticatedBackpacks by P3pp3rF1y.

the class PlayDiscMessage method handleMessage.

private static void handleMessage(PlayDiscMessage msg) {
    Item discItem = Item.byId(msg.musicDiscItemId);
    if (!(discItem instanceof MusicDiscItem)) {
        return;
    }
    SoundEvent soundEvent = ((MusicDiscItem) discItem).getSound();
    UUID backpackUuid = msg.backpackUuid;
    if (msg.blockBackpack) {
        BackpackSoundHandler.playBackpackSound(soundEvent, backpackUuid, msg.pos);
    } else {
        BackpackSoundHandler.playBackpackSound(soundEvent, backpackUuid, msg.entityId);
    }
}
Also used : MusicDiscItem(net.minecraft.item.MusicDiscItem) Item(net.minecraft.item.Item) MusicDiscItem(net.minecraft.item.MusicDiscItem) SoundEvent(net.minecraft.util.SoundEvent) UUID(java.util.UUID)

Example 3 with MusicDiscItem

use of net.minecraft.item.MusicDiscItem in project Kingdom-Keys by Wehavecookies56.

the class ItemTagsGen method registerTags.

@Override
protected void registerTags() {
    for (RegistryObject<Item> itemRegistryObject : ModItems.ITEMS.getEntries()) {
        final Item item = itemRegistryObject.get();
        if (item instanceof MusicDiscItem) {
            add(ItemTags.MUSIC_DISCS, item);
            add(ItemTags.CREEPER_DROP_MUSIC_DISCS, item);
        }
    }
}
Also used : MusicDiscItem(net.minecraft.item.MusicDiscItem) Item(net.minecraft.item.Item) MusicDiscItem(net.minecraft.item.MusicDiscItem)

Example 4 with MusicDiscItem

use of net.minecraft.item.MusicDiscItem in project carpet-extra by gnembon.

the class CarpetExtraDispenserBehaviors method getCustomDispenserBehavior.

// get custom dispenser behavior
// this checks conditions such as the item and certain block or entity being in front of the dispenser to decide which rule to return
// if the conditions for the rule match, it returns the instance of the dispenser behavior
// returns null to fallback to vanilla (or another mod's) behavior for the given item
public static DispenserBehavior getCustomDispenserBehavior(ServerWorld world, BlockPos pos, BlockPointer pointer, DispenserBlockEntity dispenserBlockEntity, ItemStack stack, Map<Item, DispenserBehavior> VANILLA_BEHAVIORS) {
    Item item = stack.getItem();
    Direction dispenserFacing = pointer.getBlockState().get(DispenserBlock.FACING);
    BlockPos frontBlockPos = pos.offset(dispenserFacing);
    BlockState frontBlockState = world.getBlockState(frontBlockPos);
    Block frontBlock = frontBlockState.getBlock();
    Box frontBlockBox = new Box(frontBlockPos);
    // blazeMeal
    if (CarpetExtraSettings.blazeMeal && item == Items.BLAZE_POWDER && frontBlock == Blocks.NETHER_WART) {
        return BLAZE_MEAL;
    }
    // chickenShearing
    if (CarpetExtraSettings.chickenShearing && item == Items.SHEARS) {
        boolean hasShearableChickens = !world.getEntitiesByType(EntityType.CHICKEN, frontBlockBox, EntityPredicates.VALID_LIVING_ENTITY.and((chickenEntity) -> {
            return !((AnimalEntity) chickenEntity).isBaby();
        })).isEmpty();
        if (hasShearableChickens) {
            return SHEAR_CHICKEN;
        }
    }
    // dispensersCarvePumpkins
    if (CarpetExtraSettings.dispensersCarvePumpkins && item instanceof ShearsItem && frontBlock == Blocks.PUMPKIN) {
        return CARVE_PUMPKIN;
    }
    // dispensersFeedAnimals
    if (CarpetExtraSettings.dispensersFeedAnimals) {
        // check for animals that can be bred with the current item being dispensed in front of dispenser
        boolean hasFeedableAnimals = !world.getEntitiesByClass(AnimalEntity.class, frontBlockBox, EntityPredicates.VALID_LIVING_ENTITY.and((animalEntity) -> {
            return ((AnimalEntity) animalEntity).isBreedingItem(stack);
        })).isEmpty();
        if (hasFeedableAnimals) {
            return FEED_ANIMAL;
        }
        // get brown mooshrooms in front of dispenser
        boolean hasFeedableMooshrooms = !world.getEntitiesByType(EntityType.MOOSHROOM, frontBlockBox, EntityPredicates.VALID_LIVING_ENTITY.and((mooshroomEntity) -> {
            return ((MooshroomEntity) mooshroomEntity).getMooshroomType() == MooshroomEntity.Type.BROWN;
        })).isEmpty();
        // check if item is a small flower
        if (hasFeedableMooshrooms && item.getRegistryEntry().isIn(ItemTags.SMALL_FLOWERS)) {
            return FEED_MOOSHROOM;
        }
    }
    // dispensersFillMinecarts
    if (CarpetExtraSettings.dispensersFillMinecarts) {
        // check for minecarts with no riders in front of dispenser
        boolean hasMinecarts = !world.getEntitiesByType(EntityType.MINECART, frontBlockBox, EntityPredicates.NOT_MOUNTED).isEmpty();
        // if a minecart exist, return dispenser behavior according to item type
        if (hasMinecarts) {
            if (item == Items.CHEST) {
                return FILL_MINECART_CHEST;
            } else if (item == Items.FURNACE) {
                return FILL_MINECART_FURNACE;
            } else if (item == Items.TNT) {
                return FILL_MINECART_TNT;
            } else if (item == Items.HOPPER) {
                return FILL_MINECART_HOPPER;
            }
        }
    }
    // dispensersMilkAnimals
    if (CarpetExtraSettings.dispensersMilkAnimals) {
        // bucket to milk
        if (item == Items.BUCKET) {
            // check for cows, mooshrooms, or goats in front of dispenser
            boolean hasMilkable = !world.getEntitiesByClass(AnimalEntity.class, frontBlockBox, EntityPredicates.VALID_LIVING_ENTITY.and((animalEntity) -> {
                return animalEntity instanceof CowEntity || animalEntity instanceof GoatEntity;
            })).isEmpty();
            if (hasMilkable) {
                return MILK_ANIMAL;
            }
        } else // bowl to stew
        if (item == Items.BOWL) {
            // check for mooshrooms in front of dispenser
            boolean hasMooshroom = !world.getEntitiesByType(EntityType.MOOSHROOM, frontBlockBox, EntityPredicates.VALID_LIVING_ENTITY).isEmpty();
            if (hasMooshroom) {
                return MILK_MOOSHROOM;
            }
        }
    }
    // dispensersPlayRecords
    if (CarpetExtraSettings.dispensersPlayRecords && item instanceof MusicDiscItem && frontBlock == Blocks.JUKEBOX) {
        return PLAY_DISC;
    }
    // dispensersPotPlants
    if (CarpetExtraSettings.dispensersPotPlants && frontBlock instanceof FlowerPotBlock && FlowerPotHelper.isPottable(item)) {
        return FILL_FLOWER_POT;
    }
    // dispensersStripBlocks
    if (CarpetExtraSettings.dispensersStripBlocks && item instanceof AxeItem && (StripBlocksDispenserBehavior.canStrip(frontBlock) || StripBlocksDispenserBehavior.isStripResult(frontBlock))) {
        return STRIP_BLOCK;
    }
    // dispensersTillSoil
    if (CarpetExtraSettings.dispensersTillSoil && item instanceof HoeItem) {
        // check block in front of dispenser and one block down
        for (int i = 0; i < 2; i++) {
            BlockPos hoeBlockPos = frontBlockPos.down(i);
            Block hoeBlock = world.getBlockState(hoeBlockPos).getBlock();
            // check if block is in tilled blocks, or is farmland (to prevent hoe being dispensed when you don't want it to)
            if (TillSoilDispenserBehavior.TILLED_BLOCKS.contains(hoeBlock) || hoeBlock == Blocks.FARMLAND) {
                return TILL_SOIL;
            }
        }
    }
    // dispensersToggleThings
    if (CarpetExtraSettings.dispensersToggleThings && item == Items.STICK && ToggleBlockDispenserBehavior.TOGGLEABLE_BLOCKS.contains(frontBlock)) {
        return TOGGLE_BLOCK;
    }
    // dispensersUseCauldrons
    if (CarpetExtraSettings.dispensersUseCauldrons && frontBlock instanceof AbstractCauldronBlock) {
        // empty cauldron
        if (item == Items.BUCKET) {
            return CAULDRON_EMPTYING_BUCKET;
        } else // fill cauldron
        if (item == Items.LAVA_BUCKET || item == Items.WATER_BUCKET || item == Items.POWDER_SNOW_BUCKET) {
            return CAULDRON_FILLING_BUCKET;
        } else // water cauldron behaviors (leather armor, shulker boxes, banners)
        if (CauldronWaterDispenserBehavior.isWaterCauldronItem(stack)) {
            return CAULDRON_WATER;
        }
    }
    // renewableEndstone
    if (CarpetExtraSettings.renewableEndstone && item == Items.DRAGON_BREATH && frontBlock == Blocks.COBBLESTONE) {
        return DRAGON_BREATH_ENDSTONE;
    }
    // renewableNetherrack
    if (CarpetExtraSettings.renewableNetherrack && item == Items.FIRE_CHARGE && frontBlock == Blocks.COBBLESTONE) {
        return FIRE_CHARGE_NETHERRACK;
    }
    // no custom behavior, return null
    return null;
}
Also used : EntityType(net.minecraft.entity.EntityType) ItemTags(net.minecraft.tag.ItemTags) TillSoilDispenserBehavior(carpetextra.dispenser.behaviors.TillSoilDispenserBehavior) CauldronFillingDispenserBehavior(carpetextra.dispenser.behaviors.CauldronFillingDispenserBehavior) FlowerPotBlock(net.minecraft.block.FlowerPotBlock) Item(net.minecraft.item.Item) BlockPointer(net.minecraft.util.math.BlockPointer) CarvePumpkinDispenserBehavior(carpetextra.dispenser.behaviors.CarvePumpkinDispenserBehavior) GoatEntity(net.minecraft.entity.passive.GoatEntity) MooshroomEntity(net.minecraft.entity.passive.MooshroomEntity) FillMinecartDispenserBehavior(carpetextra.dispenser.behaviors.FillMinecartDispenserBehavior) Block(net.minecraft.block.Block) MusicDiscDispenserBehavior(carpetextra.dispenser.behaviors.MusicDiscDispenserBehavior) Map(java.util.Map) DragonBreathDispenserBehavior(carpetextra.dispenser.behaviors.DragonBreathDispenserBehavior) BlockState(net.minecraft.block.BlockState) CauldronEmptyingDispenserBehavior(carpetextra.dispenser.behaviors.CauldronEmptyingDispenserBehavior) DispenserBlockEntity(net.minecraft.block.entity.DispenserBlockEntity) AxeItem(net.minecraft.item.AxeItem) FireChargeDispenserBehavior(carpetextra.dispenser.behaviors.FireChargeDispenserBehavior) DispenserBehavior(net.minecraft.block.dispenser.DispenserBehavior) StripBlocksDispenserBehavior(carpetextra.dispenser.behaviors.StripBlocksDispenserBehavior) CauldronWaterDispenserBehavior(carpetextra.dispenser.behaviors.CauldronWaterDispenserBehavior) CarpetExtraSettings(carpetextra.CarpetExtraSettings) HoeItem(net.minecraft.item.HoeItem) ServerWorld(net.minecraft.server.world.ServerWorld) CowEntity(net.minecraft.entity.passive.CowEntity) Direction(net.minecraft.util.math.Direction) ItemStack(net.minecraft.item.ItemStack) AbstractMinecartEntity(net.minecraft.entity.vehicle.AbstractMinecartEntity) EntityPredicates(net.minecraft.predicate.entity.EntityPredicates) AnimalEntity(net.minecraft.entity.passive.AnimalEntity) MilkMooshroomDispenserBehavior(carpetextra.dispenser.behaviors.MilkMooshroomDispenserBehavior) MusicDiscItem(net.minecraft.item.MusicDiscItem) ShearsItem(net.minecraft.item.ShearsItem) ToggleBlockDispenserBehavior(carpetextra.dispenser.behaviors.ToggleBlockDispenserBehavior) Box(net.minecraft.util.math.Box) MilkAnimalDispenserBehavior(carpetextra.dispenser.behaviors.MilkAnimalDispenserBehavior) BlockPos(net.minecraft.util.math.BlockPos) FlowerPotDispenserBehavior(carpetextra.dispenser.behaviors.FlowerPotDispenserBehavior) Items(net.minecraft.item.Items) AbstractCauldronBlock(net.minecraft.block.AbstractCauldronBlock) Blocks(net.minecraft.block.Blocks) FeedAnimalDispenserBehavior(carpetextra.dispenser.behaviors.FeedAnimalDispenserBehavior) FeedMooshroomDispenserBehavior(carpetextra.dispenser.behaviors.FeedMooshroomDispenserBehavior) ShearChickenDispenserBehavior(carpetextra.dispenser.behaviors.ShearChickenDispenserBehavior) FlowerPotHelper(carpetextra.helpers.FlowerPotHelper) DispenserBlock(net.minecraft.block.DispenserBlock) BlazePowderDispenserBehavior(carpetextra.dispenser.behaviors.BlazePowderDispenserBehavior) AbstractCauldronBlock(net.minecraft.block.AbstractCauldronBlock) AnimalEntity(net.minecraft.entity.passive.AnimalEntity) Box(net.minecraft.util.math.Box) ShearsItem(net.minecraft.item.ShearsItem) GoatEntity(net.minecraft.entity.passive.GoatEntity) Direction(net.minecraft.util.math.Direction) AxeItem(net.minecraft.item.AxeItem) HoeItem(net.minecraft.item.HoeItem) MusicDiscItem(net.minecraft.item.MusicDiscItem) Item(net.minecraft.item.Item) AxeItem(net.minecraft.item.AxeItem) HoeItem(net.minecraft.item.HoeItem) MusicDiscItem(net.minecraft.item.MusicDiscItem) ShearsItem(net.minecraft.item.ShearsItem) BlockState(net.minecraft.block.BlockState) FlowerPotBlock(net.minecraft.block.FlowerPotBlock) Block(net.minecraft.block.Block) AbstractCauldronBlock(net.minecraft.block.AbstractCauldronBlock) DispenserBlock(net.minecraft.block.DispenserBlock) BlockPos(net.minecraft.util.math.BlockPos) MooshroomEntity(net.minecraft.entity.passive.MooshroomEntity) CowEntity(net.minecraft.entity.passive.CowEntity) FlowerPotBlock(net.minecraft.block.FlowerPotBlock)

Aggregations

MusicDiscItem (net.minecraft.item.MusicDiscItem)4 Item (net.minecraft.item.Item)3 ItemStack (net.minecraft.item.ItemStack)2 CarpetExtraSettings (carpetextra.CarpetExtraSettings)1 BlazePowderDispenserBehavior (carpetextra.dispenser.behaviors.BlazePowderDispenserBehavior)1 CarvePumpkinDispenserBehavior (carpetextra.dispenser.behaviors.CarvePumpkinDispenserBehavior)1 CauldronEmptyingDispenserBehavior (carpetextra.dispenser.behaviors.CauldronEmptyingDispenserBehavior)1 CauldronFillingDispenserBehavior (carpetextra.dispenser.behaviors.CauldronFillingDispenserBehavior)1 CauldronWaterDispenserBehavior (carpetextra.dispenser.behaviors.CauldronWaterDispenserBehavior)1 DragonBreathDispenserBehavior (carpetextra.dispenser.behaviors.DragonBreathDispenserBehavior)1 FeedAnimalDispenserBehavior (carpetextra.dispenser.behaviors.FeedAnimalDispenserBehavior)1 FeedMooshroomDispenserBehavior (carpetextra.dispenser.behaviors.FeedMooshroomDispenserBehavior)1 FillMinecartDispenserBehavior (carpetextra.dispenser.behaviors.FillMinecartDispenserBehavior)1 FireChargeDispenserBehavior (carpetextra.dispenser.behaviors.FireChargeDispenserBehavior)1 FlowerPotDispenserBehavior (carpetextra.dispenser.behaviors.FlowerPotDispenserBehavior)1 MilkAnimalDispenserBehavior (carpetextra.dispenser.behaviors.MilkAnimalDispenserBehavior)1 MilkMooshroomDispenserBehavior (carpetextra.dispenser.behaviors.MilkMooshroomDispenserBehavior)1 MusicDiscDispenserBehavior (carpetextra.dispenser.behaviors.MusicDiscDispenserBehavior)1 ShearChickenDispenserBehavior (carpetextra.dispenser.behaviors.ShearChickenDispenserBehavior)1 StripBlocksDispenserBehavior (carpetextra.dispenser.behaviors.StripBlocksDispenserBehavior)1