• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / CommonCapabilities / #479006779

28 Dec 2024 02:23PM UTC coverage: 39.947% (+0.2%) from 39.763%
#479006779

push

github

rubensworks
Update to MC 1.21.4

908 of 2273 relevant lines covered (39.95%)

0.4 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/org/cyclops/commoncapabilities/modcompat/vanilla/VanillaModCompat.java
1
package org.cyclops.commoncapabilities.modcompat.vanilla;
2

3
import net.minecraft.core.Direction;
4
import net.minecraft.world.entity.EntityType;
5
import net.minecraft.world.entity.decoration.GlowItemFrame;
6
import net.minecraft.world.entity.decoration.ItemFrame;
7
import net.minecraft.world.entity.item.ItemEntity;
8
import net.minecraft.world.inventory.CraftingContainer;
9
import net.minecraft.world.item.BucketItem;
10
import net.minecraft.world.item.ItemStack;
11
import net.minecraft.world.item.crafting.RecipeType;
12
import net.minecraft.world.item.crafting.SingleRecipeInput;
13
import net.minecraft.world.item.crafting.SmithingRecipeInput;
14
import net.minecraft.world.level.ItemLike;
15
import net.minecraft.world.level.block.*;
16
import net.minecraft.world.level.block.entity.*;
17
import net.neoforged.neoforge.capabilities.BaseCapability;
18
import net.neoforged.neoforge.capabilities.Capabilities;
19
import net.neoforged.neoforge.capabilities.IBlockCapabilityProvider;
20
import net.neoforged.neoforge.capabilities.ICapabilityProvider;
21
import net.neoforged.neoforge.energy.IEnergyStorage;
22
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
23
import net.neoforged.neoforge.items.IItemHandler;
24
import org.cyclops.commoncapabilities.CommonCapabilities;
25
import org.cyclops.commoncapabilities.Reference;
26
import org.cyclops.commoncapabilities.RegistryEntries;
27
import org.cyclops.commoncapabilities.api.capability.recipehandler.IRecipeHandler;
28
import org.cyclops.commoncapabilities.api.capability.temperature.ITemperature;
29
import org.cyclops.commoncapabilities.api.capability.work.IWorker;
30
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemEnergyStorage;
31
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemFrameEnergyStorage;
32
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFluidHandler;
33
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFrameFluidHandler;
34
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.*;
35
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaBrewingStandRecipeHandler;
36
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaRecipeTypeRecipeHandler;
37
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaAbstractFurnaceTemperature;
38
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaCampfireTemperature;
39
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaUniversalBucketTemperature;
40
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaAbstractFurnaceWorker;
41
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaBrewingStandWorker;
42
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaCampfireWorker;
43
import org.cyclops.cyclopscore.modcompat.ICompatInitializer;
44
import org.cyclops.cyclopscore.modcompat.IModCompat;
45
import org.cyclops.cyclopscore.modcompat.capabilities.CapabilityConstructorRegistry;
46
import org.cyclops.cyclopscore.modcompat.capabilities.IBlockCapabilityConstructor;
47
import org.cyclops.cyclopscore.modcompat.capabilities.ICapabilityConstructor;
48

49
/**
50
 * Capabilities for Vanilla.
51
 * @author rubensworks
52
 */
