Search in sources :

Example 1 with CraftTweakerMC

use of crafttweaker.api.minecraft.CraftTweakerMC in project GregTech by GregTechCE.

the class RecipeMap method ctFindRecipe.

@ZenMethod("findRecipe")
@Method(modid = GTValues.MODID_CT)
@Nullable
public CTRecipe ctFindRecipe(long maxVoltage, IItemStack[] itemInputs, ILiquidStack[] fluidInputs, @Optional(valueLong = Integer.MAX_VALUE) int outputFluidTankCapacity) {
    List<ItemStack> mcItemInputs = itemInputs == null ? Collections.emptyList() : Arrays.stream(itemInputs).map(CraftTweakerMC::getItemStack).collect(Collectors.toList());
    List<FluidStack> mcFluidInputs = fluidInputs == null ? Collections.emptyList() : Arrays.stream(fluidInputs).map(CraftTweakerMC::getLiquidStack).collect(Collectors.toList());
    Recipe backingRecipe = findRecipe(maxVoltage, mcItemInputs, mcFluidInputs, outputFluidTankCapacity);
    return backingRecipe == null ? null : new CTRecipe(this, backingRecipe);
}
Also used : CTRecipe(gregtech.api.recipes.crafttweaker.CTRecipe) CraftTweakerMC(crafttweaker.api.minecraft.CraftTweakerMC) FluidStack(net.minecraftforge.fluids.FluidStack) CTRecipe(gregtech.api.recipes.crafttweaker.CTRecipe) ItemStack(net.minecraft.item.ItemStack) IItemStack(crafttweaker.api.item.IItemStack) Method(net.minecraftforge.fml.common.Optional.Method) Nullable(javax.annotation.Nullable)

Example 2 with CraftTweakerMC

use of crafttweaker.api.minecraft.CraftTweakerMC in project CraftTweaker by CraftTweaker.

the class CommonEventHandler method mobDrop.

