Skip to content

Commit 0f31827

Browse files
authored
Merge pull request #44 from TBoshoven/1.15-particles
Make doorway particles the right texture.
2 parents 0513e18 + 803ac92 commit 0f31827

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;
@@ -55,6 +56,11 @@ public abstract class MagicDoorwayPartBaseTileEntity extends TileEntity {
5556
*/
5657
private static final String[] SUBMODEL_NAMES = {"door", "doorknob", "top", "wall1", "wall2", "pillar1", "pillar2", "pillar3", "pillar4"};
5758

59+
/**
60+
* The particle texture of the doorway (based on base block).
61+
*/
62+
private static final ModelParticleTextureProperty TEXTURE_PARTICLE = ModelTextureProperty.getParticleProperty();
63+
5864
// The block we're basing the appearance of this block on.
5965
private BlockState baseBlockState = Blocks.AIR.getDefaultState();
6066
// The doorknob that caused this block to be created.
@@ -145,6 +151,7 @@ public IModelData getModelData() {
145151
}
146152
return new ModelDataMap.Builder()
147153
.withInitial(SUBMODEL_DATA, submodelModelData)
154+
.withInitial(TEXTURE_PARTICLE, blockMaterial)
148155
.build();
149156
}
150157

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 appropriate material
2525
*/
2626
Material 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+
Material 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
@@ -33,4 +33,16 @@ public Material mapSprite(PropertySprite spriteToMap, @Nullable BlockState block
3333
}
3434
return new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, MissingTextureSprite.getLocation());
3535
}
36+
37+
@Override
38+
public Material getParticleTexture(@Nullable IModelData extraData) {
39+
if (extraData != null) {
40+
ModelProperty<Material> modelProperty = ModelTextureProperty.getParticleProperty();
41+
Material spriteLocation = extraData.getData(modelProperty);
42+
if (spriteLocation != null) {
43+
return spriteLocation;
44+
}
45+
}
46+
return new Material(PlayerContainer.LOCATION_BLOCKS_TEXTURE, MissingTextureSprite.getLocation());
47+
}
3648
}

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

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

2324
private final ResourceLocation name;
2425

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

44+
public static ModelParticleTextureProperty getParticleProperty() {
45+
return PARTICLE_PROPERTY;
46+
}
47+
4348
@Override
4449
public boolean equals(Object o) {
4550
if (this == o) return true;
@@ -52,4 +57,6 @@ public boolean equals(Object o) {
5257
public int hashCode() {
5358
return Objects.hash(name);
5459
}
60+
61+
public static class ModelParticleTextureProperty extends ModelProperty<Material> {}
5562
}

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

+7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import net.minecraftforge.client.model.data.EmptyModelData;
2424
import net.minecraftforge.client.model.data.IModelData;
2525

26+
import javax.annotation.Nonnull;
2627
import javax.annotation.Nullable;
2728
import javax.annotation.ParametersAreNonnullByDefault;
2829
import java.util.List;
@@ -161,6 +162,12 @@ public ItemOverrideList getOverrides() {
161162
return new TexturedOverrideList(super.getOverrides());
162163
}
163164

165+
@Override
166+
public TextureAtlasSprite getParticleTexture(@Nonnull IModelData data) {
167+
Material particleTextureLocation = textureMapper.getParticleTexture(data);
168+
return bakedTextureGetter.apply(particleTextureLocation);
169+
}
170+
164171
/**
165172
* We use override lists to dynamically texture items.
166173
*/

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)