53
public class VanillaModCompat implements IModCompat {
×
54

55
    @Override
56
    public String getId() {
57
        return Reference.MOD_VANILLA;
×
58
    }
59

60
    @Override
61
    public boolean isEnabledDefault() {
62
        return true;
×
63
    }
64

65
    @Override
66
    public String getComment() {
67
        return "Furnace and Brewing stand capabilities.";
×
68
    }
69

70
    @Override
71
    public ICompatInitializer createInitializer() {
72
        return (mod) -> {
×
73
            CapabilityConstructorRegistry registry = CommonCapabilities._instance.getCapabilityConstructorRegistry();
×
74
            // Worker
75
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
76
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, IWorker, BlockEntityType<FurnaceBlockEntity>>() {
×
77
                        @Override
78
                        public BaseCapability<IWorker, Direction> getCapability() {
79
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
80
                        }
81

82
                        @Override
83
                        public ICapabilityProvider<FurnaceBlockEntity, Direction, IWorker> createProvider(BlockEntityType<FurnaceBlockEntity> capabilityKey) {
84
                            return (blockEntity, side) -> new VanillaAbstractFurnaceWorker(blockEntity);
×
85
                        }
86
                    });
87
            registry.registerBlockEntity(() -> BlockEntityType.BLAST_FURNACE,
×
88
                    new ICapabilityConstructor<BlastFurnaceBlockEntity, Direction, IWorker, BlockEntityType<BlastFurnaceBlockEntity>>() {
×
89
                        @Override
90
                        public BaseCapability<IWorker, Direction> getCapability() {
91
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
92
                        }
93

94
                        @Override
95
                        public ICapabilityProvider<BlastFurnaceBlockEntity, Direction, IWorker> createProvider(BlockEntityType<BlastFurnaceBlockEntity> capabilityKey) {
96
                            return (blockEntity, side) -> new VanillaAbstractFurnaceWorker(blockEntity);
×
97
                        }
98
                    });
99
            registry.registerBlockEntity(() -> BlockEntityType.SMOKER,
×
100
                    new ICapabilityConstructor<SmokerBlockEntity, Direction, IWorker, BlockEntityType<SmokerBlockEntity>>() {
×
101
                        @Override
102
                        public BaseCapability<IWorker, Direction> getCapability() {
103
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
104
                        }
105

106
                        @Override
107
                        public ICapabilityProvider<SmokerBlockEntity, Direction, IWorker> createProvider(BlockEntityType<SmokerBlockEntity> capabilityKey) {
108
                            return (blockEntity, side) -> new VanillaAbstractFurnaceWorker(blockEntity);
×
109
                        }
110
                    });
111
            registry.registerBlockEntity(() -> BlockEntityType.BREWING_STAND,
×
112
                    new ICapabilityConstructor<BrewingStandBlockEntity, Direction, IWorker, BlockEntityType<BrewingStandBlockEntity>>() {
×
113
                        @Override
114
                        public BaseCapability<IWorker, Direction> getCapability() {
115
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
116
                        }
117

118
                        @Override
119
                        public ICapabilityProvider<BrewingStandBlockEntity, Direction, IWorker> createProvider(BlockEntityType<BrewingStandBlockEntity> capabilityKey) {
120
                            return (blockEntity, side) -> new VanillaBrewingStandWorker(blockEntity);
×
121
                        }
122
                    });
123
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
124
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, IWorker, BlockEntityType<CampfireBlockEntity>>() {
×
125
                        @Override
126
                        public BaseCapability<IWorker, Direction> getCapability() {
127
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
128
                        }
129

130
                        @Override
131
                        public ICapabilityProvider<CampfireBlockEntity, Direction, IWorker> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
132
                            return (blockEntity, side) -> new VanillaCampfireWorker(blockEntity);
×
133
                        }
134
                    });
135

136
            // Temperature
137
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
138
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, ITemperature, BlockEntityType<FurnaceBlockEntity>>() {
×
139
                        @Override
140
                        public BaseCapability<ITemperature, Direction> getCapability() {
141
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
142
                        }
143

144
                        @Override
145
                        public ICapabilityProvider<FurnaceBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<FurnaceBlockEntity> capabilityKey) {
146
                            return (blockEntity, side) -> new VanillaAbstractFurnaceTemperature(blockEntity);
×
147
                        }
148
                    });
149
            registry.registerBlockEntity(() -> BlockEntityType.BLAST_FURNACE,
×
150
                    new ICapabilityConstructor<BlastFurnaceBlockEntity, Direction, ITemperature, BlockEntityType<BlastFurnaceBlockEntity>>() {
×
151
                        @Override
152
                        public BaseCapability<ITemperature, Direction> getCapability() {
153
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
154
                        }
155

156
                        @Override
157
                        public ICapabilityProvider<BlastFurnaceBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<BlastFurnaceBlockEntity> capabilityKey) {
158
                            return (blockEntity, side) -> new VanillaAbstractFurnaceTemperature(blockEntity);
×
159
                        }
160
                    });
