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

CyclopsMC / CommonCapabilities / #479006796

10 May 2025 05:01AM UTC coverage: 39.86% (-0.6%) from 40.46%
#479006796

push

github

rubensworks
Fix recipe simulation for stonecutter recipes

0 of 40 new or added lines in 2 files covered. (0.0%)

2 existing lines in 2 files now uncovered.

914 of 2293 relevant lines covered (39.86%)

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.world.level.block.Block;
4
import net.minecraft.world.level.block.state.BlockState;
5
import net.minecraft.world.level.block.Blocks;
6
import net.minecraft.world.level.block.CraftingTableBlock;
7
import net.minecraft.world.entity.item.ItemEntity;
8
import net.minecraft.world.entity.decoration.ItemFrame;
9
import net.minecraft.world.item.BucketItem;
10
import net.minecraft.world.item.Item;
11
import net.minecraft.world.item.ItemStack;
12
import net.minecraft.world.item.crafting.RecipeType;
13
import net.minecraft.world.level.block.entity.BlastFurnaceBlockEntity;
14
import net.minecraft.world.level.block.entity.BrewingStandBlockEntity;
15
import net.minecraft.world.level.block.entity.CampfireBlockEntity;
16
import net.minecraft.world.level.block.entity.FurnaceBlockEntity;
17
import net.minecraft.world.level.block.entity.SmokerBlockEntity;
18
import net.minecraft.core.Direction;
19
import net.minecraft.core.BlockPos;
20
import net.minecraft.world.level.BlockGetter;
21
import net.minecraft.world.level.LevelAccessor;
22
import net.minecraft.world.level.Level;
23
import net.minecraftforge.common.capabilities.Capability;
24
import net.minecraftforge.common.capabilities.ForgeCapabilities;
25
import net.minecraftforge.common.capabilities.ICapabilityProvider;
26
import net.minecraftforge.common.util.LazyOptional;
27
import net.minecraftforge.energy.IEnergyStorage;
28
import net.minecraftforge.fluids.capability.IFluidHandler;
29
import net.minecraftforge.items.IItemHandler;
30
import org.cyclops.commoncapabilities.CommonCapabilities;
31
import org.cyclops.commoncapabilities.Reference;
32
import org.cyclops.commoncapabilities.api.capability.block.BlockCapabilities;
33
import org.cyclops.commoncapabilities.api.capability.block.IBlockCapabilityConstructor;
34
import org.cyclops.commoncapabilities.api.capability.block.IBlockCapabilityProvider;
35
import org.cyclops.commoncapabilities.api.capability.recipehandler.IRecipeHandler;
36
import org.cyclops.commoncapabilities.api.capability.temperature.ITemperature;
37
import org.cyclops.commoncapabilities.api.capability.work.IWorker;
38
import org.cyclops.commoncapabilities.capability.recipehandler.RecipeHandlerConfig;
39
import org.cyclops.commoncapabilities.capability.temperature.TemperatureConfig;
40
import org.cyclops.commoncapabilities.capability.worker.WorkerConfig;
41
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemEnergyStorage;
42
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.energystorage.VanillaEntityItemFrameEnergyStorage;
43
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFluidHandler;
44
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.fluidhandler.VanillaEntityItemFrameFluidHandler;
45
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaBlockComposterItemHandler;
46
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaEntityItemFrameItemHandler;
47
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaEntityItemItemHandler;
48
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaItemBundleItemHandler;
49
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.itemhandler.VanillaItemShulkerBoxItemHandler;
50
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaBrewingStandRecipeHandler;
51
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.recipehandler.VanillaRecipeTypeRecipeHandler;
52
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaAbstractFurnaceTemperature;
53
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaCampfireTemperature;
54
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.temperature.VanillaUniversalBucketTemperature;
55
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaAbstractFurnaceWorker;
56
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaBrewingStandWorker;
57
import org.cyclops.commoncapabilities.modcompat.vanilla.capability.work.VanillaCampfireWorker;
58
import org.cyclops.commoncapabilities.RegistryEntries;
59
import org.cyclops.cyclopscore.modcompat.ICompatInitializer;
60
import org.cyclops.cyclopscore.modcompat.IModCompat;
61
import org.cyclops.cyclopscore.modcompat.capabilities.CapabilityConstructorRegistry;
62
import org.cyclops.cyclopscore.modcompat.capabilities.DefaultCapabilityProvider;
63
import org.cyclops.cyclopscore.modcompat.capabilities.ICapabilityConstructor;
64
import org.cyclops.cyclopscore.modcompat.capabilities.SimpleCapabilityConstructor;
65

66
import javax.annotation.Nonnull;
67
import javax.annotation.Nullable;
68

69
/**
70
 * Capabilities for Vanilla.
71
 * @author rubensworks
72
 */
73
public class VanillaModCompat implements IModCompat {
×
74

75
    @Override
76
    public String getId() {
77
        return Reference.MOD_VANILLA;
×
78
    }
79

80
    @Override
81
    public boolean isEnabledDefault() {
82
        return true;
×
83
    }
84

85
    @Override
86
    public String getComment() {
87
        return "Furnace and Brewing stand capabilities.";
×
88
    }
89

90
    @Override
91
    public ICompatInitializer createInitializer() {
92
        return () -> {
×
93
            CapabilityConstructorRegistry registry = CommonCapabilities._instance.getCapabilityConstructorRegistry();
×
94
            // Worker
95
            registry.registerTile(FurnaceBlockEntity.class,
×
96
                    new SimpleCapabilityConstructor<IWorker, FurnaceBlockEntity>() {
×
97
                        @Override
98
                        public Capability<IWorker> getCapability() {
99
                            return WorkerConfig.CAPABILITY;
×
100
                        }
101

102
                        @Nullable
103
                        @Override
104
                        public ICapabilityProvider createProvider(FurnaceBlockEntity host) {
105
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceWorker(host));
×
106
                        }
107
                    });
108
            registry.registerTile(BlastFurnaceBlockEntity.class,
×
109
                    new SimpleCapabilityConstructor<IWorker, BlastFurnaceBlockEntity>() {
×
110
                        @Override
111
                        public Capability<IWorker> getCapability() {
112
                            return WorkerConfig.CAPABILITY;
×
113
                        }
114

115
                        @Nullable
116
                        @Override
117
                        public ICapabilityProvider createProvider(BlastFurnaceBlockEntity host) {
118
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceWorker(host));
×
119
                        }
120
                    });
121
            registry.registerTile(SmokerBlockEntity.class,
×
122
                    new SimpleCapabilityConstructor<IWorker, SmokerBlockEntity>() {
×
123
                        @Override
124
                        public Capability<IWorker> getCapability() {
125
                            return WorkerConfig.CAPABILITY;
×
126
                        }
127

128
                        @Nullable
129
                        @Override
130
                        public ICapabilityProvider createProvider(SmokerBlockEntity host) {
131
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceWorker(host));
×
132
                        }
133
                    });
134
            registry.registerTile(BrewingStandBlockEntity.class,
×
135
                    new SimpleCapabilityConstructor<IWorker, BrewingStandBlockEntity>() {
×
136
                        @Override
137
                        public Capability<IWorker> getCapability() {
138
                            return WorkerConfig.CAPABILITY;
×
139
                        }
140

141
                        @Override
142
                        public ICapabilityProvider createProvider(BrewingStandBlockEntity host) {
143
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaBrewingStandWorker(host));
×
144
                        }
145
                    });
146
            registry.registerTile(CampfireBlockEntity.class,
×
147
                    new SimpleCapabilityConstructor<IWorker, CampfireBlockEntity>() {
×
148
                        @Override
149
                        public Capability<IWorker> getCapability() {
150
                            return WorkerConfig.CAPABILITY;
×
151
                        }
152

153
                        @Override
154
                        public ICapabilityProvider createProvider(CampfireBlockEntity host) {
155
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaCampfireWorker(host));
×
156
                        }
157
                    });
158

159
            // Temperature
160
            registry.registerTile(FurnaceBlockEntity.class,
×
161
                    new SimpleCapabilityConstructor<ITemperature, FurnaceBlockEntity>() {
×
162
                        @Override
163
                        public Capability<ITemperature> getCapability() {
164
                            return TemperatureConfig.CAPABILITY;
×
165
                        }
166

167
                        @Nullable
168
                        @Override
169
                        public ICapabilityProvider createProvider(FurnaceBlockEntity host) {
170
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceTemperature(host));
×
171
                        }
172
                    });
173
            registry.registerTile(BlastFurnaceBlockEntity.class,
×
174
                    new SimpleCapabilityConstructor<ITemperature, BlastFurnaceBlockEntity>() {
×
175
                        @Override
176
                        public Capability<ITemperature> getCapability() {
177
                            return TemperatureConfig.CAPABILITY;
×
178
                        }
179

180
                        @Nullable
181
                        @Override
182
                        public ICapabilityProvider createProvider(BlastFurnaceBlockEntity host) {
183
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceTemperature(host));
×
184
                        }
185
                    });
186
            registry.registerTile(SmokerBlockEntity.class,
×
187
                    new SimpleCapabilityConstructor<ITemperature, SmokerBlockEntity>() {
×
188
                        @Override
189
                        public Capability<ITemperature> getCapability() {
190
                            return TemperatureConfig.CAPABILITY;
×
191
                        }
192

193
                        @Nullable
194
                        @Override
195
                        public ICapabilityProvider createProvider(SmokerBlockEntity host) {
196
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaAbstractFurnaceTemperature(host));
×
197
                        }
198
                    });
199
            registry.registerTile(CampfireBlockEntity.class,
×
200
                    new SimpleCapabilityConstructor<ITemperature, CampfireBlockEntity>() {
×
201
                        @Override
202
                        public Capability<ITemperature> getCapability() {
203
                            return TemperatureConfig.CAPABILITY;
×
204
                        }
205

206
                        @Nullable
207
                        @Override
208
                        public ICapabilityProvider createProvider(CampfireBlockEntity host) {
209
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaCampfireTemperature(host));
×
210
                        }
211
                    });
212
            registry.registerItem(BucketItem.class,
×
213
                    new ICapabilityConstructor<ITemperature, BucketItem, ItemStack>() {
×
214
                        @Override
215
                        public Capability<ITemperature> getCapability() {
216
                            return TemperatureConfig.CAPABILITY;
×
217
                        }
218

219
                        @Override
220
                        public ICapabilityProvider createProvider(BucketItem hostType, ItemStack host) {
221
                            return new DefaultCapabilityProvider<>(this::getCapability, new VanillaUniversalBucketTemperature(host));
×
222
                        }
223
                    });
224

225
            // ItemHandler
226
            ICapabilityConstructor<IItemHandler, Item, ItemStack> shulkerboxConstructor = new ICapabilityConstructor<IItemHandler, Item, ItemStack>() {
×
227
                @Override
228
                public Capability<IItemHandler> getCapability() {
229
                    return ForgeCapabilities.ITEM_HANDLER;
×
230
                }
231

232
                @Nullable
233
                @Override
234
                public ICapabilityProvider createProvider(Item hostType, ItemStack host) {
235
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaItemShulkerBoxItemHandler(host));
×
236
                }
237
            };
238
            registry.registerItem(() -> RegistryEntries.ITEM_SHULKER_BOX, shulkerboxConstructor);
×
239
            registry.registerItem(() -> RegistryEntries.ITEM_WHITE_SHULKER_BOX, shulkerboxConstructor);
×
240
            registry.registerItem(() -> RegistryEntries.ITEM_ORANGE_SHULKER_BOX, shulkerboxConstructor);
×
241
            registry.registerItem(() -> RegistryEntries.ITEM_MAGENTA_SHULKER_BOX, shulkerboxConstructor);
×
242
            registry.registerItem(() -> RegistryEntries.ITEM_LIGHT_BLUE_SHULKER_BOX, shulkerboxConstructor);
×
243
            registry.registerItem(() -> RegistryEntries.ITEM_YELLOW_SHULKER_BOX, shulkerboxConstructor);
×
244
            registry.registerItem(() -> RegistryEntries.ITEM_LIME_SHULKER_BOX, shulkerboxConstructor);
×
245
            registry.registerItem(() -> RegistryEntries.ITEM_PINK_SHULKER_BOX, shulkerboxConstructor);
×
246
            registry.registerItem(() -> RegistryEntries.ITEM_GRAY_SHULKER_BOX, shulkerboxConstructor);
×
247
            registry.registerItem(() -> RegistryEntries.ITEM_LIGHT_GRAY_SHULKER_BOX, shulkerboxConstructor);
×
248
            registry.registerItem(() -> RegistryEntries.ITEM_CYAN_SHULKER_BOX, shulkerboxConstructor);
×
249
            registry.registerItem(() -> RegistryEntries.ITEM_PURPLE_SHULKER_BOX, shulkerboxConstructor);
×
250
            registry.registerItem(() -> RegistryEntries.ITEM_BLUE_SHULKER_BOX, shulkerboxConstructor);
×
251
            registry.registerItem(() -> RegistryEntries.ITEM_BROWN_SHULKER_BOX, shulkerboxConstructor);
×
252
            registry.registerItem(() -> RegistryEntries.ITEM_GREEN_SHULKER_BOX, shulkerboxConstructor);
×
253
            registry.registerItem(() -> RegistryEntries.ITEM_RED_SHULKER_BOX, shulkerboxConstructor);
×
254
            registry.registerItem(() -> RegistryEntries.ITEM_BLACK_SHULKER_BOX, shulkerboxConstructor);
×
255
            registry.registerItem(() -> RegistryEntries.ITEM_BUNDLE, new ICapabilityConstructor<IItemHandler, Item, ItemStack>() {
×
256
                @Override
257
                public Capability<IItemHandler> getCapability() {
258
                    return ForgeCapabilities.ITEM_HANDLER;
×
259
                }
260

261
                @Nullable
262
                @Override
263
                public ICapabilityProvider createProvider(Item hostType, ItemStack host) {
264
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaItemBundleItemHandler(host));
×
265
                }
266
            });
267
            registry.registerEntity(ItemEntity.class,
×
268
                    new ICapabilityConstructor<IItemHandler, ItemEntity, ItemEntity>() {
×
269
                        @Override
270
                        public Capability<IItemHandler> getCapability() {
271
                            return ForgeCapabilities.ITEM_HANDLER;
×
272
                        }
273

274
                        @Nullable
275
                        @Override
276
                        public ICapabilityProvider createProvider(ItemEntity hostType, final ItemEntity host) {
277
                            return new ICapabilityProvider() {
×
278
                                @Override
279
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
280
                                    return capability == ForgeCapabilities.ITEM_HANDLER
×
281
                                            && host.getItem().getCapability(capability, facing).isPresent()
×
282
                                            ? LazyOptional.of(() -> new VanillaEntityItemItemHandler(host, facing)).cast()
×
283
                                            : LazyOptional.empty();
×
284
                                }
285
                            };
286
                        }
287
                    });
288
            registry.registerEntity(ItemFrame.class,
×
289
                    new ICapabilityConstructor<IItemHandler, ItemFrame, ItemFrame>() {
×
290
                        @Override
291
                        public Capability<IItemHandler> getCapability() {
292
                            return ForgeCapabilities.ITEM_HANDLER;
×
293
                        }
294

295
                        @Nullable
296
                        @Override
297
                        public ICapabilityProvider createProvider(ItemFrame hostType, final ItemFrame host) {
298
                            return new ICapabilityProvider() {
×
299
                                @Override
300
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
301
                                    return capability == ForgeCapabilities.ITEM_HANDLER
×
302
                                            && host.getItem().getCapability(capability, facing).isPresent()
×
303
                                            ? LazyOptional.of(() -> new VanillaEntityItemFrameItemHandler(host, facing)).cast()
×
304
                                            : LazyOptional.empty();
×
305
                                }
306
                            };
307
                        }
308
                    });
309
            BlockCapabilities.getInstance().register(new IBlockCapabilityConstructor() {
×
310
                @Nullable
311
                @Override
312
                public Block getBlock() {
313
                    return Blocks.COMPOSTER;
×
314
                }
315

316
                @Override
317
                public IBlockCapabilityProvider createProvider() {
318
                    return new IBlockCapabilityProvider() {
×
319
                        @Override
320
                        public <T> LazyOptional<T> getCapability(@Nonnull BlockState blockState, @Nonnull Capability<T> capability,
321
                                                                 @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nullable Direction facing) {
322
                            if (capability == ForgeCapabilities.ITEM_HANDLER) {
×
323
                                return LazyOptional.of(() -> new VanillaBlockComposterItemHandler(blockState, (LevelAccessor) world, pos, facing)).cast();
×
324
                            }
325
                            return LazyOptional.empty();
×
326
                        }
327
                    };
328
                }
329
            });
330

331
            // FluidHandler
332
            registry.registerEntity(ItemEntity.class,
×
333
                    new ICapabilityConstructor<IFluidHandler, ItemEntity, ItemEntity>() {
×
334
                        @Override
335
                        public Capability<IFluidHandler> getCapability() {
336
                            return ForgeCapabilities.FLUID_HANDLER;
×
337
                        }
338

339
                        @Nullable
340
                        @Override
341
                        public ICapabilityProvider createProvider(ItemEntity hostType, final ItemEntity host) {
342
                            return new ICapabilityProvider() {
×
343
                                @Override
344
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
345
                                    return capability == ForgeCapabilities.FLUID_HANDLER
×
346
                                            && host.getItem().getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, facing).isPresent()
×
347
                                            ? LazyOptional.of(() -> new VanillaEntityItemFluidHandler(host, facing)).cast()
×
348
                                            : LazyOptional.empty();
×
349
                                }
350
                            };
351
                        }
352
                    });
353
            registry.registerEntity(ItemFrame.class,
×
354
                    new ICapabilityConstructor<IFluidHandler, ItemFrame, ItemFrame>() {
×
355
                        @Override
356
                        public Capability<IFluidHandler> getCapability() {
357
                            return ForgeCapabilities.FLUID_HANDLER;
×
358
                        }
359

360
                        @Nullable
361
                        @Override
362
                        public ICapabilityProvider createProvider(ItemFrame hostType, final ItemFrame host) {
363
                            return new ICapabilityProvider() {
×
364
                                @Override
365
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
366
                                    return capability == ForgeCapabilities.FLUID_HANDLER
×
367
                                            && host.getItem().getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, facing).isPresent()
×
368
                                            ? LazyOptional.of(() -> new VanillaEntityItemFrameFluidHandler(host, facing)).cast()
×
369
                                            : LazyOptional.empty();
×
370
                                }
371
                            };
372
                        }
373
                    });
374

375
            // EnergyStorage
376
            registry.registerEntity(ItemEntity.class,
×
377
                    new ICapabilityConstructor<IEnergyStorage, ItemEntity, ItemEntity>() {
×
378
                        @Override
379
                        public Capability<IEnergyStorage> getCapability() {
380
                            return ForgeCapabilities.ENERGY;
×
381
                        }
382

383
                        @Nullable
384
                        @Override
385
                        public ICapabilityProvider createProvider(ItemEntity hostType, final ItemEntity host) {
386
                            return new ICapabilityProvider() {
×
387
                                @Override
388
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
389
                                    return capability == ForgeCapabilities.ENERGY
×
390
                                            && host.getItem().getCapability(capability, facing).isPresent()
×
391
                                            ? LazyOptional.of(() -> new VanillaEntityItemEnergyStorage(host, facing)).cast()
×
392
                                            : LazyOptional.empty();
×
393
                                }
394
                            };
395
                        }
396
                    });
