Skip to content

Commit 5c70731

Browse files
authored
Extract enabledMaterials map to BlockMaterialPipe class (#2855)
1 parent 9571ba0 commit 5c70731

File tree

5 files changed

+48
-126
lines changed

5 files changed

+48
-126
lines changed

src/main/java/gregtech/api/pipenet/block/material/BlockMaterialPipe.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,52 @@
1515

1616
import net.minecraft.block.state.IBlockState;
1717
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
18+
import net.minecraft.creativetab.CreativeTabs;
1819
import net.minecraft.item.Item;
1920
import net.minecraft.item.ItemStack;
21+
import net.minecraft.util.NonNullList;
2022
import net.minecraft.util.ResourceLocation;
2123
import net.minecraftforge.client.model.ModelLoader;
2224
import net.minecraftforge.fml.relauncher.Side;
2325
import net.minecraftforge.fml.relauncher.SideOnly;
2426

27+
import com.google.common.base.Preconditions;
2528
import org.jetbrains.annotations.NotNull;
2629

27-
import java.util.Objects;
30+
import java.util.*;
2831

2932
public abstract class BlockMaterialPipe<
3033
PipeType extends Enum<PipeType> & IPipeType<NodeDataType> & IMaterialPipeType<NodeDataType>, NodeDataType,
3134
WorldPipeNetType extends WorldPipeNet<NodeDataType, ? extends PipeNet<NodeDataType>>>
3235
extends BlockPipe<PipeType, NodeDataType, WorldPipeNetType> {
3336

3437
protected final PipeType pipeType;
38+
protected final Map<Material, NodeDataType> enabledMaterials;
3539
private final MaterialRegistry registry;
3640

3741
public BlockMaterialPipe(@NotNull PipeType pipeType, @NotNull MaterialRegistry registry) {
3842
this.pipeType = pipeType;
43+
this.enabledMaterials = new TreeMap<>();
3944
this.registry = registry;
4045
}
4146

47+
public boolean isValidPipeMaterial(Material material) {
48+
return !getItemPipeType(getItem(material)).getOrePrefix().isIgnored(material);
49+
}
50+
51+
public void addPipeMaterial(Material material, NodeDataType pipeProperties) {
52+
Preconditions.checkNotNull(material, "material was null");
53+
Preconditions.checkNotNull(pipeProperties, "the %s of material %s was null", getPipeTypeClass().getSimpleName(),
54+
material);
55+
Preconditions.checkArgument(material.getRegistry().getNameForObject(material) != null,
56+
"material %s is not registered", material);
57+
this.enabledMaterials.put(material, pipeProperties);
58+
}
59+
60+
public Collection<Material> getEnabledMaterials() {
61+
return Collections.unmodifiableSet(enabledMaterials.keySet());
62+
}
63+
4264
@Override
4365
public NodeDataType createProperties(IPipeTile<PipeType, NodeDataType> pipeTile) {
4466
PipeType pipeType = pipeTile.getPipeType();
@@ -80,7 +102,21 @@ public ItemStack getDropItem(IPipeTile<PipeType, NodeDataType> pipeTile) {
80102
return getItem(material);
81103
}
82104

83-
protected abstract NodeDataType createProperties(PipeType pipeType, Material material);
105+
protected NodeDataType createProperties(PipeType pipeType, Material material) {
106+
return pipeType.modifyProperties(enabledMaterials.getOrDefault(material, getFallbackType()));
107+
}
108+
109+
@Override
110+
protected NodeDataType getFallbackType() {
111+
return enabledMaterials.values().iterator().next();
112+
}
113+
114+
@Override
115+
public void getSubBlocks(@NotNull CreativeTabs itemIn, @NotNull NonNullList<ItemStack> items) {
116+
for (Material material : enabledMaterials.keySet()) {
117+
items.add(getItem(material));
118+
}
119+
}
84120

85121
public OrePrefix getPrefix() {
86122
return pipeType.getOrePrefix();

src/main/java/gregtech/common/CommonProxy.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,21 @@ public static void registerBlocks(RegistryEvent.Register<Block> event) {
104104

105105
if (material.hasProperty(PropertyKey.WIRE)) {
106106
for (BlockCable cable : CABLES.get(materialRegistry.getModid())) {
107-
if (!cable.getItemPipeType(null).isCable() ||
108-
!material.getProperty(PropertyKey.WIRE).isSuperconductor())
109-
cable.addCableMaterial(material, material.getProperty(PropertyKey.WIRE));
107+
if (cable.isValidPipeMaterial(material)) {
108+
cable.addPipeMaterial(material, material.getProperty(PropertyKey.WIRE));
109+
}
110110
}
111111
}
112112
if (material.hasProperty(PropertyKey.FLUID_PIPE)) {
113113
for (BlockFluidPipe pipe : FLUID_PIPES.get(materialRegistry.getModid())) {
114-
if (!pipe.getItemPipeType(pipe.getItem(material)).getOrePrefix().isIgnored(material)) {
114+
if (pipe.isValidPipeMaterial(material)) {
115115
pipe.addPipeMaterial(material, material.getProperty(PropertyKey.FLUID_PIPE));
116116
}
117117
}
118118
}
119119
if (material.hasProperty(PropertyKey.ITEM_PIPE)) {
120120
for (BlockItemPipe pipe : ITEM_PIPES.get(materialRegistry.getModid())) {
121-
if (!pipe.getItemPipeType(pipe.getItem(material)).getOrePrefix().isIgnored(material)) {
121+
if (pipe.isValidPipeMaterial(material)) {
122122
pipe.addPipeMaterial(material, material.getProperty(PropertyKey.ITEM_PIPE));
123123
}
124124
}

src/main/java/gregtech/common/pipelike/cable/BlockCable.java

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import gregtech.api.pipenet.tile.IPipeTile;
99
import gregtech.api.pipenet.tile.TileEntityPipeBase;
1010
import gregtech.api.unification.material.Material;
11+
import gregtech.api.unification.material.properties.PropertyKey;
1112
import gregtech.api.unification.material.properties.WireProperties;
1213
import gregtech.api.unification.material.registry.MaterialRegistry;
1314
import gregtech.api.util.GTUtility;
@@ -22,7 +23,6 @@
2223
import net.minecraft.block.ITileEntityProvider;
2324
import net.minecraft.block.state.IBlockState;
2425
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
25-
import net.minecraft.creativetab.CreativeTabs;
2626
import net.minecraft.entity.Entity;
2727
import net.minecraft.entity.EntityLivingBase;
2828
import net.minecraft.entity.player.EntityPlayer;
@@ -31,81 +31,47 @@
3131
import net.minecraft.tileentity.TileEntity;
3232
import net.minecraft.util.EnumBlockRenderType;
3333
import net.minecraft.util.EnumFacing;
34-
import net.minecraft.util.NonNullList;
3534
import net.minecraft.util.math.BlockPos;
3635
import net.minecraft.world.IBlockAccess;
3736
import net.minecraft.world.World;
3837
import net.minecraftforge.fml.relauncher.Side;
3938
import net.minecraftforge.fml.relauncher.SideOnly;
4039

41-
import com.google.common.base.Preconditions;
4240
import org.apache.commons.lang3.tuple.Pair;
4341
import org.jetbrains.annotations.NotNull;
4442

45-
import java.util.Collection;
46-
import java.util.Collections;
47-
import java.util.Map;
48-
import java.util.TreeMap;
49-
5043
public class BlockCable extends BlockMaterialPipe<Insulation, WireProperties, WorldENet>
5144
implements ITileEntityProvider {
5245

53-
private final Map<Material, WireProperties> enabledMaterials = new TreeMap<>();
54-
5546
public BlockCable(Insulation cableType, MaterialRegistry registry) {
5647
super(cableType, registry);
5748
setCreativeTab(GTCreativeTabs.TAB_GREGTECH_CABLES);
5849
setHarvestLevel(ToolClasses.WIRE_CUTTER, 1);
5950
}
6051

61-
public void addCableMaterial(Material material, WireProperties wireProperties) {
62-
Preconditions.checkNotNull(material, "material was null");
63-
Preconditions.checkNotNull(wireProperties, "material %s wireProperties was null", material);
64-
Preconditions.checkArgument(material.getRegistry().getNameForObject(material) != null,
65-
"material %s is not registered", material);
66-
if (!pipeType.orePrefix.isIgnored(material)) {
67-
this.enabledMaterials.put(material, wireProperties);
68-
}
69-
}
70-
71-
public Collection<Material> getEnabledMaterials() {
72-
return Collections.unmodifiableSet(enabledMaterials.keySet());
52+
@Override
53+
public boolean isValidPipeMaterial(Material material) {
54+
return super.isValidPipeMaterial(material) && !(getItemPipeType(null).isCable() &&
55+
material.getProperty(PropertyKey.WIRE).isSuperconductor());
7356
}
7457

7558
@Override
7659
public Class<Insulation> getPipeTypeClass() {
7760
return Insulation.class;
7861
}
7962

80-
@Override
81-
protected WireProperties createProperties(Insulation insulation, Material material) {
82-
return insulation.modifyProperties(enabledMaterials.getOrDefault(material, getFallbackType()));
83-
}
84-
8563
@SideOnly(Side.CLIENT)
8664
@NotNull
8765
@Override
8866
public PipeRenderer getPipeRenderer() {
8967
return CableRenderer.INSTANCE;
9068
}
9169

92-
@Override
93-
protected WireProperties getFallbackType() {
94-
return enabledMaterials.values().iterator().next();
95-
}
96-
9770
@Override
9871
public WorldENet getWorldPipeNet(World world) {
9972
return WorldENet.getWorldENet(world);
10073
}
10174

102-
@Override
103-
public void getSubBlocks(@NotNull CreativeTabs itemIn, @NotNull NonNullList<ItemStack> items) {
104-
for (Material material : enabledMaterials.keySet()) {
105-
items.add(getItem(material));
106-
}
107-
}
108-
10975
@Override
11076
protected boolean isPipeTool(@NotNull ItemStack stack) {
11177
return ToolHelper.isTool(stack, ToolClasses.WIRE_CUTTER);

src/main/java/gregtech/common/pipelike/fluidpipe/BlockFluidPipe.java

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import gregtech.api.pipenet.block.material.BlockMaterialPipe;
55
import gregtech.api.pipenet.tile.IPipeTile;
66
import gregtech.api.pipenet.tile.TileEntityPipeBase;
7-
import gregtech.api.unification.material.Material;
87
import gregtech.api.unification.material.properties.FluidPipeProperties;
98
import gregtech.api.unification.material.registry.MaterialRegistry;
109
import gregtech.api.util.EntityDamageUtil;
@@ -17,53 +16,31 @@
1716

1817
import net.minecraft.block.state.IBlockState;
1918
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
20-
import net.minecraft.creativetab.CreativeTabs;
2119
import net.minecraft.entity.Entity;
2220
import net.minecraft.entity.EntityLivingBase;
2321
import net.minecraft.entity.player.EntityPlayer;
2422
import net.minecraft.item.ItemStack;
2523
import net.minecraft.tileentity.TileEntity;
2624
import net.minecraft.util.EnumBlockRenderType;
2725
import net.minecraft.util.EnumFacing;
28-
import net.minecraft.util.NonNullList;
2926
import net.minecraft.util.math.BlockPos;
3027
import net.minecraft.world.World;
3128
import net.minecraftforge.fluids.FluidTank;
3229
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
3330
import net.minecraftforge.fml.relauncher.Side;
3431
import net.minecraftforge.fml.relauncher.SideOnly;
3532

36-
import com.google.common.base.Preconditions;
3733
import org.apache.commons.lang3.tuple.Pair;
3834
import org.jetbrains.annotations.NotNull;
3935

40-
import java.util.Collection;
41-
import java.util.Collections;
42-
import java.util.SortedMap;
43-
import java.util.TreeMap;
44-
4536
public class BlockFluidPipe extends BlockMaterialPipe<FluidPipeType, FluidPipeProperties, WorldFluidPipeNet> {
4637

47-
private final SortedMap<Material, FluidPipeProperties> enabledMaterials = new TreeMap<>();
48-
4938
public BlockFluidPipe(FluidPipeType pipeType, MaterialRegistry registry) {
5039
super(pipeType, registry);
5140
setCreativeTab(GTCreativeTabs.TAB_GREGTECH_PIPES);
5241
setHarvestLevel(ToolClasses.WRENCH, 1);
5342
}
5443

55-
public void addPipeMaterial(Material material, FluidPipeProperties fluidPipeProperties) {
56-
Preconditions.checkNotNull(material, "material");
57-
Preconditions.checkNotNull(fluidPipeProperties, "material %s fluidPipeProperties was null", material);
58-
Preconditions.checkArgument(material.getRegistry().getNameForObject(material) != null,
59-
"material %s is not registered", material);
60-
this.enabledMaterials.put(material, fluidPipeProperties);
61-
}
62-
63-
public Collection<Material> getEnabledMaterials() {
64-
return Collections.unmodifiableSet(enabledMaterials.keySet());
65-
}
66-
6744
@Override
6845
public Class<FluidPipeType> getPipeTypeClass() {
6946
return FluidPipeType.class;
@@ -74,30 +51,13 @@ public WorldFluidPipeNet getWorldPipeNet(World world) {
7451
return WorldFluidPipeNet.getWorldPipeNet(world);
7552
}
7653

77-
@Override
78-
protected FluidPipeProperties createProperties(FluidPipeType fluidPipeType, Material material) {
79-
return fluidPipeType.modifyProperties(enabledMaterials.getOrDefault(material, getFallbackType()));
80-
}
81-
8254
@SideOnly(Side.CLIENT)
8355
@NotNull
8456
@Override
8557
public PipeRenderer getPipeRenderer() {
8658
return FluidPipeRenderer.INSTANCE;
8759
}
8860

89-
@Override
90-
protected FluidPipeProperties getFallbackType() {
91-
return enabledMaterials.values().iterator().next();
92-
}
93-
94-
@Override
95-
public void getSubBlocks(@NotNull CreativeTabs itemIn, @NotNull NonNullList<ItemStack> items) {
96-
for (Material material : enabledMaterials.keySet()) {
97-
items.add(getItem(material));
98-
}
99-
}
100-
10161
@Override
10262
public void breakBlock(@NotNull World worldIn, @NotNull BlockPos pos, @NotNull IBlockState state) {
10363
super.breakBlock(worldIn, pos, state);

src/main/java/gregtech/common/pipelike/itempipe/BlockItemPipe.java

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import gregtech.api.pipenet.block.material.BlockMaterialPipe;
55
import gregtech.api.pipenet.tile.IPipeTile;
66
import gregtech.api.pipenet.tile.TileEntityPipeBase;
7-
import gregtech.api.unification.material.Material;
87
import gregtech.api.unification.material.properties.ItemPipeProperties;
98
import gregtech.api.unification.material.registry.MaterialRegistry;
109
import gregtech.client.renderer.pipe.ItemPipeRenderer;
@@ -16,46 +15,28 @@
1615

1716
import net.minecraft.block.state.IBlockState;
1817
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
19-
import net.minecraft.creativetab.CreativeTabs;
2018
import net.minecraft.entity.player.EntityPlayer;
2119
import net.minecraft.item.ItemStack;
2220
import net.minecraft.tileentity.TileEntity;
2321
import net.minecraft.util.EnumBlockRenderType;
2422
import net.minecraft.util.EnumFacing;
25-
import net.minecraft.util.NonNullList;
2623
import net.minecraft.util.math.BlockPos;
2724
import net.minecraft.world.World;
2825
import net.minecraftforge.fml.relauncher.Side;
2926
import net.minecraftforge.fml.relauncher.SideOnly;
3027
import net.minecraftforge.items.CapabilityItemHandler;
3128

32-
import com.google.common.base.Preconditions;
3329
import org.apache.commons.lang3.tuple.Pair;
3430
import org.jetbrains.annotations.NotNull;
3531

36-
import java.util.Collection;
37-
import java.util.Collections;
38-
import java.util.HashMap;
39-
import java.util.Map;
40-
4132
public class BlockItemPipe extends BlockMaterialPipe<ItemPipeType, ItemPipeProperties, WorldItemPipeNet> {
4233

43-
private final Map<Material, ItemPipeProperties> enabledMaterials = new HashMap<>();
44-
4534
public BlockItemPipe(ItemPipeType itemPipeType, MaterialRegistry registry) {
4635
super(itemPipeType, registry);
4736
setCreativeTab(GTCreativeTabs.TAB_GREGTECH_PIPES);
4837
setHarvestLevel(ToolClasses.WRENCH, 1);
4938
}
5039

51-
public void addPipeMaterial(Material material, ItemPipeProperties properties) {
52-
Preconditions.checkNotNull(material, "material");
53-
Preconditions.checkNotNull(properties, "material %s itemPipeProperties was null", material);
54-
Preconditions.checkArgument(material.getRegistry().getNameForObject(material) != null,
55-
"material %s is not registered", material);
56-
this.enabledMaterials.put(material, properties);
57-
}
58-
5940
@Override
6041
public TileEntityPipeBase<ItemPipeType, ItemPipeProperties> createNewTileEntity(boolean supportsTicking) {
6142
return supportsTicking ? new TileEntityItemPipeTickable() : new TileEntityItemPipe();
@@ -66,11 +47,6 @@ public Class<ItemPipeType> getPipeTypeClass() {
6647
return ItemPipeType.class;
6748
}
6849

69-
@Override
70-
protected ItemPipeProperties getFallbackType() {
71-
return enabledMaterials.values().iterator().next();
72-
}
73-
7450
@Override
7551
public WorldItemPipeNet getWorldPipeNet(World world) {
7652
return WorldItemPipeNet.getWorldPipeNet(world);
@@ -82,29 +58,13 @@ protected Pair<TextureAtlasSprite, Integer> getParticleTexture(World world, Bloc
8258
return ItemPipeRenderer.INSTANCE.getParticleTexture((TileEntityItemPipe) world.getTileEntity(blockPos));
8359
}
8460

85-
@Override
86-
protected ItemPipeProperties createProperties(ItemPipeType itemPipeType, Material material) {
87-
return itemPipeType.modifyProperties(enabledMaterials.getOrDefault(material, getFallbackType()));
88-
}
89-
9061
@SideOnly(Side.CLIENT)
9162
@NotNull
9263
@Override
9364
public PipeRenderer getPipeRenderer() {
9465
return ItemPipeRenderer.INSTANCE;
9566
}
9667

97-
public Collection<Material> getEnabledMaterials() {
98-
return Collections.unmodifiableSet(enabledMaterials.keySet());
99-
}
100-
101-
@Override
102-
public void getSubBlocks(@NotNull CreativeTabs itemIn, @NotNull NonNullList<ItemStack> items) {
103-
for (Material material : enabledMaterials.keySet()) {
104-
items.add(getItem(material));
105-
}
106-
}
107-
10868
@Override
10969
public boolean canPipesConnect(IPipeTile<ItemPipeType, ItemPipeProperties> selfTile, EnumFacing side,
11070
IPipeTile<ItemPipeType, ItemPipeProperties> sideTile) {

0 commit comments

Comments
 (0)