161
            registry.registerBlockEntity(() -> BlockEntityType.SMOKER,
×
162
                    new ICapabilityConstructor<SmokerBlockEntity, Direction, ITemperature, BlockEntityType<SmokerBlockEntity>>() {
×
163
                        @Override
164
                        public BaseCapability<ITemperature, Direction> getCapability() {
165
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
166
                        }
167

168
                        @Override
169
                        public ICapabilityProvider<SmokerBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<SmokerBlockEntity> capabilityKey) {
170
                            return (blockEntity, side) -> new VanillaAbstractFurnaceTemperature(blockEntity);
×
171
                        }
172
                    });
173
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
174
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, ITemperature, BlockEntityType<CampfireBlockEntity>>() {
×
175
                        @Override
176
                        public BaseCapability<ITemperature, Direction> getCapability() {
177
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
178
                        }
179

180
                        @Override
181
                        public ICapabilityProvider<CampfireBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
182
                            return (blockEntity, side) -> new VanillaCampfireTemperature(blockEntity);
×
183
                        }
184
                    });
185
            registry.registerInheritableItem(BucketItem.class, new ICapabilityConstructor<ItemStack, Void, ITemperature, BucketItem>() {
×
186
                @Override
187
                public BaseCapability<ITemperature, Void> getCapability() {
188
                    return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.ITEM;
×
189
                }
190

191
                @Override
192
                public ICapabilityProvider<ItemStack, Void, ITemperature> createProvider(BucketItem capabilityKey) {
193
                    return (itemStack, context) -> new VanillaUniversalBucketTemperature(itemStack);
×
194
                }
195
            });
196

197

198
            // ItemHandler
199
            ICapabilityConstructor<ItemStack, Void, IItemHandler, ItemLike> shulkerboxConstructor = new ICapabilityConstructor<>() {
×
200
                @Override
201
                public BaseCapability<IItemHandler, Void> getCapability() {
202
                    return Capabilities.ItemHandler.ITEM;
×
203
                }
204

205
                @Override
206
                public ICapabilityProvider<ItemStack, Void, IItemHandler> createProvider(ItemLike host) {
207
                    return (itemStack, context) -> new VanillaItemShulkerBoxItemHandler(itemStack);
×
208
                }
209
            };
210
            registry.registerItem(RegistryEntries.ITEM_SHULKER_BOX::get, shulkerboxConstructor);
×
211
            registry.registerItem(RegistryEntries.ITEM_WHITE_SHULKER_BOX::get, shulkerboxConstructor);
×
212
            registry.registerItem(RegistryEntries.ITEM_ORANGE_SHULKER_BOX::get, shulkerboxConstructor);
×
213
            registry.registerItem(RegistryEntries.ITEM_MAGENTA_SHULKER_BOX::get, shulkerboxConstructor);
×
214
            registry.registerItem(RegistryEntries.ITEM_LIGHT_BLUE_SHULKER_BOX::get, shulkerboxConstructor);
×
215
            registry.registerItem(RegistryEntries.ITEM_YELLOW_SHULKER_BOX::get, shulkerboxConstructor);
×
216
            registry.registerItem(RegistryEntries.ITEM_LIME_SHULKER_BOX::get, shulkerboxConstructor);
×
217
            registry.registerItem(RegistryEntries.ITEM_PINK_SHULKER_BOX::get, shulkerboxConstructor);
×
218
            registry.registerItem(RegistryEntries.ITEM_GRAY_SHULKER_BOX::get, shulkerboxConstructor);
×
219
            registry.registerItem(RegistryEntries.ITEM_LIGHT_GRAY_SHULKER_BOX::get, shulkerboxConstructor);
×
220
            registry.registerItem(RegistryEntries.ITEM_CYAN_SHULKER_BOX::get, shulkerboxConstructor);
×
221
            registry.registerItem(RegistryEntries.ITEM_PURPLE_SHULKER_BOX::get, shulkerboxConstructor);
×
222
            registry.registerItem(RegistryEntries.ITEM_BLUE_SHULKER_BOX::get, shulkerboxConstructor);
×
223
            registry.registerItem(RegistryEntries.ITEM_BROWN_SHULKER_BOX::get, shulkerboxConstructor);
×
224
            registry.registerItem(RegistryEntries.ITEM_GREEN_SHULKER_BOX::get, shulkerboxConstructor);
×
225
            registry.registerItem(RegistryEntries.ITEM_RED_SHULKER_BOX::get, shulkerboxConstructor);
