Skip to content

Commit af7583d

Browse files
committed
完成音序蚀刻,添加手册描述
1 parent 0ae549a commit af7583d

19 files changed

Lines changed: 408 additions & 125 deletions

File tree

src/generated/resources/assets/anvilcraft_reverberation/lang/en_ud.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@
77
"block.anvilcraft_reverberation.merge_sound_pillar": "ɹɐןןıԀ punoS ǝbɹǝW",
88
"item.anvilcraft_reverberation.acoustic_component": "ʇuǝuodɯoƆ ɔıʇsnoɔⱯ",
99
"itemGroup.anvilcraft_reverberation.reverberation": "uoıʇɐɹǝqɹǝʌǝᴚ :ʇɟɐɹƆןıʌuⱯ",
10+
"tooltip.anvilcraft_reverberation.sound_sequence.energy": "]%d-%d[ ʎbɹǝuƎ",
11+
"tooltip.anvilcraft_reverberation.sound_sequence.max_energy": "%d ʎbɹǝuƎ xɐW",
12+
"tooltip.anvilcraft_reverberation.sound_sequence.max_sources": "%d sǝɔɹnoS xɐW",
13+
"tooltip.anvilcraft_reverberation.sound_sequence.melody": "%s :ʎpoןǝW",
14+
"tooltip.anvilcraft_reverberation.sound_sequence.min_energy": "%d ʎbɹǝuƎ uıW",
15+
"tooltip.anvilcraft_reverberation.sound_sequence.min_sources": "%d sǝɔɹnoS uıW",
16+
"tooltip.anvilcraft_reverberation.sound_sequence.next": "%s :ʇxǝNq§",
17+
"tooltip.anvilcraft_reverberation.sound_sequence.progress": "ssǝɹboɹԀ buıɥɔʇƎ ǝɔuǝnbǝS punoS",
18+
"tooltip.anvilcraft_reverberation.sound_sequence.sources": "]%d-%d[ sǝɔɹnoS",
19+
"tooltip.anvilcraft_reverberation.sound_sequence.step": "%d / %d :dǝʇS8§",
20+
"tooltip.anvilcraft_reverberation.sound_sequence.timbre": "%s :ǝɹqɯı⟘",
1021
"tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.energy": "%s :ʎbɹǝuƎ punoS",
1122
"tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.source_num": "%s :ɯnN ǝɔɹnoS"
1223
}

src/generated/resources/assets/anvilcraft_reverberation/lang/en_us.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@
77
"block.anvilcraft_reverberation.merge_sound_pillar": "Merge Sound Pillar",
88
"item.anvilcraft_reverberation.acoustic_component": "Acoustic Component",
99
"itemGroup.anvilcraft_reverberation.reverberation": "AnvilCraft: Reverberation",
10+
"tooltip.anvilcraft_reverberation.sound_sequence.energy": "Energy [%d-%d]",
11+
"tooltip.anvilcraft_reverberation.sound_sequence.max_energy": "Max Energy %d",
12+
"tooltip.anvilcraft_reverberation.sound_sequence.max_sources": "Max Sources %d",
13+
"tooltip.anvilcraft_reverberation.sound_sequence.melody": "Melody: %s",
14+
"tooltip.anvilcraft_reverberation.sound_sequence.min_energy": "Min Energy %d",
15+
"tooltip.anvilcraft_reverberation.sound_sequence.min_sources": "Min Sources %d",
16+
"tooltip.anvilcraft_reverberation.sound_sequence.next": "§bNext: %s",
17+
"tooltip.anvilcraft_reverberation.sound_sequence.progress": "Sound Sequence Etching Progress",
18+
"tooltip.anvilcraft_reverberation.sound_sequence.sources": "Sources [%d-%d]",
19+
"tooltip.anvilcraft_reverberation.sound_sequence.step": "§8Step: %d / %d",
20+
"tooltip.anvilcraft_reverberation.sound_sequence.timbre": "Timbre: %s",
1021
"tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.energy": "Sound Energy: %s",
1122
"tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.source_num": "Source Num: %s"
1223
}

src/generated/resources/data/anvilcraft_reverberation/recipe/sound_reactor/acoustic_component_0.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@
1010
},
1111
"sound_require": {
1212
"minEnergy": 12,
13-
"requiredTimbres": [
14-
{
15-
"block": "minecraft:amethyst_block"
16-
}
17-
]
13+
"requiredTimbre": {
14+
"block": "minecraft:amethyst_block"
15+
}
1816
}
1917
}

