Fabric port in progress
This commit is contained in:
@@ -39,7 +39,7 @@ public interface IUpgradeableHost extends IConfigurableObject, ISegmentedInvento
|
|||||||
/**
|
/**
|
||||||
* the tile...
|
* the tile...
|
||||||
*
|
*
|
||||||
* @return tile entity
|
* @return block entity
|
||||||
*/
|
*/
|
||||||
BlockEntity getTile();
|
BlockEntity getTile();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public interface IMemoryCard {
|
|||||||
* row, left to right. The second 4 the bottom row.
|
* row, left to right. The second 4 the bottom row.
|
||||||
*
|
*
|
||||||
* @param is item
|
* @param is item
|
||||||
* @param settingsName unlocalized string that represents the tile entity.
|
* @param settingsName unlocalized string that represents the block entity.
|
||||||
* @param data the NBT tag, refer to the normal comment for special
|
* @param data the NBT tag, refer to the normal comment for special
|
||||||
* keys.
|
* keys.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import net.minecraft.util.math.Direction;
|
|||||||
*
|
*
|
||||||
* Tiles that access other tiles that implement this method can act as Cranks.
|
* Tiles that access other tiles that implement this method can act as Cranks.
|
||||||
*
|
*
|
||||||
* This interface must be implemented by a tile entity.
|
* This interface must be implemented by a block entity.
|
||||||
*/
|
*/
|
||||||
public interface ICrankable {
|
public interface ICrankable {
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ public interface IMovableHandler {
|
|||||||
* if you return true from this, your saying you can handle the class, not that
|
* if you return true from this, your saying you can handle the class, not that
|
||||||
* single entity, you cannot opt out of single entities.
|
* single entity, you cannot opt out of single entities.
|
||||||
*
|
*
|
||||||
* @param myClass tile entity class
|
* @param myClass block entity class
|
||||||
* @param tile tile entity
|
* @param tile block entity
|
||||||
*
|
*
|
||||||
* @return true if it can handle moving
|
* @return true if it can handle moving
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public interface IMovableRegistry {
|
|||||||
void blacklistBlock(Block blk);
|
void blacklistBlock(Block blk);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* White list your tile entity with the registry.
|
* White list your block entity with the registry.
|
||||||
*
|
*
|
||||||
* If you tile is handled with IMovableHandler or IMovableTile you do not need
|
* If you tile is handled with IMovableHandler or IMovableTile you do not need
|
||||||
* to white list it.
|
* to white list it.
|
||||||
@@ -75,7 +75,7 @@ public interface IMovableRegistry {
|
|||||||
void whiteListTileEntity(Class<? extends BlockEntity> c);
|
void whiteListTileEntity(Class<? extends BlockEntity> c);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param te to be moved tile entity
|
* @param te to be moved block entity
|
||||||
*
|
*
|
||||||
* @return true if the tile has accepted your request to move it
|
* @return true if the tile has accepted your request to move it
|
||||||
*/
|
*/
|
||||||
@@ -84,7 +84,7 @@ public interface IMovableRegistry {
|
|||||||
/**
|
/**
|
||||||
* tells the tile you are done moving it.
|
* tells the tile you are done moving it.
|
||||||
*
|
*
|
||||||
* @param te moved tile entity
|
* @param te moved block entity
|
||||||
*/
|
*/
|
||||||
void doneMoving(BlockEntity te);
|
void doneMoving(BlockEntity te);
|
||||||
|
|
||||||
@@ -101,9 +101,9 @@ public interface IMovableRegistry {
|
|||||||
*
|
*
|
||||||
* only valid after askToMove(...) = true
|
* only valid after askToMove(...) = true
|
||||||
*
|
*
|
||||||
* @param te tile entity
|
* @param te block entity
|
||||||
*
|
*
|
||||||
* @return moving handler of tile entity
|
* @return moving handler of block entity
|
||||||
*/
|
*/
|
||||||
IMovableHandler getHandler(BlockEntity te);
|
IMovableHandler getHandler(BlockEntity te);
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import appeng.api.util.AEPartLocation;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Implement to create a networked {@link BlockEntity} or {@link IPart} must be
|
* Implement to create a networked {@link BlockEntity} or {@link IPart} must be
|
||||||
* implemented for a part, or tile entity to become part of a grid.
|
* implemented for a part, or block entity to become part of a grid.
|
||||||
*/
|
*/
|
||||||
public interface IGridHost {
|
public interface IGridHost {
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public interface IGridNode {
|
|||||||
* inform the node that your IGridBlock has changed its internal state, and
|
* inform the node that your IGridBlock has changed its internal state, and
|
||||||
* force the node to update.
|
* force the node to update.
|
||||||
*
|
*
|
||||||
* ALWAYS make sure that your tile entity is in the world, and has its node
|
* ALWAYS make sure that your block entity is in the world, and has its node
|
||||||
* properly saved to be returned from the host before updating state,
|
* properly saved to be returned from the host before updating state,
|
||||||
*
|
*
|
||||||
* If your entity is not in the world, or if you IGridHost returns a different
|
* If your entity is not in the world, or if you IGridHost returns a different
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ public interface IPart extends ICustomCableConnection {
|
|||||||
* called by the Part host to keep your part informed.
|
* called by the Part host to keep your part informed.
|
||||||
*
|
*
|
||||||
* @param host part side
|
* @param host part side
|
||||||
* @param tile tile entity of part
|
* @param tile block entity of part
|
||||||
*/
|
*/
|
||||||
void setPartHostInfo(AEPartLocation side, IPartHost host, BlockEntity tile);
|
void setPartHostInfo(AEPartLocation side, IPartHost host, BlockEntity tile);
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ public interface IPartHost extends ICustomCableConnection {
|
|||||||
DimensionalCoord getLocation();
|
DimensionalCoord getLocation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the tile entity for the host, this can either be an FMP tile, or a AE
|
* @return the block entity for the host, this can either be an FMP tile, or a AE
|
||||||
* tile
|
* tile
|
||||||
*/
|
*/
|
||||||
BlockEntity getTile();
|
BlockEntity getTile();
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ public interface ICommonTile {
|
|||||||
* implemented on AE's Tile Entities, Gets a list of drops that the entity will
|
* implemented on AE's Tile Entities, Gets a list of drops that the entity will
|
||||||
* normally drop, this doesn't include the block itself.
|
* normally drop, this doesn't include the block itself.
|
||||||
*
|
*
|
||||||
* @param world world of tile entity
|
* @param world world of block entity
|
||||||
* @param pos location of the block
|
* @param pos location of the block
|
||||||
* @param drops drops of tile entity
|
* @param drops drops of block entity
|
||||||
*/
|
*/
|
||||||
void getDrops(World world, BlockPos pos, List<ItemStack> drops);
|
void getDrops(World world, BlockPos pos, List<ItemStack> drops);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package appeng.mixins;
|
||||||
|
|
||||||
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Mixin(ModelLoader.class)
|
||||||
|
public class ModelsReloadMixin {
|
||||||
|
|
||||||
|
@Inject(method = "getBakedModelMap", at = @At("RETURN"))
|
||||||
|
public void onGetBakedModelMap(CallbackInfoReturnable<Map<Identifier, BakedModel>> ci) {
|
||||||
|
Map<Identifier, BakedModel> models = ci.getReturnValue();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"package": "appeng.mixins",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"mixins": [],
|
||||||
|
"client": [
|
||||||
|
"ModelsReloadMixin"
|
||||||
|
],
|
||||||
|
"server": [],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
"appliedenergistics2.mixins.json"
|
||||||
],
|
],
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.7.1",
|
"fabricloader": ">=0.7.1",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.particle.Particle;
|
import net.minecraft.client.particle.Particle;
|
||||||
import net.minecraft.client.particle.ParticleManager;
|
import net.minecraft.client.particle.ParticleManager;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@@ -212,7 +212,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusBlockEntity> implemen
|
|||||||
CableBusRenderState renderState = cb.getRenderState();
|
CableBusRenderState renderState = cb.getRenderState();
|
||||||
|
|
||||||
// Spawn a particle for one of the particle textures
|
// Spawn a particle for one of the particle textures
|
||||||
TextureAtlasSprite texture = Platform.pickRandom(cableBusModel.getParticleTextures(renderState));
|
Sprite texture = Platform.pickRandom(cableBusModel.getParticleTextures(renderState));
|
||||||
if (texture != null) {
|
if (texture != null) {
|
||||||
double x = target.getHitVec().x;
|
double x = target.getHitVec().x;
|
||||||
double y = target.getHitVec().y;
|
double y = target.getHitVec().y;
|
||||||
@@ -244,7 +244,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusBlockEntity> implemen
|
|||||||
|
|
||||||
CableBusRenderState renderState = cb.getRenderState();
|
CableBusRenderState renderState = cb.getRenderState();
|
||||||
|
|
||||||
List<TextureAtlasSprite> textures = cableBusModel.getParticleTextures(renderState);
|
List<Sprite> textures = cableBusModel.getParticleTextures(renderState);
|
||||||
|
|
||||||
if (!textures.isEmpty()) {
|
if (!textures.isEmpty()) {
|
||||||
// Shamelessly inspired by ParticleManager.addBlockDestroyEffects
|
// Shamelessly inspired by ParticleManager.addBlockDestroyEffects
|
||||||
@@ -253,7 +253,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusBlockEntity> implemen
|
|||||||
for (int l = 0; l < 4; ++l) {
|
for (int l = 0; l < 4; ++l) {
|
||||||
// Randomly select one of the textures if the cable bus has more than just one
|
// Randomly select one of the textures if the cable bus has more than just one
|
||||||
// possibility here
|
// possibility here
|
||||||
final TextureAtlasSprite texture = Platform.pickRandom(textures);
|
final Sprite texture = Platform.pickRandom(textures);
|
||||||
|
|
||||||
final double x = pos.getX() + (j + 0.5D) / 4.0D;
|
final double x = pos.getX() + (j + 0.5D) / 4.0D;
|
||||||
final double y = pos.getY() + (k + 0.5D) / 4.0D;
|
final double y = pos.getY() + (k + 0.5D) / 4.0D;
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ import com.google.common.collect.ImmutableList;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
import appeng.core.AppEng;
|
import appeng.core.AppEng;
|
||||||
@@ -42,10 +42,10 @@ class PaintSplotchesBakedModel implements IDynamicBakedModel {
|
|||||||
private static final Material TEXTURE_PAINT3 = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
|
private static final Material TEXTURE_PAINT3 = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
|
||||||
new Identifier(AppEng.MOD_ID, "block/paint3"));
|
new Identifier(AppEng.MOD_ID, "block/paint3"));
|
||||||
|
|
||||||
private final TextureAtlasSprite[] textures;
|
private final Sprite[] textures;
|
||||||
|
|
||||||
PaintSplotchesBakedModel(Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
PaintSplotchesBakedModel(Function<Material, Sprite> bakedTextureGetter) {
|
||||||
this.textures = new TextureAtlasSprite[] { bakedTextureGetter.apply(TEXTURE_PAINT1),
|
this.textures = new Sprite[] { bakedTextureGetter.apply(TEXTURE_PAINT1),
|
||||||
bakedTextureGetter.apply(TEXTURE_PAINT2), bakedTextureGetter.apply(TEXTURE_PAINT3) };
|
bakedTextureGetter.apply(TEXTURE_PAINT2), bakedTextureGetter.apply(TEXTURE_PAINT3) };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ class PaintSplotchesBakedModel implements IDynamicBakedModel {
|
|||||||
pos_x = Math.max(buffer, Math.min(1.0f - buffer, pos_x));
|
pos_x = Math.max(buffer, Math.min(1.0f - buffer, pos_x));
|
||||||
pos_y = Math.max(buffer, Math.min(1.0f - buffer, pos_y));
|
pos_y = Math.max(buffer, Math.min(1.0f - buffer, pos_y));
|
||||||
|
|
||||||
TextureAtlasSprite ico = this.textures[s.getSeed() % this.textures.length];
|
Sprite ico = this.textures[s.getSeed() % this.textures.length];
|
||||||
builder.setTexture(ico);
|
builder.setTexture(ico);
|
||||||
builder.setCustomUv(s.getSide().getOpposite(), 0, 0, 16, 16);
|
builder.setCustomUv(s.getSide().getOpposite(), 0, 0, 16, 16);
|
||||||
|
|
||||||
@@ -142,32 +142,32 @@ class PaintSplotchesBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.textures[0];
|
return this.textures[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -22,8 +22,8 @@ public class PaintSplotchesModel implements IModelGeometry<PaintSplotchesModel>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
return new PaintSplotchesBakedModel(spriteGetter);
|
return new PaintSplotchesBakedModel(spriteGetter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ import net.minecraft.block.Block;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
@@ -58,14 +58,14 @@ class QnbFormedBakedModel implements IDynamicBakedModel {
|
|||||||
|
|
||||||
private final Block linkBlock;
|
private final Block linkBlock;
|
||||||
|
|
||||||
private final TextureAtlasSprite linkTexture;
|
private final Sprite linkTexture;
|
||||||
private final TextureAtlasSprite ringTexture;
|
private final Sprite ringTexture;
|
||||||
private final TextureAtlasSprite glassCableTexture;
|
private final Sprite glassCableTexture;
|
||||||
private final TextureAtlasSprite coveredCableTexture;
|
private final Sprite coveredCableTexture;
|
||||||
private final TextureAtlasSprite lightTexture;
|
private final Sprite lightTexture;
|
||||||
private final TextureAtlasSprite lightCornerTexture;
|
private final Sprite lightCornerTexture;
|
||||||
|
|
||||||
public QnbFormedBakedModel(BakedModel baseModel, Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
public QnbFormedBakedModel(BakedModel baseModel, Function<Material, Sprite> bakedTextureGetter) {
|
||||||
this.baseModel = baseModel;
|
this.baseModel = baseModel;
|
||||||
this.linkTexture = bakedTextureGetter.apply(TEXTURE_LINK);
|
this.linkTexture = bakedTextureGetter.apply(TEXTURE_LINK);
|
||||||
this.ringTexture = bakedTextureGetter.apply(TEXTURE_RING);
|
this.ringTexture = bakedTextureGetter.apply(TEXTURE_RING);
|
||||||
@@ -161,8 +161,8 @@ class QnbFormedBakedModel implements IDynamicBakedModel {
|
|||||||
return builder.getOutput();
|
return builder.getOutput();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderCableAt(CubeBuilder builder, float thickness, TextureAtlasSprite texture, float pull,
|
private void renderCableAt(CubeBuilder builder, float thickness, Sprite texture, float pull,
|
||||||
Set<Direction> connections) {
|
Set<Direction> connections) {
|
||||||
builder.setTexture(texture);
|
builder.setTexture(texture);
|
||||||
|
|
||||||
if (connections.contains(Direction.WEST)) {
|
if (connections.contains(Direction.WEST)) {
|
||||||
@@ -191,32 +191,32 @@ class QnbFormedBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.baseModel.isAmbientOcclusion();
|
return this.baseModel.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.baseModel.getParticleTexture();
|
return this.baseModel.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return this.baseModel.getOverrides();
|
return this.baseModel.getOverrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -26,8 +26,8 @@ public class QnbFormedModel implements IModelGeometry<QnbFormedModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel ringModel = bakery.getBakedModel(MODEL_RING, modelTransform, spriteGetter);
|
BakedModel ringModel = bakery.getBakedModel(MODEL_RING, modelTransform, spriteGetter);
|
||||||
return new QnbFormedBakedModel(ringModel, spriteGetter);
|
return new QnbFormedBakedModel(ringModel, spriteGetter);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ class BlockDefinitionBuilder implements IBlockBuilder {
|
|||||||
this.bootstrapComponents.forEach(component -> this.factory.addBootstrapComponent(component.apply(block, item)));
|
this.bootstrapComponents.forEach(component -> this.factory.addBootstrapComponent(component.apply(block, item)));
|
||||||
|
|
||||||
if (this.tileEntityDefinition != null) {
|
if (this.tileEntityDefinition != null) {
|
||||||
// Tell the tile entity definition about the block we've registered
|
// Tell the block entity definition about the block we've registered
|
||||||
this.tileEntityDefinition.addBlock(block);
|
this.tileEntityDefinition.addBlock(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,11 @@ import com.google.common.base.Preconditions;
|
|||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
import net.minecraft.util.registry.Registry;
|
||||||
|
|
||||||
import appeng.api.features.AEFeature;
|
import appeng.api.features.AEFeature;
|
||||||
import appeng.block.AEBaseTileBlock;
|
import appeng.block.AEBaseTileBlock;
|
||||||
@@ -28,7 +29,7 @@ import appeng.tile.AEBaseBlockEntity;
|
|||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to define our tile entities and all of their properties that are
|
* Used to define our block entities and all of their properties that are
|
||||||
* relevant to registering them.
|
* relevant to registering them.
|
||||||
*
|
*
|
||||||
* @param <T>
|
* @param <T>
|
||||||
@@ -37,27 +38,26 @@ public class BlockEntityBuilder<T extends AEBaseBlockEntity> {
|
|||||||
|
|
||||||
private final FeatureFactory factory;
|
private final FeatureFactory factory;
|
||||||
|
|
||||||
private final String registryName;
|
private final Identifier id;
|
||||||
|
|
||||||
// The tile entity class
|
// The block entity class
|
||||||
private final Class<T> tileClass;
|
private final Class<T> tileClass;
|
||||||
|
|
||||||
private BlockEntityType<T> type;
|
private BlockEntityType<T> type;
|
||||||
|
|
||||||
// The factory for creating tile entity objects
|
// The factory for creating block entity objects
|
||||||
private final Function<BlockEntityType<T>, T> supplier;
|
private final Function<BlockEntityType<T>, T> supplier;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
|
||||||
private TileEntityRendering<T> tileEntityRendering;
|
private TileEntityRendering<T> tileEntityRendering;
|
||||||
|
|
||||||
private final List<Block> blocks = new ArrayList<>();
|
private final List<Block> blocks = new ArrayList<>();
|
||||||
|
|
||||||
private final EnumSet<AEFeature> features = EnumSet.noneOf(AEFeature.class);
|
private final EnumSet<AEFeature> features = EnumSet.noneOf(AEFeature.class);
|
||||||
|
|
||||||
public BlockEntityBuilder(FeatureFactory factory, String registryName, Class<T> tileClass,
|
public BlockEntityBuilder(FeatureFactory factory, String id, Class<T> tileClass,
|
||||||
Function<BlockEntityType<T>, T> supplier) {
|
Function<BlockEntityType<T>, T> supplier) {
|
||||||
this.factory = factory;
|
this.factory = factory;
|
||||||
this.registryName = registryName;
|
this.id = AppEng.makeId(id);
|
||||||
this.tileClass = tileClass;
|
this.tileClass = tileClass;
|
||||||
this.supplier = supplier;
|
this.supplier = supplier;
|
||||||
|
|
||||||
@@ -78,22 +78,22 @@ public class BlockEntityBuilder<T extends AEBaseBlockEntity> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public BlockEntityBuilder<T> rendering(TileEntityRenderingCustomizer<T> customizer) {
|
public BlockEntityBuilder<T> rendering(TileEntityRenderingCustomizer<T> customizer) {
|
||||||
DistExecutor.runWhenOn(EnvType.CLIENT, () -> () -> customizer.customize(tileEntityRendering));
|
customizer.customize(tileEntityRendering);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public TileEntityDefinition build() {
|
public TileEntityDefinition build() {
|
||||||
|
|
||||||
this.factory.addBootstrapComponent((ITileEntityRegistrationComponent) registry -> {
|
this.factory.addBootstrapComponent((ITileEntityRegistrationComponent) () -> {
|
||||||
if (blocks.isEmpty()) {
|
if (blocks.isEmpty()) {
|
||||||
throw new IllegalStateException("No blocks make use of this tile entity: " + tileClass);
|
throw new IllegalStateException("No blocks make use of this block entity: " + tileClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
Supplier<T> factory = () -> supplier.apply(type);
|
Supplier<T> factory = () -> supplier.apply(type);
|
||||||
type = BlockEntityType.Builder.create(factory, blocks.toArray(new Block[0])).build(null);
|
type = BlockEntityType.Builder.create(factory, blocks.toArray(new Block[0])).build(null);
|
||||||
type.setRegistryName(AppEng.MOD_ID, registryName);
|
|
||||||
registry.register(type);
|
Registry.register(Registry.BLOCK_ENTITY_TYPE, id, type);
|
||||||
|
|
||||||
AEBaseBlockEntity.registerTileItem(tileClass, new BlockStackSrc(blocks.get(0), ActivityState.Enabled));
|
AEBaseBlockEntity.registerTileItem(tileClass, new BlockStackSrc(blocks.get(0), ActivityState.Enabled));
|
||||||
|
|
||||||
@@ -103,9 +103,11 @@ public class BlockEntityBuilder<T extends AEBaseBlockEntity> {
|
|||||||
baseTileBlock.setTileEntity(tileClass, factory);
|
baseTileBlock.setTileEntity(tileClass, factory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
DistExecutor.runWhenOn(EnvType.CLIENT, () -> this::buildClient);
|
|
||||||
|
if (Platform.hasClientClasses()) {
|
||||||
|
buildClient();
|
||||||
|
}
|
||||||
|
|
||||||
return new TileEntityDefinition(this::addBlock);
|
return new TileEntityDefinition(this::addBlock);
|
||||||
|
|
||||||
@@ -115,7 +117,7 @@ public class BlockEntityBuilder<T extends AEBaseBlockEntity> {
|
|||||||
private void buildClient() {
|
private void buildClient() {
|
||||||
this.factory.addBootstrapComponent((IClientSetupComponent) () -> {
|
this.factory.addBootstrapComponent((IClientSetupComponent) () -> {
|
||||||
if (tileEntityRendering.tileEntityRenderer != null) {
|
if (tileEntityRendering.tileEntityRenderer != null) {
|
||||||
ClientRegistry.bindTileEntityRenderer(type, tileEntityRendering.tileEntityRenderer);
|
BlockEntityRendererRegistry.INSTANCE.register(type, tileEntityRendering.tileEntityRenderer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,13 +76,12 @@ class BlockRendering implements IBlockRendering {
|
|||||||
if (this.modelCustomizer != null) {
|
if (this.modelCustomizer != null) {
|
||||||
factory.addModelOverride(id.getPath(), this.modelCustomizer);
|
factory.addModelOverride(id.getPath(), this.modelCustomizer);
|
||||||
} else if (block instanceof AEBaseTileBlock) {
|
} else if (block instanceof AEBaseTileBlock) {
|
||||||
// This is a default rotating model if the base-block uses an AE tile entity
|
// This is a default rotating model if the base-block uses an AE block entity
|
||||||
// which exposes UP/FRONT as
|
// which exposes UP/FRONT as
|
||||||
// extended props
|
// extended props
|
||||||
factory.addModelOverride(id.getPath(), (l, m) -> new AutoRotatingBakedModel(m));
|
factory.addModelOverride(id.getPath(), (l, m) -> new AutoRotatingBakedModel(m));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO : 1.12
|
|
||||||
if (this.blockColor != null) {
|
if (this.blockColor != null) {
|
||||||
factory.addBootstrapComponent(new BlockColorComponent(block, this.blockColor));
|
factory.addBootstrapComponent(new BlockColorComponent(block, this.blockColor));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package appeng.bootstrap;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.event.Event;
|
||||||
|
import net.fabricmc.fabric.api.event.EventFactory;
|
||||||
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface ModelsReloadCallback {
|
||||||
|
|
||||||
|
Event<ModelsReloadCallback> EVENT = EventFactory.createArrayBacked(ModelsReloadCallback.class,
|
||||||
|
(listeners) -> (loadedModels) -> {
|
||||||
|
for (ModelsReloadCallback listener : listeners) {
|
||||||
|
listener.onModelsReloaded(loadedModels);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
void onModelsReloaded(Map<Identifier, BakedModel> loadedModels);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -18,19 +18,20 @@
|
|||||||
|
|
||||||
package appeng.bootstrap;
|
package appeng.bootstrap;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
|
||||||
import net.fabricmc.api.Environment;
|
|
||||||
|
|
||||||
import appeng.tile.AEBaseBlockEntity;
|
import appeng.tile.AEBaseBlockEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A callback that allows the rendering of a tile entity to be customized. Sadly
|
* A callback that allows the rendering of a block entity to be customized. Sadly
|
||||||
* this class is required and no lambdas can be used due to them not being able
|
* this class is required and no lambdas can be used due to them not being able
|
||||||
* to be annotated with @OnlyIn(CLIENT).
|
* to be annotated with @OnlyIn(CLIENT).
|
||||||
*/
|
*/
|
||||||
public abstract class TileEntityRenderingCustomizer<T extends AEBaseBlockEntity> {
|
public interface TileEntityRenderingCustomizer<T extends AEBaseBlockEntity> {
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
/**
|
||||||
public abstract void customize(TileEntityRendering<T> rendering);
|
* Declared as a default method because we will carve out the implementations that
|
||||||
|
* override this method on the Server side.
|
||||||
|
*/
|
||||||
|
default void customize(TileEntityRendering<T> rendering) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package appeng.bootstrap.components;
|
package appeng.bootstrap.components;
|
||||||
|
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
import appeng.bootstrap.IBootstrapComponent;
|
import appeng.bootstrap.IBootstrapComponent;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public interface IModelBakeComponent extends IBootstrapComponent {
|
public interface IModelBakeComponent extends IBootstrapComponent {
|
||||||
|
|
||||||
void onModelBakeEvent(ModelBakeEvent event);
|
void onModelsReloaded(Map<Identifier, BakedModel> loadedModels);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
package appeng.bootstrap.components;
|
package appeng.bootstrap.components;
|
||||||
|
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
|
||||||
import net.minecraftforge.registries.IForgeRegistry;
|
|
||||||
|
|
||||||
import appeng.bootstrap.IBootstrapComponent;
|
import appeng.bootstrap.IBootstrapComponent;
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface ITileEntityRegistrationComponent extends IBootstrapComponent {
|
public interface ITileEntityRegistrationComponent extends IBootstrapComponent {
|
||||||
void register(IForgeRegistry<BlockEntityType<?>> registry);
|
void register();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import com.google.common.collect.Sets;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
|
||||||
|
|
||||||
import appeng.core.AppEng;
|
import appeng.core.AppEng;
|
||||||
|
|
||||||
@@ -42,17 +41,16 @@ public class ModelOverrideComponent implements IModelBakeComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onModelBakeEvent(final ModelBakeEvent event) {
|
public void onModelsReloaded(final Map<Identifier, BakedModel> loadedModels) {
|
||||||
Map<Identifier, BakedModel> modelRegistry = event.getModelRegistry();
|
Set<Identifier> keys = Sets.newHashSet(loadedModels.keySet());
|
||||||
Set<Identifier> keys = Sets.newHashSet(modelRegistry.keySet());
|
BakedModel missingModel = loadedModels.get(ModelLoader.MISSING);
|
||||||
BakedModel missingModel = modelRegistry.get(ModelLoader.MISSING);
|
|
||||||
|
|
||||||
for (Identifier location : keys) {
|
for (Identifier location : keys) {
|
||||||
if (!location.getNamespace().equals(AppEng.MOD_ID)) {
|
if (!location.getNamespace().equals(AppEng.MOD_ID)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
BakedModel orgModel = modelRegistry.get(location);
|
BakedModel orgModel = loadedModels.get(location);
|
||||||
|
|
||||||
// Don't customize the missing model. This causes Forge to swallow exceptions
|
// Don't customize the missing model. This causes Forge to swallow exceptions
|
||||||
if (orgModel == missingModel) {
|
if (orgModel == missingModel) {
|
||||||
@@ -64,7 +62,7 @@ public class ModelOverrideComponent implements IModelBakeComponent {
|
|||||||
BakedModel newModel = customizer.apply(location, orgModel);
|
BakedModel newModel = customizer.apply(location, orgModel);
|
||||||
|
|
||||||
if (newModel != orgModel) {
|
if (newModel != orgModel) {
|
||||||
modelRegistry.put(location, newModel);
|
loadedModels.put(location, newModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import net.minecraft.block.Block;
|
|||||||
*/
|
*/
|
||||||
public class TileEntityDefinition {
|
public class TileEntityDefinition {
|
||||||
|
|
||||||
// To be notified when a Block declares that it uses this tile entity
|
// To be notified when a Block declares that it uses this block entity
|
||||||
private final Consumer<Block> addBlockListener;
|
private final Consumer<Block> addBlockListener;
|
||||||
|
|
||||||
public TileEntityDefinition(Consumer<Block> addBlockListener) {
|
public TileEntityDefinition(Consumer<Block> addBlockListener) {
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import com.google.common.collect.Lists;
|
|||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
@@ -41,7 +42,6 @@ import net.minecraft.client.renderer.BufferBuilder;
|
|||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
import net.minecraft.client.util.InputMappings;
|
import net.minecraft.client.util.InputMappings;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
@@ -647,7 +647,7 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
|
|||||||
FluidAttributes fluidAttributes = fluid.getAttributes();
|
FluidAttributes fluidAttributes = fluid.getAttributes();
|
||||||
bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||||
Identifier fluidStillTexture = fluidAttributes.getStillTexture(fs.getFluidStack());
|
Identifier fluidStillTexture = fluidAttributes.getStillTexture(fs.getFluidStack());
|
||||||
final TextureAtlasSprite sprite = getMinecraft()
|
final Sprite sprite = getMinecraft()
|
||||||
.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE).apply(fluidStillTexture);
|
.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE).apply(fluidStillTexture);
|
||||||
|
|
||||||
// Set color for dynamic fluids
|
// Set color for dynamic fluids
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ import java.util.Random;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
|
||||||
public abstract class DelegateBakedModel implements BakedModel {
|
public abstract class DelegateBakedModel implements BakedModel {
|
||||||
@@ -47,44 +47,44 @@ public abstract class DelegateBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return baseModel.func_230044_c_();
|
return baseModel.isSideLit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return baseModel.getOverrides();
|
return baseModel.getOverrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
baseModel.handlePerspective(cameraTransformType, mat);
|
baseModel.handlePerspective(cameraTransformType, mat);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.baseModel.getParticleTexture();
|
return this.baseModel.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return this.baseModel.getItemCameraTransforms();
|
return this.baseModel.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.baseModel.isAmbientOcclusion();
|
return this.baseModel.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.baseModel.isGui3d();
|
return this.baseModel.hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return this.baseModel.isBuiltInRenderer();
|
return this.baseModel.isBuiltin();
|
||||||
}
|
}
|
||||||
|
|
||||||
public BakedModel getBaseModel() {
|
public BakedModel getBaseModel() {
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,32 +50,32 @@ public class DummyFluidBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,13 +29,13 @@ import alexiil.mc.lib.attributes.fluid.volume.FluidVolume;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.TransformationMatrix;
|
import net.minecraft.client.renderer.TransformationMatrix;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.fluid.Fluids;
|
import net.minecraft.fluid.Fluids;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -53,10 +53,10 @@ import appeng.fluids.items.FluidDummyItem;
|
|||||||
* Override List is used to accomplish this.
|
* Override List is used to accomplish this.
|
||||||
*/
|
*/
|
||||||
public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
|
public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
|
||||||
private final Function<Material, TextureAtlasSprite> bakedTextureGetter;
|
private final Function<Material, Sprite> bakedTextureGetter;
|
||||||
|
|
||||||
public DummyFluidDispatcherBakedModel(BakedModel baseModel,
|
public DummyFluidDispatcherBakedModel(BakedModel baseModel,
|
||||||
Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
Function<Material, Sprite> bakedTextureGetter) {
|
||||||
super(baseModel);
|
super(baseModel);
|
||||||
this.bakedTextureGetter = bakedTextureGetter;
|
this.bakedTextureGetter = bakedTextureGetter;
|
||||||
}
|
}
|
||||||
@@ -68,23 +68,23 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.getBaseModel().isGui3d();
|
return this.getBaseModel().hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return getBaseModel().func_230044_c_();
|
return getBaseModel().isSideLit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return new ItemOverrideList() {
|
return new ModelOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
||||||
LivingEntity entity) {
|
LivingEntity entity) {
|
||||||
@@ -102,7 +102,7 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
|
|||||||
FluidAttributes attributes = fluidStack.getFluid().getAttributes();
|
FluidAttributes attributes = fluidStack.getFluid().getAttributes();
|
||||||
Identifier stillTexture = attributes.getStillTexture(fluidStack);
|
Identifier stillTexture = attributes.getStillTexture(fluidStack);
|
||||||
Material stillMaterial = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, stillTexture);
|
Material stillMaterial = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, stillTexture);
|
||||||
TextureAtlasSprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply(stillMaterial);
|
Sprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply(stillMaterial);
|
||||||
if (sprite == null) {
|
if (sprite == null) {
|
||||||
return new DummyFluidBakedModel(ImmutableList.of());
|
return new DummyFluidBakedModel(ImmutableList.of());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -49,8 +49,8 @@ public class DummyFluidItemModel implements IModelGeometry<DummyFluidItemModel>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
BakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
||||||
|
|
||||||
return new DummyFluidDispatcherBakedModel(bakedBaseModel, spriteGetter);
|
return new DummyFluidDispatcherBakedModel(bakedBaseModel, spriteGetter);
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ import javax.annotation.Nullable;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.FacadeBuilder;
|
import appeng.client.render.cablebus.FacadeBuilder;
|
||||||
|
|
||||||
@@ -75,22 +75,22 @@ public class FacadeBakedItemModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ package appeng.client.render;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -47,8 +47,8 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return new ItemOverrideList() {
|
return new ModelOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
||||||
LivingEntity entity) {
|
LivingEntity entity) {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ import java.util.function.Function;
|
|||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
|
|
||||||
import net.minecraft.client.render.model.*;
|
import net.minecraft.client.render.model.*;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -44,8 +45,8 @@ public class FacadeItemModel implements IModelGeometry<FacadeItemModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
BakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
||||||
FacadeBuilder facadeBuilder = new FacadeBuilder();
|
FacadeBuilder facadeBuilder = new FacadeBuilder();
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||||||
|
|
||||||
import net.minecraft.client.gui.FontRenderer;
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.client.renderer.Vector3f;
|
import net.minecraft.client.renderer.Vector3f;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -92,7 +92,7 @@ public class TesrRenderHelper {
|
|||||||
// effect at least from head-on
|
// effect at least from head-on
|
||||||
matrixStack.scale(scale, scale, 0.0002f);
|
matrixStack.scale(scale, scale, 0.0002f);
|
||||||
|
|
||||||
MinecraftClient.getInstance().getItemRenderer().renderItem(itemStack, ItemCameraTransforms.TransformType.GUI,
|
MinecraftClient.getInstance().getItemRenderer().renderItem(itemStack, ModelTransformation.TransformType.GUI,
|
||||||
combinedLightIn, OverlayTexture.NO_OVERLAY, matrixStack, buffers);
|
combinedLightIn, OverlayTexture.NO_OVERLAY, matrixStack, buffers);
|
||||||
|
|
||||||
matrixStack.pop();
|
matrixStack.pop();
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import java.util.function.Function;
|
|||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
@@ -42,18 +42,18 @@ import appeng.core.AppEng;
|
|||||||
class CableBuilder {
|
class CableBuilder {
|
||||||
|
|
||||||
// Textures for the cable core types, one per type/color pair
|
// Textures for the cable core types, one per type/color pair
|
||||||
private final EnumMap<CableCoreType, EnumMap<AEColor, TextureAtlasSprite>> coreTextures;
|
private final EnumMap<CableCoreType, EnumMap<AEColor, Sprite>> coreTextures;
|
||||||
|
|
||||||
// Textures for rendering the actual connection cubes, one per type/color pair
|
// Textures for rendering the actual connection cubes, one per type/color pair
|
||||||
private final EnumMap<AECableType, EnumMap<AEColor, TextureAtlasSprite>> connectionTextures;
|
private final EnumMap<AECableType, EnumMap<AEColor, Sprite>> connectionTextures;
|
||||||
|
|
||||||
private final SmartCableTextures smartCableTextures;
|
private final SmartCableTextures smartCableTextures;
|
||||||
|
|
||||||
CableBuilder(Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
CableBuilder(Function<Material, Sprite> bakedTextureGetter) {
|
||||||
this.coreTextures = new EnumMap<>(CableCoreType.class);
|
this.coreTextures = new EnumMap<>(CableCoreType.class);
|
||||||
|
|
||||||
for (CableCoreType type : CableCoreType.values()) {
|
for (CableCoreType type : CableCoreType.values()) {
|
||||||
EnumMap<AEColor, TextureAtlasSprite> colorTextures = new EnumMap<>(AEColor.class);
|
EnumMap<AEColor, Sprite> colorTextures = new EnumMap<>(AEColor.class);
|
||||||
|
|
||||||
for (AEColor color : AEColor.values()) {
|
for (AEColor color : AEColor.values()) {
|
||||||
colorTextures.put(color, bakedTextureGetter.apply(type.getTexture(color)));
|
colorTextures.put(color, bakedTextureGetter.apply(type.getTexture(color)));
|
||||||
@@ -65,7 +65,7 @@ class CableBuilder {
|
|||||||
this.connectionTextures = new EnumMap<>(AECableType.class);
|
this.connectionTextures = new EnumMap<>(AECableType.class);
|
||||||
|
|
||||||
for (AECableType type : AECableType.VALIDCABLES) {
|
for (AECableType type : AECableType.VALIDCABLES) {
|
||||||
EnumMap<AEColor, TextureAtlasSprite> colorTextures = new EnumMap<>(AEColor.class);
|
EnumMap<AEColor, Sprite> colorTextures = new EnumMap<>(AEColor.class);
|
||||||
|
|
||||||
for (AEColor color : AEColor.values()) {
|
for (AEColor color : AEColor.values()) {
|
||||||
colorTextures.put(color, bakedTextureGetter.apply(getConnectionTexture(type, color)));
|
colorTextures.put(color, bakedTextureGetter.apply(getConnectionTexture(type, color)));
|
||||||
@@ -128,7 +128,7 @@ class CableBuilder {
|
|||||||
public void addCableCore(CableCoreType coreType, AEColor color, List<BakedQuad> quadsOut) {
|
public void addCableCore(CableCoreType coreType, AEColor color, List<BakedQuad> quadsOut) {
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.coreTextures.get(coreType).get(color);
|
Sprite texture = this.coreTextures.get(coreType).get(color);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
switch (coreType) {
|
switch (coreType) {
|
||||||
@@ -153,13 +153,13 @@ class CableBuilder {
|
|||||||
|
|
||||||
// For to-machine connections, use a thicker end-cap for the connection
|
// For to-machine connections, use a thicker end-cap for the connection
|
||||||
if (connectionType != AECableType.GLASS && !cableBusAdjacent) {
|
if (connectionType != AECableType.GLASS && !cableBusAdjacent) {
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
this.addBigCoveredCableSizedCube(facing, cubeBuilder);
|
this.addBigCoveredCableSizedCube(facing, cubeBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
switch (facing) {
|
switch (facing) {
|
||||||
@@ -192,7 +192,7 @@ class CableBuilder {
|
|||||||
// and its ends will always be covered by something
|
// and its ends will always be covered by something
|
||||||
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing, facing.getOpposite())));
|
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing, facing.getOpposite())));
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
switch (facing) {
|
switch (facing) {
|
||||||
@@ -221,7 +221,7 @@ class CableBuilder {
|
|||||||
|
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.GLASS).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
switch (facing) {
|
switch (facing) {
|
||||||
@@ -254,7 +254,7 @@ class CableBuilder {
|
|||||||
// We render all faces except the one on the connection side
|
// We render all faces except the one on the connection side
|
||||||
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
// Draw a covered connection, if anything but glass is requested
|
// Draw a covered connection, if anything but glass is requested
|
||||||
@@ -268,7 +268,7 @@ class CableBuilder {
|
|||||||
public void addStraightCoveredConnection(Direction facing, AEColor cableColor, List<BakedQuad> quadsOut) {
|
public void addStraightCoveredConnection(Direction facing, AEColor cableColor, List<BakedQuad> quadsOut) {
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
||||||
@@ -312,7 +312,7 @@ class CableBuilder {
|
|||||||
|
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
addCoveredCableSizedCube(facing, distanceFromEdge, cubeBuilder);
|
addCoveredCableSizedCube(facing, distanceFromEdge, cubeBuilder);
|
||||||
@@ -330,11 +330,11 @@ class CableBuilder {
|
|||||||
// We render all faces except the one on the connection side
|
// We render all faces except the one on the connection side
|
||||||
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
Sprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
||||||
TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
Sprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
||||||
|
|
||||||
// For to-machine connections, use a thicker end-cap for the connection
|
// For to-machine connections, use a thicker end-cap for the connection
|
||||||
if (connectionType != AECableType.GLASS && !cableBusAdjacent) {
|
if (connectionType != AECableType.GLASS && !cableBusAdjacent) {
|
||||||
@@ -374,15 +374,15 @@ class CableBuilder {
|
|||||||
List<BakedQuad> quadsOut) {
|
List<BakedQuad> quadsOut) {
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
||||||
|
|
||||||
addStraightCoveredCableSizedCube(facing, cubeBuilder);
|
addStraightCoveredCableSizedCube(facing, cubeBuilder);
|
||||||
|
|
||||||
TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
Sprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
||||||
TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
Sprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
||||||
|
|
||||||
// Render the channel indicators brightly lit at night
|
// Render the channel indicators brightly lit at night
|
||||||
cubeBuilder.setRenderFullBright(true);
|
cubeBuilder.setRenderFullBright(true);
|
||||||
@@ -407,13 +407,13 @@ class CableBuilder {
|
|||||||
|
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.SMART).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
addCoveredCableSizedCube(facing, distanceFromEdge, cubeBuilder);
|
addCoveredCableSizedCube(facing, distanceFromEdge, cubeBuilder);
|
||||||
|
|
||||||
TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
Sprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
||||||
TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
Sprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
||||||
|
|
||||||
// Render the channel indicators brightly lit at night
|
// Render the channel indicators brightly lit at night
|
||||||
cubeBuilder.setRenderFullBright(true);
|
cubeBuilder.setRenderFullBright(true);
|
||||||
@@ -442,7 +442,7 @@ class CableBuilder {
|
|||||||
// We render all faces except the one on the connection side
|
// We render all faces except the one on the connection side
|
||||||
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.DENSE_COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.DENSE_COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
addDenseCableSizedCube(facing, cubeBuilder);
|
addDenseCableSizedCube(facing, cubeBuilder);
|
||||||
@@ -472,7 +472,7 @@ class CableBuilder {
|
|||||||
// We render all faces except the one on the connection side
|
// We render all faces except the one on the connection side
|
||||||
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
cubeBuilder.setDrawFaces(EnumSet.complementOf(EnumSet.of(facing)));
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.DENSE_SMART).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.DENSE_SMART).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
addDenseCableSizedCube(facing, cubeBuilder);
|
addDenseCableSizedCube(facing, cubeBuilder);
|
||||||
@@ -480,8 +480,8 @@ class CableBuilder {
|
|||||||
// Dense cables show used channels in groups of 4, rounded up
|
// Dense cables show used channels in groups of 4, rounded up
|
||||||
channels = (channels + 3) / 4;
|
channels = (channels + 3) / 4;
|
||||||
|
|
||||||
TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
Sprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
||||||
TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
Sprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
||||||
|
|
||||||
// Render the channel indicators brightly lit at night
|
// Render the channel indicators brightly lit at night
|
||||||
cubeBuilder.setRenderFullBright(true);
|
cubeBuilder.setRenderFullBright(true);
|
||||||
@@ -502,7 +502,7 @@ class CableBuilder {
|
|||||||
public void addStraightDenseCoveredConnection(Direction facing, AEColor cableColor, List<BakedQuad> quadsOut) {
|
public void addStraightDenseCoveredConnection(Direction facing, AEColor cableColor, List<BakedQuad> quadsOut) {
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.DENSE_COVERED).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.DENSE_COVERED).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
||||||
@@ -514,7 +514,7 @@ class CableBuilder {
|
|||||||
List<BakedQuad> quadsOut) {
|
List<BakedQuad> quadsOut) {
|
||||||
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
CubeBuilder cubeBuilder = new CubeBuilder(quadsOut);
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.connectionTextures.get(AECableType.DENSE_SMART).get(cableColor);
|
Sprite texture = this.connectionTextures.get(AECableType.DENSE_SMART).get(cableColor);
|
||||||
cubeBuilder.setTexture(texture);
|
cubeBuilder.setTexture(texture);
|
||||||
|
|
||||||
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
setStraightCableUVs(cubeBuilder, facing, 5, 11);
|
||||||
@@ -524,8 +524,8 @@ class CableBuilder {
|
|||||||
// Dense cables show used channels in groups of 4, rounded up
|
// Dense cables show used channels in groups of 4, rounded up
|
||||||
channels = (channels + 3) / 4;
|
channels = (channels + 3) / 4;
|
||||||
|
|
||||||
TextureAtlasSprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
Sprite oddChannel = this.smartCableTextures.getOddTextureForChannels(channels);
|
||||||
TextureAtlasSprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
Sprite evenChannel = this.smartCableTextures.getEvenTextureForChannels(channels);
|
||||||
|
|
||||||
// Render the channel indicators brightly lit at night
|
// Render the channel indicators brightly lit at night
|
||||||
cubeBuilder.setRenderFullBright(true);
|
cubeBuilder.setRenderFullBright(true);
|
||||||
@@ -721,7 +721,7 @@ class CableBuilder {
|
|||||||
return locations;
|
return locations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextureAtlasSprite getCoreTexture(CableCoreType coreType, AEColor color) {
|
public Sprite getCoreTexture(CableCoreType coreType, AEColor color) {
|
||||||
return this.coreTextures.get(coreType).get(color);
|
return this.coreTextures.get(coreType).get(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,15 +34,15 @@ import net.minecraft.block.BlockState;
|
|||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.renderer.texture.MissingTextureSprite;
|
import net.minecraft.client.renderer.texture.MissingTextureSprite;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.MinecraftForgeClient;
|
import net.minecraftforge.client.MinecraftForgeClient;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.parts.IPartModel;
|
import appeng.api.parts.IPartModel;
|
||||||
import appeng.api.util.AECableType;
|
import appeng.api.util.AECableType;
|
||||||
@@ -58,10 +58,10 @@ public class CableBusBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final Map<Identifier, BakedModel> partModels;
|
private final Map<Identifier, BakedModel> partModels;
|
||||||
|
|
||||||
private final TextureAtlasSprite particleTexture;
|
private final Sprite particleTexture;
|
||||||
|
|
||||||
CableBusBakedModel(CableBuilder cableBuilder, FacadeBuilder facadeBuilder,
|
CableBusBakedModel(CableBuilder cableBuilder, FacadeBuilder facadeBuilder,
|
||||||
Map<Identifier, BakedModel> partModels, TextureAtlasSprite particleTexture) {
|
Map<Identifier, BakedModel> partModels, Sprite particleTexture) {
|
||||||
this.cableBuilder = cableBuilder;
|
this.cableBuilder = cableBuilder;
|
||||||
this.facadeBuilder = facadeBuilder;
|
this.facadeBuilder = facadeBuilder;
|
||||||
this.partModels = partModels;
|
this.partModels = partModels;
|
||||||
@@ -267,11 +267,11 @@ public class CableBusBakedModel implements BakedModel {
|
|||||||
* Gets a list of texture sprites appropriate for particles (digging, etc.)
|
* Gets a list of texture sprites appropriate for particles (digging, etc.)
|
||||||
* given the render state for a cable bus.
|
* given the render state for a cable bus.
|
||||||
*/
|
*/
|
||||||
public List<TextureAtlasSprite> getParticleTextures(CableBusRenderState renderState) {
|
public List<Sprite> getParticleTextures(CableBusRenderState renderState) {
|
||||||
CableCoreType coreType = CableCoreType.fromCableType(renderState.getCableType());
|
CableCoreType coreType = CableCoreType.fromCableType(renderState.getCableType());
|
||||||
AEColor cableColor = renderState.getCableColor();
|
AEColor cableColor = renderState.getCableColor();
|
||||||
|
|
||||||
List<TextureAtlasSprite> result = new ArrayList<>();
|
List<Sprite> result = new ArrayList<>();
|
||||||
|
|
||||||
if (coreType != null) {
|
if (coreType != null) {
|
||||||
result.add(this.cableBuilder.getCoreTexture(coreType, cableColor));
|
result.add(this.cableBuilder.getCoreTexture(coreType, cableColor));
|
||||||
@@ -288,7 +288,7 @@ public class CableBusBakedModel implements BakedModel {
|
|||||||
throw new IllegalStateException("Trying to use an unregistered part model: " + model);
|
throw new IllegalStateException("Trying to use an unregistered part model: " + model);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureAtlasSprite particleTexture = bakedModel.getParticleTexture();
|
Sprite particleTexture = bakedModel.getSprite();
|
||||||
|
|
||||||
// If a part sub-model has no particle texture (indicated by it being the
|
// If a part sub-model has no particle texture (indicated by it being the
|
||||||
// missing texture),
|
// missing texture),
|
||||||
@@ -302,43 +302,43 @@ public class CableBusBakedModel implements BakedModel {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMissingTexture(TextureAtlasSprite particleTexture) {
|
private boolean isMissingTexture(Sprite particleTexture) {
|
||||||
return particleTexture instanceof MissingTextureSprite;
|
return particleTexture instanceof MissingTextureSprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.particleTexture;
|
return this.particleTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return ItemCameraTransforms.DEFAULT;
|
return ModelTransformation.DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clearCache() {
|
public static void clearCache() {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package appeng.client.render.cablebus;
|
|||||||
|
|
||||||
import net.minecraft.client.particle.IParticleRenderType;
|
import net.minecraft.client.particle.IParticleRenderType;
|
||||||
import net.minecraft.client.particle.SpriteTexturedParticle;
|
import net.minecraft.client.particle.SpriteTexturedParticle;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
@@ -16,7 +16,7 @@ public class CableBusBreakingParticle extends SpriteTexturedParticle {
|
|||||||
private final float field_217572_F;
|
private final float field_217572_F;
|
||||||
|
|
||||||
public CableBusBreakingParticle(World world, double x, double y, double z, double speedX, double speedY,
|
public CableBusBreakingParticle(World world, double x, double y, double z, double speedX, double speedY,
|
||||||
double speedZ, TextureAtlasSprite sprite) {
|
double speedZ, Sprite sprite) {
|
||||||
super(world, x, y, z, speedX, speedY, speedZ);
|
super(world, x, y, z, speedX, speedY, speedZ);
|
||||||
this.setSprite(sprite);
|
this.setSprite(sprite);
|
||||||
this.particleGravity = 1.0F;
|
this.particleGravity = 1.0F;
|
||||||
@@ -25,7 +25,7 @@ public class CableBusBreakingParticle extends SpriteTexturedParticle {
|
|||||||
this.field_217572_F = this.rand.nextFloat() * 3.0F;
|
this.field_217572_F = this.rand.nextFloat() * 3.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CableBusBreakingParticle(World world, double x, double y, double z, TextureAtlasSprite sprite) {
|
public CableBusBreakingParticle(World world, double x, double y, double z, Sprite sprite) {
|
||||||
this(world, x, y, z, 0, 0, 0, sprite);
|
this(world, x, y, z, 0, 0, 0, sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -55,8 +55,8 @@ public class CableBusModel implements IModelGeometry<CableBusModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
Map<Identifier, BakedModel> partModels = this.loadPartModels(bakery, spriteGetter, modelTransform);
|
Map<Identifier, BakedModel> partModels = this.loadPartModels(bakery, spriteGetter, modelTransform);
|
||||||
|
|
||||||
CableBuilder cableBuilder = new CableBuilder(spriteGetter);
|
CableBuilder cableBuilder = new CableBuilder(spriteGetter);
|
||||||
@@ -65,7 +65,7 @@ public class CableBusModel implements IModelGeometry<CableBusModel> {
|
|||||||
// This should normally not be used, but we *have* to provide a particle texture
|
// This should normally not be used, but we *have* to provide a particle texture
|
||||||
// or otherwise damage models will
|
// or otherwise damage models will
|
||||||
// crash
|
// crash
|
||||||
TextureAtlasSprite particleTexture = cableBuilder.getCoreTexture(CableCoreType.GLASS, AEColor.TRANSPARENT);
|
Sprite particleTexture = cableBuilder.getCoreTexture(CableCoreType.GLASS, AEColor.TRANSPARENT);
|
||||||
|
|
||||||
return new CableBusBakedModel(cableBuilder, facadeBuilder, partModels, particleTexture);
|
return new CableBusBakedModel(cableBuilder, facadeBuilder, partModels, particleTexture);
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ public class CableBusModel implements IModelGeometry<CableBusModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Map<Identifier, BakedModel> loadPartModels(ModelLoader bakery,
|
private Map<Identifier, BakedModel> loadPartModels(ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetterIn, IModelTransform transformIn) {
|
Function<Material, Sprite> spriteGetterIn, IModelTransform transformIn) {
|
||||||
ImmutableMap.Builder<Identifier, BakedModel> result = ImmutableMap.builder();
|
ImmutableMap.Builder<Identifier, BakedModel> result = ImmutableMap.builder();
|
||||||
|
|
||||||
for (Identifier location : this.partModels.getModels()) {
|
for (Identifier location : this.partModels.getModels()) {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import net.minecraft.util.math.Direction;
|
|||||||
import net.minecraft.util.math.Box;
|
import net.minecraft.util.math.Box;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.ILightReader;
|
import net.minecraft.world.ILightReader;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
|
|
||||||
import appeng.api.parts.IPartModel;
|
import appeng.api.parts.IPartModel;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.google.common.base.Preconditions;
|
|||||||
|
|
||||||
import net.minecraft.client.renderer.Vector4f;
|
import net.minecraft.client.renderer.Vector4f;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -40,7 +40,7 @@ public class CubeBuilder {
|
|||||||
|
|
||||||
private final List<BakedQuad> output;
|
private final List<BakedQuad> output;
|
||||||
|
|
||||||
private final EnumMap<Direction, TextureAtlasSprite> textures = new EnumMap<>(Direction.class);
|
private final EnumMap<Direction, Sprite> textures = new EnumMap<>(Direction.class);
|
||||||
|
|
||||||
private EnumSet<Direction> drawFaces = EnumSet.allOf(Direction.class);
|
private EnumSet<Direction> drawFaces = EnumSet.allOf(Direction.class);
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ public class CubeBuilder {
|
|||||||
|
|
||||||
private void putFace(Direction face, float x1, float y1, float z1, float x2, float y2, float z2) {
|
private void putFace(Direction face, float x1, float y1, float z1, float x2, float y2, float z2) {
|
||||||
|
|
||||||
TextureAtlasSprite texture = this.textures.get(face);
|
Sprite texture = this.textures.get(face);
|
||||||
|
|
||||||
BakedQuadBuilder builder = new BakedQuadBuilder(texture);
|
BakedQuadBuilder builder = new BakedQuadBuilder(texture);
|
||||||
builder.setQuadOrientation(face);
|
builder.setQuadOrientation(face);
|
||||||
@@ -152,8 +152,8 @@ public class CubeBuilder {
|
|||||||
this.output.add(builder.build());
|
this.output.add(builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private UvVector getDefaultUv(Direction face, TextureAtlasSprite texture, float x1, float y1, float z1, float x2,
|
private UvVector getDefaultUv(Direction face, Sprite texture, float x1, float y1, float z1, float x2,
|
||||||
float y2, float z2) {
|
float y2, float z2) {
|
||||||
|
|
||||||
UvVector uv = new UvVector();
|
UvVector uv = new UvVector();
|
||||||
|
|
||||||
@@ -199,8 +199,8 @@ public class CubeBuilder {
|
|||||||
return uv;
|
return uv;
|
||||||
}
|
}
|
||||||
|
|
||||||
private UvVector getStandardUv(Direction face, TextureAtlasSprite texture, float x1, float y1, float z1, float x2,
|
private UvVector getStandardUv(Direction face, Sprite texture, float x1, float y1, float z1, float x2,
|
||||||
float y2, float z2) {
|
float y2, float z2) {
|
||||||
UvVector uv = new UvVector();
|
UvVector uv = new UvVector();
|
||||||
switch (face) {
|
switch (face) {
|
||||||
case DOWN:
|
case DOWN:
|
||||||
@@ -394,14 +394,14 @@ public class CubeBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
for (Direction face : Direction.values()) {
|
for (Direction face : Direction.values()) {
|
||||||
this.textures.put(face, texture);
|
this.textures.put(face, texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTextures(TextureAtlasSprite up, TextureAtlasSprite down, TextureAtlasSprite north,
|
public void setTextures(Sprite up, Sprite down, Sprite north,
|
||||||
TextureAtlasSprite south, TextureAtlasSprite east, TextureAtlasSprite west) {
|
Sprite south, Sprite east, Sprite west) {
|
||||||
this.textures.put(Direction.UP, up);
|
this.textures.put(Direction.UP, up);
|
||||||
this.textures.put(Direction.DOWN, down);
|
this.textures.put(Direction.DOWN, down);
|
||||||
this.textures.put(Direction.NORTH, north);
|
this.textures.put(Direction.NORTH, north);
|
||||||
@@ -410,7 +410,7 @@ public class CubeBuilder {
|
|||||||
this.textures.put(Direction.WEST, west);
|
this.textures.put(Direction.WEST, west);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTexture(Direction facing, TextureAtlasSprite sprite) {
|
public void setTexture(Direction facing, Sprite sprite) {
|
||||||
this.textures.put(facing, sprite);
|
this.textures.put(facing, sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.ILightReader;
|
import net.minecraft.world.ILightReader;
|
||||||
import net.minecraftforge.client.ForgeHooksClient;
|
import net.minecraftforge.client.ForgeHooksClient;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.util.AEAxisAlignedBB;
|
import appeng.api.util.AEAxisAlignedBB;
|
||||||
|
|||||||
@@ -11,24 +11,24 @@ import com.google.common.cache.CacheBuilder;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.util.AEColor;
|
import appeng.api.util.AEColor;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
|
||||||
public class P2PTunnelFrequencyBakedModel implements IDynamicBakedModel {
|
public class P2PTunnelFrequencyBakedModel implements IDynamicBakedModel {
|
||||||
|
|
||||||
private final TextureAtlasSprite texture;
|
private final Sprite texture;
|
||||||
|
|
||||||
private final static Cache<Long, List<BakedQuad>> modelCache = CacheBuilder.newBuilder().maximumSize(100).build();
|
private final static Cache<Long, List<BakedQuad>> modelCache = CacheBuilder.newBuilder().maximumSize(100).build();
|
||||||
|
|
||||||
private static final int[][] QUAD_OFFSETS = new int[][] { { 4, 10, 2 }, { 10, 10, 2 }, { 4, 4, 2 }, { 10, 4, 2 } };
|
private static final int[][] QUAD_OFFSETS = new int[][] { { 4, 10, 2 }, { 10, 10, 2 }, { 4, 4, 2 }, { 10, 4, 2 } };
|
||||||
|
|
||||||
public P2PTunnelFrequencyBakedModel(final TextureAtlasSprite texture) {
|
public P2PTunnelFrequencyBakedModel(final Sprite texture) {
|
||||||
this.texture = texture;
|
this.texture = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,32 +86,32 @@ public class P2PTunnelFrequencyBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.texture;
|
return this.texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -27,10 +27,10 @@ public class P2PTunnelFrequencyModel implements IModelGeometry<P2PTunnelFrequenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
try {
|
try {
|
||||||
final TextureAtlasSprite texture = spriteGetter.apply(TEXTURE);
|
final Sprite texture = spriteGetter.apply(TEXTURE);
|
||||||
return new P2PTunnelFrequencyBakedModel(texture);
|
return new P2PTunnelFrequencyBakedModel(texture);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
import appeng.core.AppEng;
|
import appeng.core.AppEng;
|
||||||
@@ -49,18 +49,18 @@ public class SmartCableTextures {
|
|||||||
// Textures used to display channels on smart cables. There's two sets of 5
|
// Textures used to display channels on smart cables. There's two sets of 5
|
||||||
// textures each, and
|
// textures each, and
|
||||||
// one of each set are composed together to get even/odd colored channels
|
// one of each set are composed together to get even/odd colored channels
|
||||||
private final TextureAtlasSprite[] textures;
|
private final Sprite[] textures;
|
||||||
|
|
||||||
public SmartCableTextures(Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
public SmartCableTextures(Function<Material, Sprite> bakedTextureGetter) {
|
||||||
this.textures = Arrays.stream(SMART_CHANNELS_TEXTURES)//
|
this.textures = Arrays.stream(SMART_CHANNELS_TEXTURES)//
|
||||||
.map(bakedTextureGetter)//
|
.map(bakedTextureGetter)//
|
||||||
.toArray(TextureAtlasSprite[]::new);
|
.toArray(Sprite[]::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The odd variant is used for displaying channels 1-4 as in use.
|
* The odd variant is used for displaying channels 1-4 as in use.
|
||||||
*/
|
*/
|
||||||
public TextureAtlasSprite getOddTextureForChannels(int channels) {
|
public Sprite getOddTextureForChannels(int channels) {
|
||||||
if (channels < 0) {
|
if (channels < 0) {
|
||||||
return this.textures[0];
|
return this.textures[0];
|
||||||
} else if (channels <= 4) {
|
} else if (channels <= 4) {
|
||||||
@@ -73,7 +73,7 @@ public class SmartCableTextures {
|
|||||||
/**
|
/**
|
||||||
* The odd variant is used for displaying channels 5-8 as in use.
|
* The odd variant is used for displaying channels 5-8 as in use.
|
||||||
*/
|
*/
|
||||||
public TextureAtlasSprite getEvenTextureForChannels(int channels) {
|
public Sprite getEvenTextureForChannels(int channels) {
|
||||||
if (channels < 5) {
|
if (channels < 5) {
|
||||||
return this.textures[5];
|
return this.textures[5];
|
||||||
} else if (channels <= 8) {
|
} else if (channels <= 8) {
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ import javax.annotation.Nullable;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
import appeng.tile.crafting.CraftingCubeModelData;
|
import appeng.tile.crafting.CraftingCubeModelData;
|
||||||
@@ -47,13 +47,13 @@ import appeng.util.Platform;
|
|||||||
*/
|
*/
|
||||||
abstract class CraftingCubeBakedModel implements IDynamicBakedModel {
|
abstract class CraftingCubeBakedModel implements IDynamicBakedModel {
|
||||||
|
|
||||||
private final TextureAtlasSprite ringCorner;
|
private final Sprite ringCorner;
|
||||||
|
|
||||||
private final TextureAtlasSprite ringHor;
|
private final Sprite ringHor;
|
||||||
|
|
||||||
private final TextureAtlasSprite ringVer;
|
private final Sprite ringVer;
|
||||||
|
|
||||||
CraftingCubeBakedModel(TextureAtlasSprite ringCorner, TextureAtlasSprite ringHor, TextureAtlasSprite ringVer) {
|
CraftingCubeBakedModel(Sprite ringCorner, Sprite ringHor, Sprite ringVer) {
|
||||||
this.ringCorner = ringCorner;
|
this.ringCorner = ringCorner;
|
||||||
this.ringHor = ringHor;
|
this.ringHor = ringHor;
|
||||||
this.ringVer = ringVer;
|
this.ringVer = ringVer;
|
||||||
@@ -256,33 +256,33 @@ abstract class CraftingCubeBakedModel implements IDynamicBakedModel {
|
|||||||
float x1, float y1, float z1, float x2, float y2, float z2);
|
float x1, float y1, float z1, float x2, float y2, float z2);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.ringCorner;
|
return this.ringCorner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -76,12 +76,12 @@ class CraftingCubeModel implements IModelGeometry<CraftingCubeModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
// Retrieve our textures and pass them on to the baked model
|
// Retrieve our textures and pass them on to the baked model
|
||||||
TextureAtlasSprite ringCorner = spriteGetter.apply(RING_CORNER);
|
Sprite ringCorner = spriteGetter.apply(RING_CORNER);
|
||||||
TextureAtlasSprite ringSideHor = spriteGetter.apply(RING_SIDE_HOR);
|
Sprite ringSideHor = spriteGetter.apply(RING_SIDE_HOR);
|
||||||
TextureAtlasSprite ringSideVer = spriteGetter.apply(RING_SIDE_VER);
|
Sprite ringSideVer = spriteGetter.apply(RING_SIDE_VER);
|
||||||
|
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
case UNIT:
|
case UNIT:
|
||||||
@@ -102,8 +102,8 @@ class CraftingCubeModel implements IModelGeometry<CraftingCubeModel> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TextureAtlasSprite getLightTexture(Function<Material, TextureAtlasSprite> textureGetter,
|
private static Sprite getLightTexture(Function<Material, Sprite> textureGetter,
|
||||||
AbstractCraftingUnitBlock.CraftingUnitType type) {
|
AbstractCraftingUnitBlock.CraftingUnitType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ACCELERATOR:
|
case ACCELERATOR:
|
||||||
return textureGetter.apply(ACCELERATOR_LIGHT);
|
return textureGetter.apply(ACCELERATOR_LIGHT);
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ import javax.annotation.Nullable;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.renderer.TransformationMatrix;
|
import net.minecraft.client.renderer.TransformationMatrix;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -25,12 +25,12 @@ import appeng.items.misc.EncodedPatternItem;
|
|||||||
* holding shift - The itemstack is being rendered in the UI (not on the ground,
|
* holding shift - The itemstack is being rendered in the UI (not on the ground,
|
||||||
* etc.)
|
* etc.)
|
||||||
*
|
*
|
||||||
* We do this by abusing a custom {@link ItemOverrideList} since it will be
|
* We do this by abusing a custom {@link ModelOverrideList} since it will be
|
||||||
* called each frame with the itemstack that is about to be rendered. We return
|
* called each frame with the itemstack that is about to be rendered. We return
|
||||||
* a custom IBakedModel ({@link ShiftHoldingModelWrapper} if the player is
|
* a custom IBakedModel ({@link ShiftHoldingModelWrapper} if the player is
|
||||||
* holding down shift from the override list. This custom baked model implements
|
* holding down shift from the override list. This custom baked model implements
|
||||||
* {@link #doesHandlePerspectives()} and returns the crafting result model if
|
* {@link #doesHandlePerspectives()} and returns the crafting result model if
|
||||||
* the model for {@link ItemCameraTransforms.TransformType#GUI} is requested.
|
* the model for {@link ModelTransformation.TransformType#GUI} is requested.
|
||||||
*/
|
*/
|
||||||
public class EncodedPatternBakedModel extends DelegateBakedModel {
|
public class EncodedPatternBakedModel extends DelegateBakedModel {
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ public class EncodedPatternBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return this.overrides;
|
return this.overrides;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,12 +71,12 @@ public class EncodedPatternBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
// No need to re-check for shift being held since this model is only handed out
|
// No need to re-check for shift being held since this model is only handed out
|
||||||
// in that case
|
// in that case
|
||||||
if (cameraTransformType == ItemCameraTransforms.TransformType.GUI) {
|
if (cameraTransformType == ModelTransformation.TransformType.GUI) {
|
||||||
ImmutableMap<ItemCameraTransforms.TransformType, TransformationMatrix> transforms = PerspectiveMapWrapper
|
ImmutableMap<ModelTransformation.TransformType, TransformationMatrix> transforms = PerspectiveMapWrapper
|
||||||
.getTransforms(outputModel.getItemCameraTransforms());
|
.getTransforms(outputModel.getTransformation());
|
||||||
return PerspectiveMapWrapper.handlePerspective(this.outputModel, transforms, cameraTransformType, mat);
|
return PerspectiveMapWrapper.handlePerspective(this.outputModel, transforms, cameraTransformType, mat);
|
||||||
} else {
|
} else {
|
||||||
return getBaseModel().handlePerspective(cameraTransformType, mat);
|
return getBaseModel().handlePerspective(cameraTransformType, mat);
|
||||||
@@ -86,8 +86,8 @@ public class EncodedPatternBakedModel extends DelegateBakedModel {
|
|||||||
// This determines diffuse lighting in the UI, and since we want to render
|
// This determines diffuse lighting in the UI, and since we want to render
|
||||||
// the outputModel in the UI, we need to use it's setting here
|
// the outputModel in the UI, we need to use it's setting here
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return outputModel.func_230044_c_();
|
return outputModel.isSideLit();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ public class EncodedPatternBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
return getBaseModel().handlePerspective(cameraTransformType, mat);
|
return getBaseModel().handlePerspective(cameraTransformType, mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ public class EncodedPatternBakedModel extends DelegateBakedModel {
|
|||||||
* actually check if shift is being held, and if so, determine the crafting
|
* actually check if shift is being held, and if so, determine the crafting
|
||||||
* output model.
|
* output model.
|
||||||
*/
|
*/
|
||||||
private class CustomOverrideList extends ItemOverrideList {
|
private class CustomOverrideList extends ModelOverrideList {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -36,8 +36,8 @@ public class EncodedPatternModel implements IModelGeometry<EncodedPatternModel>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel baseModel = bakery.getBakedModel(this.baseModel, modelTransform, spriteGetter);
|
BakedModel baseModel = bakery.getBakedModel(this.baseModel, modelTransform, spriteGetter);
|
||||||
return new EncodedPatternBakedModel(baseModel);
|
return new EncodedPatternBakedModel(baseModel);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
package appeng.client.render.crafting;
|
package appeng.client.render.crafting;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.block.crafting.AbstractCraftingUnitBlock;
|
import appeng.block.crafting.AbstractCraftingUnitBlock;
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
@@ -33,12 +33,12 @@ import appeng.client.render.cablebus.CubeBuilder;
|
|||||||
*/
|
*/
|
||||||
class LightBakedModel extends CraftingCubeBakedModel {
|
class LightBakedModel extends CraftingCubeBakedModel {
|
||||||
|
|
||||||
private final TextureAtlasSprite baseTexture;
|
private final Sprite baseTexture;
|
||||||
|
|
||||||
private final TextureAtlasSprite lightTexture;
|
private final Sprite lightTexture;
|
||||||
|
|
||||||
LightBakedModel(TextureAtlasSprite ringCorner, TextureAtlasSprite ringHor, TextureAtlasSprite ringVer,
|
LightBakedModel(Sprite ringCorner, Sprite ringHor, Sprite ringVer,
|
||||||
TextureAtlasSprite baseTexture, TextureAtlasSprite lightTexture) {
|
Sprite baseTexture, Sprite lightTexture) {
|
||||||
super(ringCorner, ringHor, ringVer);
|
super(ringCorner, ringHor, ringVer);
|
||||||
this.baseTexture = baseTexture;
|
this.baseTexture = baseTexture;
|
||||||
this.lightTexture = lightTexture;
|
this.lightTexture = lightTexture;
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
package appeng.client.render.crafting;
|
package appeng.client.render.crafting;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.util.AEColor;
|
import appeng.api.util.AEColor;
|
||||||
import appeng.block.crafting.CraftingMonitorBlock;
|
import appeng.block.crafting.CraftingMonitorBlock;
|
||||||
@@ -38,19 +38,19 @@ import appeng.tile.crafting.CraftingMonitorModelData;
|
|||||||
*/
|
*/
|
||||||
public class MonitorBakedModel extends CraftingCubeBakedModel {
|
public class MonitorBakedModel extends CraftingCubeBakedModel {
|
||||||
|
|
||||||
private final TextureAtlasSprite chassisTexture;
|
private final Sprite chassisTexture;
|
||||||
|
|
||||||
private final TextureAtlasSprite baseTexture;
|
private final Sprite baseTexture;
|
||||||
|
|
||||||
private final TextureAtlasSprite lightDarkTexture;
|
private final Sprite lightDarkTexture;
|
||||||
|
|
||||||
private final TextureAtlasSprite lightMediumTexture;
|
private final Sprite lightMediumTexture;
|
||||||
|
|
||||||
private final TextureAtlasSprite lightBrightTexture;
|
private final Sprite lightBrightTexture;
|
||||||
|
|
||||||
MonitorBakedModel(TextureAtlasSprite ringCorner, TextureAtlasSprite ringHor, TextureAtlasSprite ringVer,
|
MonitorBakedModel(Sprite ringCorner, Sprite ringHor, Sprite ringVer,
|
||||||
TextureAtlasSprite chassisTexture, TextureAtlasSprite baseTexture, TextureAtlasSprite lightDarkTexture,
|
Sprite chassisTexture, Sprite baseTexture, Sprite lightDarkTexture,
|
||||||
TextureAtlasSprite lightMediumTexture, TextureAtlasSprite lightBrightTexture) {
|
Sprite lightMediumTexture, Sprite lightBrightTexture) {
|
||||||
super(ringCorner, ringHor, ringVer);
|
super(ringCorner, ringHor, ringVer);
|
||||||
this.chassisTexture = chassisTexture;
|
this.chassisTexture = chassisTexture;
|
||||||
this.baseTexture = baseTexture;
|
this.baseTexture = baseTexture;
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
package appeng.client.render.crafting;
|
package appeng.client.render.crafting;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
|
|
||||||
@@ -30,10 +30,10 @@ import appeng.client.render.cablebus.CubeBuilder;
|
|||||||
*/
|
*/
|
||||||
class UnitBakedModel extends CraftingCubeBakedModel {
|
class UnitBakedModel extends CraftingCubeBakedModel {
|
||||||
|
|
||||||
private final TextureAtlasSprite unitTexture;
|
private final Sprite unitTexture;
|
||||||
|
|
||||||
UnitBakedModel(TextureAtlasSprite ringCorner, TextureAtlasSprite ringHor, TextureAtlasSprite ringVer,
|
UnitBakedModel(Sprite ringCorner, Sprite ringHor, Sprite ringVer,
|
||||||
TextureAtlasSprite unitTexture) {
|
Sprite unitTexture) {
|
||||||
super(ringCorner, ringHor, ringVer);
|
super(ringCorner, ringHor, ringVer);
|
||||||
this.unitTexture = unitTexture;
|
this.unitTexture = unitTexture;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package appeng.client.render.model;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
|
|
||||||
public abstract class AEInternalModelData implements IModelData {
|
public abstract class AEInternalModelData implements IModelData {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import javax.annotation.Nullable;
|
|||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ import com.google.common.collect.ImmutableList;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.renderer.Vector4f;
|
import net.minecraft.client.renderer.Vector4f;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -45,7 +45,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.util.math.Vec3i;
|
import net.minecraft.util.math.Vec3i;
|
||||||
import net.minecraft.world.ILightReader;
|
import net.minecraft.world.ILightReader;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
||||||
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
||||||
import net.minecraftforge.client.model.pipeline.QuadGatheringTransformer;
|
import net.minecraftforge.client.model.pipeline.QuadGatheringTransformer;
|
||||||
@@ -114,38 +114,38 @@ public class AutoRotatingBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.parent.isAmbientOcclusion();
|
return this.parent.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.parent.isGui3d();
|
return this.parent.hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return parent.func_230044_c_();
|
return parent.isSideLit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return this.parent.isBuiltInRenderer();
|
return this.parent.isBuiltin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.parent.getParticleTexture();
|
return this.parent.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return parent.getItemCameraTransforms();
|
return parent.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return parent.getOverrides();
|
return parent.getOverrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ public class AutoRotatingBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
this.parent.setTexture(texture);
|
this.parent.setTexture(texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ import com.google.common.cache.CacheBuilder;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -34,7 +34,7 @@ class BiometricCardBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final BakedModel baseModel;
|
private final BakedModel baseModel;
|
||||||
|
|
||||||
private final TextureAtlasSprite texture;
|
private final Sprite texture;
|
||||||
|
|
||||||
private final int hash;
|
private final int hash;
|
||||||
|
|
||||||
@@ -42,11 +42,11 @@ class BiometricCardBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final ImmutableList<BakedQuad> generalQuads;
|
private final ImmutableList<BakedQuad> generalQuads;
|
||||||
|
|
||||||
BiometricCardBakedModel(BakedModel baseModel, TextureAtlasSprite texture) {
|
BiometricCardBakedModel(BakedModel baseModel, Sprite texture) {
|
||||||
this(baseModel, texture, 0, createCache());
|
this(baseModel, texture, 0, createCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
private BiometricCardBakedModel(BakedModel baseModel, TextureAtlasSprite texture, int hash,
|
private BiometricCardBakedModel(BakedModel baseModel, Sprite texture, int hash,
|
||||||
Cache<Integer, BiometricCardBakedModel> modelCache) {
|
Cache<Integer, BiometricCardBakedModel> modelCache) {
|
||||||
this.baseModel = baseModel;
|
this.baseModel = baseModel;
|
||||||
this.texture = texture;
|
this.texture = texture;
|
||||||
@@ -110,38 +110,38 @@ class BiometricCardBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.baseModel.isAmbientOcclusion();
|
return this.baseModel.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.baseModel.isGui3d();
|
return this.baseModel.hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return this.baseModel.isBuiltInRenderer();
|
return this.baseModel.isBuiltin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.baseModel.getParticleTexture();
|
return this.baseModel.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return this.baseModel.getItemCameraTransforms();
|
return this.baseModel.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return new ItemOverrideList() {
|
return new ModelOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
||||||
LivingEntity entity) {
|
LivingEntity entity) {
|
||||||
@@ -182,7 +182,7 @@ class BiometricCardBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
baseModel.handlePerspective(cameraTransformType, mat);
|
baseModel.handlePerspective(cameraTransformType, mat);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -42,9 +42,9 @@ public class BiometricCardModel implements IModelGeometry<BiometricCardModel> {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform transformIn,
|
Function<Material, Sprite> spriteGetter, IModelTransform transformIn,
|
||||||
ItemOverrideList overrides, Identifier locationIn) {
|
ModelOverrideList overrides, Identifier locationIn) {
|
||||||
TextureAtlasSprite texture = spriteGetter.apply(TEXTURE);
|
Sprite texture = spriteGetter.apply(TEXTURE);
|
||||||
|
|
||||||
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, transformIn, spriteGetter);
|
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, transformIn, spriteGetter);
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import java.util.Random;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.PerspectiveMapWrapper;
|
import net.minecraftforge.client.model.PerspectiveMapWrapper;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
@@ -30,8 +30,8 @@ class ColorApplicatorBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final List<BakedQuad> generalQuads;
|
private final List<BakedQuad> generalQuads;
|
||||||
|
|
||||||
ColorApplicatorBakedModel(BakedModel baseModel, IModelTransform transforms, TextureAtlasSprite texDark,
|
ColorApplicatorBakedModel(BakedModel baseModel, IModelTransform transforms, Sprite texDark,
|
||||||
TextureAtlasSprite texMedium, TextureAtlasSprite texBright) {
|
Sprite texMedium, Sprite texBright) {
|
||||||
this.baseModel = baseModel;
|
this.baseModel = baseModel;
|
||||||
this.transforms = transforms;
|
this.transforms = transforms;
|
||||||
|
|
||||||
@@ -43,8 +43,8 @@ class ColorApplicatorBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<BakedQuad> fixQuadTint(Direction facing, TextureAtlasSprite texDark, TextureAtlasSprite texMedium,
|
private List<BakedQuad> fixQuadTint(Direction facing, Sprite texDark, Sprite texMedium,
|
||||||
TextureAtlasSprite texBright) {
|
Sprite texBright) {
|
||||||
List<BakedQuad> quads = this.baseModel.getQuads(null, facing, new Random(0), EmptyModelData.INSTANCE);
|
List<BakedQuad> quads = this.baseModel.getQuads(null, facing, new Random(0), EmptyModelData.INSTANCE);
|
||||||
List<BakedQuad> result = new ArrayList<>(quads.size());
|
List<BakedQuad> result = new ArrayList<>(quads.size());
|
||||||
for (BakedQuad quad : quads) {
|
for (BakedQuad quad : quads) {
|
||||||
@@ -78,42 +78,42 @@ class ColorApplicatorBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.baseModel.isAmbientOcclusion();
|
return this.baseModel.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.baseModel.isGui3d();
|
return this.baseModel.hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return this.baseModel.isBuiltInRenderer();
|
return this.baseModel.isBuiltin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.baseModel.getParticleTexture();
|
return this.baseModel.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return this.baseModel.getItemCameraTransforms();
|
return this.baseModel.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return this.baseModel.getOverrides();
|
return this.baseModel.getOverrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
return PerspectiveMapWrapper.handlePerspective(this, transforms, cameraTransformType, mat);
|
return PerspectiveMapWrapper.handlePerspective(this, transforms, cameraTransformType, mat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -45,13 +45,13 @@ public class ColorApplicatorModel implements IModelGeometry<ColorApplicatorModel
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
||||||
|
|
||||||
TextureAtlasSprite texDark = spriteGetter.apply(TEXTURE_DARK);
|
Sprite texDark = spriteGetter.apply(TEXTURE_DARK);
|
||||||
TextureAtlasSprite texMedium = spriteGetter.apply(TEXTURE_MEDIUM);
|
Sprite texMedium = spriteGetter.apply(TEXTURE_MEDIUM);
|
||||||
TextureAtlasSprite texBright = spriteGetter.apply(TEXTURE_BRIGHT);
|
Sprite texBright = spriteGetter.apply(TEXTURE_BRIGHT);
|
||||||
|
|
||||||
return new ColorApplicatorBakedModel(baseModel, modelTransform, texDark, texMedium, texBright);
|
return new ColorApplicatorBakedModel(baseModel, modelTransform, texDark, texMedium, texBright);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import net.minecraft.client.renderer.Matrix4f;
|
|||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
||||||
|
|
||||||
import appeng.api.definitions.IItems;
|
import appeng.api.definitions.IItems;
|
||||||
@@ -89,7 +89,7 @@ public class DriveBakedModel extends DelegateBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
// We have faces inside the chassis that are facing east, but should not receive
|
// We have faces inside the chassis that are facing east, but should not receive
|
||||||
// ambient occlusion from the east-side, but sadly this cannot be fine-tuned on
|
// ambient occlusion from the east-side, but sadly this cannot be fine-tuned on
|
||||||
// a
|
// a
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -57,8 +57,8 @@ public class DriveModel implements IModelGeometry<DriveModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
EnumMap<DriveSlotCellType, BakedModel> cellModels = new EnumMap<>(DriveSlotCellType.class);
|
EnumMap<DriveSlotCellType, BakedModel> cellModels = new EnumMap<>(DriveSlotCellType.class);
|
||||||
|
|
||||||
// Load the base model and the model for each cell state.
|
// Load the base model and the model for each cell state.
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ import com.google.common.base.Strings;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@@ -47,7 +47,7 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
import net.minecraft.world.ILightReader;
|
import net.minecraft.world.ILightReader;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
||||||
@@ -83,18 +83,18 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
.map(rl -> new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, rl)).toArray(Material[]::new);
|
.map(rl -> new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, rl)).toArray(Material[]::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final TextureAtlasSprite[] glassTextures;
|
private final Sprite[] glassTextures;
|
||||||
|
|
||||||
private final TextureAtlasSprite[] frameTextures;
|
private final Sprite[] frameTextures;
|
||||||
|
|
||||||
public GlassBakedModel(Function<Material, TextureAtlasSprite> bakedTextureGetter) {
|
public GlassBakedModel(Function<Material, Sprite> bakedTextureGetter) {
|
||||||
this.glassTextures = new TextureAtlasSprite[] { bakedTextureGetter.apply(TEXTURE_A),
|
this.glassTextures = new Sprite[] { bakedTextureGetter.apply(TEXTURE_A),
|
||||||
bakedTextureGetter.apply(TEXTURE_B), bakedTextureGetter.apply(TEXTURE_C),
|
bakedTextureGetter.apply(TEXTURE_B), bakedTextureGetter.apply(TEXTURE_C),
|
||||||
bakedTextureGetter.apply(TEXTURE_D) };
|
bakedTextureGetter.apply(TEXTURE_D) };
|
||||||
|
|
||||||
// The first frame texture would be empty, so we simply leave it set to null
|
// The first frame texture would be empty, so we simply leave it set to null
|
||||||
// here
|
// here
|
||||||
this.frameTextures = new TextureAtlasSprite[16];
|
this.frameTextures = new Sprite[16];
|
||||||
for (int i = 0; i < TEXTURES_FRAME.length; i++) {
|
for (int i = 0; i < TEXTURES_FRAME.length; i++) {
|
||||||
this.frameTextures[1 + i] = bakedTextureGetter.apply(TEXTURES_FRAME[i]);
|
this.frameTextures[1 + i] = bakedTextureGetter.apply(TEXTURES_FRAME[i]);
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
v /= 2;
|
v /= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
final TextureAtlasSprite glassTexture = this.glassTextures[texIdx];
|
final Sprite glassTexture = this.glassTextures[texIdx];
|
||||||
|
|
||||||
// Render the glass side
|
// Render the glass side
|
||||||
final List<BakedQuad> quads = new ArrayList<>(5); // At most 5
|
final List<BakedQuad> quads = new ArrayList<>(5); // At most 5
|
||||||
@@ -147,7 +147,7 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
* indicate this.
|
* indicate this.
|
||||||
*/
|
*/
|
||||||
final int edgeBitmask = makeBitmask(glassState, side);
|
final int edgeBitmask = makeBitmask(glassState, side);
|
||||||
final TextureAtlasSprite sideSprite = this.frameTextures[edgeBitmask];
|
final Sprite sideSprite = this.frameTextures[edgeBitmask];
|
||||||
|
|
||||||
if (sideSprite != null) {
|
if (sideSprite != null) {
|
||||||
quads.add(this.createQuad(side, corners, sideSprite, 0, 0));
|
quads.add(this.createQuad(side, corners, sideSprite, 0, 0));
|
||||||
@@ -157,7 +157,7 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
// TODO: Forge: Auto-generated method stub
|
// TODO: Forge: Auto-generated method stub
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -204,13 +204,13 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
return bitmask;
|
return bitmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BakedQuad createQuad(Direction side, List<Vec3d> corners, TextureAtlasSprite sprite, float uOffset,
|
private BakedQuad createQuad(Direction side, List<Vec3d> corners, Sprite sprite, float uOffset,
|
||||||
float vOffset) {
|
float vOffset) {
|
||||||
return this.createQuad(side, corners.get(0), corners.get(1), corners.get(2), corners.get(3), sprite, uOffset,
|
return this.createQuad(side, corners.get(0), corners.get(1), corners.get(2), corners.get(3), sprite, uOffset,
|
||||||
vOffset);
|
vOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BakedQuad createQuad(Direction side, Vec3d c1, Vec3d c2, Vec3d c3, Vec3d c4, TextureAtlasSprite sprite,
|
private BakedQuad createQuad(Direction side, Vec3d c1, Vec3d c2, Vec3d c3, Vec3d c4, Sprite sprite,
|
||||||
float uOffset, float vOffset) {
|
float uOffset, float vOffset) {
|
||||||
Vec3d normal = new Vec3d(side.getDirectionVec());
|
Vec3d normal = new Vec3d(side.getDirectionVec());
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
* the vertex elements had been declared in the vertex format.
|
* the vertex elements had been declared in the vertex format.
|
||||||
*/
|
*/
|
||||||
private void putVertex(BakedQuadBuilder builder, Vec3d normal, double x, double y, double z,
|
private void putVertex(BakedQuadBuilder builder, Vec3d normal, double x, double y, double z,
|
||||||
TextureAtlasSprite sprite, float u, float v) {
|
Sprite sprite, float u, float v) {
|
||||||
VertexFormat vertexFormat = builder.getVertexFormat();
|
VertexFormat vertexFormat = builder.getVertexFormat();
|
||||||
for (int e = 0; e < vertexFormat.getElements().size(); e++) {
|
for (int e = 0; e < vertexFormat.getElements().size(); e++) {
|
||||||
VertexFormatElement el = vertexFormat.getElements().get(e);
|
VertexFormatElement el = vertexFormat.getElements().get(e);
|
||||||
@@ -266,27 +266,27 @@ class GlassBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.frameTextures[this.frameTextures.length - 1];
|
return this.frameTextures[this.frameTextures.length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -43,8 +43,8 @@ public class GlassModel implements IModelGeometry<GlassModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
return new GlassBakedModel(spriteGetter);
|
return new GlassBakedModel(spriteGetter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import net.minecraft.client.renderer.Matrix4f;
|
import net.minecraft.client.renderer.Matrix4f;
|
||||||
import net.minecraft.client.renderer.Vector4f;
|
import net.minecraft.client.renderer.Vector4f;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -75,7 +75,7 @@ final class MatrixVertexTransformer extends QuadGatheringTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
this.parent.setTexture(texture);
|
this.parent.setTexture(texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,14 +11,14 @@ import javax.annotation.Nullable;
|
|||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
@@ -37,7 +37,7 @@ class MemoryCardBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final BakedModel baseModel;
|
private final BakedModel baseModel;
|
||||||
|
|
||||||
private final TextureAtlasSprite texture;
|
private final Sprite texture;
|
||||||
|
|
||||||
private final AEColor[] colorCode;
|
private final AEColor[] colorCode;
|
||||||
|
|
||||||
@@ -45,11 +45,11 @@ class MemoryCardBakedModel implements BakedModel {
|
|||||||
|
|
||||||
private final ImmutableList<BakedQuad> generalQuads;
|
private final ImmutableList<BakedQuad> generalQuads;
|
||||||
|
|
||||||
MemoryCardBakedModel(BakedModel baseModel, TextureAtlasSprite texture) {
|
MemoryCardBakedModel(BakedModel baseModel, Sprite texture) {
|
||||||
this(baseModel, texture, DEFAULT_COLOR_CODE, createCache());
|
this(baseModel, texture, DEFAULT_COLOR_CODE, createCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
private MemoryCardBakedModel(BakedModel baseModel, TextureAtlasSprite texture, AEColor[] hash,
|
private MemoryCardBakedModel(BakedModel baseModel, Sprite texture, AEColor[] hash,
|
||||||
Cache<CacheKey, MemoryCardBakedModel> modelCache) {
|
Cache<CacheKey, MemoryCardBakedModel> modelCache) {
|
||||||
this.baseModel = baseModel;
|
this.baseModel = baseModel;
|
||||||
this.texture = texture;
|
this.texture = texture;
|
||||||
@@ -95,38 +95,38 @@ class MemoryCardBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.baseModel.isAmbientOcclusion();
|
return this.baseModel.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return this.baseModel.isGui3d();
|
return this.baseModel.hasDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return this.baseModel.isBuiltInRenderer();
|
return this.baseModel.isBuiltin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.baseModel.getParticleTexture();
|
return this.baseModel.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return this.baseModel.getItemCameraTransforms();
|
return this.baseModel.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return new ItemOverrideList() {
|
return new ModelOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, World world,
|
||||||
LivingEntity entity) {
|
LivingEntity entity) {
|
||||||
@@ -150,7 +150,7 @@ class MemoryCardBakedModel implements BakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public BakedModel handlePerspective(ModelTransformation.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
baseModel.handlePerspective(cameraTransformType, mat);
|
baseModel.handlePerspective(cameraTransformType, mat);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -42,9 +42,9 @@ public class MemoryCardModel implements IModelGeometry<MemoryCardModel> {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
TextureAtlasSprite texture = spriteGetter.apply(TEXTURE);
|
Sprite texture = spriteGetter.apply(TEXTURE);
|
||||||
|
|
||||||
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
||||||
|
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ import javax.annotation.Nullable;
|
|||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.renderer.Matrix4f;
|
import net.minecraft.client.renderer.Matrix4f;
|
||||||
import net.minecraft.client.renderer.Quaternion;
|
import net.minecraft.client.renderer.Quaternion;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -40,7 +40,7 @@ import net.minecraft.util.math.Direction;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
|
||||||
|
|
||||||
@@ -112,42 +112,42 @@ public class SkyCompassBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return this.base.isAmbientOcclusion();
|
return this.base.useAmbientOcclusion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.base.getParticleTexture();
|
return this.base.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
public ModelTransformation getTransformation() {
|
||||||
return this.base.getItemCameraTransforms();
|
return this.base.getTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
/*
|
/*
|
||||||
* This handles setting the rotation of the compass when being held in hand. If
|
* This handles setting the rotation of the compass when being held in hand. If
|
||||||
* it's not held in hand, it'll animate using the spinning animation.
|
* it's not held in hand, it'll animate using the spinning animation.
|
||||||
*/
|
*/
|
||||||
return new ItemOverrideList() {
|
return new ModelOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, @Nullable World world,
|
public BakedModel getModelWithOverrides(BakedModel originalModel, ItemStack stack, @Nullable World world,
|
||||||
@Nullable LivingEntity entity) {
|
@Nullable LivingEntity entity) {
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -54,8 +54,8 @@ public class SkyCompassModel implements IModelGeometry<SkyCompassModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
BakedModel baseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
|
||||||
BakedModel pointerModel = bakery.getBakedModel(MODEL_POINTER, modelTransform, spriteGetter);
|
BakedModel pointerModel = bakery.getBakedModel(MODEL_POINTER, modelTransform, spriteGetter);
|
||||||
return new SkyCompassBakedModel(baseModel, pointerModel);
|
return new SkyCompassBakedModel(baseModel, pointerModel);
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ import com.google.gson.JsonParseException;
|
|||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@@ -48,12 +50,10 @@ import net.minecraft.client.render.model.BlockPart;
|
|||||||
import net.minecraft.client.render.model.BlockPartFace;
|
import net.minecraft.client.render.model.BlockPartFace;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
|
||||||
import net.minecraft.client.render.model.ItemOverride;
|
import net.minecraft.client.render.model.ItemOverride;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.ItemTransformVec3f;
|
import net.minecraft.client.render.model.ItemTransformVec3f;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.resources.IResourceManager;
|
import net.minecraft.resources.IResourceManager;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.JSONUtils;
|
import net.minecraft.util.JSONUtils;
|
||||||
@@ -87,7 +87,7 @@ public class UVLModelLoader implements IModelLoader<UVLModelLoader.UVLModelWrapp
|
|||||||
.registerTypeAdapter(BlockPartFace.class, new BlockPartFaceOverrideSerializer())
|
.registerTypeAdapter(BlockPartFace.class, new BlockPartFaceOverrideSerializer())
|
||||||
.registerTypeAdapter(BlockFaceUV.class, new BlockFaceUV.Deserializer())
|
.registerTypeAdapter(BlockFaceUV.class, new BlockFaceUV.Deserializer())
|
||||||
.registerTypeAdapter(ItemTransformVec3f.class, new ItemTransformVec3f.Deserializer())
|
.registerTypeAdapter(ItemTransformVec3f.class, new ItemTransformVec3f.Deserializer())
|
||||||
.registerTypeAdapter(ItemCameraTransforms.class, new ItemCameraTransforms.Deserializer())
|
.registerTypeAdapter(ModelTransformation.class, new ModelTransformation.Deserializer())
|
||||||
.registerTypeAdapter(ItemOverride.class, new ItemOverride.Deserializer())
|
.registerTypeAdapter(ItemOverride.class, new ItemOverride.Deserializer())
|
||||||
.registerTypeAdapter(TransformationMatrix.class, new TransformationHelper.Deserializer()).create();
|
.registerTypeAdapter(TransformationMatrix.class, new TransformationHelper.Deserializer()).create();
|
||||||
|
|
||||||
@@ -143,15 +143,15 @@ public class UVLModelLoader implements IModelLoader<UVLModelLoader.UVLModelWrapp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
TextureAtlasSprite particle = spriteGetter.apply(owner.resolveTexture("particle"));
|
Sprite particle = spriteGetter.apply(owner.resolveTexture("particle"));
|
||||||
|
|
||||||
IModelBuilder<?> builder = IModelBuilder.of(owner, overrides, particle);
|
IModelBuilder<?> builder = IModelBuilder.of(owner, overrides, particle);
|
||||||
for (BlockPart blockpart : parent.getElements()) {
|
for (BlockPart blockpart : parent.getElements()) {
|
||||||
for (Direction direction : blockpart.mapFaces.keySet()) {
|
for (Direction direction : blockpart.mapFaces.keySet()) {
|
||||||
BlockPartFace blockpartface = blockpart.mapFaces.get(direction);
|
BlockPartFace blockpartface = blockpart.mapFaces.get(direction);
|
||||||
TextureAtlasSprite textureatlassprite1 = spriteGetter
|
Sprite textureatlassprite1 = spriteGetter
|
||||||
.apply(owner.resolveTexture(blockpartface.texture));
|
.apply(owner.resolveTexture(blockpartface.texture));
|
||||||
BakedQuad quad = BlockModel.makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction,
|
BakedQuad quad = BlockModel.makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction,
|
||||||
modelTransform, modelLocation);
|
modelTransform, modelLocation);
|
||||||
@@ -171,7 +171,7 @@ public class UVLModelLoader implements IModelLoader<UVLModelLoader.UVLModelWrapp
|
|||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private BakedQuad applyPreBakedLighting(BakedQuad quad, TextureAtlasSprite sprite, float sky, float block) {
|
private BakedQuad applyPreBakedLighting(BakedQuad quad, Sprite sprite, float sky, float block) {
|
||||||
// FIXME: just piping through the quads and manipulating uv index 2 directly
|
// FIXME: just piping through the quads and manipulating uv index 2 directly
|
||||||
// seems way easier than this
|
// seems way easier than this
|
||||||
BakedQuadBuilder builder = new BakedQuadBuilder(sprite);
|
BakedQuadBuilder builder = new BakedQuadBuilder(sprite);
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ import java.util.function.Function;
|
|||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.TransformationMatrix;
|
import net.minecraft.client.renderer.TransformationMatrix;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class ItemRenderable<T extends BlockEntity> implements Renderable<T> {
|
public class ItemRenderable<T extends BlockEntity> implements Renderable<T> {
|
||||||
@@ -48,7 +48,7 @@ public class ItemRenderable<T extends BlockEntity> implements Renderable<T> {
|
|||||||
matrixStack.push();
|
matrixStack.push();
|
||||||
}
|
}
|
||||||
MinecraftClient.getInstance().getItemRenderer().renderItem(pair.getLeft(),
|
MinecraftClient.getInstance().getItemRenderer().renderItem(pair.getLeft(),
|
||||||
ItemCameraTransforms.TransformType.GROUND, combinedLight, combinedOverlay, matrixStack, buffers);
|
ModelTransformation.TransformType.GROUND, combinedLight, combinedOverlay, matrixStack, buffers);
|
||||||
matrixStack.pop();
|
matrixStack.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ import com.google.common.collect.ImmutableMap;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
import appeng.tile.spatial.SpatialPylonBlockEntity;
|
import appeng.tile.spatial.SpatialPylonBlockEntity;
|
||||||
@@ -43,9 +43,9 @@ import appeng.tile.spatial.SpatialPylonBlockEntity;
|
|||||||
*/
|
*/
|
||||||
class SpatialPylonBakedModel implements IDynamicBakedModel {
|
class SpatialPylonBakedModel implements IDynamicBakedModel {
|
||||||
|
|
||||||
private final Map<SpatialPylonTextureType, TextureAtlasSprite> textures;
|
private final Map<SpatialPylonTextureType, Sprite> textures;
|
||||||
|
|
||||||
SpatialPylonBakedModel(Map<SpatialPylonTextureType, TextureAtlasSprite> textures) {
|
SpatialPylonBakedModel(Map<SpatialPylonTextureType, Sprite> textures) {
|
||||||
this.textures = ImmutableMap.copyOf(textures);
|
this.textures = ImmutableMap.copyOf(textures);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,32 +178,32 @@ class SpatialPylonBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.textures.get(SpatialPylonTextureType.DIM);
|
return this.textures.get(SpatialPylonTextureType.DIM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -46,9 +46,9 @@ public class SpatialPylonModel implements IModelGeometry<SpatialPylonModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
Map<SpatialPylonTextureType, TextureAtlasSprite> textures = new EnumMap<>(SpatialPylonTextureType.class);
|
Map<SpatialPylonTextureType, Sprite> textures = new EnumMap<>(SpatialPylonTextureType.class);
|
||||||
|
|
||||||
for (SpatialPylonTextureType type : SpatialPylonTextureType.values()) {
|
for (SpatialPylonTextureType type : SpatialPylonTextureType.values()) {
|
||||||
textures.put(type, spriteGetter.apply(getTexturePath(type)));
|
textures.put(type, spriteGetter.apply(getTexturePath(type)));
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ package appeng.client.render.tesr;
|
|||||||
import alexiil.mc.lib.attributes.item.ItemTransferable;
|
import alexiil.mc.lib.attributes.item.ItemTransferable;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.ItemRenderer;
|
import net.minecraft.client.renderer.ItemRenderer;
|
||||||
import net.minecraft.client.renderer.Quaternion;
|
import net.minecraft.client.renderer.Quaternion;
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
||||||
import net.minecraft.inventory.container.PlayerContainer;
|
import net.minecraft.inventory.container.PlayerContainer;
|
||||||
@@ -82,7 +82,7 @@ public final class InscriberTESR extends BlockEntityRenderer<InscriberBlockEntit
|
|||||||
final float TwoPx = 2.0f / 16.0f;
|
final float TwoPx = 2.0f / 16.0f;
|
||||||
final float base = 0.4f;
|
final float base = 0.4f;
|
||||||
|
|
||||||
final TextureAtlasSprite tas = TEXTURE_INSIDE.getSprite();
|
final Sprite tas = TEXTURE_INSIDE.getSprite();
|
||||||
|
|
||||||
IVertexBuilder buffer = buffers.getBuffer(RenderLayer.getSolid());
|
IVertexBuilder buffer = buffers.getBuffer(RenderLayer.getSolid());
|
||||||
|
|
||||||
@@ -171,8 +171,8 @@ public final class InscriberTESR extends BlockEntityRenderer<InscriberBlockEntit
|
|||||||
ms.pop();
|
ms.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addVertex(IVertexBuilder vb, MatrixStack ms, TextureAtlasSprite sprite, float x, float y,
|
private static void addVertex(IVertexBuilder vb, MatrixStack ms, Sprite sprite, float x, float y,
|
||||||
float z, double texU, double texV, int overlayUV, int lightmapUV, Direction front) {
|
float z, double texU, double texV, int overlayUV, int lightmapUV, Direction front) {
|
||||||
vb.pos(ms.getLast().getMatrix(), x, y, z);
|
vb.pos(ms.getLast().getMatrix(), x, y, z);
|
||||||
vb.color(1.0f, 1.0f, 1.0f, 1.0f);
|
vb.color(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
vb.tex(sprite.getInterpolatedU(texU), sprite.getInterpolatedV(texV));
|
vb.tex(sprite.getInterpolatedU(texU), sprite.getInterpolatedV(texV));
|
||||||
@@ -201,7 +201,7 @@ public final class InscriberTESR extends BlockEntityRenderer<InscriberBlockEntit
|
|||||||
ms.scale(0.5f, 0.5f, 0.5f);
|
ms.scale(0.5f, 0.5f, 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED, combinedLight, combinedOverlay, ms,
|
itemRenderer.renderItem(stack, ModelTransformation.TransformType.FIXED, combinedLight, combinedOverlay, ms,
|
||||||
buffers);
|
buffers);
|
||||||
ms.pop();
|
ms.pop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import appeng.parts.AEBasePart;
|
|||||||
* can be one of three ways:
|
* can be one of three ways:
|
||||||
*
|
*
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>A tile entity at a given block position.</li>
|
* <li>A block entity at a given block position.</li>
|
||||||
* <li>A part (i.e. cable bus part) at the side of a given block position.</li>
|
* <li>A part (i.e. cable bus part) at the side of a given block position.</li>
|
||||||
* <li>An item held by the player.</li>
|
* <li>An item held by the player.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
@@ -76,7 +76,7 @@ public final class ContainerLocator {
|
|||||||
|
|
||||||
public static ContainerLocator forTileEntity(BlockEntity te) {
|
public static ContainerLocator forTileEntity(BlockEntity te) {
|
||||||
if (te.getWorld() == null) {
|
if (te.getWorld() == null) {
|
||||||
throw new IllegalArgumentException("Cannot open a tile entity that is not in a world");
|
throw new IllegalArgumentException("Cannot open a block entity that is not in a world");
|
||||||
}
|
}
|
||||||
int dimensionId = te.getWorld().getDimension().getType().getId();
|
int dimensionId = te.getWorld().getDimension().getType().getId();
|
||||||
return new ContainerLocator(Type.BLOCK, -1, dimensionId, te.getPos(), null);
|
return new ContainerLocator(Type.BLOCK, -1, dimensionId, te.getPos(), null);
|
||||||
@@ -84,7 +84,7 @@ public final class ContainerLocator {
|
|||||||
|
|
||||||
public static ContainerLocator forTileEntitySide(BlockEntity te, Direction side) {
|
public static ContainerLocator forTileEntitySide(BlockEntity te, Direction side) {
|
||||||
if (te.getWorld() == null) {
|
if (te.getWorld() == null) {
|
||||||
throw new IllegalArgumentException("Cannot open a tile entity that is not in a world");
|
throw new IllegalArgumentException("Cannot open a block entity that is not in a world");
|
||||||
}
|
}
|
||||||
int dimensionId = te.getWorld().getDimension().getType().getId();
|
int dimensionId = te.getWorld().getDimension().getType().getId();
|
||||||
return new ContainerLocator(Type.PART, -1, dimensionId, te.getPos(), AEPartLocation.fromFacing(side));
|
return new ContainerLocator(Type.PART, -1, dimensionId, te.getPos(), AEPartLocation.fromFacing(side));
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public final class ContainerHelper<C extends AEBaseContainer, I> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens a container that is based around a single tile entity. The tile
|
* Opens a container that is based around a single block entity. The tile
|
||||||
* entity's position is encoded in the packet buffer.
|
* entity's position is encoded in the packet buffer.
|
||||||
*/
|
*/
|
||||||
public C fromNetwork(int windowId, PlayerInventory inv, PacketByteBuf packetBuf) {
|
public C fromNetwork(int windowId, PlayerInventory inv, PacketByteBuf packetBuf) {
|
||||||
@@ -131,7 +131,7 @@ public final class ContainerHelper<C extends AEBaseContainer, I> {
|
|||||||
|
|
||||||
BlockEntity tileEntity = player.world.getBlockEntity(locator.getBlockPos());
|
BlockEntity tileEntity = player.world.getBlockEntity(locator.getBlockPos());
|
||||||
|
|
||||||
// The tile entity itself can host a terminal (i.e. Chest!)
|
// The block entity itself can host a terminal (i.e. Chest!)
|
||||||
if (interfaceClass.isInstance(tileEntity)) {
|
if (interfaceClass.isInstance(tileEntity)) {
|
||||||
return interfaceClass.cast(tileEntity);
|
return interfaceClass.cast(tileEntity);
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,7 @@ public final class ContainerHelper<C extends AEBaseContainer, I> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tileEntity instanceof IPartHost) {
|
if (tileEntity instanceof IPartHost) {
|
||||||
// But it could also be a part attached to the tile entity
|
// But it could also be a part attached to the block entity
|
||||||
IPartHost partHost = (IPartHost) tileEntity;
|
IPartHost partHost = (IPartHost) tileEntity;
|
||||||
IPart part = partHost.getPart(locator.getSide());
|
IPart part = partHost.getPart(locator.getSide());
|
||||||
if (part == null) {
|
if (part == null) {
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
package appeng.core;
|
package appeng.core;
|
||||||
|
|
||||||
|
import appeng.bootstrap.ModelsReloadCallback;
|
||||||
|
import appeng.client.render.model.*;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.advancement.criterion.Criteria;
|
import net.minecraft.advancement.criterion.Criteria;
|
||||||
@@ -26,6 +28,7 @@ import net.minecraft.block.entity.BlockEntityType;
|
|||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.ScreenManager;
|
import net.minecraft.client.gui.ScreenManager;
|
||||||
import net.minecraft.client.particle.ParticleManager;
|
import net.minecraft.client.particle.ParticleManager;
|
||||||
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.inventory.container.ContainerType;
|
import net.minecraft.inventory.container.ContainerType;
|
||||||
import net.minecraft.item.crafting.IRecipeSerializer;
|
import net.minecraft.item.crafting.IRecipeSerializer;
|
||||||
import net.minecraft.particles.ParticleType;
|
import net.minecraft.particles.ParticleType;
|
||||||
@@ -75,10 +78,6 @@ import appeng.api.networking.ticking.ITickManager;
|
|||||||
import appeng.bootstrap.components.*;
|
import appeng.bootstrap.components.*;
|
||||||
import appeng.client.gui.implementations.*;
|
import appeng.client.gui.implementations.*;
|
||||||
import appeng.client.render.effects.*;
|
import appeng.client.render.effects.*;
|
||||||
import appeng.client.render.model.BiometricCardModel;
|
|
||||||
import appeng.client.render.model.DriveModel;
|
|
||||||
import appeng.client.render.model.MemoryCardModel;
|
|
||||||
import appeng.client.render.model.SkyCompassModel;
|
|
||||||
import appeng.client.render.tesr.InscriberTESR;
|
import appeng.client.render.tesr.InscriberTESR;
|
||||||
import appeng.client.render.tesr.SkyChestTESR;
|
import appeng.client.render.tesr.SkyChestTESR;
|
||||||
import appeng.container.AEBaseContainer;
|
import appeng.container.AEBaseContainer;
|
||||||
@@ -111,6 +110,8 @@ import appeng.worldgen.ChargedQuartzOreConfig;
|
|||||||
import appeng.worldgen.ChargedQuartzOreFeature;
|
import appeng.worldgen.ChargedQuartzOreFeature;
|
||||||
import appeng.worldgen.meteorite.MeteoriteStructure;
|
import appeng.worldgen.meteorite.MeteoriteStructure;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
final class Registration {
|
final class Registration {
|
||||||
|
|
||||||
public Registration() {
|
public Registration() {
|
||||||
@@ -593,11 +594,11 @@ final class Registration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public void handleModelBake(ModelBakeEvent event) {
|
public void onModelsReloaded(Map<Identifier, BakedModel> loadedModels) {
|
||||||
// TODO: Do not use the internal API
|
// TODO: Do not use the internal API
|
||||||
final ApiDefinitions definitions = Api.INSTANCE.definitions();
|
final ApiDefinitions definitions = Api.INSTANCE.definitions();
|
||||||
definitions.getRegistry().getBootstrapComponents(IModelBakeComponent.class)
|
definitions.getRegistry().getBootstrapComponents(IModelBakeComponent.class)
|
||||||
.forEachRemaining(c -> c.onModelBakeEvent(event));
|
.forEachRemaining(c -> c.onModelsReloaded(loadedModels));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
@@ -608,6 +609,8 @@ final class Registration {
|
|||||||
modEventBus.addListener(this::registerTextures);
|
modEventBus.addListener(this::registerTextures);
|
||||||
modEventBus.addListener(this::modelRegistryEvent);
|
modEventBus.addListener(this::modelRegistryEvent);
|
||||||
modEventBus.addListener(this::registerItemColors);
|
modEventBus.addListener(this::registerItemColors);
|
||||||
modEventBus.addListener(this::handleModelBake);
|
|
||||||
|
ModelsReloadCallback.EVENT.register(this::onModelsReloaded);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import com.mojang.blaze3d.systems.RenderSystem;
|
|||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.fluid.Fluid;
|
import net.minecraft.fluid.Fluid;
|
||||||
@@ -42,7 +42,7 @@ public class FluidSlotWidget extends CustomSlotWidget {
|
|||||||
final Fluid fluid = fs.getFluid();
|
final Fluid fluid = fs.getFluid();
|
||||||
final FluidAttributes attributes = fluid.getAttributes();
|
final FluidAttributes attributes = fluid.getAttributes();
|
||||||
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||||
final TextureAtlasSprite sprite = mc.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
final Sprite sprite = mc.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
||||||
.apply(attributes.getStillTexture(fs.getFluidStack()));
|
.apply(attributes.getStillTexture(fs.getFluidStack()));
|
||||||
|
|
||||||
// Set color for dynamic fluids
|
// Set color for dynamic fluids
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import net.fabricmc.api.EnvType;
|
|||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.widget.Widget;
|
import net.minecraft.client.gui.widget.Widget;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.fluid.Fluid;
|
import net.minecraft.fluid.Fluid;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraftforge.fluids.FluidAttributes;
|
import net.minecraftforge.fluids.FluidAttributes;
|
||||||
@@ -64,7 +64,7 @@ public class FluidTankWidget extends Widget implements ITooltip {
|
|||||||
|
|
||||||
MinecraftClient mc = MinecraftClient.getInstance();
|
MinecraftClient mc = MinecraftClient.getInstance();
|
||||||
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||||
final TextureAtlasSprite sprite = mc.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
final Sprite sprite = mc.getAtlasSpriteGetter(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
||||||
.apply(attributes.getStillTexture(fluidStack.getFluidStack()));
|
.apply(attributes.getStillTexture(fluidStack.getFluidStack()));
|
||||||
|
|
||||||
final int scaledHeight = (int) (this.height
|
final int scaledHeight = (int) (this.height
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import net.minecraft.util.math.Direction;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.fluids.FluidAttributes;
|
import net.minecraftforge.fluids.FluidAttributes;
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
import net.minecraftforge.common.util.FakePlayer;
|
||||||
import net.minecraftforge.common.util.FakePlayerFactory;
|
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||||
import net.minecraftforge.fluids.FluidAttributes;
|
import net.minecraftforge.fluids.FluidAttributes;
|
||||||
|
|||||||
@@ -152,11 +152,11 @@ public abstract class MBCalculator {
|
|||||||
public abstract void updateTiles(IAECluster c, World w, WorldCoord min, WorldCoord max);
|
public abstract void updateTiles(IAECluster c, World w, WorldCoord min, WorldCoord max);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check if the tile entities are correct for the structure.
|
* check if the block entities are correct for the structure.
|
||||||
*
|
*
|
||||||
* @param te to be checked tile entity
|
* @param te to be checked block entity
|
||||||
*
|
*
|
||||||
* @return true if tile entity is valid for structure
|
* @return true if block entity is valid for structure
|
||||||
*/
|
*/
|
||||||
public abstract boolean isValidTile(BlockEntity te);
|
public abstract boolean isValidTile(BlockEntity te);
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.common.util.FakePlayerFactory;
|
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ import net.minecraft.util.hit.BlockHitResult;
|
|||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.common.IPlantable;
|
import net.minecraftforge.common.IPlantable;
|
||||||
import alexiil.mc.lib.attributes.item.ItemTransferable;
|
import alexiil.mc.lib.attributes.item.ItemTransferable;
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import net.minecraft.enchantment.Enchantments;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.parts.IPart;
|
import appeng.api.parts.IPart;
|
||||||
import appeng.api.parts.IPartHost;
|
import appeng.api.parts.IPartHost;
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ import com.google.common.collect.ImmutableList;
|
|||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
import net.minecraftforge.client.model.data.IDynamicBakedModel;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.client.render.cablebus.CubeBuilder;
|
import appeng.client.render.cablebus.CubeBuilder;
|
||||||
|
|
||||||
@@ -46,11 +46,11 @@ public class PlaneBakedModel implements IDynamicBakedModel {
|
|||||||
|
|
||||||
private static final PlaneConnections DEFAULT_PERMUTATION = PlaneConnections.of(false, false, false, false);
|
private static final PlaneConnections DEFAULT_PERMUTATION = PlaneConnections.of(false, false, false, false);
|
||||||
|
|
||||||
private final TextureAtlasSprite frontTexture;
|
private final Sprite frontTexture;
|
||||||
|
|
||||||
private final Map<PlaneConnections, List<BakedQuad>> quads;
|
private final Map<PlaneConnections, List<BakedQuad>> quads;
|
||||||
|
|
||||||
PlaneBakedModel(TextureAtlasSprite frontTexture, TextureAtlasSprite sidesTexture, TextureAtlasSprite backTexture) {
|
PlaneBakedModel(Sprite frontTexture, Sprite sidesTexture, Sprite backTexture) {
|
||||||
this.frontTexture = frontTexture;
|
this.frontTexture = frontTexture;
|
||||||
|
|
||||||
quads = new HashMap<>(PlaneConnections.PERMUTATIONS.size());
|
quads = new HashMap<>(PlaneConnections.PERMUTATIONS.size());
|
||||||
@@ -91,32 +91,32 @@ public class PlaneBakedModel implements IDynamicBakedModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAmbientOcclusion() {
|
public boolean useAmbientOcclusion() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGui3d() {
|
public boolean hasDepth() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return false;// TODO
|
return false;// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBuiltInRenderer() {
|
public boolean isBuiltin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureAtlasSprite getParticleTexture() {
|
public Sprite getSprite() {
|
||||||
return this.frontTexture;
|
return this.frontTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ModelOverrideList getOverrides() {
|
||||||
return ItemOverrideList.EMPTY;
|
return ModelOverrideList.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ import com.mojang.datafixers.util.Pair;
|
|||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.IModelTransform;
|
import net.minecraft.client.render.model.IModelTransform;
|
||||||
import net.minecraft.client.render.model.IUnbakedModel;
|
import net.minecraft.client.render.model.IUnbakedModel;
|
||||||
import net.minecraft.client.render.model.ItemOverrideList;
|
import net.minecraft.client.render.model.json.ModelOverrideList;
|
||||||
import net.minecraft.client.render.model.Material;
|
import net.minecraft.client.render.model.Material;
|
||||||
import net.minecraft.client.render.model.ModelLoader;
|
import net.minecraft.client.render.model.ModelLoader;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraftforge.client.model.IModelConfiguration;
|
import net.minecraftforge.client.model.IModelConfiguration;
|
||||||
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
import net.minecraftforge.client.model.geometry.IModelGeometry;
|
||||||
@@ -54,11 +54,11 @@ public class PlaneModel implements IModelGeometry<PlaneModel> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
public BakedModel bake(IModelConfiguration owner, ModelLoader bakery,
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
|
Function<Material, Sprite> spriteGetter, IModelTransform modelTransform,
|
||||||
ItemOverrideList overrides, Identifier modelLocation) {
|
ModelOverrideList overrides, Identifier modelLocation) {
|
||||||
TextureAtlasSprite frontSprite = spriteGetter.apply(this.frontTexture);
|
Sprite frontSprite = spriteGetter.apply(this.frontTexture);
|
||||||
TextureAtlasSprite sidesSprite = spriteGetter.apply(this.sidesTexture);
|
Sprite sidesSprite = spriteGetter.apply(this.sidesTexture);
|
||||||
TextureAtlasSprite backSprite = spriteGetter.apply(this.backTexture);
|
Sprite backSprite = spriteGetter.apply(this.backTexture);
|
||||||
|
|
||||||
return new PlaneBakedModel(frontSprite, sidesSprite, backSprite);
|
return new PlaneBakedModel(frontSprite, sidesSprite, backSprite);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import net.minecraft.nbt.CompoundTag;
|
|||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class DefaultSpatialHandler implements IMovableHandler {
|
|||||||
/**
|
/**
|
||||||
* never called for the default.
|
* never called for the default.
|
||||||
*
|
*
|
||||||
* @param tile tile entity
|
* @param tile block entity
|
||||||
*
|
*
|
||||||
* @return true
|
* @return true
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ package appeng.thirdparty.codechicken.lib.model;
|
|||||||
|
|
||||||
import net.minecraft.client.renderer.Vector3f;
|
import net.minecraft.client.renderer.Vector3f;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.util.math.Box;
|
import net.minecraft.util.math.Box;
|
||||||
@@ -45,7 +45,7 @@ public class Quad implements IVertexProducer, ISmartVertexConsumer {
|
|||||||
public int tintIndex = -1;
|
public int tintIndex = -1;
|
||||||
public Direction orientation;
|
public Direction orientation;
|
||||||
public boolean diffuseLighting = true;
|
public boolean diffuseLighting = true;
|
||||||
public TextureAtlasSprite sprite;
|
public Sprite sprite;
|
||||||
|
|
||||||
public Vertex[] vertices = new Vertex[4];
|
public Vertex[] vertices = new Vertex[4];
|
||||||
public boolean full;
|
public boolean full;
|
||||||
@@ -94,7 +94,7 @@ public class Quad implements IVertexProducer, ISmartVertexConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
this.sprite = texture;
|
this.sprite = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -24,7 +24,7 @@ import java.util.Map;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
||||||
@@ -216,7 +216,7 @@ public class BakedPipeline implements ISmartVertexConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
this.check();
|
this.check();
|
||||||
this.unpacker.setTexture(texture);
|
this.unpacker.setTexture(texture);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ package appeng.thirdparty.codechicken.lib.model.pipeline;
|
|||||||
|
|
||||||
import javax.annotation.OverridingMethodsMustInvokeSuper;
|
import javax.annotation.OverridingMethodsMustInvokeSuper;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.texture.Sprite;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
import net.minecraftforge.client.model.pipeline.IVertexConsumer;
|
||||||
@@ -104,7 +104,7 @@ public abstract class QuadTransformer implements IVertexConsumer, ISmartVertexCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTexture(TextureAtlasSprite texture) {
|
public void setTexture(Sprite texture) {
|
||||||
this.quad.setTexture(texture);
|
this.quad.setTexture(texture);
|
||||||
}
|
}
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import appeng.api.util.IConfigManager;
|
|||||||
import appeng.api.util.IConfigurableObject;
|
import appeng.api.util.IConfigurableObject;
|
||||||
import appeng.api.util.IOrientable;
|
import appeng.api.util.IOrientable;
|
||||||
import appeng.block.AEBaseTileBlock;
|
import appeng.block.AEBaseTileBlock;
|
||||||
|
import appeng.client.render.model.AEModelData;
|
||||||
import appeng.core.AELog;
|
import appeng.core.AELog;
|
||||||
import appeng.core.features.IStackSrc;
|
import appeng.core.features.IStackSrc;
|
||||||
import appeng.helpers.ICustomNameObject;
|
import appeng.helpers.ICustomNameObject;
|
||||||
@@ -35,6 +36,7 @@ import appeng.util.Platform;
|
|||||||
import appeng.util.SettingsFrom;
|
import appeng.util.SettingsFrom;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import net.fabricmc.fabric.api.block.entity.BlockEntityClientSerializable;
|
import net.fabricmc.fabric.api.block.entity.BlockEntityClientSerializable;
|
||||||
|
import net.fabricmc.fabric.api.rendering.data.v1.RenderAttachmentBlockEntity;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
@@ -56,7 +58,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class AEBaseBlockEntity extends BlockEntity implements IOrientable, ICommonTile, ICustomNameObject, BlockEntityClientSerializable {
|
public class AEBaseBlockEntity extends BlockEntity implements IOrientable, ICommonTile, ICustomNameObject, BlockEntityClientSerializable, RenderAttachmentBlockEntity {
|
||||||
|
|
||||||
private static final ThreadLocal<WeakReference<AEBaseBlockEntity>> DROP_NO_ITEMS = new ThreadLocal<>();
|
private static final ThreadLocal<WeakReference<AEBaseBlockEntity>> DROP_NO_ITEMS = new ThreadLocal<>();
|
||||||
private static final Map<Class<? extends BlockEntity>, IStackSrc> ITEM_STACKS = new HashMap<>();
|
private static final Map<Class<? extends BlockEntity>, IStackSrc> ITEM_STACKS = new HashMap<>();
|
||||||
@@ -307,12 +309,12 @@ public class AEBaseBlockEntity extends BlockEntity implements IOrientable, IComm
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns the contents of the tile entity, into the world, defaults to dropping
|
* returns the contents of the block entity, into the world, defaults to dropping
|
||||||
* everything in the inventory.
|
* everything in the inventory.
|
||||||
*
|
*
|
||||||
* @param w world
|
* @param w world
|
||||||
* @param pos block position
|
* @param pos block position
|
||||||
* @param drops drops of tile entity
|
* @param drops drops of block entity
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void getDrops(final World w, final BlockPos pos, final List<ItemStack> drops) {
|
public void getDrops(final World w, final BlockPos pos, final List<ItemStack> drops) {
|
||||||
@@ -378,7 +380,7 @@ public class AEBaseBlockEntity extends BlockEntity implements IOrientable, IComm
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if this tile entity is remote (we are running on the logical client
|
* Checks if this block entity is remote (we are running on the logical client
|
||||||
* side).
|
* side).
|
||||||
*/
|
*/
|
||||||
public boolean isClient() {
|
public boolean isClient() {
|
||||||
@@ -410,4 +412,9 @@ public class AEBaseBlockEntity extends BlockEntity implements IOrientable, IComm
|
|||||||
this.customName = name;
|
this.customName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getRenderAttachmentData() {
|
||||||
|
return new AEModelData(up, forward);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import net.minecraft.block.entity.BlockEntityType;
|
|||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
@@ -331,9 +331,8 @@ public class CraftingBlockEntity extends AENetworkBlockEntity implements IAEMult
|
|||||||
this.previousState = previousState;
|
this.previousState = previousState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public Object getRenderAttachmentData() {
|
||||||
return new CraftingCubeModelData(getUp(), getForward(), getConnections());
|
return new CraftingCubeModelData(getUp(), getForward(), getConnections());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import net.minecraft.nbt.CompoundTag;
|
|||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
|
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.implementations.tiles.IColorableTile;
|
import appeng.api.implementations.tiles.IColorableTile;
|
||||||
@@ -169,7 +169,7 @@ public class CraftingMonitorBlockEntity extends CraftingBlockEntity implements I
|
|||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public CraftingMonitorModelData getRenderAttachmentData() {
|
||||||
return new CraftingMonitorModelData(getUp(), getForward(), getConnections(), getColor());
|
return new CraftingMonitorModelData(getUp(), getForward(), getConnections(), getColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import org.lwjgl.opengl.GL11;
|
|||||||
import net.minecraft.client.renderer.ItemRenderer;
|
import net.minecraft.client.renderer.ItemRenderer;
|
||||||
import net.minecraft.client.renderer.RenderState;
|
import net.minecraft.client.renderer.RenderState;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.ItemCameraTransforms;
|
import net.minecraft.client.render.model.json.ModelTransformation;
|
||||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
@@ -135,7 +135,7 @@ public class MolecularAssemblerRenderer extends BlockEntityRenderer<MolecularAss
|
|||||||
ms.translate(0, -0.2f, 0);
|
ms.translate(0, -0.2f, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
itemRenderer.renderItem(is, ItemCameraTransforms.TransformType.GROUND, combinedLightIn,
|
itemRenderer.renderItem(is, ModelTransformation.TransformType.GROUND, combinedLightIn,
|
||||||
OverlayTexture.NO_OVERLAY, ms, bufferIn);
|
OverlayTexture.NO_OVERLAY, ms, bufferIn);
|
||||||
ms.pop();
|
ms.pop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import net.minecraft.util.math.Direction;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.LightType;
|
import net.minecraft.world.LightType;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
|
|
||||||
@@ -248,10 +248,9 @@ public class PaintSplotchesBlockEntity extends AEBaseBlockEntity {
|
|||||||
return this.dots;
|
return this.dots;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public Object getRenderAttachmentData() {
|
||||||
// FIXME update trigger
|
return new PaintSplotches(getDots());
|
||||||
return new ModelDataMap.Builder().withInitial(SPLOTCHES, new PaintSplotches(getDots())).build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.model.data.EmptyModelData;
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.common.util.LazyOptional;
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
@@ -320,7 +320,7 @@ public class CableBusBlockEntity extends AEBaseBlockEntity implements AEMultiTil
|
|||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public CableBusRenderState getRenderAttachmentData() {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
if (world == null) {
|
if (world == null) {
|
||||||
return EmptyModelData.INSTANCE;
|
return EmptyModelData.INSTANCE;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import net.minecraft.tileentity.ITickableTileEntity;
|
|||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv;
|
import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv;
|
||||||
@@ -298,15 +298,9 @@ public class QuantumBridgeBlockEntity extends AENetworkInvBlockEntity implements
|
|||||||
return this.corner;
|
return this.corner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public QnbFormedState getRenderAttachmentData() {
|
||||||
// FIXME must trigger model data updates
|
return new QnbFormedState(getAdjacentQuantumBridges(), isCorner(), isPowered());
|
||||||
|
|
||||||
return new ModelDataMap.Builder()
|
|
||||||
.withInitial(FORMED_STATE, new QnbFormedState(getAdjacentQuantumBridges(), isCorner(), isPowered()))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import javax.annotation.Nonnull;
|
|||||||
import net.minecraft.block.entity.BlockEntityType;
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraftforge.client.model.data.IModelData;
|
|
||||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.client.model.data.ModelProperty;
|
import net.minecraftforge.client.model.data.ModelProperty;
|
||||||
|
|
||||||
@@ -221,12 +221,9 @@ public class SpatialPylonBlockEntity extends AENetworkBlockEntity implements IAE
|
|||||||
return this.displayBits;
|
return this.displayBits;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
@Override
|
||||||
public IModelData getModelData() {
|
public Object getRenderAttachmentData() {
|
||||||
// FIXME: Must force model data update on changes, should potentially be moved
|
return getDisplayBits();
|
||||||
// to block state (?)
|
|
||||||
return new ModelDataMap.Builder().withInitial(STATE, getDisplayBits()).build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user