×
226
            registry.registerItem(RegistryEntries.ITEM_BLACK_SHULKER_BOX::get, shulkerboxConstructor);
×
227
            registry.registerItem(RegistryEntries.ITEM_BUNDLE::get, new ICapabilityConstructor<ItemStack, Void, IItemHandler, ItemLike>() {
×
228
                @Override
229
                public BaseCapability<IItemHandler, Void> getCapability() {
230
                    return Capabilities.ItemHandler.ITEM;
×
231
                }
232

233
                @Override
234
                public ICapabilityProvider<ItemStack, Void, IItemHandler> createProvider(ItemLike host) {
235
                    return (itemStack, context) -> new VanillaItemBundleItemHandler(itemStack);
×
236
                }
237
            });
238
            registry.registerEntity(() -> EntityType.ITEM,
×
239
                    new ICapabilityConstructor<ItemEntity, Void, IItemHandler, EntityType<ItemEntity>>() {
×
240
                        @Override
241
                        public BaseCapability<IItemHandler, Void> getCapability() {
242
                            return Capabilities.ItemHandler.ENTITY;
×
243
                        }
244

245
                        @Override
246
                        public ICapabilityProvider<ItemEntity, Void, IItemHandler> createProvider(EntityType<ItemEntity> host) {
247
                            return (entity, context) -> {
×
248
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
249
                                    return new VanillaEntityItemItemHandler(entity);
×
250
                                }
251
                                return null;
×
252
                            };
253
                        }
254
                    });
255
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
256
                    new ICapabilityConstructor<ItemFrame, Void, IItemHandler, EntityType<ItemFrame>>() {
×
257
                        @Override
258
                        public BaseCapability<IItemHandler, Void> getCapability() {
259
                            return Capabilities.ItemHandler.ENTITY;
×
260
                        }
261

262
                        @Override
263
                        public ICapabilityProvider<ItemFrame, Void, IItemHandler> createProvider(EntityType<ItemFrame> capabilityKey) {
264
                            return (entity, context) -> {
×
265
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
266
                                    return new VanillaEntityItemFrameItemHandler(entity);
×
267
                                }
268
                                return null;
×
269
                            };
270
                        }
271
                    });
272
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
273
                    new ICapabilityConstructor<GlowItemFrame, Void, IItemHandler, EntityType<GlowItemFrame>>() {
×
274
                        @Override
275
                        public BaseCapability<IItemHandler, Void> getCapability() {
276
                            return Capabilities.ItemHandler.ENTITY;
×
277
                        }
278

279
                        @Override
280
                        public ICapabilityProvider<GlowItemFrame, Void, IItemHandler> createProvider(EntityType<GlowItemFrame> capabilityKey) {
281
                            return (entity, context) -> {
×
282
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
283
                                    return new VanillaEntityItemFrameItemHandler(entity);
×
284
                                }
285
                                return null;
×
286
                            };
287
                        }
288
                    });
289
            registry.registerBlock(() -> (ComposterBlock) Blocks.COMPOSTER,
×
290
                    new IBlockCapabilityConstructor<ComposterBlock, Direction, IItemHandler, ComposterBlock>() {
×
291
                        @Override
292
                        public BaseCapability<IItemHandler, Direction> getCapability() {
293
                            return Capabilities.ItemHandler.BLOCK;
×
294
                        }
295

296
                        @Override
297
                        public IBlockCapabilityProvider<IItemHandler, Direction> createProvider(ComposterBlock capabilityKey) {
298
                            return (level, pos, state, blockEntity, side) -> new VanillaBlockComposterItemHandler(state, level, pos, side);
×
299
                        }
300
                    });
301

302
            // FluidHandler
303
            registry.registerEntity(() -> EntityType.ITEM,
×
304
                    new ICapabilityConstructor<ItemEntity, Direction, IFluidHandler, EntityType<ItemEntity>>() {
×
305
                        @Override
306
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
307
                            return Capabilities.FluidHandler.ENTITY;
×
308
                        }
309

310
                        @Override
311
                        public ICapabilityProvider<ItemEntity, Direction, IFluidHandler> createProvider(EntityType<ItemEntity> capabilityKey) {
312
                            return (entity, context) -> {
×
313
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
314
                                    new VanillaEntityItemFluidHandler(entity);
×
315
                                }
316
                                return null;
×
317
                            };
318
                        }
