Skip to content

Commit ffa9903

Browse files
authored
Merge pull request #54 from dshadowwolf/cleanup-block-create
Cleanup block create
2 parents 8212903 + a8f1489 commit ffa9903

File tree

2 files changed

+56
-72
lines changed

2 files changed

+56
-72
lines changed
Lines changed: 29 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.mcmoddev.nethermetals.init;
22

3+
import java.util.Arrays;
4+
import java.util.List;
5+
36
import com.mcmoddev.lib.block.*;
47
import com.mcmoddev.lib.data.Names;
58
import com.mcmoddev.lib.data.SharedStrings;
@@ -17,74 +20,43 @@
1720
*
1821
*/
1922
public class NetherBlocks extends com.mcmoddev.lib.init.Blocks {
20-
21-
private static boolean initDone = false;
22-
2323
/**
2424
*
2525
*/
2626
public static void init() {
27-
if (initDone) {
28-
return;
29-
}
30-
3127
Materials.init();
3228
ItemGroups.init();
3329

34-
createVanillaNetherOreWrapper("coal");
35-
createVanillaNetherOreWrapper("diamond");
36-
createVanillaNetherOreWrapper("emerald");
37-
createVanillaNetherOreWrapper("gold");
38-
createVanillaNetherOreWrapper("iron");
39-
createVanillaNetherOreWrapper("lapis");
40-
createVanillaNetherOreWrapper("redstone");
41-
42-
if (Loader.isModLoaded("basemetals")) {
43-
createNetherOreWrapper("antimony");
44-
createNetherOreWrapper("bismuth");
45-
createNetherOreWrapper("copper");
46-
createNetherOreWrapper("lead");
47-
createNetherOreWrapper("mercury");
48-
createNetherOreWrapper("nickel");
49-
createNetherOreWrapper("platinum");
50-
createNetherOreWrapper("silver");
51-
createNetherOreWrapper("tin");
52-
createNetherOreWrapper("zinc");
53-
}
54-
55-
if (Loader.isModLoaded("modernmetals")) {
56-
createNetherOreWrapper("aluminum");
57-
createNetherOreWrapper("cadmium");
58-
createNetherOreWrapper("chromium");
59-
createNetherOreWrapper("iridium");
60-
createNetherOreWrapper("magnesium");
61-
createNetherOreWrapper("manganese");
62-
createNetherOreWrapper("osmium");
63-
createNetherOreWrapper("plutonium");
64-
createNetherOreWrapper("rutile");
65-
createNetherOreWrapper("tantalum");
66-
createNetherOreWrapper("titanium");
67-
createNetherOreWrapper("tungsten");
68-
createNetherOreWrapper("uranium");
69-
createNetherOreWrapper("zirconium");
70-
}
71-
72-
initDone = true;
30+
List<String> knownMaterials = Arrays.asList("coal", "diamond", "emerald", "gold", "iron", "lapis",
31+
"redstone", "antimony", "bismuth", "copper", "lead", "mercury", "nickel", "platinum",
32+
"silver", "tin", "zinc", "aluminum", "cadmium", "chromium", "iridium", "magnesium",
33+
"manganese", "osmium", "plutonium", "rutile", "tantalum", "titanium", "tungsten",
34+
"uranium", "zirconium");
35+
Materials.getAllMaterials().stream()
36+
.map(mat -> mat.getName())
37+
.filter(knownMaterials::contains)
38+
.forEach(NetherBlocks::createNetherOreWrapper);
7339
}
7440

7541
private static void createVanillaNetherOreWrapper(String materialName) {
7642
final MMDMaterial material = Materials.getMaterialByName(materialName);
77-
material.addNewBlock(Names.NETHERORE, addBlock(new BlockMMDNetherOre(material), Names.NETHERORE.toString(), material, ItemGroups.getTab(SharedStrings.TAB_BLOCKS)));
78-
final Block b = material.getBlock(Names.NETHERORE);
79-
final String oredict = getOredictFromName(Names.NETHERORE);
80-
if ((oredict != null) && (b != null)) {
81-
Oredicts.registerOre(oredict + material.getCapitalizedName(), b);
82-
}
43+
material.addNewBlock(Names.NETHERORE, addBlock(new BlockMMDNetherOre(material), Names.NETHERORE.toString(), material, ItemGroups.getTab(SharedStrings.TAB_BLOCKS)));
44+
final Block b = material.getBlock(Names.NETHERORE);
45+
final String oredict = getOredictFromName(Names.NETHERORE);
46+
if ((oredict != null) && (b != null)) {
47+
Oredicts.registerOre(oredict + material.getCapitalizedName(), b);
48+
}
8349
}
8450

85-
private static void createNetherOreWrapper(String materialName ) {
86-
if (Materials.hasMaterial(materialName)) {
87-
create(Names.NETHERORE, materialName);
88-
}
89-
}
51+
private static void createBasicNetherOreWrapper(String materialName ) {
52+
create(Names.NETHERORE, materialName);
53+
}
54+
55+
private static void createNetherOreWrapper(String materialName) {
56+
List<String> vanillaMats = Arrays.asList("coal", "diamond", "emerald", "gold", "iron", "lapis", "redstone");
57+
if (vanillaMats.contains(materialName))
58+
createVanillaNetherOreWrapper(materialName);
59+
else
60+
createBasicNetherOreWrapper(materialName);
61+
}
9062
}

