Skip to content

Commit c4e028a

Browse files
authored
Merge pull request #45 from TBoshoven/1.16-particles
Make doorway particles the right texture.
2 parents 0d1d784 + 6becedb commit c4e028a

14 files changed

+67
-32
lines changed

MagicDoorknob/src/main/java/com/tomboshoven/minecraft/magicdoorknob/blocks/MagicDoorwayPartBaseBlock.java

+12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minecraft.block.SoundType;
88
import net.minecraft.client.particle.ParticleManager;
99
import net.minecraft.entity.Entity;
10+
import net.minecraft.entity.player.PlayerEntity;
1011
import net.minecraft.tileentity.TileEntity;
1112
import net.minecraft.util.IStringSerializable;
1213
import net.minecraft.util.math.BlockPos;
@@ -76,6 +77,17 @@ public float getSlipperiness(BlockState state, IWorldReader world, BlockPos pos,
7677
return super.getSlipperiness(state, world, pos, entity);
7778
}
7879

80+
@SuppressWarnings("deprecation")
81+
@Override
82+
public float getPlayerRelativeBlockHardness(BlockState state, PlayerEntity player, IBlockReader worldIn, BlockPos pos) {
83+
// Use the base block's hardness.
84+
TileEntity tileEntity = worldIn.getTileEntity(pos);
85+
if (tileEntity instanceof MagicDoorwayPartBaseTileEntity) {
86+
return ((MagicDoorwayPartBaseTileEntity) tileEntity).getBaseBlockState().getPlayerRelativeBlockHardness(player, worldIn, pos);
87+
}
88+
return super.getPlayerRelativeBlockHardness(state, player, worldIn, pos);
89+
}
90+
7991
@Override
8092
public int getHarvestLevel(BlockState state) {
8193
// We don't have information about the base block here.

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

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

51+
/**
52+
* The particle texture of the doorway (based on base block).
53+
*/
54+
private static final ModelParticleTextureProperty TEXTURE_PARTICLE = ModelTextureProperty.getParticleProperty();
55+
5056
// The block we're basing the appearance of this block on.
5157
private BlockState baseBlockState = Blocks.AIR.getDefaultState();
5258
// The doorknob that caused this block to be created.
@@ -134,6 +140,7 @@ public IModelData getModelData() {
134140
CompositeModel.CompositeModelData compositeModelData = new CompositeModel.CompositeModelData();
135141
compositeModelData.setData(TEXTURE_MAIN, blockMaterial);
136142
compositeModelData.setData(TEXTURE_HIGHLIGHT, doorknobMaterial);
143+
compositeModelData.setData(TEXTURE_PARTICLE, blockMaterial);
137144
return compositeModelData;
138145
}
139146

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