summaryrefslogtreecommitdiff
path: root/src/main/java/lv/enes/mc/eris_alchemy/block
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-01-27 04:57:45 +0200
committerGravatar Uko Kokņevičs2024-01-27 04:57:45 +0200
commit9081089c2e47a20e4108ee322204e8c8dbde4169 (patch)
tree0449d101a614d441ed922f52b3ce26971eb7d454 /src/main/java/lv/enes/mc/eris_alchemy/block
parentFix the fresh build (diff)
downloadmc-eris-alchemy-9081089c2e47a20e4108ee322204e8c8dbde4169.tar.gz
mc-eris-alchemy-9081089c2e47a20e4108ee322204e8c8dbde4169.tar.xz
mc-eris-alchemy-9081089c2e47a20e4108ee322204e8c8dbde4169.zip
Add support for WAILA (specifically with WTHIT).
Diffstat (limited to 'src/main/java/lv/enes/mc/eris_alchemy/block')
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/block/EmcStorageBlock.java18
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/block/EnergyCondenserBlock.java5
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/block/entity/EmcStorageEntity.java6
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java16
4 files changed, 36 insertions, 9 deletions
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/EmcStorageBlock.java b/src/main/java/lv/enes/mc/eris_alchemy/block/EmcStorageBlock.java
new file mode 100644
index 0000000..8c0b93e
--- /dev/null
+++ b/src/main/java/lv/enes/mc/eris_alchemy/block/EmcStorageBlock.java
@@ -0,0 +1,18 @@
1package lv.enes.mc.eris_alchemy.block;
2
3import net.minecraft.nbt.CompoundTag;
4import net.minecraft.world.item.BlockItem;
5import net.minecraft.world.item.ItemStack;
6
7// TODO: Somehow make this be an automatic thing depending on the EmcStorageEntity or something
8public interface EmcStorageBlock {
9 double getStoredEmc(CompoundTag blockEntityData);
10
11 default double getStoredEmc(ItemStack stack) {
12 var bed = BlockItem.getBlockEntityData(stack);
13 if (bed == null) {
14 return 0;
15 }
16 return getStoredEmc(bed);
17 }
18}
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/EnergyCondenserBlock.java b/src/main/java/lv/enes/mc/eris_alchemy/block/EnergyCondenserBlock.java
index af58fc6..19eb681 100644
--- a/src/main/java/lv/enes/mc/eris_alchemy/block/EnergyCondenserBlock.java
+++ b/src/main/java/lv/enes/mc/eris_alchemy/block/EnergyCondenserBlock.java
@@ -3,7 +3,6 @@ package lv.enes.mc.eris_alchemy.block;
3import jakarta.annotation.Nonnull; 3import jakarta.annotation.Nonnull;
4import jakarta.annotation.Nullable; 4import jakarta.annotation.Nullable;
5import lv.enes.mc.eris_alchemy.Emc; 5import lv.enes.mc.eris_alchemy.Emc;
6import lv.enes.mc.eris_alchemy.EmcStorage;
7import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry; 6import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry;
8import lv.enes.mc.eris_alchemy.block.entity.EnergyCondenserEntity; 7import lv.enes.mc.eris_alchemy.block.entity.EnergyCondenserEntity;
9import net.minecraft.core.BlockPos; 8import net.minecraft.core.BlockPos;
@@ -17,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState;
17 16
18import java.util.List; 17import java.util.List;
19 18
20public class EnergyCondenserBlock extends ChestLikeBlock<EnergyCondenserEntity> implements EmcStorage { 19public class EnergyCondenserBlock extends ChestLikeBlock<EnergyCondenserEntity> implements EmcStorageBlock {
21 public static final Component CONTAINER_TITLE 20 public static final Component CONTAINER_TITLE
22 = Component.translatable("container.eris_alchemy.energy_condenser"); 21 = Component.translatable("container.eris_alchemy.energy_condenser");
23 22
@@ -44,7 +43,7 @@ public class EnergyCondenserBlock extends ChestLikeBlock<EnergyCondenserEntity>
44 } 43 }
45 44
46 @Override 45 @Override
47 public double getStoredEmc(ItemStack stack, CompoundTag blockEntityData) { 46 public double getStoredEmc(CompoundTag blockEntityData) {
48 return blockEntityData.getDouble("stored_emc"); 47 return blockEntityData.getDouble("stored_emc");
49 } 48 }
50 49
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EmcStorageEntity.java b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EmcStorageEntity.java
new file mode 100644
index 0000000..465e743
--- /dev/null
+++ b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EmcStorageEntity.java
@@ -0,0 +1,6 @@
1package lv.enes.mc.eris_alchemy.block.entity;
2
3public interface EmcStorageEntity {
4 double getMaxEmc();
5 double getStoredEmc();
6}
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java
index 33a6250..105e9e3 100644
--- a/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java
+++ b/src/main/java/lv/enes/mc/eris_alchemy/block/entity/EnergyCondenserEntity.java
@@ -25,7 +25,7 @@ import org.quiltmc.loader.api.minecraft.ClientOnly;
25 25
26import java.util.stream.IntStream; 26import java.util.stream.IntStream;
27 27
28public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedScreenHandlerFactory { 28public class EnergyCondenserEntity extends ChestLikeEntity implements EmcStorageEntity, ExtendedScreenHandlerFactory {
29 private final static int WIDTH = 13; 29 private final static int WIDTH = 13;
30 private final static int HEIGHT = 7; 30 private final static int HEIGHT = 7;
31 31
@@ -49,6 +49,11 @@ public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedSc
49 return items; 49 return items;
50 } 50 }
51 51
52 @Override
53 public double getMaxEmc() {
54 return Emc.get(items.get(0)).orElse(Double.POSITIVE_INFINITY);
55 }
56
52 @ClientOnly 57 @ClientOnly
53 @Nonnull 58 @Nonnull
54 public Material getMaterial() { 59 public Material getMaterial() {
@@ -61,6 +66,7 @@ public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedSc
61 return Blocks.ENERGY_CONDENSER; 66 return Blocks.ENERGY_CONDENSER;
62 } 67 }
63 68
69 @Override
64 public double getStoredEmc() { 70 public double getStoredEmc() {
65 return storedEmc.getValue(); 71 return storedEmc.getValue();
66 } 72 }
@@ -89,11 +95,9 @@ public class EnergyCondenserEntity extends ChestLikeEntity implements ExtendedSc
89 @Override 95 @Override
90 public void tick(Level world, BlockPos pos, BlockState state) { 96 public void tick(Level world, BlockPos pos, BlockState state) {
91 super.tick(world, pos, state); 97 super.tick(world, pos, state);
92 Emc.get(items.get(0)).ifPresent(cost -> { 98 var cost = getMaxEmc();
93 tryConsumeEmc(cost); 99 tryConsumeEmc(cost);
94 tryCloneTemplate(cost); 100 tryCloneTemplate(cost);
95 });
96
97 this.storedEmc.syncIfChanged(ContainerOpenersCounterUtil.getOpeners(openersCounter)); 101 this.storedEmc.syncIfChanged(ContainerOpenersCounterUtil.getOpeners(openersCounter));
98 } 102 }
99 103