Skip to content

Commit 8d5d278

Browse files
authored
Merge pull request #43 from TBoshoven/1.14-particles
Make doorway particles the right texture.
2 parents be3331d + cb7129c commit 8d5d278

13 files changed

+55
-32
lines changed

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/tileentities/MagicDoorwayPartBaseTileEntity.java

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.tomboshoven.minecraft.magicdoorknob.items.Items;
55
import com.tomboshoven.minecraft.magicdoorknob.items.MagicDoorknobItem;
66
import com.tomboshoven.minecraft.magicdoorknob.modelloaders.textured.ModelTextureProperty;
7+
import com.tomboshoven.minecraft.magicdoorknob.modelloaders.textured.ModelTextureProperty.ModelParticleTextureProperty;
78
import mcp.MethodsReturnNonnullByDefault;
89
import net.minecraft.block.BlockState;
910
import net.minecraft.block.Blocks;
@@ -46,6 +47,11 @@ public abstract class MagicDoorwayPartBaseTileEntity extends TileEntity {
4647
*/
4748
private static final ModelTextureProperty TEXTURE_HIGHLIGHT = ModelTextureProperty.get(new ResourceLocation(PROPERTY_NAMESPACE, "texture_highlight"));
4849

50+
/**
51+
* The particle texture of the doorway (based on base block).
52+
*/
53+
private static final ModelParticleTextureProperty TEXTURE_PARTICLE = ModelTextureProperty.getParticleProperty();
54+
4955
// The block we're basing the appearance of this block on.
5056
private BlockState baseBlockState = Blocks.AIR.getDefaultState();
5157
// The doorknob that caused this block to be created.
@@ -125,6 +131,7 @@ public IModelData getModelData() {
125131
return new ModelDataMap.Builder()
126132
.withInitial(TEXTURE_MAIN, blockTexture.getName())
127133
.withInitial(TEXTURE_HIGHLIGHT, doorknobTextureLocation)
134+
.withInitial(TEXTURE_PARTICLE, blockTexture.getName())
128135
.build();
129136
}
130137

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/modelloaders/textured/ITextureMapper.java

+6
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,10 @@ public interface ITextureMapper {
2424
* @return The location of the appropriate texture
2525
*/
2626
ResourceLocation mapSprite(PropertySprite spriteToMap, @Nullable BlockState blockState, @Nullable IModelData extraData);
27+
28+
/**
29+
* @param extraData Extra model data if available
30+
* @return The location of the appropriate particle texture
31+
*/
32+
ResourceLocation getParticleTexture(@Nullable IModelData extraData);
2733
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/modelloaders/textured/ModelDataTextureMapper.java

+12
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,16 @@ public ResourceLocation mapSprite(PropertySprite spriteToMap, @Nullable BlockSta
3030
}
3131
return new ResourceLocation("missingno");
3232
}
33+
34+
@Override
35+
public ResourceLocation getParticleTexture(@Nullable IModelData extraData) {
36+
if (extraData != null) {
37+
ModelProperty<ResourceLocation> modelProperty = ModelTextureProperty.getParticleProperty();
38+
ResourceLocation spriteLocation = extraData.getData(modelProperty);
39+
if (spriteLocation != null) {
40+
return spriteLocation;
41+
}
42+
}
43+
return new ResourceLocation("missingno");
44+
}
3345
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/modelloaders/textured/ModelTextureProperty.java

+7
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public final class ModelTextureProperty extends ModelProperty<ResourceLocation>
1818
// Lazily filled map of model texture properties.
1919
// Can't just use equality as they are used in an IdentityHashMap.
2020
private static final Map<ResourceLocation, ModelTextureProperty> PROPERTIES = Maps.newHashMap();
21+
private static final ModelParticleTextureProperty PARTICLE_PROPERTY = new ModelParticleTextureProperty();
2122

2223
private final ResourceLocation name;
2324

@@ -39,6 +40,10 @@ public static ModelTextureProperty get(ResourceLocation name) {
3940
return PROPERTIES.computeIfAbsent(name, ModelTextureProperty::new);
4041
}
4142

43+
public static ModelParticleTextureProperty getParticleProperty() {
44+
return PARTICLE_PROPERTY;
45+
}
46+
4247
@Override
4348
public boolean equals(Object o) {
4449
if (this == o) return true;
@@ -51,4 +56,6 @@ public boolean equals(Object o) {
5156
public int hashCode() {
5257
return Objects.hash(name);
5358
}
59+
60+
public static class ModelParticleTextureProperty extends ModelProperty<ResourceLocation> {}
5461
}

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/modelloaders/textured/TexturedBakedModel.java

+7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import net.minecraftforge.client.model.data.EmptyModelData;
2222
import net.minecraftforge.client.model.data.IModelData;
2323

24+
import javax.annotation.Nonnull;
2425
import javax.annotation.Nullable;
2526
import javax.annotation.ParametersAreNonnullByDefault;
2627
import java.util.List;
@@ -76,6 +77,12 @@ public ItemOverrideList getOverrides() {
7677
return new TexturedOverrideList(super.getOverrides());
7778
}
7879

80+
@Override
81+
public TextureAtlasSprite getParticleTexture(@Nonnull IModelData data) {
82+
ResourceLocation particleTextureLocation = textureMapper.getParticleTexture(data);
83+
return bakedTextureGetter.apply(particleTextureLocation);
84+
}
85+
7986
/**
8087
* We use override lists to dynamically texture items.
8188
*/

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_door_bottom.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"door": {
86
"parent": "magic_doorknob:block/part/magic_door"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_door_top.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"door": {
86
"parent": "magic_doorknob:block/part/magic_door"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_closed_bottom.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"pillar1": {
86
"parent": "magic_doorknob:block/part/magic_doorway_wall"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_closed_top.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"top": {
86
"parent": "magic_doorknob:block/part/magic_doorway_top"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_half_open_bottom.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"wall1": {
86
"parent": "magic_doorknob:block/part/magic_doorway_wall"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_half_open_top.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"top": {
86
"parent": "magic_doorknob:block/part/magic_doorway_top"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_open_bottom.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"pillar1": {
86
"parent": "magic_doorknob:block/part/magic_doorway_pillar"

MagicDoorknob/src/main/resources/assets/magic_doorknob/models/block/magic_doorway_open_top.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
2-
"loader": "forge:composite",
3-
"textures": {
4-
"particle": "minecraft:block/obsidian"
5-
},
2+
"loader": "magic_doorknob:textured",
3+
"base_loader": "forge:composite",
64
"parts": {
75
"top": {
86
"parent": "magic_doorknob:block/part/magic_doorway_top"

0 commit comments

Comments
 (0)