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

CyclopsMC / CommonCapabilities / #479006705

21 Mar 2024 03:43PM UTC coverage: 39.629% (-0.3%) from 39.919%
#479006705

push

github

rubensworks
Fix failing unit tests

877 of 2213 relevant lines covered (39.63%)

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.item.BucketItem;
9
import net.minecraft.world.item.ItemStack;
10
import net.minecraft.world.item.crafting.RecipeType;
11
import net.minecraft.world.level.ItemLike;
12
import net.minecraft.world.level.block.Block;
13
import net.minecraft.world.level.block.Blocks;
14
import net.minecraft.world.level.block.ComposterBlock;
15
import net.minecraft.world.level.block.CraftingTableBlock;
16
import net.minecraft.world.level.block.StonecutterBlock;
17
import net.minecraft.world.level.block.entity.BlastFurnaceBlockEntity;
18
import net.minecraft.world.level.block.entity.BlockEntityType;
19
import net.minecraft.world.level.block.entity.BrewingStandBlockEntity;
20
import net.minecraft.world.level.block.entity.CampfireBlockEntity;
21
import net.minecraft.world.level.block.entity.FurnaceBlockEntity;
22
import net.minecraft.world.level.block.entity.SmokerBlockEntity;
23
import net.neoforged.neoforge.capabilities.BaseCapability;
24
import net.neoforged.neoforge.capabilities.Capabilities;
25
import net.neoforged.neoforge.capabilities.IBlockCapabilityProvider;
26
import net.neoforged.neoforge.capabilities.ICapabilityProvider;
27
import net.neoforged.neoforge.energy.IEnergyStorage;
28
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
29
import net.neoforged.neoforge.items.IItemHandler;
30
import org.cyclops.commoncapabilities.CommonCapabilities;
31
import org.cyclops.commoncapabilities.Reference;
32
import org.cyclops.commoncapabilities.RegistryEntries;
33
import org.cyclops.commoncapabilities.api.capability.recipehandler.IRecipeHandler;
34
import org.cyclops.commoncapabilities.api.capability.temperature.ITemperature;
35
import org.cyclops.commoncapabilities.api.capability.work.IWorker;
36
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemEnergyStorage;
37
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemFrameEnergyStorage;
38
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFluidHandler;
39
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFrameFluidHandler;
40
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaBlockComposterItemHandler;
41
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaEntityItemFrameItemHandler;
42
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaEntityItemItemHandler;
43
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaItemBundleItemHandler;
44
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaItemShulkerBoxItemHandler;
45
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaBrewingStandRecipeHandler;
46
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaRecipeTypeRecipeHandler;
47
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaAbstractFurnaceTemperature;
48
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaCampfireTemperature;
49
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaUniversalBucketTemperature;
50
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaAbstractFurnaceWorker;
51
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaBrewingStandWorker;
52
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaCampfireWorker;
53
import org.cyclops.cyclopscore.modcompat.ICompatInitializer;
54
import org.cyclops.cyclopscore.modcompat.IModCompat;
55
import org.cyclops.cyclopscore.modcompat.capabilities.CapabilityConstructorRegistry;
56
import org.cyclops.cyclopscore.modcompat.capabilities.IBlockCapabilityConstructor;
57
import org.cyclops.cyclopscore.modcompat.capabilities.ICapabilityConstructor;
58

59
/**
60
 * Capabilities for Vanilla.
61
 * @author rubensworks
62
 */
63
public class VanillaModCompat implements IModCompat {
×
64

65
    @Override
66
    public String getId() {
67
        return Reference.MOD_VANILLA;
×
68
    }
69

70
    @Override
71
    public boolean isEnabledDefault() {
72
        return true;
×
73
    }
74

75
    @Override
76
    public String getComment() {
77
        return "Furnace and Brewing stand capabilities.";
×
78
    }
79

80
    @Override
81
    public ICompatInitializer createInitializer() {
82
        return () -> {
×
83
            CapabilityConstructorRegistry registry = CommonCapabilities._instance.getCapabilityConstructorRegistry();
×
84
            // Worker
85
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
86
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, IWorker, BlockEntityType<FurnaceBlockEntity>>() {
×
87
                        @Override
88
                        public BaseCapability<IWorker, Direction> getCapability() {
89
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
90
                        }
91

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

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

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

128
                        @Override
129
                        public ICapabilityProvider<BrewingStandBlockEntity, Direction, IWorker> createProvider(BlockEntityType<BrewingStandBlockEntity> capabilityKey) {
130
                            return (blockEntity, side) -> new VanillaBrewingStandWorker(blockEntity);
×
131
                        }
132
                    });
133
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
134
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, IWorker, BlockEntityType<CampfireBlockEntity>>() {
×
135
                        @Override
136
                        public BaseCapability<IWorker, Direction> getCapability() {
137
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Worker.BLOCK;
×
138
                        }
139

140
                        @Override
141
                        public ICapabilityProvider<CampfireBlockEntity, Direction, IWorker> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
142
                            return (blockEntity, side) -> new VanillaCampfireWorker(blockEntity);
×
143
                        }
144
                    });