src/generated/resources/data/anvilcraft_reverberation/recipe/sound_reactor/acoustic_component_1.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
"id": "anvilcraft_reverberation:acoustic_component"
1010
},
1111
"sound_require": {
12-
"requiredTimbres": [
13-
{
14-
"block": "minecraft:budding_amethyst"
15-
}
16-
]
12+
"requiredTimbre": {
13+
"block": "minecraft:budding_amethyst"
14+
}
1715
}
1816
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
{
2-
"type": "anvilcraft_reverberation:sound_sequence_reactor_recipe",
2+
"type": "anvilcraft_reverberation:sound_sequence_etching_recipe",
33
"ingredient": {
44
"items": "minecraft:iron_ingot"
55
},
66
"intermediate": {
77
"count": 1,
88
"id": "minecraft:copper_ingot"
99
},
10-
"loops": 1,
10+
"loops": 2,
1111
"priority": 100,
1212
"result": {
1313
"count": 1,
1414
"id": "minecraft:gold_ingot"
1515
},
1616
"steps": [
1717
{
18-
"maxEnergy": 10,
19-
"minEnergy": 3,
20-
"requiredTimbres": []
18+
"minEnergy": 3
2119
},
2220
{
2321
"maxEnergy": 6,
2422
"minEnergy": 4,
25-
"requiredTimbres": []
23+
"requiredMelody": "anvilcraft_reverberation:equal",
24+
"requiredTimbre": {
25+
"block": "minecraft:budding_amethyst"
26+
}
2627
}
2728
]
2829
}