319
                    });
320
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
321
                    new ICapabilityConstructor<ItemFrame, Direction, IFluidHandler, EntityType<ItemFrame>>() {
×
322
                        @Override
323
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
324
                            return Capabilities.FluidHandler.ENTITY;
×
325
                        }
326

327
                        @Override
328
                        public ICapabilityProvider<ItemFrame, Direction, IFluidHandler> createProvider(EntityType<ItemFrame> capabilityKey) {
329
                            return (entity, context) -> {
×
330
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
331
                                    new VanillaEntityItemFrameFluidHandler(entity);
×
332
                                }
333
                                return null;
×
334
                            };
335
                        }
336
                    });
337
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
338
                    new ICapabilityConstructor<GlowItemFrame, Direction, IFluidHandler, EntityType<GlowItemFrame>>() {
×
339
                        @Override
340
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
341
                            return Capabilities.FluidHandler.ENTITY;
×
342
                        }
343

344
                        @Override
345
                        public ICapabilityProvider<GlowItemFrame, Direction, IFluidHandler> createProvider(EntityType<GlowItemFrame> capabilityKey) {
346
                            return (entity, context) -> {
×
347
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
348
                                    new VanillaEntityItemFrameFluidHandler(entity);
×
349
                                }
350
                                return null;
×
351
                            };
352
                        }
353
                    });
354

355
            // EnergyStorage
356
            registry.registerEntity(() -> EntityType.ITEM,
×
357
                    new ICapabilityConstructor<ItemEntity, Direction, IEnergyStorage, EntityType<ItemEntity>>() {
×
358
                        @Override
359
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
360
                            return Capabilities.EnergyStorage.ENTITY;
×
361
                        }
362

363
                        @Override
364
                        public ICapabilityProvider<ItemEntity, Direction, IEnergyStorage> createProvider(EntityType<ItemEntity> capabilityKey) {
365
                            return (entity, context) -> {
×
366
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
367
                                    new VanillaEntityItemEnergyStorage(entity);
×
368
                                }
369
                                return null;
×
370
                            };
371
                        }
372
                    });
373
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
374
                    new ICapabilityConstructor<ItemFrame, Direction, IEnergyStorage, EntityType<ItemFrame>>() {
×
375
                        @Override
376
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
377
                            return Capabilities.EnergyStorage.ENTITY;
×
378
                        }
379

380
                        @Override
381
                        public ICapabilityProvider<ItemFrame, Direction, IEnergyStorage> createProvider(EntityType<ItemFrame> capabilityKey) {
382
                            return (entity, context) -> {
×
383
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
384
                                    new VanillaEntityItemFrameEnergyStorage(entity);
×
385
                                }
386
                                return null;
×
387
                            };
388
                        }
389
                    });
390
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
391
                    new ICapabilityConstructor<GlowItemFrame, Direction, IEnergyStorage, EntityType<GlowItemFrame>>() {
×
392
                        @Override
393
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
394
                            return Capabilities.EnergyStorage.ENTITY;
×
395
                        }
396

397
                        @Override
398
                        public ICapabilityProvider<GlowItemFrame, Direction, IEnergyStorage> createProvider(EntityType<GlowItemFrame> capabilityKey) {
399
                            return (entity, context) -> {
×
400
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
401
                                    new VanillaEntityItemFrameEnergyStorage(entity);
×
402
                                }
403
                                return null;
×
404
                            };
405
                        }
406
                    });
407

408
            // RecipeHandler
409
            registry.registerBlockEntity(() -> BlockEntityType.BREWING_STAND,
×
410
                    new ICapabilityConstructor<BrewingStandBlockEntity, Direction, IRecipeHandler, BlockEntityType<BrewingStandBlockEntity>>() {
×
411
                        @Override
412
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
413
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
414
                        }
415

416
                        @Override
417
                        public ICapabilityProvider<BrewingStandBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<BrewingStandBlockEntity> capabilityKey) {
418
                            return (blockEntity, side) -> VanillaBrewingStandRecipeHandler.getInstance();
×
419
                        }
420
                    });
