use of net.sistr.littlemaidmodelloader.entity.compound.IHasMultiModel in project LittleMaidModelLoader-Fabric by SistrScarlet.
the class SyncMultiModelPacket method applyMultiModelServer.
// クライアントに倣って分離
public static void applyMultiModelServer(PlayerEntity player, int entityId, boolean isContract, TextureColors color, String textureName, ArmorSets<String> armorTextureName) {
Entity entity = player.world.getEntityById(entityId);
if (!(entity instanceof IHasMultiModel))
return;
IHasMultiModel multiModel = (IHasMultiModel) entity;
multiModel.setContract(isContract);
multiModel.setColor(color);
LMTextureManager textureManager = LMTextureManager.INSTANCE;
textureManager.getTexture(textureName).filter(textureHolder -> multiModel.isAllowChangeTexture(entity, textureHolder, Layer.SKIN, Part.HEAD)).ifPresent(textureHolder -> multiModel.setTextureHolder(textureHolder, Layer.SKIN, Part.HEAD));
for (Part part : Part.values()) {
String armorName = armorTextureName.getArmor(part).orElseThrow(() -> new IllegalStateException("テクスチャが存在しません。"));
textureManager.getTexture(armorName).filter(textureHolder -> multiModel.isAllowChangeTexture(entity, textureHolder, Layer.INNER, part)).ifPresent(textureHolder -> multiModel.setTextureHolder(textureHolder, Layer.INNER, part));
}
sendS2CPacket(entity, multiModel);
}
use of net.sistr.littlemaidmodelloader.entity.compound.IHasMultiModel in project LittleMaidModelLoader-Fabric by SistrScarlet.
the class SyncMultiModelPacket method applyMultiModelClient.
// context.getTaskQueue().execute()の中では@Environmentの効力が及ばないため別メソッドに分離
@Environment(EnvType.CLIENT)
public static void applyMultiModelClient(int entityId, boolean isContract, TextureColors color, String textureName, ArmorSets<String> armorTextureName) {
World world = MinecraftClient.getInstance().world;
if (world == null)
return;
Entity entity = world.getEntityById(entityId);
if (!(entity instanceof IHasMultiModel))
return;
IHasMultiModel multiModel = (IHasMultiModel) entity;
multiModel.setContract(isContract);
multiModel.setColor(color);
LMTextureManager textureManager = LMTextureManager.INSTANCE;
textureManager.getTexture(textureName).filter(textureHolder -> multiModel.isAllowChangeTexture(entity, textureHolder, Layer.SKIN, Part.HEAD)).ifPresent(textureHolder -> multiModel.setTextureHolder(textureHolder, Layer.SKIN, Part.HEAD));
for (Part part : Part.values()) {
String armorName = armorTextureName.getArmor(part).orElseThrow(() -> new IllegalStateException("テクスチャが存在しません。"));
textureManager.getTexture(armorName).filter(textureHolder -> multiModel.isAllowChangeTexture(entity, textureHolder, Layer.INNER, part)).ifPresent(textureHolder -> multiModel.setTextureHolder(textureHolder, Layer.INNER, part));
}
}
Aggregations