src/main/java/com/mcmoddev/nethermetals/proxy/CommonProxy.java

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.minecraft.init.Enchantments;
2525
import net.minecraft.item.Item;
2626
import net.minecraft.nbt.NBTTagList;
27+
import net.minecraft.util.ResourceLocation;
2728
import net.minecraft.util.math.AxisAlignedBB;
2829
import net.minecraft.util.math.BlockPos;
2930
import net.minecraft.world.World;
@@ -77,29 +78,40 @@ public void postInit(FMLPostInitializationEvent event) {
7778
public void registerItems(RegistryEvent.Register<Item> event) {
7879
// NetherMetals doesn't do any of its own materials, just its own blocks
7980
// so it actually needs this helper :)
80-
for( MMDMaterial mat : Materials.getAllMaterials()) {
81-
for( Item item : mat.getItems() ) {
82-
if( item.getRegistryName().getResourceDomain().equals(NetherMetals.MODID) ) {
83-
event.getRegistry().register(item);
84-
}
85-
}
86-
}
81+
Materials.getAllMaterials().stream()
82+
.forEach( mat -> {
83+
mat.getItems().stream()
84+
.map(itemStack -> itemStack.getItem())
85+
.filter(this::itemFilterFunc)
86+
.forEach(event.getRegistry()::register);
87+
});
88+
8789
Oredicts.registerItemOreDictionaryEntries();
8890
Oredicts.registerBlockOreDictionaryEntries();
8991
}
9092

93+
private boolean itemFilterFunc(Item item) {
94+
return matchModId(item.getRegistryName());
95+
}
96+
9197
@SubscribeEvent
9298
public void registerBlocks(RegistryEvent.Register<Block> event) {
9399
// NetherMetals doesn't do any of its own materials, just its own blocks
94100
// so it actually needs this helper :)
95-
for( MMDMaterial mat : Materials.getAllMaterials()) {
96-
for( Block block : mat.getBlocks() ) {
97-
if( block.getRegistryName().getResourceDomain().equals(NetherMetals.MODID) ) {
98-
((BlockMMDNetherOre)block).explode();
99-
event.getRegistry().register(block);
100-
}
101-
}
102-
}
101+
Materials.getAllMaterials().stream()
102+
.forEach( mat -> {
103+
mat.getBlocks().stream()
104+
.filter(this::blockFilterFunc)
105+
.forEach(event.getRegistry()::register);
106+
});
107+
}
108+
109+
private boolean blockFilterFunc(Block block) {
110+
return matchModId(block.getRegistryName());
111+
}
112+
113+
private boolean matchModId(ResourceLocation rl) {
114+
return rl.getResourceDomain().equals(NetherMetals.MODID);
103115
}
104116

105117
public void angerPigmen(BlockPos pos, World world, EntityPlayer player, int range) {

0 commit comments

Comments
 (0)