421
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
422
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, IRecipeHandler, BlockEntityType<FurnaceBlockEntity>>() {
×
423
                        @Override
424
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
425
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
426
                        }
427

428
                        @Override
429
                        public ICapabilityProvider<FurnaceBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<FurnaceBlockEntity> capabilityKey) {
430
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
431
                                    RecipeType.SMELTING, (size) -> size == 1, (c) -> new SingleRecipeInput(c.getItem(0)), true);
×
432
                        }
433
                    });
434
            registry.registerBlockEntity(() -> BlockEntityType.BLAST_FURNACE,
×
435
                    new ICapabilityConstructor<BlastFurnaceBlockEntity, Direction, IRecipeHandler, BlockEntityType<BlastFurnaceBlockEntity>>() {
×
436
                        @Override
437
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
438
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
439
                        }
440

441
                        @Override
442
                        public ICapabilityProvider<BlastFurnaceBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<BlastFurnaceBlockEntity> capabilityKey) {
443
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
444
                                    RecipeType.BLASTING, (size) -> size == 1, (c) -> new SingleRecipeInput(c.getItem(0)), true);
×
445
                        }
446
                    });
447
            registry.registerBlockEntity(() -> BlockEntityType.SMOKER,
×
448
                    new ICapabilityConstructor<SmokerBlockEntity, Direction, IRecipeHandler, BlockEntityType<SmokerBlockEntity>>() {
×
449
                        @Override
450
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
451
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
452
                        }
453

454
                        @Override
455
                        public ICapabilityProvider<SmokerBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<SmokerBlockEntity> capabilityKey) {
456
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
457
                                    RecipeType.SMOKING, (size) -> size == 1, (c) -> new SingleRecipeInput(c.getItem(0)), true);
×
458
                        }
459
                    });
460
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
461
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, IRecipeHandler, BlockEntityType<CampfireBlockEntity>>() {
×
462
                        @Override
463
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
464
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
465
                        }
466

467
                        @Override
468
                        public ICapabilityProvider<CampfireBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
469
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
470
                                    RecipeType.CAMPFIRE_COOKING, (size) -> size == 1, (c) -> new SingleRecipeInput(c.getItem(0)), true);
×
471
                        }
472
                    });
473
            registry.registerInheritableBlock(CraftingTableBlock.class,
×
474
                    new IBlockCapabilityConstructor<ComposterBlock, Direction, IRecipeHandler, Block>() {
×
475
                        @Override
476
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
477
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
478
                        }
479

480
                        @Override
481
                        public IBlockCapabilityProvider<IRecipeHandler, Direction> createProvider(Block capabilityKey) {
482
                            return (level, pos, state, blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(() -> level,
×
483
                                    RecipeType.CRAFTING, (size) -> size > 0, CraftingContainer::asCraftInput, false);
×
484
                        }
485
                    });
486
            registry.registerBlock(() -> (StonecutterBlock) Blocks.STONECUTTER,
×
487
                    new IBlockCapabilityConstructor<StonecutterBlock, Direction, IRecipeHandler, StonecutterBlock>() {
×
488
                        @Override
489
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
490
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
491
                        }
492

493
                        @Override
494
                        public IBlockCapabilityProvider<IRecipeHandler, Direction> createProvider(StonecutterBlock capabilityKey) {
495
                            return (level, pos, state, blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(() -> level,
×
496
                                    RecipeType.STONECUTTING, (size) -> size == 1, (c) -> new SingleRecipeInput(c.getItem(0)), true);
×
497
                        }
498
                    });
499
            registry.registerBlock(() -> (SmithingTableBlock) Blocks.SMITHING_TABLE,
×
500
                    new IBlockCapabilityConstructor<StonecutterBlock, Direction, IRecipeHandler, SmithingTableBlock>() {
×
501
                        @Override
502
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
503
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
504
                        }
505

506
                        @Override
507
                        public IBlockCapabilityProvider<IRecipeHandler, Direction> createProvider(SmithingTableBlock capabilityKey) {
508
                            return (level, pos, state, blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(() -> level,
×
509
                                    RecipeType.SMITHING, (size) -> size == 1, (c) -> new SmithingRecipeInput(c.getItem(0), c.getItem(1), c.getItem(2)), true);
×
510
                        }
511
                    });
512
        };
×
513
    }
514

515
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc