Skip to content

Commit eeb498e

Browse files
the progress is insane
1 parent 9faf200 commit eeb498e

File tree

13 files changed

+1136
-1055
lines changed

13 files changed

+1136
-1055
lines changed

neoforge-main/src/main/java/dev/compactmods/crafting/client/render/GhostRenderer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public static void renderTransparentBlock(BlockState state, @Nullable BlockPos p
6868
}
6969

7070
public static void renderTransparentBlock(BlockState state, @Nullable BlockPos pos, PoseStack matrix, MultiBufferSource buffer, int ticksLeft) {
71+
System.out.println("Rendering ghost block: " + state);
7172
final Minecraft mc = Minecraft.getInstance();
7273
final BlockColors colors = mc.getBlockColors();
7374

neoforge-main/src/main/java/dev/compactmods/crafting/client/render/field/MiniaturizationFieldRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public static void render(Level level, IMiniaturizationField<MiniaturizationReci
6363
pose.pushPose();
6464
{
6565
pose.translate(-projectedView.x, -projectedView.y, -projectedView.z);
66-
if(field.getCraftingState() == EnumCraftingState.CRAFTING) {
66+
if(field.getCraftingState() == EnumCraftingState.CRAFTING && field.currentRecipe() != null) {
6767
CraftingPreviewRenderer.render(field.currentRecipe(), field.getProgress(), pose, buffers, 0, 0);
6868
}
6969

neoforge-main/src/main/java/dev/compactmods/crafting/compat/jei/JeiMiniaturizationCraftingCategory.java

Lines changed: 519 additions & 514 deletions
Large diffs are not rendered by default.
Lines changed: 52 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,52 @@
1-
//package dev.compactmods.crafting.compat.jei;
2-
//
3-
//import dev.compactmods.crafting.CompactCrafting;
4-
//import dev.compactmods.crafting.core.CCItems;
5-
//import dev.compactmods.crafting.core.CCMiniaturizationRecipes;
6-
//import mezz.jei.api.IModPlugin;
7-
//import mezz.jei.api.JeiPlugin;
8-
//import mezz.jei.api.registration.IGuiHandlerRegistration;
9-
//import mezz.jei.api.registration.IRecipeCatalystRegistration;
10-
//import mezz.jei.api.registration.IRecipeCategoryRegistration;
11-
//import mezz.jei.api.registration.IRecipeRegistration;
12-
//import net.minecraft.client.Minecraft;
13-
//import net.minecraft.client.multiplayer.ClientLevel;
14-
//import net.minecraft.resources.ResourceLocation;
15-
//import net.minecraft.world.item.ItemStack;
16-
//import net.minecraft.world.item.crafting.RecipeManager;
17-
//
18-
//@JeiPlugin
19-
//public class JeiMiniaturizationPlugin implements IModPlugin {
20-
// @Override
21-
// public ResourceLocation getPluginUid() {
22-
// return new ResourceLocation(CompactCrafting.MOD_ID, "miniaturization_crafting");
23-
// }
24-
//
25-
// @Override
26-
// public void registerCategories(IRecipeCategoryRegistration registration) {
27-
// registration.addRecipeCategories(new JeiMiniaturizationCraftingCategory(registration.getJeiHelpers().getGuiHelper()));
28-
// }
29-
//
30-
// @Override
31-
// public void registerGuiHandlers(IGuiHandlerRegistration registration) {
32-
// }
33-
//
34-
// @Override
35-
// public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
36-
// registration.addRecipeCatalyst(
37-
// new ItemStack(CCItems.FIELD_PROJECTOR_ITEM.get(), 4),
38-
// JeiMiniaturizationCraftingCategory.RECIPE_TYPE);
39-
//
40-
// }
41-
//
42-
// @Override
43-
// public void registerRecipes(IRecipeRegistration registration) {
44-
// ClientLevel w = Minecraft.getInstance().level;
45-
// RecipeManager rm = w == null ? null : w.getRecipeManager();
46-
// if(rm != null) {
47-
// final var miniRecipes = rm.getAllRecipesFor(CCMiniaturizationRecipes.MINIATURIZATION_RECIPE.get());
48-
// registration.addRecipes(JeiMiniaturizationCraftingCategory.RECIPE_TYPE, miniRecipes);
49-
// }
50-
// }
51-
//}
1+
package dev.compactmods.crafting.compat.jei;
2+
3+
import dev.compactmods.crafting.CompactCrafting;
4+
import dev.compactmods.crafting.core.CCItems;
5+
import dev.compactmods.crafting.core.CCMiniaturizationRecipes;
6+
import mezz.jei.api.IModPlugin;
7+
import mezz.jei.api.JeiPlugin;
8+
import mezz.jei.api.registration.IGuiHandlerRegistration;
9+
import mezz.jei.api.registration.IRecipeCatalystRegistration;
10+
import mezz.jei.api.registration.IRecipeCategoryRegistration;
11+
import mezz.jei.api.registration.IRecipeRegistration;
12+
import net.minecraft.client.Minecraft;
13+
import net.minecraft.client.multiplayer.ClientLevel;
14+
import net.minecraft.resources.ResourceLocation;
15+
import net.minecraft.world.item.ItemStack;
16+
import net.minecraft.world.item.crafting.RecipeManager;
17+
18+
@JeiPlugin
19+
public class JeiMiniaturizationPlugin implements IModPlugin {
20+
@Override
21+
public ResourceLocation getPluginUid() {
22+
return ResourceLocation.fromNamespaceAndPath(CompactCrafting.MOD_ID, "miniaturization_crafting");
23+
}
24+
25+
@Override
26+
public void registerCategories(IRecipeCategoryRegistration registration) {
27+
registration.addRecipeCategories(new JeiMiniaturizationCraftingCategory(registration.getJeiHelpers().getGuiHelper()));
28+
}
29+
30+
@Override
31+
public void registerGuiHandlers(IGuiHandlerRegistration registration) {
32+
}
33+
34+
@Override
35+
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
36+
registration.addRecipeCatalyst(
37+
new ItemStack(CCItems.FIELD_PROJECTOR_ITEM.get(), 4),
38+
JeiMiniaturizationCraftingCategory.RECIPE_TYPE);
39+
40+
}
41+
42+
@Override
43+
public void registerRecipes(IRecipeRegistration registration) {
44+
ClientLevel w = Minecraft.getInstance().level;
45+
RecipeManager rm = w == null ? null : w.getRecipeManager();
46+
if(rm != null) {
47+
final var miniRecipeHolders = rm.getAllRecipesFor(CCMiniaturizationRecipes.MINIATURIZATION_RECIPE.get());
48+
final var miniRecipes = miniRecipeHolders.stream().map(holder -> holder.value()).toList();
49+
registration.addRecipes(JeiMiniaturizationCraftingCategory.RECIPE_TYPE, miniRecipes);
50+
}
51+
}
52+
}
Lines changed: 85 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,85 @@
1-
//package dev.compactmods.crafting.client.fakeworld;
2-
//
3-
//import dev.compactmods.crafting.api.components.IRecipeBlockComponent;
4-
//import dev.compactmods.crafting.api.recipe.layers.IRecipeLayer;
5-
//import dev.compactmods.crafting.recipes.MiniaturizationRecipe;
6-
//import dev.compactmods.crafting.util.BlockSpaceUtil;
7-
//import net.minecraft.core.BlockPos;
8-
//import net.minecraft.core.registries.Registries;
9-
//import net.minecraft.world.level.ChunkPos;
10-
//import net.minecraft.world.level.biome.Biomes;
11-
//import net.minecraft.world.level.block.Blocks;
12-
//import net.minecraft.world.level.block.EntityBlock;
13-
//import net.minecraft.world.level.block.entity.BlockEntity;
14-
//import net.minecraft.world.level.block.state.BlockState;
15-
//import net.minecraft.world.level.chunk.EmptyLevelChunk;
16-
//import net.minecraft.world.level.material.FluidState;
17-
//
18-
//import org.jetbrains.annotations.Nullable;
19-
//import java.util.HashMap;
20-
//import java.util.Map;
21-
//import java.util.Optional;
22-
//
23-
//public class RecipeChunk extends EmptyLevelChunk {
24-
// private final MiniaturizationRecipe recipe;
25-
// private final Map<BlockPos, BlockState> blockCache;
26-
// private final Map<BlockPos, BlockEntity> tileCache;
27-
//
28-
// public RecipeChunk(RenderingWorld renderingLevel, ChunkPos chunkPos, MiniaturizationRecipe recipe) {
29-
// super(renderingLevel, chunkPos, renderingLevel.registryAccess().registryOrThrow(Registries.BIOME).getHolderOrThrow(Biomes.THE_VOID));
30-
// this.recipe = recipe;
31-
//
32-
// this.blockCache = new HashMap<>();
33-
// this.tileCache = new HashMap<>();
34-
//
35-
// BlockSpaceUtil.getBlocksIn(recipe.getDimensions()).forEach(pos -> {
36-
// int y = pos.getY();
37-
// Optional<IRecipeLayer> layer = recipe.getLayer(y);
38-
//
39-
// if(!layer.isPresent())
40-
// return;
41-
//
42-
// IRecipeLayer rLayer = layer.get();
43-
// Optional<String> componentForPosition = rLayer.getComponentForPosition(pos.below(y));
44-
//
45-
// BlockState posState = componentForPosition
46-
// .flatMap(recipe.getComponents()::getBlock)
47-
// .map(IRecipeBlockComponent::getRenderState)
48-
// .orElse(Blocks.VOID_AIR.defaultBlockState());
49-
//
50-
// blockCache.put(pos, posState);
51-
//
52-
// if(posState.getBlock() instanceof EntityBlock eb) {
53-
// BlockEntity tile = eb.newBlockEntity(pos.immutable(), posState);
54-
// if(tile != null) {
55-
// tile.setLevel(renderingLevel);
56-
// tileCache.put(pos.immutable(), tile);
57-
// }
58-
// }
59-
// });
60-
// }
61-
//
62-
// @Override
63-
// public BlockState getBlockState(BlockPos pos) {
64-
// if(blockCache.containsKey(pos))
65-
// return blockCache.get(pos);
66-
//
67-
// return Blocks.VOID_AIR.defaultBlockState();
68-
// }
69-
//
70-
// @Override
71-
// public FluidState getFluidState(BlockPos pos) {
72-
// return getBlockState(pos).getFluidState();
73-
// }
74-
//
75-
// @Nullable
76-
// @Override
77-
// public BlockEntity getBlockEntity(BlockPos pos) {
78-
// return tileCache.get(pos);
79-
// }
80-
//
81-
// @Nullable
82-
// @Override
83-
// public BlockEntity getBlockEntity(BlockPos pos, EntityCreationType createType) {
84-
// return tileCache.get(pos);
85-
// }
86-
//}
1+
package dev.compactmods.crafting.fakeworld;
2+
3+
import javax.annotation.Nullable;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
import java.util.Optional;
7+
import dev.compactmods.crafting.api.components.IRecipeBlockComponent;
8+
import dev.compactmods.crafting.api.recipe.layers.IRecipeLayer;
9+
import dev.compactmods.crafting.recipes.MiniaturizationRecipe;
10+
import dev.compactmods.crafting.util.BlockSpaceUtil;
11+
import net.minecraft.core.BlockPos;
12+
import net.minecraft.world.level.ChunkPos;
13+
import net.minecraft.world.level.biome.Biomes;
14+
import net.minecraft.world.level.block.Blocks;
15+
import net.minecraft.world.level.block.EntityBlock;
16+
import net.minecraft.world.level.block.entity.BlockEntity;
17+
import net.minecraft.world.level.block.state.BlockState;
18+
import net.minecraft.world.level.chunk.EmptyLevelChunk;
19+
import net.minecraft.world.level.material.FluidState;
20+
import net.minecraft.core.registries.Registries;
21+
22+
public class RecipeChunk extends EmptyLevelChunk {
23+
private final MiniaturizationRecipe recipe;
24+
private final Map<BlockPos, BlockState> blockCache;
25+
private final Map<BlockPos, BlockEntity> tileCache;
26+
27+
public RecipeChunk(RenderingWorld renderingLevel, ChunkPos chunkPos, MiniaturizationRecipe recipe) {
28+
super(renderingLevel, chunkPos, renderingLevel.registryAccess().registryOrThrow(Registries.BIOME).getHolderOrThrow(Biomes.THE_VOID));
29+
this.recipe = recipe;
30+
31+
this.blockCache = new HashMap<>();
32+
this.tileCache = new HashMap<>();
33+
34+
BlockSpaceUtil.getBlocksIn(recipe.getDimensions()).forEach(pos -> {
35+
int y = pos.getY();
36+
Optional<IRecipeLayer> layer = recipe.getLayer(y);
37+
38+
if(!layer.isPresent())
39+
return;
40+
41+
IRecipeLayer rLayer = layer.get();
42+
Optional<String> componentForPosition = rLayer.getComponentForPosition(pos.below(y));
43+
44+
BlockState posState = componentForPosition
45+
.flatMap(recipe.getComponents()::getBlock)
46+
.map(IRecipeBlockComponent::getRenderState)
47+
.orElse(Blocks.VOID_AIR.defaultBlockState());
48+
49+
blockCache.put(pos, posState);
50+
51+
if(posState.getBlock() instanceof EntityBlock eb) {
52+
BlockEntity tile = eb.newBlockEntity(pos.immutable(), posState);
53+
if(tile != null) {
54+
tile.setLevel(renderingLevel);
55+
tileCache.put(pos.immutable(), tile);
56+
}
57+
}
58+
});
59+
}
60+
61+
@Override
62+
public BlockState getBlockState(BlockPos pos) {
63+
if(blockCache.containsKey(pos))
64+
return blockCache.get(pos);
65+
66+
return Blocks.VOID_AIR.defaultBlockState();
67+
}
68+
69+
@Override
70+
public FluidState getFluidState(BlockPos pos) {
71+
return getBlockState(pos).getFluidState();
72+
}
73+
74+
@Nullable
75+
@Override
76+
public BlockEntity getBlockEntity(BlockPos pos) {
77+
return tileCache.get(pos);
78+
}
79+
80+
@Nullable
81+
@Override
82+
public BlockEntity getBlockEntity(BlockPos pos, EntityCreationType createType) {
83+
return tileCache.get(pos);
84+
}
85+
}

0 commit comments

Comments
 (0)