145

146
            // Temperature
147
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
148
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, ITemperature, BlockEntityType<FurnaceBlockEntity>>() {
×
149
                        @Override
150
                        public BaseCapability<ITemperature, Direction> getCapability() {
151
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
152
                        }
153

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

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

178
                        @Override
179
                        public ICapabilityProvider<SmokerBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<SmokerBlockEntity> capabilityKey) {
180
                            return (blockEntity, side) -> new VanillaAbstractFurnaceTemperature(blockEntity);
×
181
                        }
182
                    });
183
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
184
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, ITemperature, BlockEntityType<CampfireBlockEntity>>() {
×
185
                        @Override
186
                        public BaseCapability<ITemperature, Direction> getCapability() {
187
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.BLOCK;
×
188
                        }
189

190
                        @Override
191
                        public ICapabilityProvider<CampfireBlockEntity, Direction, ITemperature> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
192
                            return (blockEntity, side) -> new VanillaCampfireTemperature(blockEntity);
×
193
                        }
194
                    });
195
            registry.registerInheritableItem(BucketItem.class, new ICapabilityConstructor<ItemStack, Void, ITemperature, BucketItem>() {
×
196
                @Override
197
                public BaseCapability<ITemperature, Void> getCapability() {
198
                    return org.cyclops.commoncapabilities.api.capability.Capabilities.Temperature.ITEM;
×
199
                }
200

201
                @Override
202
                public ICapabilityProvider<ItemStack, Void, ITemperature> createProvider(BucketItem capabilityKey) {
203
                    return (itemStack, context) -> new VanillaUniversalBucketTemperature(itemStack);
×
204
                }
205
            });
206

207

208
            // ItemHandler
209
            ICapabilityConstructor<ItemStack, Void, IItemHandler, ItemLike> shulkerboxConstructor = new ICapabilityConstructor<>() {
×
210
                @Override
211
                public BaseCapability<IItemHandler, Void> getCapability() {
212
                    return Capabilities.ItemHandler.ITEM;
×
213
                }
214

215
                @Override
216
                public ICapabilityProvider<ItemStack, Void, IItemHandler> createProvider(ItemLike host) {
217
                    return (itemStack, context) -> new VanillaItemShulkerBoxItemHandler(itemStack);
×
218
                }
219
            };
220
            registry.registerItem(RegistryEntries.ITEM_SHULKER_BOX::get, shulkerboxConstructor);
×
221
            registry.registerItem(RegistryEntries.ITEM_WHITE_SHULKER_BOX::get, shulkerboxConstructor);
×
222
            registry.registerItem(RegistryEntries.ITEM_ORANGE_SHULKER_BOX::get, shulkerboxConstructor);
×
223
            registry.registerItem(RegistryEntries.ITEM_MAGENTA_SHULKER_BOX::get, shulkerboxConstructor);
×
224
            registry.registerItem(RegistryEntries.ITEM_LIGHT_BLUE_SHULKER_BOX::get, shulkerboxConstructor);
×
225
            registry.registerItem(RegistryEntries.ITEM_YELLOW_SHULKER_BOX::get, shulkerboxConstructor);
×
226
            registry.registerItem(RegistryEntries.ITEM_LIME_SHULKER_BOX::get, shulkerboxConstructor);
×
227
            registry.registerItem(RegistryEntries.ITEM_PINK_SHULKER_BOX::get, shulkerboxConstructor);
×
228
            registry.registerItem(RegistryEntries.ITEM_GRAY_SHULKER_BOX::get, shulkerboxConstructor);
×
229
            registry.registerItem(RegistryEntries.ITEM_LIGHT_GRAY_SHULKER_BOX::get, shulkerboxConstructor);
×
230
            registry.registerItem(RegistryEntries.ITEM_CYAN_SHULKER_BOX::get, shulkerboxConstructor);
