Jump to content

HarroldSaxon

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by HarroldSaxon

  1. I'm updating a mod from 1.10.2 to 1.12.2, and am somewhat confused about the registry changes. I can generate files, but i don't think the generated files are being loaded correctly.

    here's the original code

    Spoiler

            // Generate or load each mob file.
            String fileName;
            File directory, propFile;
            JsonObject props;
            for (Entry<String, Class<? extends Entity>> mobEntry : EntityList.getClassFromName().entrySet()) {
                if (MobProperties.getProperties(mobEntry.getKey()) == null && EntityLivingBase.class.isAssignableFrom(mobEntry.getValue()) && !Modifier.isAbstract(mobEntry.getValue().getModifiers())) {
                    directory = FileHelper.PROPS_DIRECTORY;
                    fileName = mobEntry.getKey();
                    String[] split = fileName.split("\\.", 2);
                    if (mobEntry.getValue().getName().startsWith("net.minecraft.")) {
                        if (split.length > 1) split[0] = split[0] + "." + split[1]; // Just in case a vanilla id has a "."
                        split = new String[] { "minecraft", split[0] };
                    }
                    if (split.length > 1) {
                        fileName = split[1];
                        char[] dirNameArray = split[0].toCharArray();
                        split[0] = "";
                        for (char letter : dirNameArray) {
                            split[0] += Character.isLetterOrDigit(letter) ? Character.toString(letter) : "_";
                        }
                        directory = new File(directory, split[0]);
                        directory.mkdirs();
                    }
                    char[] fileNameArray = fileName.toCharArray();
                    fileName = "";
                    for (char letter : fileNameArray) {
                        fileName += Character.isLetterOrDigit(letter) ? Character.toString(letter) : "_";
                    }
                    try {
                        propFile = new File(directory, fileName + FileHelper.FILE_EXT);
                        if (propFile.exists()) {
                            int attempt = 0;
                            for (; attempt < 100; attempt++)
                                if (! (propFile = new File(directory, fileName + attempt + FileHelper.FILE_EXT)).exists()) {
                                    break;
                                }
                            if (attempt > 99) {
                                ModMobProperties.logWarning("Failed to generate default properties file for \"" + mobEntry.getKey() + "\"!");
                                continue;
                            }
                            fileName += attempt;
                        }
                        props = new JsonObject();
                        props.addProperty("_name", mobEntry.getKey());
                        for (Map.Entry<String, JsonElement> entry : defaultProps.entrySet()) {
                            if (entry.getKey() != null && !entry.getKey().equals("_name") && !entry.getKey().equals("_comment")) {
                                props.add(entry.getKey(), entry.getValue());
                            }
                        }
                        propFile.createNewFile();
                        FileWriter out = new FileWriter(propFile);
                        FileHelper.GSON_PRETTY.toJson(props, out);
                        out.close();
                        filesGenerated++;
                        MobProperties.load(propFile.getPath(), props);
                    }
                    catch (MobPropertyException ex) {
                        throw ex;
                    }
                    catch (Exception ex) {
                        ModMobProperties.logWarning("Failed to generate default properties file for \"" + mobEntry.getKey() + "\"!");
                        ex.printStackTrace();
                    }
                }
            }
            return filesGenerated;

    and here's my changes

    Spoiler

            // Generate or load each mob file.
            String fileName;
            File directory, propFile;
            JsonObject props;
            for(Entry<ResourceLocation, EntityEntry> mobEntry : ForgeRegistries.ENTITIES.getEntries()) {                                                    
                if (MobProperties.getProperties(mobEntry.getKey().toString()) == null && EntityLivingBase.class.isAssignableFrom(mobEntry.getValue().getEntityClass()) && !Modifier.isAbstract(mobEntry.getValue().getEntityClass().getModifiers())) {
                    directory = FileHelper.PROPS_DIRECTORY;
                    fileName = mobEntry.getKey().toString();
                    String[] split = fileName.split("\\.", 2);
                    if (mobEntry.getValue().getName().startsWith("net.minecraft.")) {
                        if (split.length > 1) split[0] = split[0] + "." + split[1]; // Just in case a vanilla id has a "."
                        split = new String[] { "minecraft", split[0] };
                    }
                    if (split.length > 1) {
                        fileName = split[1];
                        char[] dirNameArray = split[0].toCharArray();
                        split[0] = "";
                        for (char letter : dirNameArray) {
                            split[0] += Character.isLetterOrDigit(letter) ? Character.toString(letter) : "_";
                        }
                        directory = new File(directory, split[0]);
                        directory.mkdirs();
                    }
                    char[] fileNameArray = fileName.toCharArray();
                    fileName = "";
                    for (char letter : fileNameArray) {
                        fileName += Character.isLetterOrDigit(letter) ? Character.toString(letter) : "_";
                    }
                    try {
                        propFile = new File(directory, fileName + FileHelper.FILE_EXT);
                        if (propFile.exists()) {
                            int attempt = 0;
                            for (; attempt < 100; attempt++)
                                if (! (propFile = new File(directory, fileName + attempt + FileHelper.FILE_EXT)).exists()) {
                                    break;
                                }
                            if (attempt > 99) {
                                ModMobProperties.logWarning("Failed to generate default properties file for \"" + mobEntry.getKey() + "\"!");
                                continue;
                            }
                            fileName += attempt;
                        }
                        props = new JsonObject();
                        props.addProperty("_name", mobEntry.getKey().toString());
       ///pretty sure this is wrong XD   ^
                        for (Map.Entry<String, JsonElement> entry : defaultProps.entrySet()) {
                            if (entry.getKey() != null && !entry.getKey().equals("_name") && !entry.getKey().equals("_comment")) {
                                props.add(entry.getKey(), entry.getValue());
                            }
                        }
                        propFile.createNewFile();
                        FileWriter out = new FileWriter(propFile);
                        FileHelper.GSON_PRETTY.toJson(props, out);
                        out.close();
                        filesGenerated++;
                        MobProperties.load(propFile.getPath(), props);
                    }
                    catch (MobPropertyException ex) {
                        throw ex;
                    }
                    catch (Exception ex) {
                        ModMobProperties.logWarning("Failed to generate default properties file for \"" + mobEntry.getKey() + "\"!");
                        ex.printStackTrace();
                    }
                }
            }
            return filesGenerated;

    I know i have at least one line wrong, not sure what i should be using instead. If anyone can point me in the right direction, I'd greatly appreciate it.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.