src/main/java/dev/anvilcraft/reverberation/api/MergeSoundStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
* 因此可以表现旋律是否启用
1111
*/
1212
public class MergeSoundStore extends MergeSound {
13-
public static final int DEFAULT_CAPACITY = 8;
13+
public static final int DEFAULT_CAPACITY = 4;
1414

1515
@Getter
1616
private final List<MergeSound> soundHistory = new ArrayList<>(DEFAULT_CAPACITY);
1717

1818
public void store() {
1919
soundHistory.add(super.copy());
20-
if (soundHistory.size() > DEFAULT_CAPACITY) {
20+
while (soundHistory.size() > DEFAULT_CAPACITY) {
2121
soundHistory.removeFirst();
2222
}
2323
this.clear();

src/main/java/dev/anvilcraft/reverberation/api/SoundRequire.java

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import net.minecraft.world.level.block.Block;
88
import org.jetbrains.annotations.Nullable;
99

10-
import java.util.ArrayList;
11-
import java.util.List;
1210
import java.util.Optional;
1311
import java.util.Set;
1412

@@ -17,7 +15,7 @@ public record SoundRequire(
1715
@Nullable Integer maxEnergy,
1816
@Nullable Integer minSourceNum,
1917
@Nullable Integer maxSourceNum,
20-
List<Timbre> requiredTimbres,
18+
@Nullable Timbre requiredTimbre,
2119
@Nullable Melody requiredMelody
2220
) {
2321
public static final Codec<SoundRequire> CODEC = RecordCodecBuilder.create(instance -> instance
@@ -26,7 +24,7 @@ public record SoundRequire(
2624
Codec.INT.optionalFieldOf("maxEnergy").forGetter(req -> Optional.ofNullable(req.maxEnergy)),
2725
Codec.INT.optionalFieldOf("minSourceNum").forGetter(req -> Optional.ofNullable(req.minSourceNum)),
2826
Codec.INT.optionalFieldOf("maxSourceNum").forGetter(req -> Optional.ofNullable(req.maxSourceNum)),
29-
Timbre.CODEC.listOf().optionalFieldOf("requiredTimbres").forGetter(req -> Optional.ofNullable(req.requiredTimbres)),
27+
Timbre.CODEC.optionalFieldOf("requiredTimbre").forGetter(req -> Optional.ofNullable(req.requiredTimbre)),
3028
Melody.CODEC.optionalFieldOf("requiredMelody").forGetter(req -> Optional.ofNullable(req.requiredMelody))
3129
)
3230
.apply(
@@ -35,7 +33,7 @@ public record SoundRequire(
3533
maxEnergy.orElse(null),
3634
minSourceNum.orElse(null),
3735
maxSourceNum.orElse(null),
38-
requiredTimbres.orElse(new ArrayList<>()),
36+
requiredTimbres.orElse(null),
3937
requiredMelody.orElse(null)
4038
)
4139
)
@@ -47,18 +45,18 @@ public record SoundRequire(
4745
writeOptionalInteger(buf, req.maxEnergy());
4846
writeOptionalInteger(buf, req.minSourceNum());
4947
writeOptionalInteger(buf, req.maxSourceNum());
50-
writeTimbres(buf, req);
48+
writeTimbre(buf, req);
5149
writeMelody(buf, req);
5250
},
5351
(buf) -> {
5452
Integer minEnergy = readOptionalInteger(buf);
5553
Integer maxEnergy = readOptionalInteger(buf);
5654
Integer minSourceNum = readOptionalInteger(buf);
5755
Integer maxSourceNum = readOptionalInteger(buf);
58-
List<Timbre> requiredTimbres = readTimbres(buf);
56+
Timbre requiredTimbre = readTimbre(buf);
5957
Melody requiredMelody = readMelody(buf);
6058

61-
return new SoundRequire(minEnergy, maxEnergy, minSourceNum, maxSourceNum, requiredTimbres, requiredMelody);
59+
return new SoundRequire(minEnergy, maxEnergy, minSourceNum, maxSourceNum, requiredTimbre, requiredMelody);
6260
}
6361
);
6462

@@ -80,18 +78,15 @@ public boolean isValid(MergeSoundStore soundStore) {
8078
if (maxEnergy != null && currentEnergy > maxEnergy) {
8179
return false;
8280
}
83-
8481
if (minSourceNum != null && currentSourceNum < minSourceNum) {
8582
return false;
8683
}
8784
if (maxSourceNum != null && currentSourceNum > maxSourceNum) {
8885
return false;
8986
}
90-
91-
for (Timbre requiredTimbre : requiredTimbres) {
92-
if (!currentTimbres.contains(requiredTimbre)) return false;
87+
if (requiredTimbre != null && !currentTimbres.contains(requiredTimbre)) {
88+
return false;
9389
}
94-
9590
if (requiredMelody != null && !requiredMelody.satisfy(soundStore)) {
9691
return false;
9792
}
@@ -123,20 +118,16 @@ private static void writeMelody(RegistryFriendlyByteBuf buf, SoundRequire req) {
123118
return present ? Melody.STREAM_CODEC.decode(buf) : null;
124119
}
125120

126-
private static void writeTimbres(RegistryFriendlyByteBuf buf, SoundRequire req) {
127-
buf.writeVarInt(req.requiredTimbres().size());
128-
for (Timbre timbre : req.requiredTimbres()) {
129-
Timbre.STREAM_CODEC.encode(buf, timbre);
121+
private static void writeTimbre(RegistryFriendlyByteBuf buf, SoundRequire req) {
122+
buf.writeBoolean(req.requiredTimbre != null);
123+
if (req.requiredTimbre != null) {
124+
Timbre.STREAM_CODEC.encode(buf, req.requiredTimbre());
130125
}
131126
}
132127

133-
public static List<Timbre> readTimbres(RegistryFriendlyByteBuf buf) {
134-
List<Timbre> requiredTimbres = new ArrayList<>();
135-
int size = buf.readVarInt();
136-
for (int i = 0; i < size; i++) {
137-
requiredTimbres.add(Timbre.STREAM_CODEC.decode(buf));
138-
}
139-
return requiredTimbres;
128+
public static @Nullable Timbre readTimbre(RegistryFriendlyByteBuf buf) {
129+
boolean present = buf.readBoolean();
130+
return present ? Timbre.STREAM_CODEC.decode(buf) : null;
140131
}
141132

142133
public static Builder builder() {
@@ -145,17 +136,12 @@ public static Builder builder() {
145136

146137
@SuppressWarnings("unused")
147138
public static class Builder {
148-
@Nullable
149-
private Integer minEnergy;
150-
@Nullable
151-
private Integer maxEnergy;
152-
@Nullable
153-
private Integer minSourceNum;
154-
@Nullable
155-
private Integer maxSourceNum;
156-
private final List<Timbre> requiredTimbres = new ArrayList<>();
157-
@Nullable
158-
private Melody requiredMelody;
139+
private @Nullable Integer minEnergy;
140+
private @Nullable Integer maxEnergy;
141+
private @Nullable Integer minSourceNum;
142+
private @Nullable Integer maxSourceNum;
143+
private @Nullable Timbre requiredTimbre;
144+
private @Nullable Melody requiredMelody;
159145

160146
public Builder minEnergy(Integer min) {
161147
this.minEnergy = min;
@@ -190,11 +176,12 @@ public Builder sourceNum(Integer min, Integer max) {
190176
}
191177

192178
public Builder timbre(Timbre timbre) {
193-
this.requiredTimbres.add(timbre);
179+
this.requiredTimbre = timbre;
194180
return this;
195181
}
182+
196183
public Builder timbre(Block block) {
197-
this.requiredTimbres.add(Timbre.of(block));
184+
this.requiredTimbre = Timbre.of(block);
198185
return this;
199186
}
200187

@@ -204,7 +191,7 @@ public Builder melody(Melody requiredMelody) {
204191
}
205192

206193
public SoundRequire build() {
207-
return new SoundRequire(minEnergy, maxEnergy, minSourceNum, maxSourceNum, requiredTimbres, requiredMelody);
194+
return new SoundRequire(minEnergy, maxEnergy, minSourceNum, maxSourceNum, requiredTimbre, requiredMelody);
208195
}
209196
}
210197
}

src/main/java/dev/anvilcraft/reverberation/block/AnvilSoundReactorBlock.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import dev.anvilcraft.reverberation.block.entity.MergeSoundPillarBlockEntity;
44
import dev.anvilcraft.reverberation.recipe.SoundReactorRecipe;
5-
import dev.anvilcraft.reverberation.recipe.SoundSequenceReactorRecipe;
5+
import dev.anvilcraft.reverberation.recipe.SoundSequenceEtchingRecipe;
66
import dev.dubhe.anvilcraft.api.hammer.IHammerRemovable;
77
import net.minecraft.core.BlockPos;
88
import net.minecraft.core.Direction;
@@ -30,10 +30,7 @@
3030
public class AnvilSoundReactorBlock extends Block implements IHammerRemovable {
3131
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
3232

33-
public static final VoxelShape INSIDE = Shapes.or(
34-
box(2.0, 12.0, 2.0, 14.0, 16.0, 14.0),
35-
box(6, 13, 14, 10, 16, 16)
36-
);
33+
public static final VoxelShape INSIDE = box(2.0, 12.0, 2.0, 14.0, 16.0, 14.0);
3734
public static final VoxelShape SHAPE = Shapes.join(Shapes.block(), INSIDE, BooleanOp.ONLY_FIRST);
3835

3936
public AnvilSoundReactorBlock(Properties properties) {
@@ -70,8 +67,8 @@ public static void hitByAnvil(Level level, BlockPos pos, BlockState reactor) {
7067
for (ItemEntity entity : itemEntities) {
7168
ItemStack entityStack = entity.getItem();
7269

73-
Optional<RecipeHolder<SoundSequenceReactorRecipe>> sequenceOpt =
74-
SoundSequenceReactorRecipe.getRecipe(level, entityStack, pillar.getSound());
70+
Optional<RecipeHolder<SoundSequenceEtchingRecipe>> sequenceOpt =
71+
SoundSequenceEtchingRecipe.getRecipe(level, entityStack, pillar.getSound());
7572

7673
Optional<RecipeHolder<SoundReactorRecipe>> simpleOpt =
7774
SoundReactorRecipe.getRecipe(level, entityStack, pillar.getSound());
@@ -89,8 +86,8 @@ public static void hitByAnvil(Level level, BlockPos pos, BlockState reactor) {
8986

9087
if (flag == 1) {
9188
// 处理序列配方
92-
RecipeHolder<SoundSequenceReactorRecipe> holder = sequenceOpt.get();
93-
ItemStack output = SoundSequenceReactorRecipe.getOutput(holder, entityStack, holder.value());
89+
RecipeHolder<SoundSequenceEtchingRecipe> holder = sequenceOpt.get();
90+
ItemStack output = SoundSequenceEtchingRecipe.getOutput(holder, entityStack, holder.value());
9491
transItem(level, output, spawnPos, entityStack);
9592
} else if (flag == 0) {
9693
// 处理简单配方

src/main/java/dev/anvilcraft/reverberation/client/AnvilCraftReverberationClient.java

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

src/main/java/dev/anvilcraft/reverberation/data/lang/AddonLangHandler.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,19 @@ public class AddonLangHandler {
1313
*/
1414
public static void init(RegistrateLangProvider provider) {
1515
ConfigData.readConfigClass(provider, AddonConfig.class);
16-
17-
// provider.add("config.jade.plugin_anvilcraft_pigsplus.enchanted_generator", "Enchanted Generator");
1816
provider.add("tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.energy", "Sound Energy: %s");
1917
provider.add("tooltip.jade.anvilcraft_reverberation.merge_sound_pillar.source_num", "Source Num: %s");
18+
19+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.progress", "Sound Sequence Etching Progress");
20+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.step", "§8Step: %d / %d");
21+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.next", "§bNext: %s");
22+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.energy", "Energy [%d-%d]");
23+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.min_energy", "Min Energy %d");
24+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.max_energy", "Max Energy %d");
25+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.sources", "Sources [%d-%d]");
26+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.min_sources", "Min Sources %d");
27+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.max_sources", "Max Sources %d");
28+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.timbre", "Timbre: %s");
29+
provider.add("tooltip.anvilcraft_reverberation.sound_sequence.melody", "Melody: %s");
2030
}
2131
}

0 commit comments

Comments
 (0)