@SubscribeEvent
public void mobDrop(LivingDropsEvent ev) {
    Entity entity = ev.getEntity();
    IEntityDefinition entityDefinition = CraftTweakerAPI.game.getEntity(EntityList.getEntityString(ev.getEntity()));
    if (entityDefinition != null) {
        if (entityDefinition.shouldClearDrops()) {
            ev.getDrops().clear();
        } else if (!entityDefinition.getDropsToRemove().isEmpty()) {
            List<EntityItem> removedDrops = new ArrayList<>();
            entityDefinition.getDropsToRemove().forEach(drop -> ev.getDrops().forEach(drops -> {
                if (drop.matches(new MCItemStack(drops.getItem()))) {
                    removedDrops.add(drops);
                }
            }));
            ev.getDrops().removeAll(removedDrops);
        }
        if (!entityDefinition.getDrops().isEmpty()) {
            Random rand = entity.world.rand;
            entityDefinition.getDrops().forEach(drop -> {
                if (drop.isPlayerOnly() && !(ev.getSource().getTrueSource() instanceof EntityPlayer))
                    return;
                if (drop.getChance() > 0 && drop.getChance() < 1 && rand.nextFloat() > drop.getChance())
                    return;
                EntityItem item;
                if (drop.getMin() == 0 && drop.getMax() == 0) {
                    item = new EntityItem(entity.world, entity.posX + 0.5, entity.posY + 0.5, entity.posZ + 0.5, ((ItemStack) drop.getItemStack().getInternal()).copy());
                } else {
                    item = new EntityItem(entity.world, entity.posX + 0.5, entity.posY + 0.5, entity.posZ + 0.5, ((ItemStack) drop.getItemStack().withAmount(drop.getRange().getRandom(rand)).getInternal()).copy());
                }
                if (item.getItem().getCount() != 0) {
                    ev.getDrops().add(item);
                }
            });
        }
        if (!entityDefinition.getDropFunctions().isEmpty()) {
            IEntity ent = new MCEntity(ev.getEntity());
            IDamageSource dmgSource = new MCDamageSource(ev.getSource());
            entityDefinition.getDropFunctions().stream().map((fun) -> fun.handle(ent, dmgSource)).filter(Objects::nonNull).filter((item) -> item.getAmount() > 0).map(CraftTweakerMC::getItemStack).map((ItemStack item) -> new EntityItem(entity.world, entity.posX + 0.5, entity.posY + 0.5, entity.posZ + 0.5, item)).forEach(ev.getDrops()::add);
        }
    }
}
Also used : crafttweaker.mc1120.brackets(crafttweaker.mc1120.brackets) java.util(java.util) net.minecraftforge.fml.common.gameevent(net.minecraftforge.fml.common.gameevent) crafttweaker.mc1120.recipes(crafttweaker.mc1120.recipes) FurnaceFuelBurnTimeEvent(net.minecraftforge.event.furnace.FurnaceFuelBurnTimeEvent) net.minecraft.item.crafting(net.minecraft.item.crafting) net.minecraftforge.event.entity.item(net.minecraftforge.event.entity.item) PlayerEvent(net.minecraftforge.fml.common.gameevent.PlayerEvent) ItemStack(net.minecraft.item.ItemStack) OreDictionary(net.minecraftforge.oredict.OreDictionary) CraftingInfo(crafttweaker.api.recipes.CraftingInfo) MCFurnaceManager(crafttweaker.mc1120.furnace.MCFurnaceManager) net.minecraft.entity(net.minecraft.entity) IDamageSource(crafttweaker.api.damage.IDamageSource) crafttweaker.api.entity(crafttweaker.api.entity) RegistryEvent(net.minecraftforge.event.RegistryEvent) MCDamageSource(crafttweaker.mc1120.damage.MCDamageSource) IPlayer(crafttweaker.api.player.IPlayer) net.minecraftforge.event.entity.living(net.minecraftforge.event.entity.living) EntityItem(net.minecraft.entity.item.EntityItem) BlockEvent(net.minecraftforge.event.world.BlockEvent) crafttweaker.mc1120.events.handling(crafttweaker.mc1120.events.handling) net.minecraftforge.event.entity.player(net.minecraftforge.event.entity.player) EntityStruckByLightningEvent(net.minecraftforge.event.entity.EntityStruckByLightningEvent) MCEntity(crafttweaker.mc1120.entity.MCEntity) crafttweaker(crafttweaker) MinecraftForge(net.minecraftforge.common.MinecraftForge) IItemStack(crafttweaker.api.item.IItemStack) CraftTweakerMC(crafttweaker.api.minecraft.CraftTweakerMC) EntityPlayer(net.minecraft.entity.player.EntityPlayer) LOWEST(net.minecraftforge.fml.common.eventhandler.EventPriority.LOWEST) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent) MCOreDictEntry(crafttweaker.mc1120.oredict.MCOreDictEntry) MCItemStack(crafttweaker.mc1120.item.MCItemStack) InventoryCrafting(net.minecraft.inventory.InventoryCrafting) PlayerBrewedPotionEvent(net.minecraftforge.event.brewing.PlayerBrewedPotionEvent) MCEntity(crafttweaker.mc1120.entity.MCEntity) CraftTweakerMC(crafttweaker.api.minecraft.CraftTweakerMC) MCEntity(crafttweaker.mc1120.entity.MCEntity) MCDamageSource(crafttweaker.mc1120.damage.MCDamageSource) MCItemStack(crafttweaker.mc1120.item.MCItemStack) IDamageSource(crafttweaker.api.damage.IDamageSource) EntityPlayer(net.minecraft.entity.player.EntityPlayer) ItemStack(net.minecraft.item.ItemStack) IItemStack(crafttweaker.api.item.IItemStack) MCItemStack(crafttweaker.mc1120.item.MCItemStack) EntityItem(net.minecraft.entity.item.EntityItem) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Aggregations

IItemStack (crafttweaker.api.item.IItemStack)2 CraftTweakerMC (crafttweaker.api.minecraft.CraftTweakerMC)2 ItemStack (net.minecraft.item.ItemStack)2 crafttweaker (crafttweaker)1 IDamageSource (crafttweaker.api.damage.IDamageSource)1 crafttweaker.api.entity (crafttweaker.api.entity)1 IPlayer (crafttweaker.api.player.IPlayer)1 CraftingInfo (crafttweaker.api.recipes.CraftingInfo)1 crafttweaker.mc1120.brackets (crafttweaker.mc1120.brackets)1 MCDamageSource (crafttweaker.mc1120.damage.MCDamageSource)1 MCEntity (crafttweaker.mc1120.entity.MCEntity)1 crafttweaker.mc1120.events.handling (crafttweaker.mc1120.events.handling)1 MCFurnaceManager (crafttweaker.mc1120.furnace.MCFurnaceManager)1 MCItemStack (crafttweaker.mc1120.item.MCItemStack)1 MCOreDictEntry (crafttweaker.mc1120.oredict.MCOreDictEntry)1 crafttweaker.mc1120.recipes (crafttweaker.mc1120.recipes)1 CTRecipe (gregtech.api.recipes.crafttweaker.CTRecipe)1 java.util (java.util)1 Nullable (javax.annotation.Nullable)1 net.minecraft.entity (net.minecraft.entity)1