Skip to content

Commit a301365

Browse files
authored
Merge pull request #325 from Mixinors/development-1.16.3
1.11.2
2 parents 263bcc0 + c9c3b5f commit a301365

File tree

152 files changed

+4061
-386
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+4061
-386
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.github.chainmailstudios.astromine.datagen.generator.recipe.set;
2+
3+
import net.minecraft.advancement.criterion.ImpossibleCriterion;
4+
import net.minecraft.data.server.recipe.CookingRecipeJsonFactory;
5+
import net.minecraft.item.Item;
6+
import net.minecraft.recipe.Ingredient;
7+
8+
import com.github.chainmailstudios.astromine.datagen.material.MaterialItemType;
9+
import com.github.chainmailstudios.astromine.datagen.material.MaterialSet;
10+
import me.shedaniel.cloth.api.datagen.v1.RecipeData;
11+
12+
import java.util.Arrays;
13+
import java.util.Collection;
14+
15+
public class MultiBlastingSetRecipeGenerator extends MultiCookingSetRecipeGenerator {
16+
public MultiBlastingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output, int time, float experience) {
17+
super(inputs, output, time, experience);
18+
}
19+
20+
public MultiBlastingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output, float experience) {
21+
this(inputs, output, 100, experience);
22+
}
23+
24+
public MultiBlastingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output) {
25+
this(inputs, output, 100, 0.1f);
26+
}
27+
28+
@Override
29+
public void generate(RecipeData recipes, MaterialSet set) {
30+
Collection<Item> items = getInputs(set);
31+
CookingRecipeJsonFactory
32+
.createBlasting(
33+
Ingredient.ofItems(items.toArray(new Item[0])),
34+
set.getItem(output),
35+
experience,
36+
time)
37+
.criterion("impossible", new ImpossibleCriterion.Conditions())
38+
.offerTo(recipes, getRecipeId(set));
39+
}
40+
41+
@Override
42+
public String getRecipeName(MaterialSet set) {
43+
return set.getItemIdPath(output) + "_from_blasting";
44+
}
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.github.chainmailstudios.astromine.datagen.generator.recipe.set;
2+
3+
import net.minecraft.item.Item;
4+
5+
import com.github.chainmailstudios.astromine.datagen.generator.recipe.set.base.CookingSetRecipeGenerator;
6+
import com.github.chainmailstudios.astromine.datagen.material.MaterialItemType;
7+
import com.github.chainmailstudios.astromine.datagen.material.MaterialSet;
8+
9+
import java.util.ArrayList;
10+
import java.util.Collection;
11+
12+
public abstract class MultiCookingSetRecipeGenerator extends CookingSetRecipeGenerator {
13+
private final Collection<MaterialItemType> inputs;
14+
15+
public MultiCookingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output, int time, float experience) {
16+
super(inputs.stream().findFirst().get(), output, time, experience);
17+
this.inputs = inputs;
18+
}
19+
20+
public Collection<MaterialItemType> getInputs() {
21+
return inputs;
22+
}
23+
24+
public Collection<Item> getInputs(MaterialSet set) {
25+
ArrayList<Item> items = new ArrayList<>();
26+
for(MaterialItemType type:getInputs()) {
27+
if(shouldGenerate(set, type)) items.add(set.getItem(type));
28+
}
29+
return items;
30+
}
31+
32+
@Override
33+
public boolean shouldGenerate(MaterialSet set) {
34+
boolean hasInput = false;
35+
for(MaterialItemType type:getInputs()) {
36+
if(set.hasType(type)) hasInput = true;
37+
}
38+
return hasInput && set.hasType(output);
39+
}
40+
41+
public boolean shouldGenerate(MaterialSet set, MaterialItemType type) {
42+
return set.hasType(output) && set.hasType(type) && !(set.isFromVanilla(type) && set.isFromVanilla(output));
43+
}
44+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.github.chainmailstudios.astromine.datagen.generator.recipe.set;
2+
3+
import net.minecraft.advancement.criterion.ImpossibleCriterion;
4+
import net.minecraft.data.server.recipe.CookingRecipeJsonFactory;
5+
import net.minecraft.item.Item;
6+
import net.minecraft.recipe.Ingredient;
7+
8+
import com.github.chainmailstudios.astromine.datagen.material.MaterialItemType;
9+
import com.github.chainmailstudios.astromine.datagen.material.MaterialSet;
10+
import me.shedaniel.cloth.api.datagen.v1.RecipeData;
11+
12+
import java.util.Arrays;
13+
import java.util.Collection;
14+
15+
public class MultiSmeltingSetRecipeGenerator extends MultiCookingSetRecipeGenerator {
16+
17+
public MultiSmeltingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output, int time, float experience) {
18+
super(inputs, output, time, experience);
19+
}
20+
21+
public MultiSmeltingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output, float experience) {
22+
this(inputs, output, 200, experience);
23+
}
24+
25+
public MultiSmeltingSetRecipeGenerator(Collection<MaterialItemType> inputs, MaterialItemType output) {
26+
this(inputs, output, 200, 0.1f);
27+
}
28+
29+
@Override
30+
public void generate(RecipeData recipes, MaterialSet set) {
31+
Collection<Item> items = getInputs(set);
32+
CookingRecipeJsonFactory
33+
.createSmelting(
34+
Ingredient.ofItems(items.toArray(new Item[0])),
35+
set.getItem(output),
36+
experience,
37+
time)
38+
.criterion("impossible", new ImpossibleCriterion.Conditions())
39+
.offerTo(recipes, getRecipeId(set));
40+
}
41+
42+
@Override
43+
public String getRecipeName(MaterialSet set) {
44+
return set.getItemIdPath(output) + "_from_smelting";
45+
}
46+
}

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/block/entity/base/ComponentBlockEntity.java

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
package com.github.chainmailstudios.astromine.common.block.entity.base;
2626