×
231
            registry.registerItem(RegistryEntries.ITEM_PURPLE_SHULKER_BOX::get, shulkerboxConstructor);
×
232
            registry.registerItem(RegistryEntries.ITEM_BLUE_SHULKER_BOX::get, shulkerboxConstructor);
×
233
            registry.registerItem(RegistryEntries.ITEM_BROWN_SHULKER_BOX::get, shulkerboxConstructor);
×
234
            registry.registerItem(RegistryEntries.ITEM_GREEN_SHULKER_BOX::get, shulkerboxConstructor);
×
235
            registry.registerItem(RegistryEntries.ITEM_RED_SHULKER_BOX::get, shulkerboxConstructor);
×
236
            registry.registerItem(RegistryEntries.ITEM_BLACK_SHULKER_BOX::get, shulkerboxConstructor);
×
237
            registry.registerItem(RegistryEntries.ITEM_BUNDLE::get, new ICapabilityConstructor<ItemStack, Void, IItemHandler, ItemLike>() {
×
238
                @Override
239
                public BaseCapability<IItemHandler, Void> getCapability() {
240
                    return Capabilities.ItemHandler.ITEM;
×
241
                }
242

243
                @Override
244
                public ICapabilityProvider<ItemStack, Void, IItemHandler> createProvider(ItemLike host) {
245
                    return (itemStack, context) -> new VanillaItemBundleItemHandler(itemStack);
×
246
                }
247
            });
248
            registry.registerEntity(() -> EntityType.ITEM,
×
249
                    new ICapabilityConstructor<ItemEntity, Void, IItemHandler, EntityType<ItemEntity>>() {
×
250
                        @Override
251
                        public BaseCapability<IItemHandler, Void> getCapability() {
252
                            return Capabilities.ItemHandler.ENTITY;
×
253
                        }
254

255
                        @Override
256
                        public ICapabilityProvider<ItemEntity, Void, IItemHandler> createProvider(EntityType<ItemEntity> host) {
257
                            return (entity, context) -> {
×
258
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
259
                                    return new VanillaEntityItemItemHandler(entity);
×
260
                                }
261
                                return null;
×
262
                            };
263
                        }
264
                    });
265
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
266
                    new ICapabilityConstructor<ItemFrame, Void, IItemHandler, EntityType<ItemFrame>>() {
×
267
                        @Override
268
                        public BaseCapability<IItemHandler, Void> getCapability() {
269
                            return Capabilities.ItemHandler.ENTITY;
×
270
                        }
271

272
                        @Override
273
                        public ICapabilityProvider<ItemFrame, Void, IItemHandler> createProvider(EntityType<ItemFrame> capabilityKey) {
274
                            return (entity, context) -> {
×
275
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
276
                                    return new VanillaEntityItemFrameItemHandler(entity);
×
277
                                }
278
                                return null;
×
279
                            };
280
                        }
281
                    });
282
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
283
                    new ICapabilityConstructor<GlowItemFrame, Void, IItemHandler, EntityType<GlowItemFrame>>() {
×
284
                        @Override
285
                        public BaseCapability<IItemHandler, Void> getCapability() {
286
                            return Capabilities.ItemHandler.ENTITY;
×
287
                        }
288

289
                        @Override
290
                        public ICapabilityProvider<GlowItemFrame, Void, IItemHandler> createProvider(EntityType<GlowItemFrame> capabilityKey) {
291
                            return (entity, context) -> {
×
292
                                if (entity.getItem().getCapability(Capabilities.ItemHandler.ITEM) != null) {
×
293
                                    return new VanillaEntityItemFrameItemHandler(entity);
×
294
                                }
295
                                return null;
×
296
                            };
297
                        }
298
                    });
299
            registry.registerBlock(() -> (ComposterBlock) Blocks.COMPOSTER,
×
300
                    new IBlockCapabilityConstructor<ComposterBlock, Direction, IItemHandler, ComposterBlock>() {
×
301
                        @Override
302
                        public BaseCapability<IItemHandler, Direction> getCapability() {
303
                            return Capabilities.ItemHandler.BLOCK;
×
304
                        }
305

306
                        @Override
307
                        public IBlockCapabilityProvider<IItemHandler, Direction> createProvider(ComposterBlock capabilityKey) {
308
                            return (level, pos, state, blockEntity, side) -> new VanillaBlockComposterItemHandler(state, level, pos, side);
×
309
                        }
310
                    });
311

312
            // FluidHandler
313
            registry.registerEntity(() -> EntityType.ITEM,
×
314
                    new ICapabilityConstructor<ItemEntity, Direction, IFluidHandler, EntityType<ItemEntity>>() {
×
315
                        @Override
316
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
317
                            return Capabilities.FluidHandler.ENTITY;
×
318
                        }
319

320
                        @Override
321
                        public ICapabilityProvider<ItemEntity, Direction, IFluidHandler> createProvider(EntityType<ItemEntity> capabilityKey) {
322
                            return (entity, context) -> {
×
323
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
324
                                    new VanillaEntityItemFluidHandler(entity);
×
325
                                }
326
                                return null;
×
327
                            };
328
                        }
329
                    });
330
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
331
                    new ICapabilityConstructor<ItemFrame, Direction, IFluidHandler, EntityType<ItemFrame>>() {
×
332
                        @Override
333
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
334
                            return Capabilities.FluidHandler.ENTITY;
×
335
                        }
336

337
                        @Override
338
                        public ICapabilityProvider<ItemFrame, Direction, IFluidHandler> createProvider(EntityType<ItemFrame> capabilityKey) {
339
                            return (entity, context) -> {
×
340
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
341
                                    new VanillaEntityItemFrameFluidHandler(entity);
×
342
                                }
343
                                return null;
×
344
                            };
345
                        }
346
                    });
347
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
348
                    new ICapabilityConstructor<GlowItemFrame, Direction, IFluidHandler, EntityType<GlowItemFrame>>() {
×
349
                        @Override
350
                        public BaseCapability<IFluidHandler, Direction> getCapability() {
351
                            return Capabilities.FluidHandler.ENTITY;
×
352
                        }
353

354
                        @Override
355
                        public ICapabilityProvider<GlowItemFrame, Direction, IFluidHandler> createProvider(EntityType<GlowItemFrame> capabilityKey) {
356
                            return (entity, context) -> {
×
357
                                if (entity.getItem().getCapability(Capabilities.FluidHandler.ITEM) != null) {
×
358
                                    new VanillaEntityItemFrameFluidHandler(entity);
×
359
                                }
360
                                return null;
×
361
                            };
362
                        }
363
                    });
364

365
            // EnergyStorage
366
            registry.registerEntity(() -> EntityType.ITEM,
×
367
                    new ICapabilityConstructor<ItemEntity, Direction, IEnergyStorage, EntityType<ItemEntity>>() {
×
368
                        @Override
369
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
370
                            return Capabilities.EnergyStorage.ENTITY;
×
371
                        }
372

373
                        @Override
374
                        public ICapabilityProvider<ItemEntity, Direction, IEnergyStorage> createProvider(EntityType<ItemEntity> capabilityKey) {
375
                            return (entity, context) -> {
×
376
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
377
                                    new VanillaEntityItemEnergyStorage(entity);
×
378
                                }
379
                                return null;
×
380
                            };
381
                        }
382
                    });
383
            registry.registerEntity(() -> EntityType.ITEM_FRAME,
×
384
                    new ICapabilityConstructor<ItemFrame, Direction, IEnergyStorage, EntityType<ItemFrame>>() {
×
385
                        @Override
386
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
387
                            return Capabilities.EnergyStorage.ENTITY;
×
388
                        }
389

390
                        @Override
391
                        public ICapabilityProvider<ItemFrame, Direction, IEnergyStorage> createProvider(EntityType<ItemFrame> capabilityKey) {
392
                            return (entity, context) -> {
×
393
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
394
                                    new VanillaEntityItemFrameEnergyStorage(entity);
×
395
                                }
396
                                return null;
×
397
                            };
398
                        }
399
                    });
400
            registry.registerEntity(() -> EntityType.GLOW_ITEM_FRAME,
×
401
                    new ICapabilityConstructor<GlowItemFrame, Direction, IEnergyStorage, EntityType<GlowItemFrame>>() {
×
402
                        @Override
403
                        public BaseCapability<IEnergyStorage, Direction> getCapability() {
404
                            return Capabilities.EnergyStorage.ENTITY;
×
405
                        }
406

407
                        @Override
408
                        public ICapabilityProvider<GlowItemFrame, Direction, IEnergyStorage> createProvider(EntityType<GlowItemFrame> capabilityKey) {
409
                            return (entity, context) -> {
×
410
                                if (entity.getItem().getCapability(Capabilities.EnergyStorage.ITEM) != null) {
×
411
                                    new VanillaEntityItemFrameEnergyStorage(entity);
×
412
                                }
413
                                return null;
×
414
                            };
415
                        }
416
                    });
417

418
            // RecipeHandler
