use of com.feed_the_beast.ftblib.lib.util.misc.TextureSet in project YABBA by LatvianModder.
the class YabbaClient method loadModelsAndSkins.
public static void loadModelsAndSkins() {
TEXTURES.clear();
MODELS.clear();
SKINS.clear();
ALL_MODELS.clear();
ALL_SKINS.clear();
IResourceManager manager = ClientUtils.MC.getResourceManager();
for (String domain : manager.getResourceDomains()) {
try {
for (IResource resource : manager.getAllResources(new ResourceLocation(domain, "yabba_models/_index.json"))) {
for (JsonElement element : DataReader.get(resource).json().getAsJsonArray()) {
try {
JsonObject modelFile = DataReader.get(manager.getResource(new ResourceLocation(domain, "yabba_models/" + element.getAsString() + ".json"))).json().getAsJsonObject();
BarrelModel model = new BarrelModel(new ResourceLocation(domain, element.getAsString()), modelFile);
MODELS.put(model.id, model);
for (TextureSet textureSet : model.textures.values()) {
TEXTURES.addAll(textureSet.getTextures());
}
} catch (Exception ex1) {
}
}
}
} catch (Exception ex) {
if (!(ex instanceof FileNotFoundException)) {
ex.printStackTrace();
}
}
try {
for (IResource resource : manager.getAllResources(new ResourceLocation(domain, "yabba_models/_skins.json"))) {
parseSkinsJson(DataReader.get(resource).json().getAsJsonArray());
VARIABLES.clear();
}
} catch (Exception ex) {
if (!(ex instanceof FileNotFoundException)) {
ex.printStackTrace();
}
}
}
for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) {
FluidStack stack = new FluidStack(fluid, 1000);
String displayName = stack.getLocalizedName();
Color4I color = Color4I.rgba(fluid.getColor(stack));
if (color.equals(Color4I.WHITE)) {
color = Icon.EMPTY;
}
ResourceLocation still = fluid.getStill(stack);
BarrelSkin skin = new BarrelSkin(fluid.getName() + "_still", TextureSet.of("all=" + still));
skin.displayName = StringUtils.translate("lang.fluid.still", displayName);
skin.color = color;
skin.layer = BlockRenderLayer.TRANSLUCENT;
REGISTER_SKIN.addSkin(skin);
ResourceLocation flowing = fluid.getFlowing(stack);
if (!still.equals(flowing)) {
skin = new BarrelSkin(fluid.getName() + "_flowing", TextureSet.of("up&down=" + still + ",all=" + flowing));
skin.displayName = StringUtils.translate("lang.fluid.flowing", displayName);
skin.color = color;
skin.layer = BlockRenderLayer.TRANSLUCENT;
REGISTER_SKIN.addSkin(skin);
}
}
new YabbaSkinsEvent(REGISTER_SKIN).post();
for (BarrelSkin skin : SKINS.values()) {
if (skin.displayName.isEmpty() && skin.state != CommonUtils.AIR_STATE) {
try {
skin.displayName = new ItemStack(skin.state.getBlock(), 1, skin.state.getBlock().getMetaFromState(skin.state)).getDisplayName();
} catch (Exception ex) {
}
}
if (skin.displayName.isEmpty() || skin.displayName.contains("air")) {
skin.displayName = "";
}
if (skin.icon.isEmpty()) {
skin.icon = ItemIcon.getItemIcon(((BlockItemBarrel) YabbaItems.ITEM_BARREL).createStack(YabbaItems.ITEM_BARREL.getDefaultState(), BarrelLook.get(Yabba.MOD_ID + ":block", skin.id), Tier.WOOD));
}
}
ALL_MODELS.addAll(MODELS.values());
DEFAULT_MODEL = MODELS.get(BarrelLook.DEFAULT_MODEL_ID);
if (DEFAULT_MODEL == null) {
DEFAULT_MODEL = ALL_MODELS.isEmpty() ? null : ALL_MODELS.get(0);
}
Yabba.LOGGER.info("Models: " + ALL_MODELS.size());
if (FTBLibConfig.debugging.print_more_info) {
for (BarrelModel model : ALL_MODELS) {
Yabba.LOGGER.info("-- " + model.id + " :: " + model);
}
}
ALL_SKINS.addAll(SKINS.values());
ALL_SKINS.sort(StringUtils.ID_COMPARATOR);
DEFAULT_SKIN = SKINS.get(BarrelLook.DEFAULT_SKIN_ID);
if (DEFAULT_SKIN == null) {
DEFAULT_SKIN = ALL_SKINS.isEmpty() ? null : ALL_SKINS.get(0);
}
Yabba.LOGGER.info("Skins: " + ALL_SKINS.size());
if (FTBLibConfig.debugging.print_more_info) {
for (BarrelSkin skin : ALL_SKINS) {
Yabba.LOGGER.info("-- " + skin.id + " :: " + skin);
}
}
for (BarrelModel model : ALL_MODELS) {
model.icon = ItemIcon.getItemIcon(((BlockItemBarrel) YabbaItems.ITEM_BARREL).createStack(YabbaItems.ITEM_BARREL.getDefaultState(), BarrelLook.get(model.id, ""), Tier.WOOD));
}
}
use of com.feed_the_beast.ftblib.lib.util.misc.TextureSet in project YABBA by LatvianModder.
the class YabbaClient method parseSkinsJson.
private static void parseSkinsJson(JsonArray array) {
for (JsonElement element : array) {
try {
if (!element.isJsonObject()) {
continue;
}
JsonObject json = element.getAsJsonObject();
if (json.has("add")) {
ResourceLocation id = new ResourceLocation(parseVariableString(json.get("add").getAsString()));
TextureSet textures;
if (json.has("textures")) {
textures = TextureSet.of(parseVariableString(json.get("textures").getAsString()));
} else {
textures = TextureSet.of("all=" + id.getResourceDomain() + ":blocks/" + id.getResourcePath());
}
BarrelSkin skin = new BarrelSkin(id.toString(), textures);
if (json.has("name")) {
skin.displayName = JsonUtils.deserializeTextComponent(json.get("name")).getFormattedText();
}
if (json.has("icon")) {
skin.icon = Icon.getIcon(json.get("icon"));
}
if (json.has("layer")) {
skin.layer = ClientUtils.BLOCK_RENDER_LAYER_NAME_MAP.get(json.get("layer").getAsString());
}
if (json.has("color")) {
skin.color = Color4I.fromJson(json.get("color"));
}
skin.state = CommonUtils.getStateFromName(json.has("state") ? parseVariableString(json.get("state").getAsString()) : skin.id);
REGISTER_SKIN.addSkin(skin);
} else if (json.has("set")) {
VARIABLES.put(parseVariableString(json.get("set").getAsString()), parseVariableString(json.get("value").getAsString()));
} else if (json.has("for")) {
JsonArray a = json.get("for").getAsJsonArray();
if (a.size() == 3) {
String key = a.get(0).getAsString();
for (List<String> value : getIterator(a.get(1))) {
if (value.size() == 1) {
VARIABLES.put(key, parseVariableString(value.get(0)));
} else {
for (int i = 0; i < value.size(); i++) {
VARIABLES.put(key + "" + i, parseVariableString(value.get(i)));
}
}
parseSkinsJson(JsonUtils.toArray(a.get(2)));
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Aggregations