Skip to content

Commit 8f23aa0

Browse files
committed
stable but still cant not make custom recipe only work for custom block
1 parent 5005fb8 commit 8f23aa0

25 files changed

+42
-191
lines changed

src/main/java/com/junnio/polycoin/PoLymCoin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.junnio.polycoin.block.ModBlocks;
44
import com.junnio.polycoin.item.ModItemGroups;
55
import com.junnio.polycoin.item.ModItems;
6-
import com.junnio.polycoin.recipe.ModRecipeTypes;
76
import com.junnio.polycoin.recipe.ModRecipes;
87
import net.fabricmc.api.ModInitializer;
98

@@ -19,7 +18,6 @@ public void onInitialize() {
1918
ModItems.initialize();
2019
ModBlocks.initialize();
2120
ModItemGroups.initialize();
22-
ModRecipes.registerRecipes();
23-
ModRecipeTypes.registerRecipes();
21+
ModRecipes.initialize();
2422
}
2523
}

src/main/java/com/junnio/polycoin/block/ModBlocks.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import com.junnio.polycoin.PoLymCoin;
44
import net.minecraft.block.AbstractBlock;
55
import net.minecraft.block.Block;
6+
import net.minecraft.item.BlockItem;
7+
import net.minecraft.item.Item;
68
import net.minecraft.registry.Registries;
79
import net.minecraft.registry.Registry;
810
import net.minecraft.registry.RegistryKey;
911
import net.minecraft.registry.RegistryKeys;
12+
import net.minecraft.screen.ScreenHandlerType;
1013
import net.minecraft.sound.BlockSoundGroup;
1114
import net.minecraft.util.Identifier;
1215
import org.spongepowered.include.com.google.common.base.Function;
@@ -50,11 +53,16 @@ public static Block register(String name, Function<Block.Settings, Block> blockF
5053
RegistryKey<Block> blockKey = RegistryKey.of(RegistryKeys.BLOCK, Identifier.of(PoLymCoin.MOD_ID, name));
5154
Block block = blockFactory.apply(settings.registryKey(blockKey));
5255
Registry.register(Registries.BLOCK, blockKey, block);
56+
57+
RegistryKey<Item> itemKey = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(PoLymCoin.MOD_ID, name));
58+
BlockItem blockItem = new BlockItem(block, new Item.Settings().registryKey(itemKey));
59+
Registry.register(Registries.ITEM, itemKey, blockItem);
60+
5361
return block;
5462
}
5563
public static final Block POLYM_TABLE = ModBlocks.register(
5664
"polym_table",
57-
Block::new,
65+
PolymTableBlock::new,
5866
AbstractBlock.Settings.create()
5967
.sounds(BlockSoundGroup.GRASS)
6068
.strength(1.5F)

src/main/java/com/junnio/polycoin/block/PolymTable.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/main/java/com/junnio/polycoin/PolymTableBlock.java renamed to src/main/java/com/junnio/polycoin/block/PolymTableBlock.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package com.junnio.polycoin;
1+
package com.junnio.polycoin.block;
22

3-
import net.minecraft.block.Block;
43
import net.minecraft.block.BlockState;
54
import net.minecraft.block.CraftingTableBlock;
65
import net.minecraft.entity.player.PlayerEntity;
@@ -21,15 +20,6 @@ public class PolymTableBlock extends CraftingTableBlock {
2120
public PolymTableBlock(Settings settings) {
2221
super(settings);
2322
}
24-
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
25-
if (world.isClient) {
26-
return ActionResult.SUCCESS;
27-
} else {
28-
player.openHandledScreen(state.createScreenHandlerFactory(world, pos));
29-
player.incrementStat(Stats.INTERACT_WITH_CRAFTING_TABLE);
30-
return ActionResult.CONSUME;
31-
}
32-
}
3323

3424
@Override
3525
public NamedScreenHandlerFactory createScreenHandlerFactory(BlockState state, World world, BlockPos pos) {

src/main/java/com/junnio/polycoin/PolymTableScreenHandler.java renamed to src/main/java/com/junnio/polycoin/block/PolymTableScreenHandler.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.junnio.polycoin;
1+
package com.junnio.polycoin.block;
22

33
import net.minecraft.entity.player.PlayerEntity;
44
import net.minecraft.entity.player.PlayerInventory;
@@ -9,12 +9,16 @@
99
import net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket;
1010
import net.minecraft.recipe.CraftingRecipe;
1111
import net.minecraft.recipe.RecipeEntry;
12+
import net.minecraft.recipe.RecipeType;
13+
import net.minecraft.recipe.input.CraftingRecipeInput;
1214
import net.minecraft.screen.CraftingScreenHandler;
1315
import net.minecraft.screen.ScreenHandler;
1416
import net.minecraft.screen.ScreenHandlerContext;
1517
import net.minecraft.server.network.ServerPlayerEntity;
1618
import net.minecraft.server.world.ServerWorld;
1719

20+
import java.util.Optional;
21+
1822
public class PolymTableScreenHandler extends CraftingScreenHandler {
1923
private final PlayerEntity customPlayer;
2024
private final ScreenHandlerContext customContext;
@@ -44,9 +48,21 @@ public static void updateResult(ScreenHandler handler, ServerWorld world, Player
4448
CraftingResultInventory resultInventory,
4549
RecipeEntry<CraftingRecipe> recipe) {
4650
ItemStack itemStack = ItemStack.EMPTY;
51+
ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity)player;
52+
CraftingRecipeInput craftingRecipeInput = craftingInventory.createRecipeInput();
4753
resultInventory.setStack(0, itemStack);
4854
handler.setPreviousTrackedSlot(0, itemStack);
49-
55+
Optional<RecipeEntry<CraftingRecipe>> optional = world.getServer().getRecipeManager().getFirstMatch(RecipeType.CRAFTING, craftingRecipeInput, world, recipe);
56+
if (optional.isPresent()) {
57+
RecipeEntry<CraftingRecipe> recipeEntry = (RecipeEntry<CraftingRecipe>)optional.get();
58+
CraftingRecipe craftingRecipe = recipeEntry.value();
59+
if (resultInventory.shouldCraftRecipe(serverPlayerEntity, recipeEntry)) {
60+
ItemStack itemStack2 = craftingRecipe.craft(craftingRecipeInput, world.getRegistryManager());
61+
if (itemStack2.isItemEnabled(world.getEnabledFeatures())) {
62+
itemStack = itemStack2;
63+
}
64+
}
65+
}
5066
if (player instanceof ServerPlayerEntity serverPlayer) {
5167
serverPlayer.networkHandler.sendPacket(
5268
new ScreenHandlerSlotUpdateS2CPacket(handler.syncId, handler.nextRevision(), 0, itemStack)

src/main/java/com/junnio/polycoin/item/ModItemGroups.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static void initialize(){
3939
entries.add(ModItems.GOLD_COIN);
4040
entries.add(ModItems.GOLD_COIN_PILE);
4141
entries.add(ModItems.GOLD_BIG_COIN);
42-
//entries.add(ModBlocks.POLYM_TABLE);
42+
entries.add(ModBlocks.POLYM_TABLE);
4343
});
4444
}
4545
}

src/main/java/com/junnio/polycoin/recipe/ModRecipeTypes.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/main/java/com/junnio/polycoin/recipe/ModRecipes.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,7 @@
88
import net.minecraft.util.Identifier;
99

1010
public class ModRecipes {
11-
public static final RecipeSerializer<PolymCraftingRecipe> POLYM_CRAFTING_SERIALIZER = Registry.register(
12-
Registries.RECIPE_SERIALIZER, Identifier.of(PoLymCoin.MOD_ID, "polym_table"),
13-
new PolymCraftingRecipeSerializer());
14-
public static final RecipeType<PolymCraftingRecipe> POLYM_CRAFTING_TYPE = Registry.register(
15-
Registries.RECIPE_TYPE, Identifier.of(PoLymCoin.MOD_ID, "polym_table"), new RecipeType<PolymCraftingRecipe>() {
16-
@Override
17-
public String toString() {
18-
return "polym_table";
19-
}
20-
});
11+
public static void initialize(){
2112

22-
public static void registerRecipes() {
23-
PoLymCoin.LOGGER.info("Registering Custom Recipes for " + PoLymCoin.MOD_ID);
2413
}
2514
}

src/main/java/com/junnio/polycoin/recipe/PolymCraftingRecipe.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/main/java/com/junnio/polycoin/recipe/PolymCraftingRecipeSerializer.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)