summaryrefslogtreecommitdiff
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
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).
-rw-r--r--TODO.md6
-rw-r--r--build.gradle.kts13
-rw-r--r--gradle.properties1
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/Emc.java14
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/EmcStorage.java17
-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
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/waila/EmcProvider.java22
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/waila/WailaPlugin.java20
-rw-r--r--src/main/resources/assets/eris_alchemy/lang/en_us.json2
-rw-r--r--src/main/resources/waila_plugins.json7
13 files changed, 111 insertions, 36 deletions
diff --git a/TODO.md b/TODO.md
index 97ca272..4216084 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,4 +1,8 @@
1# TODO # 1# TODO #
2 2
3- custom model for guide book 3- custom model for guide book
4- proper EmcLoader with separate prepare and apply stages \ No newline at end of file 4- proper EmcLoader with separate prepare and apply stages
5- use badpackets for communication
6- maybe neoforge support in the future? Like when I go to 1.21.x.
7- make crossbow & shield repairable with low covalence dust
8- Support all of my modpack :3 \ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 3d19748..465bbef 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,18 +14,21 @@ val minecraftVersion: String by project
14val patchouliVersion: String by project 14val patchouliVersion: String by project
15val quiltMappings: String by project 15val quiltMappings: String by project
16val quiltedFabricApiVersion: String by project 16val quiltedFabricApiVersion: String by project
17val wthitVersion: String by project
17 18
18group = groupid 19group = groupid
19version = modVersion 20version = modVersion
20 21
21repositories { 22repositories {
22 maven { 23 maven {
24 // For Patchouli
23 url = uri("https://maven.blamejared.com") 25 url = uri("https://maven.blamejared.com")
24 content { 26 content {
25 includeGroup("vazkii.patchouli") 27 includeGroup("vazkii.patchouli")
26 } 28 }
27 } 29 }
28 maven { 30 maven {
31 // For Chipped
29 url = uri("https://maven.resourcefulbees.com/repository/maven-public/") 32 url = uri("https://maven.resourcefulbees.com/repository/maven-public/")
30 content { 33 content {
31 includeGroup("com.teamresourceful") 34 includeGroup("com.teamresourceful")
@@ -35,6 +38,14 @@ repositories {
35 includeGroup("earth.terrarium.chipped") 38 includeGroup("earth.terrarium.chipped")
36 } 39 }
37 } 40 }
41 maven {
42 // For WTHIT
43 url = uri("https://maven2.bai.lol")
44 content {
45 includeGroup("lol.bai")
46 includeGroup("mcp.mobius.waila")
47 }
48 }
38} 49}
39 50
40loom { 51loom {
@@ -58,6 +69,8 @@ dependencies {
58 exclude(group = "net.fabricmc", module = "fabric-loader") 69 exclude(group = "net.fabricmc", module = "fabric-loader")
59 } 70 }
60 71
72 modCompileOnly("mcp.mobius.waila:wthit-api:quilt-${wthitVersion}")
73
61 modCompileOnly("earth.terrarium.chipped:chipped-fabric-${minecraftVersion}:${chippedVersion}") 74 modCompileOnly("earth.terrarium.chipped:chipped-fabric-${minecraftVersion}:${chippedVersion}")
62 75
63 compileOnly("jakarta.annotation:jakarta.annotation-api:${jakartaAnnotationVersion}") 76 compileOnly("jakarta.annotation:jakarta.annotation-api:${jakartaAnnotationVersion}")
diff --git a/gradle.properties b/gradle.properties
index 3728189..de3f590 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -14,5 +14,6 @@ quiltedFabricApiVersion = 7.4.0+0.90.0
14 14
15chippedVersion = 3.0.1 15chippedVersion = 3.0.1
16patchouliVersion = 1.20.1-84-FABRIC 16patchouliVersion = 1.20.1-84-FABRIC
17wthitVersion = 8.5.0
17 18
18jakartaAnnotationVersion = 3.0.0-M1 \ No newline at end of file 19jakartaAnnotationVersion = 3.0.0-M1 \ No newline at end of file
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
index 576fdc2..d278bcc 100644
--- a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
+++ b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
@@ -2,6 +2,7 @@ package lv.enes.mc.eris_alchemy;
2 2
3import jakarta.annotation.Nullable; 3import jakarta.annotation.Nullable;
4import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.NetworkingConstants; 4import lv.enes.mc.eris_alchemy.ErisAlchemyRegistry.NetworkingConstants;
5import lv.enes.mc.eris_alchemy.block.EmcStorageBlock;
5import lv.enes.mc.eris_alchemy.recipe.BannedRecipe; 6import lv.enes.mc.eris_alchemy.recipe.BannedRecipe;
6import lv.enes.mc.eris_alchemy.recipe.SimplifiedRecipe; 7import lv.enes.mc.eris_alchemy.recipe.SimplifiedRecipe;
7import lv.enes.mc.eris_alchemy.utils.*; 8import lv.enes.mc.eris_alchemy.utils.*;
@@ -63,17 +64,12 @@ public final class Emc {
63 return get(itemId) 64 return get(itemId)
64 .stream() 65 .stream()
65 .map(value -> { 66 .map(value -> {
66 EmcStorage storage = null; 67 if (item instanceof BlockItem blockItem) {
67 if (item instanceof EmcStorage emcStorage) { 68 if (blockItem.getBlock() instanceof EmcStorageBlock block) {
68 storage = emcStorage; 69 return value + block.getStoredEmc(stack);
69 } else if (item instanceof BlockItem blockItem) {
70 if (blockItem.getBlock() instanceof EmcStorage emcStorage) {
71 storage = emcStorage;
72 } 70 }
73 } 71 }
74 if (storage != null) { 72
75 return value + storage.getStoredEmc(stack);
76 }
77 return value; 73 return value;
78 }) 74 })
79 .findFirst(); 75 .findFirst();
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/EmcStorage.java b/src/main/java/lv/enes/mc/eris_alchemy/EmcStorage.java
deleted file mode 100644
index 427a887..0000000
--- a/src/main/java/lv/enes/mc/eris_alchemy/EmcStorage.java
+++ /dev/null
@@ -1,17 +0,0 @@
1package lv.enes.mc.eris_alchemy;
2
3import net.minecraft.nbt.CompoundTag;
4import net.minecraft.world.item.BlockItem;
5import net.minecraft.world.item.ItemStack;
6
7public interface EmcStorage {
8 double getStoredEmc(ItemStack stack, CompoundTag blockEntityData);
9
10 default double getStoredEmc(ItemStack stack) {
11 var blockEntityData = BlockItem.getBlockEntityData(stack);
12 if (blockEntityData == null) {
13 return 0;
14 }
15 return getStoredEmc(stack, blockEntityData);
16 }
17}
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
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/waila/EmcProvider.java b/src/main/java/lv/enes/mc/eris_alchemy/waila/EmcProvider.java
new file mode 100644
index 0000000..190ebbe
--- /dev/null
+++ b/src/main/java/lv/enes/mc/eris_alchemy/waila/EmcProvider.java
@@ -0,0 +1,22 @@
1package lv.enes.mc.eris_alchemy.waila;
2
3import lv.enes.mc.eris_alchemy.block.entity.EmcStorageEntity;
4import mcp.mobius.waila.api.IDataProvider;
5import mcp.mobius.waila.api.IDataWriter;
6import mcp.mobius.waila.api.IPluginConfig;
7import mcp.mobius.waila.api.IServerAccessor;
8import mcp.mobius.waila.api.data.EnergyData;
9import net.minecraft.world.level.block.entity.BlockEntity;
10
11public enum EmcProvider implements IDataProvider<BlockEntity> {
12 INSTANCE;
13
14 @Override
15 public void appendData(IDataWriter data, IServerAccessor<BlockEntity> accessor, IPluginConfig config) {
16 data.add(EnergyData.class, res -> {
17 if (accessor.getTarget() instanceof EmcStorageEntity storage) {
18 res.add(EnergyData.of(storage.getStoredEmc(), storage.getMaxEmc()));
19 }
20 });
21 }
22}
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/waila/WailaPlugin.java b/src/main/java/lv/enes/mc/eris_alchemy/waila/WailaPlugin.java
new file mode 100644
index 0000000..db797bf
--- /dev/null
+++ b/src/main/java/lv/enes/mc/eris_alchemy/waila/WailaPlugin.java
@@ -0,0 +1,20 @@
1package lv.enes.mc.eris_alchemy.waila;
2
3import lv.enes.mc.eris_alchemy.ErisAlchemy;
4import mcp.mobius.waila.api.IRegistrar;
5import mcp.mobius.waila.api.IWailaPlugin;
6import mcp.mobius.waila.api.data.EnergyData;
7import net.minecraft.network.chat.Component;
8import net.minecraft.world.level.block.entity.BlockEntity;
9
10@SuppressWarnings("unused")
11public class WailaPlugin implements IWailaPlugin {
12 @Override
13 public void register(IRegistrar registrar) {
14 registrar.addBlockData(EmcProvider.INSTANCE, BlockEntity.class);
15
16 EnergyData.describe(ErisAlchemy.ID)
17 .name(Component.translatable("gui.eris_alchemy.stored_emc"))
18 .unit("");
19 }
20}
diff --git a/src/main/resources/assets/eris_alchemy/lang/en_us.json b/src/main/resources/assets/eris_alchemy/lang/en_us.json
index c399a68..c797ac8 100644
--- a/src/main/resources/assets/eris_alchemy/lang/en_us.json
+++ b/src/main/resources/assets/eris_alchemy/lang/en_us.json
@@ -9,6 +9,8 @@
9 "container.eris_alchemy.alchemical_chest": "Alchemical Chest", 9 "container.eris_alchemy.alchemical_chest": "Alchemical Chest",
10 "container.eris_alchemy.energy_condenser": "Energy Condenser", 10 "container.eris_alchemy.energy_condenser": "Energy Condenser",
11 11
12 "gui.eris_alchemy.stored_emc": "Stored EMC",
13
12 "item.eris_alchemy.low_covalence_dust": "Low Covalence Dust", 14 "item.eris_alchemy.low_covalence_dust": "Low Covalence Dust",
13 "item.eris_alchemy.medium_covalence_dust": "Medium Covalence Dust", 15 "item.eris_alchemy.medium_covalence_dust": "Medium Covalence Dust",
14 "item.eris_alchemy.high_covalence_dust": "High Covalence Dust", 16 "item.eris_alchemy.high_covalence_dust": "High Covalence Dust",
diff --git a/src/main/resources/waila_plugins.json b/src/main/resources/waila_plugins.json
new file mode 100644
index 0000000..13951db
--- /dev/null
+++ b/src/main/resources/waila_plugins.json
@@ -0,0 +1,7 @@
1{
2 "eris_alchemy:plugin": {
3 "initializer": "lv.enes.mc.eris_alchemy.waila.WailaPlugin",
4 "side": "*",
5 "required": []
6 }
7} \ No newline at end of file