419
            registry.registerBlockEntity(() -> BlockEntityType.BREWING_STAND,
×
420
                    new ICapabilityConstructor<BrewingStandBlockEntity, Direction, IRecipeHandler, BlockEntityType<BrewingStandBlockEntity>>() {
×
421
                        @Override
422
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
423
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
424
                        }
425

426
                        @Override
427
                        public ICapabilityProvider<BrewingStandBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<BrewingStandBlockEntity> capabilityKey) {
428
                            return (blockEntity, side) -> VanillaBrewingStandRecipeHandler.getInstance();
×
429
                        }
430
                    });
431
            registry.registerBlockEntity(() -> BlockEntityType.FURNACE,
×
432
                    new ICapabilityConstructor<FurnaceBlockEntity, Direction, IRecipeHandler, BlockEntityType<FurnaceBlockEntity>>() {
×
433
                        @Override
434
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
435
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
436
                        }
437

438
                        @Override
439
                        public ICapabilityProvider<FurnaceBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<FurnaceBlockEntity> capabilityKey) {
440
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
441
                                    RecipeType.SMELTING, (size) -> size == 1);
×
442
                        }
443
                    });
444
            registry.registerBlockEntity(() -> BlockEntityType.BLAST_FURNACE,
×
445
                    new ICapabilityConstructor<BlastFurnaceBlockEntity, Direction, IRecipeHandler, BlockEntityType<BlastFurnaceBlockEntity>>() {
×
446
                        @Override
447
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
448
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
449
                        }
450

451
                        @Override
452
                        public ICapabilityProvider<BlastFurnaceBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<BlastFurnaceBlockEntity> capabilityKey) {
453
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
454
                                    RecipeType.BLASTING, (size) -> size == 1);
×
455
                        }
456
                    });
457
            registry.registerBlockEntity(() -> BlockEntityType.SMOKER,
×
458
                    new ICapabilityConstructor<SmokerBlockEntity, Direction, IRecipeHandler, BlockEntityType<SmokerBlockEntity>>() {
×
459
                        @Override
460
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
461
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
462
                        }
463

464
                        @Override
465
                        public ICapabilityProvider<SmokerBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<SmokerBlockEntity> capabilityKey) {
466
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
467
                                    RecipeType.SMOKING, (size) -> size == 1);
×
468
                        }
469
                    });
470
            registry.registerBlockEntity(() -> BlockEntityType.CAMPFIRE,
×
471
                    new ICapabilityConstructor<CampfireBlockEntity, Direction, IRecipeHandler, BlockEntityType<CampfireBlockEntity>>() {
×
472
                        @Override
473
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
474
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
475
                        }
476

477
                        @Override
478
                        public ICapabilityProvider<CampfireBlockEntity, Direction, IRecipeHandler> createProvider(BlockEntityType<CampfireBlockEntity> capabilityKey) {
479
                            return (blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(blockEntity::getLevel,
×
480
                                    RecipeType.CAMPFIRE_COOKING, (size) -> size == 1);
×
481
                        }
482
                    });
483
            registry.registerInheritableBlock(CraftingTableBlock.class,
×
484
                    new IBlockCapabilityConstructor<ComposterBlock, Direction, IRecipeHandler, Block>() {
×
485
                        @Override
486
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
487
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
488
                        }
489

490
                        @Override
491
                        public IBlockCapabilityProvider<IRecipeHandler, Direction> createProvider(Block capabilityKey) {
492
                            return (level, pos, state, blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(() -> level, RecipeType.CRAFTING, (size) -> size > 0);
×
493
                        }
494
                    });
495
            registry.registerBlock(() -> (StonecutterBlock) Blocks.STONECUTTER,
×
496
                    new IBlockCapabilityConstructor<StonecutterBlock, Direction, IRecipeHandler, StonecutterBlock>() {
×
497
                        @Override
498
                        public BaseCapability<IRecipeHandler, Direction> getCapability() {
499
                            return org.cyclops.commoncapabilities.api.capability.Capabilities.RecipeHandler.BLOCK;
×
500
                        }
501

502
                        @Override
503
                        public IBlockCapabilityProvider<IRecipeHandler, Direction> createProvider(StonecutterBlock capabilityKey) {
504
                            return (level, pos, state, blockEntity, side) -> new VanillaRecipeTypeRecipeHandler<>(() -> level, RecipeType.STONECUTTING, (size) -> size == 1);
×
505
                        }
506
                    });
507
        };
×
508
    }
509

510
}
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