Skip to content

Commit d56d0fb

Browse files
committed
Change how banner patterns are loaded to account for addons to other mods.
1 parent d05ae6e commit d56d0fb

File tree

4 files changed

+91
-160
lines changed

4 files changed

+91
-160
lines changed

common/src/main/java/net/darkhax/archaeologybanners/Config.java

Lines changed: 0 additions & 110 deletions
This file was deleted.
Lines changed: 4 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,24 @@
11
package net.darkhax.archaeologybanners;
22

3+
import net.darkhax.archaeologybanners.content.BiomeMakeoverPatterns;
4+
import net.darkhax.archaeologybanners.content.MinecraftPattern;
35
import net.darkhax.bookshelf.api.Services;
4-
import net.darkhax.bookshelf.api.entity.merchant.trade.VillagerSells;
5-
import net.darkhax.bookshelf.api.registry.IRegistryObject;
66
import net.darkhax.bookshelf.api.registry.RegistryDataProvider;
7-
import net.minecraft.resources.ResourceLocation;
8-
import net.minecraft.tags.TagKey;
9-
import net.minecraft.world.item.BannerPatternItem;
10-
import net.minecraft.world.item.Item;
117
import net.minecraft.world.item.Items;
12-
import net.minecraft.world.item.Rarity;
13-
import net.minecraft.world.level.block.entity.BannerPattern;
148

159
public final class Content extends RegistryDataProvider {
1610

17-
1811
public static void init() {
1912

2013
Services.REGISTRIES.loadContent(new Content());
2114
}
2215

23-
private final Config config;
24-
2516
private Content() {
2617

2718
super(Constants.MOD_ID);
28-
this.config = Config.load(Services.PLATFORM.getConfigPath().resolve(Constants.MOD_ID + ".json").toFile());
2919
this.withItemTab(Items.CREEPER_BANNER_PATTERN::getDefaultInstance);
3020

31-
this.createPattern("angler", "bobber", "hook", "line", "rod");
32-
this.createPattern("archer", "arrow", "bow");
33-
this.createPattern("arms_up");
34-
this.createPattern("blade", "hilt", "blade");
35-
this.createPattern("brewer", "bottle", "fluid");
36-
this.createPattern("burn");
37-
this.createPattern("danger");
38-
this.createPattern("explorer", "blank", "x");
39-
this.createPattern("friend");
40-
this.createPattern("heart");
41-
this.createPattern("heartbreak", "left", "right");
42-
this.createPattern("howl");
43-
this.createPattern("miner", "handle", "pick");
44-
this.createPattern("mourner");
45-
this.createPattern("plenty", "bottom", "lid");
46-
this.createPattern("prize", "inverted");
47-
this.createPattern("sheaf");
48-
this.createPattern("skull");
49-
this.createPattern("snout", "body", "nose", "shell");
50-
}
51-
52-
private void createPattern(String name, String... subvariants) {
53-
54-
final TagKey<BannerPattern> bannerTag = Services.TAGS.bannerPatternTag(new ResourceLocation(Constants.MOD_ID, "pattern_item/" + name));
55-
final IRegistryObject<BannerPatternItem> stencilItem = this.items.add(() -> new BannerPatternItem(bannerTag, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON)), name + "_banner_pattern");
56-
57-
final Config.WanderingTrade tradeConfig = config.wanderingTrades.getOrDefault(name, new Config.WanderingTrade());
58-
59-
if (tradeConfig.enabled) {
60-
this.trades.addRareWanderingTrade(VillagerSells.create(stencilItem, tradeConfig.cost, tradeConfig.maxUses, tradeConfig.villagerXp, tradeConfig.priceMultiplier));
61-
}
62-
63-
this.bannerPatterns.add(() -> new BannerPattern(name), name);
64-
65-
for (String variantName : subvariants) {
66-
final String patternId = name + "_" + variantName;
67-
this.bannerPatterns.add(() -> new BannerPattern(patternId), patternId);
68-
}
21+
new MinecraftPattern(this).registerPatterns();
22+
new BiomeMakeoverPatterns(this).registerPatterns();
6923
}
7024
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package net.darkhax.archaeologybanners.content;
2+
3+
import net.darkhax.bookshelf.api.registry.RegistryDataProvider;
4+
5+
public class MinecraftPattern extends PatternProvider {
6+
7+
public MinecraftPattern(RegistryDataProvider registry) {
8+
9+
super(registry, "minecraft");
10+
}
11+
12+
@Override
13+
public void registerPatterns() {
14+
15+
this.createPattern("angler", "bobber", "hook", "line", "rod");
16+
this.createPattern("archer", "arrow", "bow");
17+
this.createPattern("arms_up");
18+
this.createPattern("blade", "hilt", "blade");
19+
this.createPattern("brewer", "bottle", "fluid");
20+
this.createPattern("burn");
21+
this.createPattern("danger");
22+
this.createPattern("explorer", "blank", "x");
23+
this.createPattern("friend");
24+
this.createPattern("heart");
25+
this.createPattern("heartbreak", "left", "right");
26+
this.createPattern("howl");
27+
this.createPattern("miner", "handle", "pick");
28+
this.createPattern("mourner");
29+
this.createPattern("plenty", "bottom", "lid");
30+
this.createPattern("prize", "inverted");
31+
this.createPattern("sheaf");
32+
this.createPattern("skull");
33+
this.createPattern("snout", "body", "nose", "shell");
34+
}
35+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package net.darkhax.archaeologybanners.content;
2+
3+
import net.darkhax.archaeologybanners.Constants;
4+
import net.darkhax.bookshelf.api.Services;
5+
import net.darkhax.bookshelf.api.registry.RegistryDataProvider;
6+
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.tags.TagKey;
8+
import net.minecraft.world.item.BannerPatternItem;
9+
import net.minecraft.world.item.Item;
10+
import net.minecraft.world.item.Rarity;
11+
import net.minecraft.world.level.block.entity.BannerPattern;
12+
13+
public abstract class PatternProvider {
14+
15+
protected final RegistryDataProvider registry;
16+
private final String sourceId;
17+
18+
public PatternProvider(RegistryDataProvider registry, String sourceId) {
19+
20+
this.registry = registry;
21+
this.sourceId = sourceId;
22+
}
23+
24+
public abstract void registerPatterns();
25+
26+
public void createPattern(String name, String... subvariants) {
27+
28+
final String registryName = this.isBuiltIn() ? name : this.getSourceId() + "/" + name;
29+
30+
this.registry.bannerPatterns.add(() -> new BannerPattern(registryName), registryName);
31+
32+
for (String variantName : subvariants) {
33+
this.registry.bannerPatterns.add(() -> new BannerPattern(registryName + "_" + variantName), registryName + "_" + variantName);
34+
}
35+
36+
if (this.isBuiltIn() || Services.PLATFORM.isModLoaded(this.getSourceId())) {
37+
38+
final TagKey<BannerPattern> patternsTag = Services.TAGS.bannerPatternTag(new ResourceLocation(Constants.MOD_ID, "pattern_item/" + this.getSourceId() + "/" + name));
39+
registry.items.add(() -> new BannerPatternItem(patternsTag, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON)), registryName + "_banner_pattern");
40+
}
41+
}
42+
43+
public String getSourceId() {
44+
45+
return this.sourceId;
46+
}
47+
48+
public final boolean isBuiltIn() {
49+
50+
return "minecraft".equalsIgnoreCase(this.getSourceId());
51+
}
52+
}

0 commit comments

Comments
 (0)