Created
April 6, 2019 08:43
-
-
Save Daomephsta/04d6ef7312cd379dbe1e2214849c2a51 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package io.github.daomephsta.inscribe.client.guide; | |
import java.util.*; | |
import java.util.function.Function; | |
import java.util.function.Supplier; | |
import java.util.stream.Collectors; | |
import org.apache.logging.log4j.LogManager; | |
import org.apache.logging.log4j.Logger; | |
import grondag.frex.api.core.*; | |
import io.github.daomephsta.inscribe.client.InscribeClientInitialiser; | |
import io.github.daomephsta.inscribe.client.guide.xmlformat.definition.GuideItemAccessMethod; | |
import io.github.daomephsta.inscribe.common.Inscribe; | |
import net.fabricmc.fabric.api.client.model.*; | |
import net.minecraft.block.BlockState; | |
import net.minecraft.client.render.model.*; | |
import net.minecraft.client.render.model.json.ModelItemPropertyOverrideList; | |
import net.minecraft.client.render.model.json.ModelTransformation; | |
import net.minecraft.client.texture.Sprite; | |
import net.minecraft.item.ItemStack; | |
import net.minecraft.resource.ResourceManager; | |
import net.minecraft.util.Identifier; | |
import net.minecraft.util.math.BlockPos; | |
import net.minecraft.util.math.Direction; | |
public class GuideModel | |
{ | |
public static final Logger LOGGER = LogManager.getLogger(); | |
public static class Provider implements ModelResourceProvider | |
{ | |
private static final Identifier GUIDE_MODEL_ID = new Identifier(Inscribe.MOD_ID, "item/guide"); | |
private final ResourceManager resourceManager; | |
public Provider(ResourceManager resourceManager) | |
{ | |
this.resourceManager = resourceManager; | |
} | |
@Override | |
public UnbakedModel loadModelResource(Identifier resourceId, ModelProviderContext context) | |
throws ModelProviderException | |
{ | |
return resourceId.equals(GUIDE_MODEL_ID) ? new GuideModel.Unbaked() : null; | |
} | |
} | |
public static class Unbaked implements UnbakedModel | |
{ | |
@Override | |
public Collection<Identifier> getModelDependencies() | |
{ | |
return InscribeClientInitialiser.getGuideModels(); | |
} | |
@Override | |
public Collection<Identifier> getTextureDependencies(Function<Identifier, UnbakedModel> modelGetter, Set<String> errors) | |
{ | |
return InscribeClientInitialiser.getGuideModels().stream() | |
.flatMap(model -> modelGetter.apply(model).getTextureDependencies(modelGetter, errors).stream()) | |
.collect(Collectors.toSet()); | |
} | |
@Override | |
public BakedModel bake(ModelLoader modelLoader, Function<Identifier, Sprite> spriteGetter, ModelRotationContainer rotationContainer) | |
{ | |
Map<Identifier, BakedModel> modelMap = InscribeClientInitialiser.getGuideModels().stream() | |
.collect(Collectors.toMap(id -> id, id -> modelLoader.bake(id, rotationContainer))); | |
return new Baked(modelMap); | |
} | |
} | |
public static class Baked implements BakedModel, FabricBakedModel | |
{ | |
private final Map<Identifier, BakedModel> modelMap; | |
public Baked(Map<Identifier, BakedModel> modelMap) | |
{ | |
this.modelMap = modelMap; | |
} | |
@Override | |
public void emitItemQuads(ItemStack stack, Supplier<Random> randomSupplier, RenderContext context) | |
{ | |
Identifier modelId = ((GuideItemAccessMethod)Inscribe.GUIDE_ITEM.getGuide(stack).getDefinition().getGuideAccess()).getModelId(); | |
BakedModel model = modelMap.get(modelId); | |
context.fallbackConsumer().accept(model); | |
} | |
@Override | |
public boolean isVanillaAdapter() | |
{ | |
return false; | |
} | |
@Override | |
public void emitBlockQuads(TerrainBlockView blockView, BlockState state, BlockPos pos, Supplier<Random> randomSupplier, RenderContext context) | |
{ | |
} | |
@Override | |
public List<BakedQuad> getQuads(BlockState var1, Direction var2, Random var3) | |
{ | |
BakedModel model = modelMap.get(new Identifier("minecraft:item/stick")); | |
return model.getQuads(var1, var2, var3); | |
} | |
@Override | |
public boolean useAmbientOcclusion() | |
{ | |
return false; | |
} | |
@Override | |
public boolean hasDepthInGui() | |
{ | |
return false; | |
} | |
@Override | |
public boolean isBuiltin() | |
{ | |
return false; | |
} | |
@Override | |
public Sprite getSprite() | |
{ | |
return null; | |
} | |
@Override | |
public ModelTransformation getTransformation() | |
{ | |
return ModelTransformation.NONE; | |
} | |
@Override | |
public ModelItemPropertyOverrideList getItemPropertyOverrides() | |
{ | |
return ModelItemPropertyOverrideList.EMPTY; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment