net.minecraft.util.DefaultedList#net.minecraft.recipe.RecipeType源码实例Demo

下面列出了net.minecraft.util.DefaultedList#net.minecraft.recipe.RecipeType 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private static <T extends Recipe<?>> RecipeType<T> registerType(String id) {
    return Registry.register(Registry.RECIPE_TYPE, new Identifier(Constants.MOD_ID, id), new RecipeType<T>() {
        public String toString() {
            return id;
        }
    });
}
 
@Override
public List<Recipe<?>> getAllMatching(RecipeType type, Identifier output)
{
    Map<Identifier, Recipe<?>> typeRecipes = recipes.get(type);
    if (typeRecipes.containsKey(output)) return Collections.singletonList(typeRecipes.get(output));
    return Lists.newArrayList(typeRecipes.values().stream().filter(
            r -> Registry.ITEM.getId(r.getOutput().getItem()).equals(output)).collect(Collectors.toList()));
}
 
源代码3 项目: Galacticraft-Rewoven   文件: FabricationRecipe.java
@Override
public RecipeType<?> getType() {
    return GalacticraftRecipes.FABRICATION_TYPE;
}
 
@Override
public RecipeType<?> getType() {
    return GalacticraftRecipes.SHAPED_COMPRESSING_TYPE;
}
 
源代码5 项目: the-hallow   文件: FluidRecipe.java
@Override
public RecipeType<?> getType() {
	return type;
}
 
源代码6 项目: the-hallow   文件: InfusionRecipe.java
@Override
public RecipeType<?> getType() {
	return Type.INSTANCE;
}
 
源代码7 项目: carpet-extra   文件: DropperBlock_craftingMixin.java
@Inject(method = "dispense", at = @At("HEAD"), cancellable = true)
private void tryCraft(World world_1, BlockPos blockPos_1, CallbackInfo ci)
{
    if (!CarpetExtraSettings.autoCraftingDropper) return;
    BlockPos front = blockPos_1.offset(world_1.getBlockState(blockPos_1).get(DispenserBlock.FACING));
    if (world_1.getBlockState(front).getBlock() != Blocks.CRAFTING_TABLE) return;
    DispenserBlockEntity dispenserBlockEntity_1 = (DispenserBlockEntity) world_1.getBlockEntity(blockPos_1);
    if (dispenserBlockEntity_1 == null) return;
    CraftingInventory craftingInventory = new CraftingInventory(new VoidContainer(), 3, 3);
    for (int i=0; i < 9; i++) craftingInventory.setInvStack(i, dispenserBlockEntity_1.getInvStack(i));
    CraftingRecipe recipe = world_1.getRecipeManager().getFirstMatch(RecipeType.CRAFTING, craftingInventory, world_1).orElse(null);
    if (recipe == null) return;
    // crafting it
    Vec3d target = new Vec3d(front).add(0.5, 0.2, 0.5);
    ItemStack result = recipe.craft(craftingInventory);
    spawn(world_1, target.x, target.y, target.z, result);

    // copied from CraftingResultSlot.onTakeItem()
    DefaultedList<ItemStack> defaultedList_1 = world_1.getRecipeManager().getRemainingStacks(RecipeType.CRAFTING, craftingInventory, world_1);
    for(int int_1 = 0; int_1 < defaultedList_1.size(); ++int_1) {
        ItemStack itemStack_2 = dispenserBlockEntity_1.getInvStack(int_1);
        ItemStack itemStack_3 = defaultedList_1.get(int_1);
        if (!itemStack_2.isEmpty()) {
            dispenserBlockEntity_1.takeInvStack(int_1, 1);
            itemStack_2 = dispenserBlockEntity_1.getInvStack(int_1);
        }

        if (!itemStack_3.isEmpty()) {
            if (itemStack_2.isEmpty()) {
                dispenserBlockEntity_1.setInvStack(int_1, itemStack_3);
            } else if (ItemStack.areItemsEqualIgnoreDamage(itemStack_2, itemStack_3) && ItemStack.areTagsEqual(itemStack_2, itemStack_3)) {
                itemStack_3.increment(itemStack_2.getCount());
                dispenserBlockEntity_1.setInvStack(int_1, itemStack_3);
            } else {
                spawn(world_1, target.x, target.y, target.z, itemStack_3);
            }
        }
    }
    Vec3d vec = new Vec3d(blockPos_1).add(0.5, 0.5, 0.5);
    ServerWorld world = (ServerWorld) world_1;
    world.playSound(null, blockPos_1, SoundEvents.ENTITY_VILLAGER_WORK_MASON, SoundCategory.BLOCKS, 0.2f, 2.0f);
    ci.cancel();
}
 
源代码8 项目: fabric-carpet   文件: RecipeManagerInterface.java
List<Recipe<?>> getAllMatching(RecipeType type, Identifier output);