397
            registry.registerEntity(ItemFrame.class,
×
398
                    new ICapabilityConstructor<IEnergyStorage, ItemFrame, ItemFrame>() {
×
399
                        @Override
400
                        public Capability<IEnergyStorage> getCapability() {
401
                            return ForgeCapabilities.ENERGY;
×
402
                        }
403

404
                        @Nullable
405
                        @Override
406
                        public ICapabilityProvider createProvider(ItemFrame hostType, final ItemFrame host) {
407
                            return new ICapabilityProvider() {
×
408
                                @Override
409
                                public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing) {
410
                                    return capability == ForgeCapabilities.ENERGY
×
411
                                            && host.getItem().getCapability(capability, facing).isPresent()
×
412
                                            ? LazyOptional.of(() -> new VanillaEntityItemFrameEnergyStorage(host, facing)).cast()
×
413
                                            : LazyOptional.empty();
×
414
                                }
415
                            };
416
                        }
417
                    });
418

419
            // RecipeHandler
420
            registry.registerTile(BrewingStandBlockEntity.class, new ICapabilityConstructor<IRecipeHandler, BrewingStandBlockEntity, BrewingStandBlockEntity>() {
×
421
                @Override
422
                public Capability<IRecipeHandler> getCapability() {
423
                    return RecipeHandlerConfig.CAPABILITY;
×
424
                }
425

426
                @Nullable
427
                @Override
428
                public ICapabilityProvider createProvider(BrewingStandBlockEntity hostType, BrewingStandBlockEntity host) {
429
                    return new DefaultCapabilityProvider<>(this::getCapability, VanillaBrewingStandRecipeHandler.getInstance());
×
430
                }
431
            });
432
            registry.registerTile(FurnaceBlockEntity.class, new ICapabilityConstructor<IRecipeHandler, FurnaceBlockEntity, FurnaceBlockEntity>() {
×
433
                @Override
434
                public Capability<IRecipeHandler> getCapability() {
435
                    return RecipeHandlerConfig.CAPABILITY;
×
436
                }
437

438
                @Nullable
439
                @Override
440
                public ICapabilityProvider createProvider(FurnaceBlockEntity hostType, FurnaceBlockEntity host) {
441
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaRecipeTypeRecipeHandler<>(host::getLevel,
×
NEW
442
                            RecipeType.SMELTING, (size) -> size == 1, true, false));
×
443
                }
444
            });
445
            registry.registerTile(BlastFurnaceBlockEntity.class, new ICapabilityConstructor<IRecipeHandler, BlastFurnaceBlockEntity, BlastFurnaceBlockEntity>() {
×
446
                @Override
447
                public Capability<IRecipeHandler> getCapability() {
448
                    return RecipeHandlerConfig.CAPABILITY;
×
449
                }
450

451
                @Nullable
452
                @Override
453
                public ICapabilityProvider createProvider(BlastFurnaceBlockEntity hostType, BlastFurnaceBlockEntity host) {
454
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaRecipeTypeRecipeHandler<>(host::getLevel,
×
NEW
455
                            RecipeType.BLASTING, (size) -> size == 1, true, false));
×
456
                }
457
            });
458
            registry.registerTile(SmokerBlockEntity.class, new ICapabilityConstructor<IRecipeHandler, SmokerBlockEntity, SmokerBlockEntity>() {
×
459
                @Override
460
                public Capability<IRecipeHandler> getCapability() {
461
                    return RecipeHandlerConfig.CAPABILITY;
×
462
                }
463

464
                @Nullable
465
                @Override
466
                public ICapabilityProvider createProvider(SmokerBlockEntity hostType, SmokerBlockEntity host) {
467
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaRecipeTypeRecipeHandler<>(host::getLevel,
×
NEW
468
                            RecipeType.SMOKING, (size) -> size == 1, true, false));
×
469
                }
470
            });
471
            registry.registerTile(CampfireBlockEntity.class, new ICapabilityConstructor<IRecipeHandler, CampfireBlockEntity, CampfireBlockEntity>() {
×
472
                @Override
473
                public Capability<IRecipeHandler> getCapability() {
474
                    return RecipeHandlerConfig.CAPABILITY;
×
475
                }
476

477
                @Nullable
478
                @Override
479
                public ICapabilityProvider createProvider(CampfireBlockEntity hostType, CampfireBlockEntity host) {
480
                    return new DefaultCapabilityProvider<>(this::getCapability, new VanillaRecipeTypeRecipeHandler<>(host::getLevel,
×
NEW
481
                            RecipeType.CAMPFIRE_COOKING, (size) -> size == 1, true, false));
×
482
                }
483
            });
484
            BlockCapabilities.getInstance().register(new IBlockCapabilityConstructor() {
×
485
                @Nullable
486
                @Override
487
                public Block getBlock() {
488
                    return null;
×
489
                }
490

491
                @Override
492
                public IBlockCapabilityProvider createProvider() {
493
                    return new IBlockCapabilityProvider() {
×
494
                        @Override
495
                        public <T> LazyOptional<T> getCapability(@Nonnull BlockState blockState, @Nonnull Capability<T> capability,
496
                                                                 @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nullable Direction facing) {
497
                            if (blockState.getBlock() instanceof CraftingTableBlock && capability == RecipeHandlerConfig.CAPABILITY) {
×
498
                                return LazyOptional.of(() -> new VanillaRecipeTypeRecipeHandler<>(() -> (Level) world,
×
NEW
499
                                        RecipeType.CRAFTING, (size) -> size > 0, false, false)).cast();
×
500
                            }
501
                            return LazyOptional.empty();
×
502
                        }
503
                    };
504
                }
505
            });
506
            BlockCapabilities.getInstance().register(new IBlockCapabilityConstructor() {
×
507
                @Nullable
508
                @Override
509
                public Block getBlock() {
510
                    return Blocks.STONECUTTER;
×
511
                }
512

513
                @Override
514
                public IBlockCapabilityProvider createProvider() {
515
                    return new IBlockCapabilityProvider() {
×
516
                        @Override
517
                        public <T> LazyOptional<T> getCapability(@Nonnull BlockState blockState, @Nonnull Capability<T> capability,
518
                                                                 @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nullable Direction facing) {
519
                            if (capability == RecipeHandlerConfig.CAPABILITY) {
×
520
                                return LazyOptional.of(() -> new VanillaRecipeTypeRecipeHandler<>(() -> (Level) world,
×
NEW
521
                                        RecipeType.STONECUTTING, (size) -> size == 1, true, true)).cast();
×
522
                            }
NEW
523
                            return LazyOptional.empty();
×
524
                        }
525
                    };
526
                }
527
            });
NEW
528
            BlockCapabilities.getInstance().register(new IBlockCapabilityConstructor() {
×
529
                @Nullable
530
                @Override
531
                public Block getBlock() {
NEW
532
                    return Blocks.STONECUTTER;
×
533
                }
534

535
                @Override
536
                public IBlockCapabilityProvider createProvider() {
NEW
537
                    return new IBlockCapabilityProvider() {
×
538
                        @Override
539
                        public <T> LazyOptional<T> getCapability(@Nonnull BlockState blockState, @Nonnull Capability<T> capability,
540
                                                                 @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nullable Direction facing) {
NEW
541
                            if (capability == RecipeHandlerConfig.CAPABILITY) {
×
NEW
542
                                return LazyOptional.of(() -> new VanillaRecipeTypeRecipeHandler<>(() -> (Level) world,
×
NEW
543
                                        RecipeType.SMITHING, (size) -> size == 1, true, false)).cast();
×
544
                            }
545
                            return LazyOptional.empty();
×
546
                        }
547
                    };
548
                }
549
            });
550
        };
×
551
    }
552

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

© 2025 Coveralls, Inc