27+
import nerdhub.cardinal.components.api.component.ComponentProvider;
2728
import net.fabricmc.fabric.api.block.entity.BlockEntityClientSerializable;
2829
import net.fabricmc.fabric.api.network.PacketContext;
2930

@@ -46,7 +47,6 @@
4647
import com.github.chainmailstudios.astromine.AstromineCommon;
4748
import com.github.chainmailstudios.astromine.common.block.base.BlockWithEntity;
4849
import com.github.chainmailstudios.astromine.common.block.transfer.TransferType;
49-
import com.github.chainmailstudios.astromine.common.component.SidedComponentProvider;
5050
import com.github.chainmailstudios.astromine.common.component.block.entity.BlockEntityTransferComponent;
5151
import com.github.chainmailstudios.astromine.common.component.inventory.FluidInventoryComponent;
5252
import com.github.chainmailstudios.astromine.common.packet.PacketConsumer;
@@ -71,7 +71,7 @@
7171
import java.util.function.BiConsumer;
7272
import java.util.stream.Collectors;
7373

74-
public abstract class ComponentBlockEntity extends net.minecraft.block.entity.BlockEntity implements SidedComponentProvider, PacketConsumer, BlockEntityClientSerializable, Tickable {
74+
public abstract class ComponentBlockEntity extends net.minecraft.block.entity.BlockEntity implements ComponentProvider, PacketConsumer, BlockEntityClientSerializable, Tickable {
7575
public static final Identifier TRANSFER_UPDATE_PACKET = AstromineCommon.identifier("transfer_update_packet");
7676
protected final BlockEntityTransferComponent transferComponent = new BlockEntityTransferComponent();
7777
protected final Map<ComponentType<?>, Component> allComponents = Maps.newHashMap();
@@ -113,21 +113,6 @@ public void consumePacket(Identifier identifier, PacketByteBuf buffer, PacketCon
113113
allHandlers.get(identifier).accept(buffer, context);
114114
}
115115

116-
@Override
117-
public <T extends Component> Collection<T> getSidedComponents(Direction direction) {
118-
if (direction == null) {
119-
return (Collection<T>) allComponents.values();
120-
} else {
121-
if (getCachedState().contains(HorizontalFacingBlock.FACING)) {
122-
return (Collection<T>) getComponentTypes().stream().map(type -> new Pair<>((ComponentType) type, (Component) getComponent(type))).filter(pair -> !transferComponent.get(pair.getLeft()).get(direction).isNone()).map(Pair::getRight).collect(Collectors.toList());
123-
} else if (getCachedState().contains(FacingBlock.FACING)) {
124-
return (Collection<T>) getComponentTypes().stream().map(type -> new Pair<>((ComponentType) type, (Component) getComponent(type))).filter(pair -> !transferComponent.get(pair.getLeft()).get(direction).isNone()).map(Pair::getRight).collect(Collectors.toList());
125-
} else {
126-
return Lists.newArrayList();
127-
}
128-
}
129-
}
130-
131116
@Override
132117
public boolean hasComponent(ComponentType<?> componentType) {
133118
return allComponents.containsKey(componentType) || componentType == AstromineComponentTypes.BLOCK_ENTITY_TRANSFER_COMPONENT;
@@ -194,11 +179,10 @@ public void tick() {
194179

195180
for (Direction offsetDirection : Direction.values()) {
196181
BlockPos neighborPos = getPos().offset(offsetDirection);
197-
BlockState neighborState = world.getBlockState(neighborPos);
198182

199183
net.minecraft.block.entity.BlockEntity neighborBlockEntity = world.getBlockEntity(neighborPos);
200-
if (neighborBlockEntity != null) {
201-
SidedComponentProvider neighborProvider = SidedComponentProvider.fromBlockEntity(neighborBlockEntity);
184+
if (neighborBlockEntity instanceof ComponentProvider) {
185+
ComponentProvider neighborProvider = (ComponentProvider) neighborBlockEntity;
202186
Direction neighborDirection = offsetDirection.getOpposite();
203187
BlockEntityTransferComponent neighborTransferComponent = neighborProvider != null ? neighborProvider.getComponent(AstromineComponentTypes.BLOCK_ENTITY_TRANSFER_COMPONENT) : null;
204188

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/block/entity/base/ComponentEnergyFluidBlockEntity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,10 @@
2929
import net.minecraft.block.Block;
3030
import net.minecraft.block.entity.BlockEntityType;
3131

32-
import com.github.chainmailstudios.astromine.common.component.SidedComponentProvider;
3332
import com.github.chainmailstudios.astromine.common.component.inventory.FluidInventoryComponent;
3433
import com.github.chainmailstudios.astromine.registry.AstromineComponentTypes;
3534

36-
public abstract class ComponentEnergyFluidBlockEntity extends ComponentEnergyBlockEntity implements SidedComponentProvider, BlockEntityClientSerializable {
35+
public abstract class ComponentEnergyFluidBlockEntity extends ComponentEnergyBlockEntity {
3736
protected final FluidInventoryComponent fluidComponent = createFluidComponent();
3837

3938
public ComponentEnergyFluidBlockEntity(Block energyBlock, BlockEntityType<?> type) {

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/block/entity/base/ComponentFluidBlockEntity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@
2828

2929
import net.minecraft.block.entity.BlockEntityType;
3030

31-
import com.github.chainmailstudios.astromine.common.component.SidedComponentProvider;
3231
import com.github.chainmailstudios.astromine.common.component.inventory.FluidInventoryComponent;
3332
import com.github.chainmailstudios.astromine.registry.AstromineComponentTypes;
3433

35-
public abstract class ComponentFluidBlockEntity extends ComponentBlockEntity implements SidedComponentProvider, BlockEntityClientSerializable {
34+
public abstract class ComponentFluidBlockEntity extends ComponentBlockEntity {
3635
protected final FluidInventoryComponent fluidComponent = createFluidComponent();
3736

3837
public ComponentFluidBlockEntity(BlockEntityType<?> type) {

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/component/SidedComponentProvider.java

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

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/component/inventory/FluidInventoryComponent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ default boolean canExtract(@Nullable Direction direction, FluidVolume volume, in
9898

9999
default TypedActionResult<FluidVolume> insert(Direction direction, FluidVolume volume) {
100100
Optional<Map.Entry<Integer, FluidVolume>> matchingVolumeOptional = this.getContents().entrySet().stream().filter(entry -> {
101-
return canInsert(direction, entry.getValue(), entry.getKey()) && entry.getValue().canAccept(volume.getFluid());
101+
return canInsert(direction, volume, entry.getKey()) && entry.getValue().canAccept(volume.getFluid());
102102
}).findFirst();
103103

104104
if (matchingVolumeOptional.isPresent()) {

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/lba/LibBlockAttributesCompatibility.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
package com.github.chainmailstudios.astromine.common.lba;
2626

27+
import com.github.chainmailstudios.astromine.common.component.block.entity.BlockEntityTransferComponent;
28+
import nerdhub.cardinal.components.api.component.ComponentProvider;
2729
import net.minecraft.block.BlockState;
2830
import net.minecraft.block.entity.BlockEntity;
2931
import net.minecraft.fluid.Fluid;
@@ -42,7 +44,6 @@
4244
import alexiil.mc.lib.attributes.fluid.amount.FluidAmount;
4345
import alexiil.mc.lib.attributes.fluid.volume.FluidKey;
4446
import alexiil.mc.lib.attributes.fluid.volume.FluidKeys;
45-
import com.github.chainmailstudios.astromine.common.component.SidedComponentProvider;
4647
import com.github.chainmailstudios.astromine.common.component.inventory.FluidInventoryComponent;
4748
import com.github.chainmailstudios.astromine.common.volume.fluid.FluidVolume;
4849
import com.github.chainmailstudios.astromine.common.volume.fraction.Fraction;
@@ -63,17 +64,22 @@ private static <T> void appendAdder(Attribute<T> attribute) {
6364
private static <T> void append(World world, BlockPos blockPos, BlockState state, AttributeList<T> list) {
6465
BlockEntity blockEntity = world.getBlockEntity(blockPos);
6566

66-
if (blockEntity != null) {
67-
SidedComponentProvider sidedComponentProvider = SidedComponentProvider.fromBlockEntity(blockEntity);
67+
if (blockEntity instanceof ComponentProvider) {
68+
ComponentProvider componentProvider = (ComponentProvider) blockEntity;
6869

69-
if (sidedComponentProvider != null) {
70-
@Nullable
71-
Direction direction = list.getTargetSide();
70+
@Nullable
71+
Direction direction = list.getTargetSide();
7272

73-
FluidInventoryComponent component = sidedComponentProvider.getSidedComponent(direction, AstromineComponentTypes.FLUID_INVENTORY_COMPONENT);
73+
if (direction != null) {
74+
BlockEntityTransferComponent transferComponent = componentProvider.getComponent(AstromineComponentTypes.BLOCK_ENTITY_TRANSFER_COMPONENT);
7475

75-
if (component != null) {
76-
list.offer(new LibBlockAttributesWrapper(component));
76+
// This does not check canInsert or canExtract; because I do not know how the hell to do that with LBA.
77+
if (transferComponent != null && !transferComponent.get(AstromineComponentTypes.FLUID_INVENTORY_COMPONENT).get(direction).isNone()) {
78+
FluidInventoryComponent component = componentProvider.getComponent(AstromineComponentTypes.FLUID_INVENTORY_COMPONENT);
79+
80+
if (component != null) {
81+
list.offer(new LibBlockAttributesWrapper(component));
82+
}
7783
}
7884
}
7985
}

astromine-core/src/main/java/com/github/chainmailstudios/astromine/common/network/type/FluidNetworkType.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,12 @@
2424

2525
package com.github.chainmailstudios.astromine.common.network.type;
2626

27-
import net.minecraft.block.FacingBlock;
28-
import net.minecraft.block.HorizontalFacingBlock;
27+
import nerdhub.cardinal.components.api.component.ComponentProvider;
2928
import net.minecraft.block.entity.BlockEntity;
30-
import net.minecraft.state.property.Property;
3129
import net.minecraft.util.Pair;
3230
import net.minecraft.util.math.Direction;
3331

3432
import com.github.chainmailstudios.astromine.common.block.transfer.TransferType;
35-
import com.github.chainmailstudios.astromine.common.component.SidedComponentProvider;
3633
import com.github.chainmailstudios.astromine.common.component.block.entity.BlockEntityTransferComponent;
3734
import com.github.chainmailstudios.astromine.common.component.inventory.FluidInventoryComponent;
3835
import com.github.chainmailstudios.astromine.common.network.NetworkInstance;
@@ -57,20 +54,14 @@ public void tick(NetworkInstance instance) {
5754
BlockEntity blockEntity = instance.getWorld().getBlockEntity(memberNode.getBlockPos());
5855
NetworkMember networkMember = NetworkMemberRegistry.get(blockEntity);
5956

60-
if (blockEntity instanceof SidedComponentProvider && networkMember.acceptsType(this)) {
61-
SidedComponentProvider provider = SidedComponentProvider.fromBlockEntity(blockEntity);
57+
if (blockEntity instanceof ComponentProvider && networkMember.acceptsType(this)) {
58+
ComponentProvider provider = (ComponentProvider) blockEntity;
6259

63-
FluidInventoryComponent fluidComponent = provider.getSidedComponent(memberNode.getDirection(), AstromineComponentTypes.FLUID_INVENTORY_COMPONENT);
60+
FluidInventoryComponent fluidComponent = provider.getComponent(AstromineComponentTypes.FLUID_INVENTORY_COMPONENT);
6461

6562
BlockEntityTransferComponent transferComponent = provider.getComponent(AstromineComponentTypes.BLOCK_ENTITY_TRANSFER_COMPONENT);
6663

67-
before:
6864
if (fluidComponent != null && transferComponent != null) {
69-
Property<Direction> property = blockEntity.getCachedState().contains(HorizontalFacingBlock.FACING) ? HorizontalFacingBlock.FACING : blockEntity.getCachedState().contains(FacingBlock.FACING) ? FacingBlock.FACING : null;
70-
71-
if (!blockEntity.getCachedState().contains(property))
72-
break before;
73-
7465
TransferType type = transferComponent.get(AstromineComponentTypes.FLUID_INVENTORY_COMPONENT).get(memberNode.getDirection());
7566

7667
if (!type.isDisabled()) {

0 commit comments

Comments
 (0)