Skip to content

Commit 729dfd5

Browse files
committed
Starting to re-add ghost projector helper
1 parent b8977aa commit 729dfd5

23 files changed

+728
-8
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package dev.compactmods.crafting.api;
2+
3+
public enum EnumCraftingState {
4+
NOT_MATCHED,
5+
MATCHED,
6+
CRAFTING
7+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package dev.compactmods.crafting.api;
2+
3+
public enum FieldDestabilizeHandling {
4+
DESTROY_ALL,
5+
DESTROY_CATALYST,
6+
DESTROY_BLOCKS,
7+
RESTORE_ALL,
8+
RESTORE_CATALYST,
9+
RESTORE_BLOCKS
10+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package dev.compactmods.crafting.api.catalyst;
2+
3+
import com.mojang.serialization.Codec;
4+
import dev.compactmods.crafting.api.catalyst.ICatalystMatcher;
5+
6+
public interface CatalystType<Matcher extends ICatalystMatcher> {
7+
8+
Codec<Matcher> getCodec();
9+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev.compactmods.crafting.api.catalyst;
2+
3+
import dev.compactmods.crafting.api.catalyst.CatalystType;
4+
import net.minecraft.world.item.ItemStack;
5+
6+
import java.util.Set;
7+
8+
public interface ICatalystMatcher {
9+
10+
boolean matches(ItemStack stack);
11+
12+
CatalystType<?> getType();
13+
14+
Set<ItemStack> getPossible();
15+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dev.compactmods.crafting.api.components;
2+
3+
import net.minecraft.core.BlockPos;
4+
import net.minecraft.world.level.levelgen.structure.BoundingBox;
5+
6+
import java.util.Collection;
7+
import java.util.Optional;
8+
import java.util.stream.Stream;
9+
10+
public interface IPositionalComponentLookup {
11+
12+
Collection<String> getComponents();
13+
14+
IPositionalComponentLookup add(BlockPos location, String component);
15+
void remove(String component);
16+
17+
Stream<BlockPos> getAllPositions();
18+
Stream<BlockPos> getPositionsForComponent(String component);
19+
Optional<String> getRequiredComponentKeyForPosition(BlockPos pos);
20+
21+
boolean containsLocation(BlockPos location);
22+
23+
void setFootprint(int xSize, int zSize);
24+
BoundingBox footprint();
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package dev.compactmods.crafting.api.components;
2+
3+
import dev.compactmods.crafting.api.components.IRecipeComponent;
4+
import net.minecraft.world.level.block.Block;
5+
import net.minecraft.world.level.block.state.BlockState;
6+
7+
public interface IRecipeBlockComponent extends IRecipeComponent {
8+
9+
boolean matches(BlockState state);
10+
11+
Block getBlock();
12+
BlockState getRenderState();
13+
14+
boolean didErrorRendering();
15+
void markRenderingErrored();
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package dev.compactmods.crafting.api.components;
2+
3+
import dev.compactmods.crafting.api.components.RecipeComponentType;
4+
5+
public interface IRecipeComponent {
6+
RecipeComponentType<?> getType();
7+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package dev.compactmods.crafting.api.components;
2+
3+
import dev.compactmods.crafting.api.components.IRecipeBlockComponent;
4+
import dev.compactmods.crafting.api.components.IRecipeComponent;
5+
import net.minecraft.world.level.block.state.BlockState;
6+
7+
import java.util.Map;
8+
import java.util.Optional;
9+
import java.util.stream.Stream;
10+
11+
public interface IRecipeComponents {
12+
13+
Map<String, dev.compactmods.crafting.api.components.IRecipeComponent> getAllComponents();
14+
15+
Map<String, dev.compactmods.crafting.api.components.IRecipeBlockComponent> getBlockComponents();
16+
17+
boolean isEmptyBlock(String key);
18+
19+
Optional<dev.compactmods.crafting.api.components.IRecipeBlockComponent> getBlock(String key);
20+
21+
boolean hasBlock(String key);
22+
23+
void registerBlock(String key, IRecipeBlockComponent component);
24+
void unregisterBlock(String key);
25+
26+
void registerOther(String key, IRecipeComponent component);
27+
28+
int size();
29+
30+
void clear();
31+
32+
Optional<String> getKey(BlockState state);
33+
34+
Stream<String> getEmptyComponents();
35+
36+
boolean isKnownKey(String key);
37+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package dev.compactmods.crafting.api.components;
2+
3+
import com.mojang.serialization.Codec;
4+
import dev.compactmods.crafting.api.components.IRecipeComponent;
5+
6+
public interface RecipeComponentType<C extends IRecipeComponent> {
7+
Codec<C> getCodec();
8+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package dev.compactmods.crafting.api.field;
2+
3+
import dev.compactmods.crafting.api.field.IMiniaturizationField;
4+
import net.minecraft.core.BlockPos;
5+
import net.minecraft.nbt.ListTag;
6+
import net.minecraft.resources.ResourceKey;
7+
import net.minecraft.world.level.ChunkPos;
8+
import net.minecraft.world.level.Level;
9+
import net.neoforged.neoforge.common.util.INBTSerializable;
10+
11+
import java.util.Optional;
12+
import java.util.stream.Stream;
13+
14+
public interface IActiveWorldFields extends INBTSerializable<ListTag> {
15+
16+
void setLevel(Level level);
17+
18+
Stream<dev.compactmods.crafting.api.field.IMiniaturizationField> getFields();
19+
20+
void tickFields();
21+
22+
/**
23+
* Adds a field instance. This is typically called during world load; use this safely.
24+
* @param field The field to register.
25+
*/
26+
default void addFieldInstance(dev.compactmods.crafting.api.field.IMiniaturizationField field) {}
27+
dev.compactmods.crafting.api.field.IMiniaturizationField registerField(dev.compactmods.crafting.api.field.IMiniaturizationField field);
28+
29+
void unregisterField(BlockPos center);
30+
void unregisterField(dev.compactmods.crafting.api.field.IMiniaturizationField field);
31+
32+
Optional<dev.compactmods.crafting.api.field.IMiniaturizationField> get(BlockPos center);
33+
34+
boolean hasActiveField(BlockPos center);
35+
36+
Stream<IMiniaturizationField> getFields(ChunkPos chunk);
37+
38+
ResourceKey<Level> getLevel();
39+
}

0 commit comments

Comments
 (0)