diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..0ba8359 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Ignore spotlessApply reformat +4407b867ca1a5235152cd4b78ee13160930e599b diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fd2792b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,44 @@ +* text eol=lf + +*.[jJ][aA][rR] binary + +*.[pP][nN][gG] binary +*.[jJ][pP][gG] binary +*.[jJ][pP][eE][gG] binary +*.[gG][iI][fF] binary +*.[tT][iI][fF] binary +*.[tT][iI][fF][fF] binary +*.[iI][cC][oO] binary +*.[sS][vV][gG] text +*.[eE][pP][sS] binary +*.[xX][cC][fF] binary + +*.[kK][aA][rR] binary +*.[mM]4[aA] binary +*.[mM][iI][dD] binary +*.[mM][iI][dD][iI] binary +*.[mM][pP]3 binary +*.[oO][gG][gG] binary +*.[rR][aA] binary + +*.7[zZ] binary +*.[gG][zZ] binary +*.[tT][aA][rR] binary +*.[tT][gG][zZ] binary +*.[zZ][iI][pP] binary + +*.[tT][cC][nN] binary +*.[sS][oO] binary +*.[dD][lL][lL] binary +*.[dD][yY][lL][iI][bB] binary +*.[pP][sS][dD] binary +*.[tT][tT][fF] binary +*.[oO][tT][fF] binary + +*.[pP][aA][tT][cC][hH] -text + +*.[bB][aA][tT] text eol=crlf +*.[cC][mM][dD] text eol=crlf +*.[pP][sS]1 text eol=crlf + +*[aA][uU][tT][oO][gG][eE][nN][eE][rR][aA][tT][eE][dD]* binary diff --git a/.github/scripts/test-no-error-reports.sh b/.github/scripts/test-no-error-reports.sh new file mode 100644 index 0000000..e387660 --- /dev/null +++ b/.github/scripts/test-no-error-reports.sh @@ -0,0 +1,27 @@ +if [[ -d "run/crash-reports" ]]; then + echo "Crash reports detected:" + cat $directory/* + exit 1 +fi + +if grep --quiet "Fatal errors were detected" server.log; then + echo "Fatal errors detected:" + cat server.log + exit 1 +fi + +if grep --quiet "The state engine was in incorrect state ERRORED and forced into state SERVER_STOPPED" server.log; then + echo "Server force stopped:" + cat server.log + exit 1 +fi + +if grep --quiet 'Done .+ For help, type "help" or "?"' server.log; then + echo "Server didn't finish startup:" + cat server.log + exit 1 +fi + +echo "No crash reports detected" +exit 0 + diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..3ee2f68 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,13 @@ + +name: Build and test + +on: + pull_request: + branches: [ master, main ] + push: + branches: [ master, main ] + +jobs: + build-and-test: + uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/build-and-test.yml@master + secrets: inherit diff --git a/.github/workflows/release-tags.yml b/.github/workflows/release-tags.yml new file mode 100644 index 0000000..e4c0be6 --- /dev/null +++ b/.github/workflows/release-tags.yml @@ -0,0 +1,14 @@ + +name: Release tagged build + +on: + push: + tags: [ '*' ] + +permissions: + contents: write + +jobs: + release-tags: + uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/release-tags.yml@master + secrets: inherit diff --git a/.gitignore b/.gitignore index 73f9454..75c41f6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,31 @@ -.gradle/ -build/ -out/ -run/ -server/ -eclipse/ -src/META-INF/ -/*.iws -/*.ipr -/*.iml -bin/ +.gradle +.settings +/.idea/ +/run/ +/build/ +/eclipse/ .classpath .project -.settings/ \ No newline at end of file +/bin/ +/config/ +/crash-reports/ +/logs/ +options.txt +/saves/ +usernamecache.json +banned-ips.json +banned-players.json +eula.txt +ops.json +server.properties +servers.dat +usercache.json +whitelist.json +/out/ +*.iml +*.ipr +*.iws +src/main/resources/mixins.*.json +*.bat +*.DS_Store +!gradlew.bat diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..a6b5f68 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,3 @@ +# Any Github changes require admin approval +/.github/** @GTNewHorizons/admin + diff --git a/README.md b/README.md index 5f98765..d894fcd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Universal Singularities -The Official Github Repository of the Mod, Universal Singularities! +The Unofficial Github Repository of the Mod (Universal Singularities](https://minecraft.curseforge.com/projects/universal-singularities) (GTNH Fork)! -Made and Maintained By: -Wealthyturtle and WanionCane +Originally made by [Wealthyturtle](https://github.com/Wealthyturtle) and [WanionCane](https://github.com/Wanioncane) + +# Fork + +This mod was forked by the GTNH Team to continue the development of the 1.7.10 Branch. The up-to-date Master branch can be found on our [Jenkins](http://jenkins.usrv.eu:8080/job/Universal-Singularities/). + +[Permission](permission.png) was kindly granted to maintain and release. \ No newline at end of file diff --git a/build.gradle b/build.gradle index c270575..e57a16f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,66 +1,5 @@ -buildscript { - repositories { - mavenCentral() - maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" - } - maven { - name = "sonatype" - url = "https://oss.sonatype.org/content/repositories/snapshots/" - } - } - dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' - } -} - -apply plugin: 'forge' - -version = "1.7.10-8.0" -group= "wealthyturtle.uiesingularities" // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = "Universal Singularities" - -minecraft { - version = "1.7.10-10.13.4.1614-1.7.10" - runDir = "eclipse" -} - -sourceCompatibility = 1.8 -targetCompatibility = 1.8 - -dependencies { - // you may put jars on which you depend on in ./libs - // or you may define them like so.. - //compile "some.group:artifact:version:classifier" - //compile "some.group:artifact:version" - - // real examples - //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env - //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env - - // for more info... - // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html - // http://www.gradle.org/docs/current/userguide/dependency_management.html - -} - -processResources -{ - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version +//version: 1707058017 - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version - } - - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } +plugins { + id 'com.gtnewhorizons.gtnhconvention' } diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100644 index 0000000..98ca644 --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,6 @@ +// Add your dependencies here + +dependencies { + api 'com.github.GTNewHorizons:Avaritia:1.59:dev' + compileOnly 'com.github.GTNewHorizons:NotEnoughItems:2.7.11-GTNH:dev' +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..15130e2 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,203 @@ +# ExampleMod tag to use as Blowdryer (Spotless, etc.) settings version, leave empty to disable. +# LOCAL to test local config updates. +gtnh.settings.blowdryerTag = 0.2.0 + +# Human-readable mod name, available for mcmod.info population. +modName = UniversalSingularities + +# Case-sensitive identifier string, available for mcmod.info population and used for automatic mixin JSON generation. +# Conventionally lowercase. +modId = universalsingularities + +# Root package of the mod, used to find various classes in other properties, +# mcmod.info substitution, enabling assertions in run tasks, etc. +modGroup = wealthyturtle.uiesingularities + +# Whether to use modGroup as the maven publishing group. +# Due to a history of using JitPack, the default is com.github.GTNewHorizons for all mods. +useModGroupForPublishing = false + +# Updates your build.gradle and settings.gradle automatically whenever an update is available. +autoUpdateBuildScript = false + +# Version of Minecraft to target +minecraftVersion = 1.7.10 + +# Version of Minecraft Forge to target +forgeVersion = 10.13.4.1614 + +# Specify an MCP channel for dependency deobfuscation and the deobfParams task. +channel = stable + +# Specify an MCP mappings version for dependency deobfuscation and the deobfParams task. +mappingsVersion = 12 + +# Defines other MCP mappings for dependency deobfuscation. +remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/ + +# Select a default username for testing your mod. You can always override this per-run by running +# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE. +developmentEnvironmentUserName = Developer + +# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. +# See https://github.com/bsideup/jabel for details on how this works. +enableModernJavaSyntax = false + +# Enables injecting missing generics into the decompiled source code for a better coding experience. +# Turns most publicly visible List, Map, etc. into proper List, Map types. +enableGenericInjection = false + +# Generate a class with a String field for the mod version named as defined below. +# If generateGradleTokenClass is empty or not missing, no such class will be generated. +# If gradleTokenVersion is empty or missing, the field will not be present in the class. +generateGradleTokenClass = + +# Name of the token containing the project's current version to generate/replace. +gradleTokenVersion = GRADLETOKEN_VERSION + +# [DEPRECATED] Mod ID replacement token. +gradleTokenModId = GRADLETOKEN_MODID + +# [DEPRECATED] Mod name replacement token. +gradleTokenModName = GRADLETOKEN_MODNAME + +# [DEPRECATED] Mod Group replacement token. +gradleTokenGroupName = + +# [DEPRECATED] +# Multiple source files can be defined here by providing a comma-separated list: Class1.java,Class2.java,Class3.java +# public static final String VERSION = "GRADLETOKEN_VERSION"; +# The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's +# version in @Mod([...], version = VERSION, [...]). +# Leave these properties empty to skip individual token replacements. +replaceGradleTokenInFile = Reference.java + +# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can +# leave this property empty. +# Example value: (apiPackage = api) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.api +apiPackage = + +# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/ +# There can be multiple files in a space-separated list. +# Example value: mymodid_at.cfg nei_at.cfg +accessTransformersFile = + +# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! +usesMixins = false + +# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main. +# This can speed up compile times thanks to not running the mixin annotation processor on all input sources. +# Mixin classes will have access to "main" classes, but not the other way around. +separateMixinSourceSet = + +# Adds some debug arguments like verbose output and class export. +usesMixinDebug = false + +# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. +mixinPlugin = + +# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! +mixinsPackage = + +# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! +# This parameter is for legacy compatibility only +# Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin +coreModClass = + +# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class +# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! +containsMixinsAndOrCoreModOnly = false + +# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins. +forceEnableMixins = false + +# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated into your jar. It is your +# responsibility to check the license and request permission for distribution if required. +usesShadowedDependencies = false + +# If disabled, won't remove unused classes from shadowed dependencies. Some libraries use reflection to access +# their own classes, making the minimization unreliable. +minimizeShadowedDependencies = true + +# If disabled, won't rename the shadowed classes. +relocateShadowedDependencies = true + +# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. +includeWellKnownRepositories = true + +# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated +# list of strings, with the acceptable keys being(case does not matter): +# cursemaven +# modrinth +excludeWellKnownRepositories = + +# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven. +# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables. +# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle. +usesMavenPublishing = true + +# Maven repository to publish the mod to. +# mavenPublishUrl = https\://nexus.gtnewhorizons.com/repository/releases/ + +# Publishing to Modrinth requires you to set the MODRINTH_TOKEN environment variable to your current Modrinth API token. +# +# The project's ID on Modrinth. Can be either the slug or the ID. +# Leave this empty if you don't want to publish to Modrinth. +modrinthProjectId = + +# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth. +# Syntax: scope1-type1:name1;scope2-type2:name2;... +# Where scope can be one of [required, optional, incompatible, embedded], +# type can be one of [project, version], +# and the name is the Modrinth project or version slug/id of the other mod. +# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech +# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true +modrinthRelations = + +# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens. +# +# The project's numeric ID on CurseForge. You can find this in the About Project box. +# Leave this empty if you don't want to publish on CurseForge. +curseForgeProjectId = + +# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge. +# Syntax: type1:name1;type2:name2;... +# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible], +# and the name is the CurseForge project slug of the other mod. +# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft +# Note: UniMixins is automatically set as a required dependency if usesMixins = true. +curseForgeRelations = + +# Optional parameter to customize the produced artifacts. Use this to preserve artifact naming when migrating older +# projects. New projects should not use this parameter. +customArchiveBaseName = Universal-Singularities + +# Optional parameter to have the build automatically fail if an illegal version is used. +# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'. +# The check is ONLY performed if the version is a git tag. +# Note: the specified string must be escaped, so e.g. 1\\.1\\.\\d+ instead of 1\.1\.\d+ +# versionPattern = + +# Uncomment to prevent the source code from being published. +# noPublishedSources = true + +# Uncomment this to disable Spotless checks. +# This should only be uncommented to keep it easier to sync with upstream/other forks. +# That is, if there is no other active fork/upstream, NEVER change this. +# disableSpotless = true + +# Uncomment this to disable Checkstyle checks (currently wildcard import check). +# disableCheckstyle = true + +# Override the IDEA build type. Valid values are: "" (leave blank, do not override), "idea" (force use native IDEA build), "gradle" +# (force use delegated build). +# This is meant to be set in $HOME/.gradle/gradle.properties. +# e.g. add "systemProp.org.gradle.project.ideaOverrideBuildType=idea" will override the build type to be native build. +# WARNING: If you do use this option, it will overwrite whatever you have in your existing projects. This might not be what you want! +# Usually there is no need to uncomment this here as other developers do not necessarily use the same build type as you. +# ideaOverrideBuildType = idea + +# Whether IDEA should run spotless checks when pressing the Build button. +# This is meant to be set in $HOME/.gradle/gradle.properties. +# ideaCheckSpotlessOnBuild = true + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b761216..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 678d9d8..e2847c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Wed Jul 02 15:54:47 CDT 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index 91a7e26..f5feea6 --- a/gradlew +++ b/gradlew @@ -1,79 +1,130 @@ -#!/usr/bin/env bash +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -82,83 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,4 +1,22 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -8,26 +26,30 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -35,54 +57,36 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..09bbb51 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +before_install: + - ./gradlew setupCIWorkspace \ No newline at end of file diff --git a/libs/Avaritia-1.11-unofficial-dev.jar b/libs/Avaritia-1.11-unofficial-dev.jar deleted file mode 100644 index 0079e4b..0000000 Binary files a/libs/Avaritia-1.11-unofficial-dev.jar and /dev/null differ diff --git a/libs/CodeChickenCore-1.7.10-1.0.7.47-dev.jar b/libs/CodeChickenCore-1.7.10-1.0.7.47-dev.jar deleted file mode 100644 index c7ecc2a..0000000 Binary files a/libs/CodeChickenCore-1.7.10-1.0.7.47-dev.jar and /dev/null differ diff --git a/libs/CodeChickenLib-1.7.10-1.1.3.138-dev.jar b/libs/CodeChickenLib-1.7.10-1.1.3.138-dev.jar deleted file mode 100644 index 6d3bb67..0000000 Binary files a/libs/CodeChickenLib-1.7.10-1.1.3.138-dev.jar and /dev/null differ diff --git a/libs/NotEnoughItems-1.7.10-1.0.5.120-dev.jar b/libs/NotEnoughItems-1.7.10-1.0.5.120-dev.jar deleted file mode 100644 index 0bb0483..0000000 Binary files a/libs/NotEnoughItems-1.7.10-1.0.5.120-dev.jar and /dev/null differ diff --git a/permission.png b/permission.png new file mode 100644 index 0000000..e5cbf6f Binary files /dev/null and b/permission.png differ diff --git a/repositories.gradle b/repositories.gradle new file mode 100644 index 0000000..c227b16 --- /dev/null +++ b/repositories.gradle @@ -0,0 +1,4 @@ +// Add any additional repositories for your dependencies here + +repositories { +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..0147a99 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,23 @@ + +pluginManagement { + repositories { + maven { + // RetroFuturaGradle + name "GTNH Maven" + url "https://nexus.gtnewhorizons.com/repository/public/" + mavenContent { + includeGroup("com.gtnewhorizons") + includeGroupByRegex("com\\.gtnewhorizons\\..+") + } + } + gradlePluginPortal() + mavenCentral() + mavenLocal() + } +} + +plugins { + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30' +} + + diff --git a/src/main/java/wealthyturtle/uiesingularities/NEI.java b/src/main/java/wealthyturtle/uiesingularities/NEI.java index 621d062..85d6cd3 100644 --- a/src/main/java/wealthyturtle/uiesingularities/NEI.java +++ b/src/main/java/wealthyturtle/uiesingularities/NEI.java @@ -1,16 +1,16 @@ package wealthyturtle.uiesingularities; -import codechicken.nei.api.API; +import javax.annotation.Nonnull; + import net.minecraft.item.ItemStack; -import javax.annotation.Nonnull; +import codechicken.nei.api.API; + +public final class NEI { -public final class NEI -{ - private NEI() {} + private NEI() {} - public static void hide(@Nonnull final ItemStack itemStack) - { - API.hideItem(itemStack); - } -} \ No newline at end of file + public static void hide(@Nonnull final ItemStack itemStack) { + API.hideItem(itemStack); + } +} diff --git a/src/main/java/wealthyturtle/uiesingularities/Reference.java b/src/main/java/wealthyturtle/uiesingularities/Reference.java index d4c568e..ddb6db5 100644 --- a/src/main/java/wealthyturtle/uiesingularities/Reference.java +++ b/src/main/java/wealthyturtle/uiesingularities/Reference.java @@ -1,13 +1,13 @@ package wealthyturtle.uiesingularities; -public final class Reference -{ - public static final String MOD_ID = "universalsingularities"; - public static final String MOD_NAME = "UniversalSingularities"; - public static final String MOD_VERSION = "1.7.10-8.0"; - public static final String MC_VERSION = "[1.7.10]"; - static final String COMMON_PROXY = "wealthyturtle.uiesingularities.proxy.CommonProxy"; - static final String CLIENT_PROXY = "wealthyturtle.uiesingularities.proxy.ClientProxy"; +public final class Reference { - private Reference() {} + public static final String MOD_ID = "GRADLETOKEN_MODID"; + public static final String MOD_NAME = "GRADLETOKEN_MODNAME"; + public static final String MOD_VERSION = "GRADLETOKEN_VERSION"; + public static final String MC_VERSION = "[1.7.10]"; + static final String COMMON_PROXY = "wealthyturtle.uiesingularities.proxy.CommonProxy"; + static final String CLIENT_PROXY = "wealthyturtle.uiesingularities.proxy.ClientProxy"; + + private Reference() {} } diff --git a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularity.java b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularity.java index 58203a7..963f531 100644 --- a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularity.java +++ b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularity.java @@ -1,16 +1,17 @@ package wealthyturtle.uiesingularities; -import javax.annotation.Nonnull; import java.util.List; -public final class UniversalSingularity -{ - public final String name; - public final List singularities; +import javax.annotation.Nonnull; + +public final class UniversalSingularity { + + public final String name; + public final List singularities; - public UniversalSingularity(@Nonnull final String name, @Nonnull final List singularities) - { - this.name = name; - this.singularities = singularities; - } -} \ No newline at end of file + public UniversalSingularity(@Nonnull final String name, + @Nonnull final List singularities) { + this.name = name; + this.singularities = singularities; + } +} diff --git a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityItem.java b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityItem.java index 1d632b2..aba6793 100644 --- a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityItem.java +++ b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityItem.java @@ -1,54 +1,52 @@ package wealthyturtle.uiesingularities; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import fox.spiteful.avaritia.items.ItemSingularity; +import java.util.List; + +import javax.annotation.Nonnull; + import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; -import javax.annotation.Nonnull; -import java.util.List; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import fox.spiteful.avaritia.items.ItemSingularity; -public final class UniversalSingularityItem extends ItemSingularity -{ - public final String name; - public final List universalSingularities; - - public UniversalSingularityItem(@Nonnull final String name, @Nonnull final List universalSingularities) - { - super(); - this.name = name; - this.universalSingularities = universalSingularities; - } - - @SideOnly(Side.CLIENT) - @Override - public int getColorFromItemStack(final ItemStack itemstack, final int renderPass) - { - final int metadata = getDamage(itemstack); - return renderPass == 0 ? universalSingularities.get(metadata).dColor : universalSingularities.get(metadata).cColor; - } - - @Override - public String getUnlocalizedName(final ItemStack stack) - { - return "item.universalSingularities." + name + "." + universalSingularities.get(getDamage(stack)).name; - } - - @Override - public int getDamage(final ItemStack itemStack) - { - return MathHelper.clamp_int(super.getDamage(itemStack), 0, universalSingularities.size() - 1); - } - - @SuppressWarnings({"unchecked", "rawtypes"}) - @SideOnly(Side.CLIENT) - @Override - public void getSubItems(final Item item, final CreativeTabs tab, final List list) - { - for (int i = 0; i < universalSingularities.size(); i++) - list.add(new ItemStack(item, 1, i)); - } -} \ No newline at end of file +public final class UniversalSingularityItem extends ItemSingularity { + + public final String name; + public final List universalSingularities; + + public UniversalSingularityItem(@Nonnull final String name, + @Nonnull final List universalSingularities) { + super(); + this.name = name; + this.universalSingularities = universalSingularities; + } + + @SideOnly(Side.CLIENT) + @Override + public int getColorFromItemStack(final ItemStack itemstack, final int renderPass) { + final int metadata = getDamage(itemstack); + return renderPass == 0 ? universalSingularities.get(metadata).dColor + : universalSingularities.get(metadata).cColor; + } + + @Override + public String getUnlocalizedName(final ItemStack stack) { + return "item.universalSingularities." + name + "." + universalSingularities.get(getDamage(stack)).name; + } + + @Override + public int getDamage(final ItemStack itemStack) { + return MathHelper.clamp_int(super.getDamage(itemStack), 0, universalSingularities.size() - 1); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @SideOnly(Side.CLIENT) + @Override + public void getSubItems(final Item item, final CreativeTabs tab, final List list) { + for (int i = 0; i < universalSingularities.size(); i++) list.add(new ItemStack(item, 1, i)); + } +} diff --git a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityMod.java b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityMod.java index b94d251..38b7c97 100644 --- a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityMod.java +++ b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityMod.java @@ -1,5 +1,12 @@ package wealthyturtle.uiesingularities; +import static wealthyturtle.uiesingularities.Reference.CLIENT_PROXY; +import static wealthyturtle.uiesingularities.Reference.COMMON_PROXY; +import static wealthyturtle.uiesingularities.Reference.MC_VERSION; +import static wealthyturtle.uiesingularities.Reference.MOD_ID; +import static wealthyturtle.uiesingularities.Reference.MOD_NAME; +import static wealthyturtle.uiesingularities.Reference.MOD_VERSION; + import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; @@ -7,33 +14,33 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import wealthyturtle.uiesingularities.proxy.CommonProxy; -import static wealthyturtle.uiesingularities.Reference.*; - @SuppressWarnings("unused") -@Mod(modid = MOD_ID, name = MOD_NAME, version = MOD_VERSION, acceptedMinecraftVersions = MC_VERSION, dependencies = "required-after:Avaritia") -public class UniversalSingularityMod -{ - @Mod.Instance(MOD_ID) - public static UniversalSingularityMod instance; - - @SidedProxy(serverSide = COMMON_PROXY, clientSide = CLIENT_PROXY) - public static CommonProxy proxy; - - @Mod.EventHandler - public void preInit(final FMLPreInitializationEvent event) - { - proxy.preInit(); - } - - @Mod.EventHandler - public void init(final FMLInitializationEvent event) - { - proxy.init(); - } - - @Mod.EventHandler - public void postInit(final FMLPostInitializationEvent event) - { - proxy.postInit(); - } -} \ No newline at end of file +@Mod( + modid = MOD_ID, + name = MOD_NAME, + version = MOD_VERSION, + acceptedMinecraftVersions = MC_VERSION, + dependencies = "required-after:Avaritia") +public class UniversalSingularityMod { + + @Mod.Instance(MOD_ID) + public static UniversalSingularityMod instance; + + @SidedProxy(serverSide = COMMON_PROXY, clientSide = CLIENT_PROXY) + public static CommonProxy proxy; + + @Mod.EventHandler + public void preInit(final FMLPreInitializationEvent event) { + proxy.preInit(); + } + + @Mod.EventHandler + public void init(final FMLInitializationEvent event) { + proxy.init(); + } + + @Mod.EventHandler + public void postInit(final FMLPostInitializationEvent event) { + proxy.postInit(); + } +} diff --git a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityWrapper.java b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityWrapper.java index 65e8f48..d795024 100644 --- a/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityWrapper.java +++ b/src/main/java/wealthyturtle/uiesingularities/UniversalSingularityWrapper.java @@ -2,32 +2,32 @@ import javax.annotation.Nonnull; -public final class UniversalSingularityWrapper -{ - public final String name; - public final String oreName; - public final int recipeBaseValue; - public final int cColor; - public final int dColor; - public final boolean enabled; +public final class UniversalSingularityWrapper { - public UniversalSingularityWrapper(@Nonnull final String name, @Nonnull final String oreName, final int recipeBaseValue, final int cColor, final int dColor) - { - this.name = name; - this.oreName = oreName; - this.recipeBaseValue = recipeBaseValue; - this.cColor = cColor; - this.dColor = dColor; - this.enabled = true; - } + public final String name; + public final String oreName; + public final int recipeBaseValue; + public final int cColor; + public final int dColor; + public final boolean enabled; - public UniversalSingularityWrapper(@Nonnull final String name, @Nonnull final String oreName, final int recipeBaseValue, final int cColor, final int dColor, final boolean enabled) - { - this.name = name; - this.oreName = oreName; - this.recipeBaseValue = recipeBaseValue; - this.cColor = cColor; - this.dColor = dColor; - this.enabled = enabled; - } -} \ No newline at end of file + public UniversalSingularityWrapper(@Nonnull final String name, @Nonnull final String oreName, + final int recipeBaseValue, final int cColor, final int dColor) { + this.name = name; + this.oreName = oreName; + this.recipeBaseValue = recipeBaseValue; + this.cColor = cColor; + this.dColor = dColor; + this.enabled = true; + } + + public UniversalSingularityWrapper(@Nonnull final String name, @Nonnull final String oreName, + final int recipeBaseValue, final int cColor, final int dColor, final boolean enabled) { + this.name = name; + this.oreName = oreName; + this.recipeBaseValue = recipeBaseValue; + this.cColor = cColor; + this.dColor = dColor; + this.enabled = enabled; + } +} diff --git a/src/main/java/wealthyturtle/uiesingularities/proxy/ClientProxy.java b/src/main/java/wealthyturtle/uiesingularities/proxy/ClientProxy.java index 04bb006..2745eb1 100644 --- a/src/main/java/wealthyturtle/uiesingularities/proxy/ClientProxy.java +++ b/src/main/java/wealthyturtle/uiesingularities/proxy/ClientProxy.java @@ -1,14 +1,14 @@ package wealthyturtle.uiesingularities.proxy; -import fox.spiteful.avaritia.render.FancyHaloRenderer; import net.minecraftforge.client.MinecraftForgeClient; -public final class ClientProxy extends CommonProxy -{ - @Override - public void init() - { - final FancyHaloRenderer fancyHaloRenderer = new FancyHaloRenderer(); - singularities.forEach(singularity -> MinecraftForgeClient.registerItemRenderer(singularity, fancyHaloRenderer)); - } +import fox.spiteful.avaritia.render.FancyHaloRenderer; + +public final class ClientProxy extends CommonProxy { + + @Override + public void init() { + final FancyHaloRenderer fancyHaloRenderer = new FancyHaloRenderer(); + singularities.forEach(singularity -> MinecraftForgeClient.registerItemRenderer(singularity, fancyHaloRenderer)); + } } diff --git a/src/main/java/wealthyturtle/uiesingularities/proxy/CommonProxy.java b/src/main/java/wealthyturtle/uiesingularities/proxy/CommonProxy.java index 095ad24..55ac937 100644 --- a/src/main/java/wealthyturtle/uiesingularities/proxy/CommonProxy.java +++ b/src/main/java/wealthyturtle/uiesingularities/proxy/CommonProxy.java @@ -1,257 +1,702 @@ package wealthyturtle.uiesingularities.proxy; -import cpw.mods.fml.common.IFuelHandler; -import cpw.mods.fml.common.Loader; -import fox.spiteful.avaritia.crafting.CompressorManager; -import fox.spiteful.avaritia.crafting.Grinder; -import gnu.trove.list.TIntList; -import gnu.trove.list.array.TIntArrayList; +import static fox.spiteful.avaritia.Config.craftingOnly; +import static java.io.File.separatorChar; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.annotation.Nonnull; + import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.oredict.OreDictionary; + +import cpw.mods.fml.common.IFuelHandler; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.GameRegistry; +import fox.spiteful.avaritia.crafting.CompressorManager; +import fox.spiteful.avaritia.crafting.Grinder; import wealthyturtle.uiesingularities.NEI; import wealthyturtle.uiesingularities.UniversalSingularity; import wealthyturtle.uiesingularities.UniversalSingularityItem; import wealthyturtle.uiesingularities.UniversalSingularityWrapper; -import javax.annotation.Nonnull; +public class CommonProxy { -import cpw.mods.fml.common.registry.GameRegistry; - -import java.io.File; -import java.util.*; + private final boolean hideDisabledSingularities; + protected final List singularities = new ArrayList<>(); -import static fox.spiteful.avaritia.Config.craftingOnly; -import static fox.spiteful.avaritia.Config.silver; -import static java.io.File.separatorChar; + private final Map> allowed = new HashMap<>(); + private final boolean coalSingularityEasterEgg; -public class CommonProxy -{ - private final boolean hideDisabledSingularities; - protected final List singularities = new ArrayList<>(); + // Base Values were Generated by random.org [Min: 65, Max: 95] + /* + * Instructions on Base Values: 1) Generate Random Numbers. 2) Fill Up the Entire Section's Base Values. 3) [Only + * Applicable if the Section has 1+ Singularities in it] Check for Any Duplicate Base Values. 4) [Only Applicable if + * the Section has 1+ Singularities in it] [If there are Any Duplicate Base Values] Re-roll Using the Random Number + * Generator, and Repeat from Step 3 Onwards. + */ + // Structure of Data: Name, Block Name, Base Value, Lighter Colour Value, Darker Colour Value + public CommonProxy() { + final List universalSingularities = Arrays.asList( + // Vanilla Singularities + new UniversalSingularity( + "vanilla", + Arrays.asList( + new UniversalSingularityWrapper("coal", "blockCoal", 3648, 0x282828, 0x0C0C0C, false), + new UniversalSingularityWrapper( + "emerald", + "blockEmerald", + 729, + 0x60DB83, + 0x2CA746, + false), + new UniversalSingularityWrapper( + "diamond", + "blockDiamond", + 729, + 0x4AEDD1, + 0x30DBBD, + false))), + // General (Not Mod Specific) + new UniversalSingularity( + "general", + Arrays.asList( + new UniversalSingularityWrapper( + "aluminum", + "blockAluminum", + 1824, + 0xEDEDED, + 0xC5C5C5, + false), + new UniversalSingularityWrapper("brass", "blockBrass", 1824, 0xD89634, 0x8B5F1B, false), + new UniversalSingularityWrapper( + "bronze", + "blockBronze", + 1824, + 0xCA904E, + 0xC97A25, + false), + new UniversalSingularityWrapper( + "charcoal", + "blockCharcoal", + 7296, + 0x605543, + 0x100E0B, + false), + new UniversalSingularityWrapper( + "electrum", + "blockElectrum", + 912, + 0xFDEF5A, + 0xEFE252, + false), + new UniversalSingularityWrapper("invar", "blockInvar", 1824, 0xD0D7CE, 0xACB4B1, false), + new UniversalSingularityWrapper( + "magnesium", + "blockMagnesium", + 3648, + 0x937C6C, + 0x776457), + new UniversalSingularityWrapper( + "osmium", + "blockOsmium", + 406, + 0x495dec, + 0x2b32af, + false), + new UniversalSingularityWrapper( + "peridot", + "blockPeridot", + 608, + 0x58A52B, + 0x4E9226, + false), + new UniversalSingularityWrapper("ruby", "blockRuby", 608, 0xB44848, 0x993D3D, false), + new UniversalSingularityWrapper( + "sapphire", + "blockSapphire", + 608, + 0x5173D1, + 0x466ACE, + false), + new UniversalSingularityWrapper("steel", "blockSteel", 912, 0x9F9F9F, 0x888888, false), + new UniversalSingularityWrapper( + "titanium", + "blockTitanium", + 2024, + 0xdbb9da, + 0x462b47, + false), + new UniversalSingularityWrapper( + "tungsten", + "blockTungsten", + 244, + 0x8b8b8b, + 0x161616, + false), + new UniversalSingularityWrapper( + "uranium", + "blockUranium", + 507, + 0x00CB40, + 0x00C43E, + false), + new UniversalSingularityWrapper("zinc", "blockZinc", 3648, 0xdbd4d4, 0x636161, false), + new UniversalSingularityWrapper( + "tricalciumphosphate", + "blockTricalciumPhosphate", + 365, + 0xfaef01, + 0x696501, + false), + new UniversalSingularityWrapper( + "palladium", + "blockPalladium", + 136, + 0xF0F0F0, + 0xE2E2E2, + false), + new UniversalSingularityWrapper( + "damascusSteel", + "blockDamascusSteel", + 153, + 0x9F9F9F, + 0x888888, + false), + new UniversalSingularityWrapper( + "blackSteel", + "blockBlackSteel", + 304, + 0x909090, + 0x3f3f3f, + false), + new UniversalSingularityWrapper( + "electrumFlux", + "blockElectrumFlux", + 16, + 0xD0B64D, + 0xA40606, + false), + new UniversalSingularityWrapper( + "quicksilver", + "blockQuicksilver", + 1824, + 0x7CD3C7, + 0x2B8073, + false), + new UniversalSingularityWrapper( + "shadowSteel", + "blockShadowSteel", + 406, + 0x887362, + 0x766354, + false), + new UniversalSingularityWrapper( + "iridium", + "blockIridium", + 62, + 0xffffff, + 0x6a6a6a, + false), + new UniversalSingularityWrapper( + "netherstar", + "blockNetherStar", + 512, + 0xffffff, + 0x8884bc, + false), + new UniversalSingularityWrapper( + "platinum", + "blockPlatinum", + 406, + 0xf6f3e7, + 0xbcbc93, + false), + new UniversalSingularityWrapper( + "naquadria", + "blockNaquadria", + 66, + 0xffffff, + 0x000000, + false), + new UniversalSingularityWrapper( + "plutonium", + "blockPlutonium", + 244, + 0xcb2a2a, + 0x6d100d, + false), + new UniversalSingularityWrapper( + "meteoricIron", + "blockMeteoricIron", + 912, + 0x272727, + 0x000000, + false), + new UniversalSingularityWrapper("desh", "blockDesh", 203, 0x383838, 0x000000, false), + new UniversalSingularityWrapper( + "europium", + "blockEuropium", + 62, + 0x3dadada, + 0x555555, + false), + new UniversalSingularityWrapper( + "gangue", + "blockGangue", + 444444, + 0x383838, + 0x5A3E25, + false), + new UniversalSingularityWrapper( + "roseGold", + "blockRoseGold", + 1824, + 0xFFE61E, + 0xDEC921, + false))), - private final Map> allowed = new HashMap<>(); - private final boolean coalSingularityEasterEgg; + // Big Reactors Singularities + new UniversalSingularity( + "bigReactors", + Arrays.asList( + new UniversalSingularityWrapper( + "blutonium", + "blockBlutonium", + 9999, + 0x4642D6, + 0x1B00E6, + false), + new UniversalSingularityWrapper( + "cyanite", + "blockCyanite", + 9999, + 0x5CAFDB, + 0x0087EF, + false), + new UniversalSingularityWrapper( + "graphite", + "blockGraphite", + 9999, + 0x5D5D5D, + 0x444444, + false), + new UniversalSingularityWrapper( + "ludicrite", + "blockLudicrite", + 9999, + 0xF001E8, + 0xF103B1, + false), + new UniversalSingularityWrapper( + "yellorium", + "blockYellorium", + 9999, + 0xD9DB5C, + 0xEBFF3D, + false))), + // Draconic Evolution Singularities + new UniversalSingularity( + "draconicEvolution", + Arrays.asList( + new UniversalSingularityWrapper( + "draconium", + "blockDraconium", + 1296, + 0x8E5CC0, + 0x7C4AAE, + false), + new UniversalSingularityWrapper( + "draconiumAwakened", + "blockDraconiumAwakened", + 760, + 0xFF7200, + 0xFF6600, + false))), + // Ender IO Singularities + new UniversalSingularity( + "enderIO", + Arrays.asList( + new UniversalSingularityWrapper( + "conductiveIron", + "blockConductiveIron", + 912, + 0xCA9D9D, + 0xC39499, + false), + new UniversalSingularityWrapper( + "electricalSteel", + "blockElectricalSteel", + 912, + 0x949494, + 0x8D8D8D, + false), + new UniversalSingularityWrapper( + "energeticAlloy", + "blockEnergeticAlloy", + 191, + 0xFFA638, + 0xFF9C21, + false), + new UniversalSingularityWrapper( + "darkSteel", + "blockDarkSteel", + 912, + 0x3C3C3C, + 0x383838, + false), + new UniversalSingularityWrapper( + "pulsatingIron", + "blockPulsatingIron", + 912, + 0x82FA9E, + 0x69EA88, + false), + new UniversalSingularityWrapper( + "redstoneAlloy", + "blockRedstoneAlloy", + 912, + 0xF25757, + 0xD63C3C, + false), + new UniversalSingularityWrapper( + "soularium", + "blockSoularium", + 456, + 0x5C4527, + 0x5A3E25, + false), + new UniversalSingularityWrapper( + "vibrantAlloy", + "blockVibrantAlloy", + 145, + 0xA7CA52, + 0x98BB40, + false))), + // ExtraPlanets Singularities + new UniversalSingularity( + "extraPlanets", + Arrays.asList( + new UniversalSingularityWrapper( + "blueGem", + "blockBlueGem", + 95, + 0x38D7FF, + 0x03C6F6, + false), + new UniversalSingularityWrapper("carbon", "blockCarbon", 66, 0x1D1D1D, 0x0F0F0F, false), + new UniversalSingularityWrapper( + "crystal", + "blockCrystal", + 78, + 0xE2E2E2, + 0xC1C1C1, + false), + new UniversalSingularityWrapper("redGem", "blockRedGem", 68, 0xFF3B0C, 0xF93100, false), + new UniversalSingularityWrapper( + "whiteGem", + "blockWhiteGem", + 70, + 0xC6C6C6, + 0xA5A5A5, + false))), + // ExtraTiC Singularities + new UniversalSingularity( + "extraTiC", + Arrays.asList( + new UniversalSingularityWrapper("fairy", "blockFairy", 90, 0xFF83C3, 0xFF65B4, false), + new UniversalSingularityWrapper( + "pokefennium", + "blockPokefennium", + 71, + 0x436B73, + 0x485361, + false))), + // Extra Utilities Singularities + new UniversalSingularity( + "extraUtilities", + Arrays.asList( + new UniversalSingularityWrapper( + "unstable", + "blockUnstable", + 66, + 0xC5C5C5, + 0xB1B1B1, + false))), + // Mekanism Singularities + new UniversalSingularity( + "mekanism", + Arrays.asList( + new UniversalSingularityWrapper( + "refinedGlowstone", + "blockRefinedGlowstone", + 67, + 0xF4D036, + 0xDBA622, + false), + new UniversalSingularityWrapper( + "refinedObsidian", + "blockRefinedObsidian", + 82, + 0x57456F, + 0x53426A, + false))), + // Metallurgy Singularities + new UniversalSingularity( + "metallurgy", + Arrays.asList( + // Utility + new UniversalSingularityWrapper( + "bitumen", + "blockBitumen", + 93, + 0x242424, + 0x313131, + false), + new UniversalSingularityWrapper("potash", "blockPotash", 85, 0xEF9103, 0xDA8403, false), + // Alloys - Base + new UniversalSingularityWrapper( + "angmallen", + "blockAngmallen", + 65, + 0xE1D78A, + 0xD6C761, + false), + new UniversalSingularityWrapper( + "hepatizon", + "blockHepatizon", + 82, + 0x755E75, + 0x614E61, + false), + // Alloys - Ender + new UniversalSingularityWrapper( + "desichalkos", + "blockDesichalkos", + 88, + 0x722FA8, + 0x502176, + false), + // Alloys - Fantasy + new UniversalSingularityWrapper( + "celenegil", + "blockCelenegil", + 81, + 0x94CC48, + 0x649128, + false), + new UniversalSingularityWrapper( + "haderoth", + "blockHaderoth", + 72, + 0x77341E, + 0x592817, + false), + new UniversalSingularityWrapper( + "tartarite", + "blockTartarite", + 83, + 0xAE3400, + 0x792400, + false), + // Alloys - Nether + new UniversalSingularityWrapper( + "amordrine", + "blockAmordrine", + 68, + 0xA98DB1, + 0x8F6B9A, + false), + new UniversalSingularityWrapper( + "inolashite", + "blockInolashite", + 67, + 0x40AA7D, + 0x338864, + false) + /* + * Important Note: The Rest of the Metallurgy Singularities (That are Non-Utility and Non-Alloy) + * Can be Found if AOBD Singularities is Used. For the Other Metallurgy Singularities to be + * Added, Use AOBD Singularities, with Metallurgy. (Yes, this is a Shoutout and + * Semi-Collaboration with RCXcrafter, the Creator of AOBD Singularities, lol.) + */ + )), + // PneumaticCraft Singularities + new UniversalSingularity( + "pneumaticCraft", + Collections.singletonList( + new UniversalSingularityWrapper( + "compressedIron", + "blockIronCompressed", + 93, + 0x636363, + 0x515151, + false))), + // ProjectRed Singularities + new UniversalSingularity( + "projectRed", + Collections.singletonList( + new UniversalSingularityWrapper( + "electrotine", + "blockElectrotine", + 1215, + 0x0F4985, + 0x0D3F72, + false))), + // Redstone Arsenal Singularities + new UniversalSingularity( + "redstoneArsenal", + Arrays.asList( + new UniversalSingularityWrapper( + "crystalFlux", + "blockCrystalFlux", + 76, + 0xFE333A, + 0xE8111A, + false))), + // Tinkers' Construct Singularities + new UniversalSingularity( + "tinkersConstruct", + Arrays.asList( + new UniversalSingularityWrapper( + "aluminumBrass", + "blockAluminumBrass", + 1824, + 0xE2BE4E, + 0xD4B148, + false), + new UniversalSingularityWrapper( + "alumite", + "blockAlumite", + 229, + 0xE9ADDA, + 0xE298D1, + false), + new UniversalSingularityWrapper( + "ardite", + "blockArdite", + 304, + 0xD24900, + 0x960000, + false), + new UniversalSingularityWrapper( + "cobalt", + "blockCobalt", + 1824, + 0x2376DD, + 0x023C9B, + false), + new UniversalSingularityWrapper( + "ender", + "blockEnderPearl", + 608, + 0x00B293, + 0x00927C, + false), // Not TC, but moving changes the meta #s + new UniversalSingularityWrapper("glue", "blockGlue", 912, 0xDBD0D0, 0xCEBFBF, false), + new UniversalSingularityWrapper( + "manyullyn", + "blockManyullyn", + 380, + 0xA97DE0, + 0x926AC3, + false))) + /* + * Removed new UniversalSingularityWrapper("salt", "blockSalt", 87, 0xEFEFEF, 0xDDE7E8), new + * UniversalSingularityWrapper("red_aurum", "blockRed_aurum", 78, 0xFF4809, 0xFF3D09) + */ + ); + final Configuration config = new Configuration( + new File("." + separatorChar + "config" + separatorChar + "UniversalSingularities.cfg")); + hideDisabledSingularities = config.get(Configuration.CATEGORY_GENERAL, "hideDisabledSingularitiesInNei", true) + .getBoolean() && Loader.isModLoaded("NotEnoughItems"); + universalSingularities.forEach(universalSingularity -> { + if (config.get(universalSingularity.name, "enabled", true).getBoolean()) { + for (int i = 0; i < universalSingularity.singularities.size(); i++) { + final UniversalSingularityWrapper universalSingularityWrapper = universalSingularity.singularities + .get(i); + if (config.get( + universalSingularity.name, + universalSingularityWrapper.name, + universalSingularityWrapper.enabled).getBoolean()) { + if (!allowed.containsKey(universalSingularity.name)) + allowed.put(universalSingularity.name, new HashSet<>()); + allowed.get(universalSingularity.name).add(universalSingularityWrapper.name); + } + } + singularities.add( + new UniversalSingularityItem(universalSingularity.name, universalSingularity.singularities)); + } + }); + coalSingularityEasterEgg = config.get(Configuration.CATEGORY_GENERAL, "coalSingularityEasterEgg", true) + .getBoolean(); + if (config.hasChanged()) config.save(); + } - //Base Values were Generated by random.org [Min: 65, Max: 95] - /*Instructions on Base Values: - * 1) Generate Random Numbers. - * 2) Fill Up the Entire Section's Base Values. - * 3) [Only Applicable if the Section has 1+ Singularities in it] Check for Any Duplicate Base Values. - * 4) [Only Applicable if the Section has 1+ Singularities in it] [If there are Any Duplicate Base Values] Re-roll Using the Random Number Generator, and Repeat from Step 3 Onwards. - */ - //Structure of Data: Name, Block Name, Base Value, Lighter Colour Value, Darker Colour Value - public CommonProxy() - { - final List universalSingularities = Arrays.asList( - // Vanilla Singularities - new UniversalSingularity("vanilla", Arrays.asList( - new UniversalSingularityWrapper("coal", "blockCoal", 90, 0x282828, 0x0C0C0C), - new UniversalSingularityWrapper("emerald", "blockEmerald", 81, 0x60DB83, 0x2CA746), - new UniversalSingularityWrapper("diamond", "blockDiamond", 76, 0x4AEDD1, 0x30DBBD) - )), - // General (Not Mod Specific) - new UniversalSingularity("general", Arrays.asList( - new UniversalSingularityWrapper("aluminum", "blockAluminum", 92, 0xEDEDED, 0xC5C5C5), - new UniversalSingularityWrapper("brass", "blockBrass", 67, 0xD89634, 0x8B5F1B), - new UniversalSingularityWrapper("bronze", "blockBronze", 90, 0xCA904E, 0xC97A25), - new UniversalSingularityWrapper("charcoal", "blockCharcoal", 81, 0x605543, 0x100E0B), - new UniversalSingularityWrapper("electrum", "blockElectrum", 94, 0xFDEF5A, 0xEFE252), - new UniversalSingularityWrapper("invar", "blockInvar", 95, 0xD0D7CE, 0xACB4B1), - new UniversalSingularityWrapper("magnesium", "blockMagnesium", 77, 0x937C6C, 0x776457), - new UniversalSingularityWrapper("osmium", "blockOsmium", 69, 0xAABACE, 0x9BABC4), - new UniversalSingularityWrapper("peridot", "blockPeridot", 95, 0x58A52B, 0x4E9226), - new UniversalSingularityWrapper("ruby", "blockRuby", 91, 0xB44848, 0x993D3D), - new UniversalSingularityWrapper("sapphire", "blockSapphire", 86, 0x5173D1, 0x466ACE), - new UniversalSingularityWrapper("steel", "blockSteel", 88, 0x9F9F9F, 0x888888), - new UniversalSingularityWrapper("titanium", "blockTitanium", 90, 0x1C242E, 0x192029, false), - new UniversalSingularityWrapper("tungsten", "blockTungsten", 79, 0xD6D6D6, 0xCACACA, false), - new UniversalSingularityWrapper("uranium", "blockUranium", 75, 0x00CB40, 0x00C43E, false), - new UniversalSingularityWrapper("zinc", "blockZinc", 76, 0xBFC55C, 0x939836) - )), - // Big Reactors Singularities - new UniversalSingularity("bigReactors", Arrays.asList( - new UniversalSingularityWrapper("blutonium", "blockBlutonium", 68, 0x4642D6, 0x1B00E6), - new UniversalSingularityWrapper("cyanite", "blockCyanite", 86, 0x5CAFDB, 0x0087EF), - new UniversalSingularityWrapper("graphite", "blockGraphite", 94, 0x5D5D5D, 0x444444), - new UniversalSingularityWrapper("ludicrite", "blockLudicrite", 88, 0xF001E8, 0xF103B1), - new UniversalSingularityWrapper("yellorium", "blockYellorium", 75, 0xD9DB5C, 0xEBFF3D) - )), - // Draconic Evolution Singularities - new UniversalSingularity("draconicEvolution", Arrays.asList( - new UniversalSingularityWrapper("draconium", "blockDraconium", 89, 0x8E5CC0, 0x7C4AAE), - new UniversalSingularityWrapper("draconiumAwakened", "blockDraconiumAwakened", 83, 0xFF7200, 0xFF6600, false) - )), - // Ender IO Singularities - new UniversalSingularity("enderIO", Arrays.asList( - new UniversalSingularityWrapper("conductiveIron", "blockConductiveIron", 65, 0xCA9D9D, 0xC39499), - new UniversalSingularityWrapper("electricalSteel", "blockElectricalSteel", 91, 0x949494, 0x8D8D8D), - new UniversalSingularityWrapper("energeticAlloy", "blockEnergeticAlloy", 83, 0xFFA638, 0xFF9C21), - new UniversalSingularityWrapper("darkSteel", "blockDarkSteel", 77, 0x3C3C3C, 0x383838), - new UniversalSingularityWrapper("pulsatingIron", "blockPulsatingIron", 74, 0x82FA9E, 0x69EA88), - new UniversalSingularityWrapper("redstoneAlloy", "blockRedstoneAlloy", 89, 0xF25757, 0xD63C3C), - new UniversalSingularityWrapper("soularium", "blockSoularium", 73, 0x5C4527, 0x5A3E25), - new UniversalSingularityWrapper("vibrantAlloy", "blockVibrantAlloy", 74, 0xA7CA52, 0x98BB40) - )), - // ExtraPlanets Singularities - new UniversalSingularity("extraPlanets", Arrays.asList( - new UniversalSingularityWrapper("blueGem", "blockBlueGem", 95, 0x38D7FF, 0x03C6F6, false), - new UniversalSingularityWrapper("carbon", "blockCarbon", 66, 0x1D1D1D, 0x0F0F0F, false), - new UniversalSingularityWrapper("crystal", "blockCrystal", 78, 0xE2E2E2, 0xC1C1C1, false), - new UniversalSingularityWrapper("palladium", "blockPalladium", 93, 0xF0F0F0, 0xE2E2E2, false), - new UniversalSingularityWrapper("redGem", "blockRedGem", 68, 0xFF3B0C, 0xF93100, false), - new UniversalSingularityWrapper("whiteGem", "blockWhiteGem", 70, 0xC6C6C6, 0xA5A5A5, false) - )), - // ExtraTiC Singularities - new UniversalSingularity("extraTiC", Arrays.asList( - new UniversalSingularityWrapper("fairy", "blockFairy", 90, 0xFF83C3, 0xFF65B4), - new UniversalSingularityWrapper("pokefennium", "blockPokefennium", 71, 0x436B73, 0x485361) - )), - // Extra Utilities Singularities - new UniversalSingularity("extraUtilities", Collections.singletonList( - new UniversalSingularityWrapper("unstable", "blockUnstable", 67, 0xC5C5C5, 0xB1B1B1) - )), - // Mekanism Singularities - new UniversalSingularity("mekanism", Arrays.asList( - new UniversalSingularityWrapper("refinedGlowstone", "blockRefinedGlowstone", 67, 0xF4D036, 0xDBA622), - new UniversalSingularityWrapper("refinedObsidian", "blockRefinedObsidian", 82, 0x57456F, 0x53426A) - )), - // Metallurgy Singularities - new UniversalSingularity("metallurgy", Arrays.asList( - //Utility - new UniversalSingularityWrapper("bitumen", "blockBitumen", 93, 0x242424, 0x313131), - new UniversalSingularityWrapper("phosphorus", "blockPhosphorus", 87, 0xA27777, 0x8B5F5F), - new UniversalSingularityWrapper("potash", "blockPotash", 85, 0xEF9103, 0xDA8403), - new UniversalSingularityWrapper("saltpeter", "blockSaltpeter", 71, 0xF0F0F0, 0xE1E1E1), - new UniversalSingularityWrapper("sulfur", "blockSulfur", 66, 0xFFF200, 0xFCD703), - //Alloys - Base - new UniversalSingularityWrapper("angmallen", "blockAngmallen", 65, 0xE1D78A, 0xD6C761, false), - new UniversalSingularityWrapper("damascusSteel", "blockDamascusSteel", 84, 0x996D4D, 0x583F2C, false), - new UniversalSingularityWrapper("hepatizon", "blockHepatizon", 82, 0x755E75, 0x614E61, false), - //Alloys - Ender - new UniversalSingularityWrapper("desichalkos", "blockDesichalkos", 88, 0x722FA8, 0x502176, false), - //Alloys - Fantasy - new UniversalSingularityWrapper("blackSteel", "blockBlackSteel", 70, 0x395679, 0x314966, false), - new UniversalSingularityWrapper("celenegil", "blockCelenegil", 81, 0x94CC48, 0x649128, false), - new UniversalSingularityWrapper("haderoth", "blockHaderoth", 72, 0x77341E, 0x592817, false), - new UniversalSingularityWrapper("quicksilver", "blockQuicksilver", 79, 0x7CD3C7, 0x2B8073, false), - new UniversalSingularityWrapper("tartarite", "blockTartarite", 83, 0xAE3400, 0x792400, false), - //Alloys - Nether - new UniversalSingularityWrapper("amordrine", "blockAmordrine", 68, 0xA98DB1, 0x8F6B9A, false), - new UniversalSingularityWrapper("inolashite", "blockInolashite", 67, 0x40AA7D, 0x338864, false), - new UniversalSingularityWrapper("shadowSteel", "blockShadowSteel", 77, 0x887362, 0x766354, false) - /*Important Note: - * The Rest of the Metallurgy Singularities (That are Non-Utility and Non-Alloy) Can be Found if AOBD Singularities is Used. - * For the Other Metallurgy Singularities to be Added, Use AOBD Singularities, with Metallurgy. - * (Yes, this is a Shoutout and Semi-Collaboration with RCXcrafter, the Creator of AOBD Singularities, lol.) - */ - )), - // PneumaticCraft Singularities - new UniversalSingularity("pneumaticCraft", Collections.singletonList( - new UniversalSingularityWrapper("compressedIron", "blockIronCompressed", 93, 0x636363, 0x515151, false) - )), - // ProjectRed Singularities - new UniversalSingularity("projectRed", Collections.singletonList( - new UniversalSingularityWrapper("electrotine", "blockElectrotine", 67, 0x0F4985, 0x0D3F72) - )), - // Redstone Arsenal Singularities - new UniversalSingularity("redstoneArsenal", Arrays.asList( - new UniversalSingularityWrapper("electrumFlux", "blockElectrumFlux", 77, 0xD0B64D, 0xA40606, false), - new UniversalSingularityWrapper("crystalFlux", "blockCrystalFlux", 76, 0xFE333A, 0xE8111A) - )), - // Tinkers' Construct Singularities - new UniversalSingularity("tinkersConstruct", Arrays.asList( - new UniversalSingularityWrapper("aluminumBrass", "blockAluminumBrass", 88, 0xE2BE4E, 0xD4B148), - new UniversalSingularityWrapper("alumite", "blockAlumite", 84, 0xE9ADDA, 0xE298D1), - new UniversalSingularityWrapper("ardite", "blockArdite", 86, 0xD24900, 0x960000), - new UniversalSingularityWrapper("cobalt", "blockCobalt", 67, 0x2376DD, 0x023C9B), - new UniversalSingularityWrapper("ender", "blockEnder", 74, 0x00B293, 0x00927C), - new UniversalSingularityWrapper("glue", "blockGlue", 85, 0xDBD0D0, 0xCEBFBF, false), - new UniversalSingularityWrapper("manyullyn", "blockManyullyn", 73, 0xA97DE0, 0x926AC3) - )) - /*Removed - * new UniversalSingularityWrapper("salt", "blockSalt", 87, 0xEFEFEF, 0xDDE7E8), - * new UniversalSingularityWrapper("red_aurum", "blockRed_aurum", 78, 0xFF4809, 0xFF3D09) - */ - ); - final Configuration config = new Configuration(new File("." + separatorChar + "config" + separatorChar + "UniversalSingularities.cfg")); - hideDisabledSingularities = config.get(Configuration.CATEGORY_GENERAL, "hideDisabledSingularitiesInNei", true).getBoolean() && Loader.isModLoaded("NotEnoughItems"); - universalSingularities.forEach(universalSingularity -> { - if (config.get(universalSingularity.name, "enabled", true).getBoolean()) { - for (int i = 0; i < universalSingularity.singularities.size(); i++) { - final UniversalSingularityWrapper universalSingularityWrapper = universalSingularity.singularities.get(i); - if (config.get(universalSingularity.name, universalSingularityWrapper.name, universalSingularityWrapper.enabled).getBoolean()) { - if (!allowed.containsKey(universalSingularity.name)) - allowed.put(universalSingularity.name, new HashSet<>()); - allowed.get(universalSingularity.name).add(universalSingularityWrapper.name); - } - } - singularities.add(new UniversalSingularityItem(universalSingularity.name, universalSingularity.singularities)); - } - }); - coalSingularityEasterEgg = config.get(Configuration.CATEGORY_GENERAL, "coalSingularityEasterEgg", true).getBoolean(); - if (config.hasChanged()) - config.save(); - } + public final void preInit() { + singularities.forEach( + singularity -> GameRegistry + .registerItem(singularity, "universal." + singularity.name + ".singularity")); + } - public final void preInit() - { - singularities.forEach(singularity -> GameRegistry.registerItem(singularity, "universal." + singularity.name + ".singularity")); - } + public void init() {} - public void init() {} + public final void postInit() { + if (craftingOnly) return; + addToRecipeInput(); + } - public final void postInit() - { - if (craftingOnly) - return; - addToRecipeInput(); - } + private void addToRecipeInput() { + singularities.forEach(singularity -> { + for (int i = 0; i < singularity.universalSingularities.size(); i++) { + final UniversalSingularityWrapper universalSingularityWrapper = singularity.universalSingularities + .get(i); + if (allowed.containsKey(singularity.name) + && allowed.get(singularity.name).contains(universalSingularityWrapper.name)) { + final List oreList = OreDictionary.getOres(universalSingularityWrapper.oreName, false); + if (oreList != null && !oreList.isEmpty()) { + CompressorManager.addOreRecipe( + new ItemStack(singularity, 1, i), + universalSingularityWrapper.recipeBaseValue, + universalSingularityWrapper.oreName); + Grinder.catalyst.getInput().add(new ItemStack(singularity, 1, i)); + } else if (hideDisabledSingularities) NEI.hide(new ItemStack(singularity, 1, i)); + } else if (hideDisabledSingularities) NEI.hide(new ItemStack(singularity, 1, i)); + } + }); + if (coalSingularityEasterEgg && allowed.containsKey("vanilla") && allowed.get("vanilla").contains("coal")) + GameRegistry.registerFuelHandler(new CoalSingularityFuelHandler(getSingularityByName("vanilla"))); + } - private void addToRecipeInput() - { - singularities.forEach(singularity -> { - for (int i = 0; i < singularity.universalSingularities.size(); i++) { - final UniversalSingularityWrapper universalSingularityWrapper = singularity.universalSingularities.get(i); - if (allowed.containsKey(singularity.name) && allowed.get(singularity.name).contains(universalSingularityWrapper.name)) { - final List oreList = OreDictionary.getOres(universalSingularityWrapper.oreName, false); - if (oreList != null && !oreList.isEmpty()) { - CompressorManager.addOreRecipe(new ItemStack(singularity, 1, i), universalSingularityWrapper.recipeBaseValue, universalSingularityWrapper.oreName); - Grinder.catalyst.getInput().add(new ItemStack(singularity, 1, i)); - } else if (hideDisabledSingularities) - NEI.hide(new ItemStack(singularity, 1, i)); - } else if (hideDisabledSingularities) - NEI.hide(new ItemStack(singularity, 1, i)); - } - }); - if (coalSingularityEasterEgg && allowed.containsKey("vanilla") && allowed.get("vanilla").contains("coal")) - GameRegistry.registerFuelHandler(new CoalSingularityFuelHandler(getSingularityByName("vanilla"))); - } + public UniversalSingularityItem getSingularityByName(@Nonnull final String name) { + for (final UniversalSingularityItem singularity : singularities) + if (singularity.name.equals(name)) return singularity; + return null; + } - public UniversalSingularityItem getSingularityByName(@Nonnull final String name) - { - for (final UniversalSingularityItem singularity : singularities) - if (singularity.name.equals(name)) - return singularity; - return null; - } + private static class CoalSingularityFuelHandler implements IFuelHandler { - private static class CoalSingularityFuelHandler implements IFuelHandler - { - private final UniversalSingularityItem vanillaSingularity; - private final int burnTime; + private final UniversalSingularityItem vanillaSingularity; + private final int burnTime; - private CoalSingularityFuelHandler(@Nonnull final UniversalSingularityItem vanillaSingularity) - { - this.vanillaSingularity = vanillaSingularity; - this.burnTime = 16000 * CompressorManager.getCost(new ItemStack(Blocks.coal_block)); - } + private CoalSingularityFuelHandler(@Nonnull final UniversalSingularityItem vanillaSingularity) { + this.vanillaSingularity = vanillaSingularity; + this.burnTime = 16000 * CompressorManager.getCost(new ItemStack(Blocks.coal_block)); + } - @Override - public int getBurnTime(final ItemStack fuel) - { - return fuel != null && fuel.getItem() == vanillaSingularity && fuel.getItemDamage() == 0 ? burnTime : 0; - } - } + @Override + public int getBurnTime(final ItemStack fuel) { + return fuel != null && fuel.getItem() == vanillaSingularity && fuel.getItemDamage() == 0 ? burnTime : 0; + } + } +} diff --git a/src/main/resources/assets/uiesingularities/lang/en_US.lang b/src/main/resources/assets/uiesingularities/lang/en_US.lang index 92caf1d..8a47c70 100644 --- a/src/main/resources/assets/uiesingularities/lang/en_US.lang +++ b/src/main/resources/assets/uiesingularities/lang/en_US.lang @@ -11,6 +11,7 @@ item.universalSingularities.vanilla.emerald.name=Emerald Singularity //Vanilla //General +item.avaritia_singularity.name=Singularity item.universalSingularities.general.aluminum.name=Aluminum Singularity item.universalSingularities.general.brass.name=Brass Singularity item.universalSingularities.general.bronze.name=Bronze Singularity @@ -27,6 +28,25 @@ item.universalSingularities.general.titanium.name=Titanium Singularity item.universalSingularities.general.tungsten.name=Tungsten Singularity item.universalSingularities.general.uranium.name=Uranium Singularity item.universalSingularities.general.zinc.name=Zinc Singularity +item.universalSingularities.general.palladium.name=Palladium Singularity +item.universalSingularities.general.saltpeter.name=Saltpeter Singularity +item.universalSingularities.general.quicksilver.name=Quicksilver Singularity +item.universalSingularities.general.blackSteel.name=Black Steel Singularity +item.universalSingularities.general.damascusSteel.name=Damascus Steel Singularity +item.universalSingularities.general.tricalciumphosphate.name=Tricalcium Phosphate Singularity +item.universalSingularities.general.shadowSteel.name=Shadow Steel Singularity +item.universalSingularities.general.sulfur.name=Sulfur Singularity +item.universalSingularities.general.iridium.name=Iridium Singularity +item.universalSingularities.general.netherstar.name=Nether Star Singularity +item.universalSingularities.general.platinum.name=Platinum Singularity +item.universalSingularities.general.electrumFlux.name=Fluxed Electrum Singularity +item.universalSingularities.general.naquadria.name=Naquadria Singularity +item.universalSingularities.general.plutonium.name=Plutonium Singularity +item.universalSingularities.general.desh.name=Desh Singularity +item.universalSingularities.general.meteoricIron.name=Meteoric Iron Singularity +item.universalSingularities.general.europium.name=Europium Singularity +item.universalSingularities.general.gangue.name=Gangue Singularity +item.universalSingularities.general.roseGold.name=Rose Gold Singularity //General //Big Reactors @@ -57,7 +77,6 @@ item.universalSingularities.enderIO.vibrantAlloy.name=Vibrant Alloy Singularity item.universalSingularities.extraPlanets.blueGem.name=Blue Gem Singularity item.universalSingularities.extraPlanets.carbon.name=Carbon Singularity item.universalSingularities.extraPlanets.crystal.name=Crystal Singularity -item.universalSingularities.extraPlanets.palladium.name=Palladium Singularity item.universalSingularities.extraPlanets.redGem.name=Red Gem Singularity item.universalSingularities.extraPlanets.whiteGem.name=White Gem Singularity //ExtraPlanets @@ -79,26 +98,19 @@ item.universalSingularities.mekanism.refinedObsidian.name=Refined Obsidian Singu //Metallurgy 4 //Utility item.universalSingularities.metallurgy.bitumen.name=Bitumen Singularity -item.universalSingularities.metallurgy.phosphorus.name=Phosphorus Singularity item.universalSingularities.metallurgy.potash.name=Potash Singularity -item.universalSingularities.metallurgy.saltpeter.name=Saltpeter Singularity -item.universalSingularities.metallurgy.sulfur.name=Sulfur Singularity //Alloys - Base item.universalSingularities.metallurgy.angmallen.name=Angmallen Singularity -item.universalSingularities.metallurgy.damascusSteel.name=Damascus Steel Singularity item.universalSingularities.metallurgy.hepatizon.name=Hepatizon Singularity //Alloys - Ender item.universalSingularities.metallurgy.desichalkos.name=Desichalkos Singularity //Alloys - Fantasy -item.universalSingularities.metallurgy.blackSteel.name=Black Steel Singularity item.universalSingularities.metallurgy.celenegil.name=Celenegil Singularity item.universalSingularities.metallurgy.haderoth.name=Haderoth Singularity -item.universalSingularities.metallurgy.quicksilver.name=Quicksilver Singularity item.universalSingularities.metallurgy.tartarite.name=Tartarite Singularity //Alloys - Nether item.universalSingularities.metallurgy.amordrine.name=Amordrine Singularity item.universalSingularities.metallurgy.inolashite.name=Inolashite Singularity -item.universalSingularities.metallurgy.shadowSteel.name=Shadow Steel Singularity //Metallurgy 4 //PneumaticCraft @@ -110,7 +122,6 @@ item.universalSingularities.projectRed.electrotine.name=Electrotine Singularity //ProjectRed //Redstone Arsenal -item.universalSingularities.redstoneArsenal.electrumFlux.name=Fluxed Electrum Singularity item.universalSingularities.redstoneArsenal.crystalFlux.name=Flux Crystal Singularity //Redstone Arsenal diff --git a/src/main/resources/assets/uiesingularities/lang/zh_CN.lang b/src/main/resources/assets/uiesingularities/lang/zh_CN.lang new file mode 100644 index 0000000..f775eaf --- /dev/null +++ b/src/main/resources/assets/uiesingularities/lang/zh_CN.lang @@ -0,0 +1,139 @@ +//en_US Localization File - Universal Singularities +//Creator of Localization File: Wealthyturtle +//Localization File Version: 8.0 + +//Contact Wealthyturtle/WanionCane If You Would Like to Volunteer to Create a Localization File for Another Language. + +//Vanilla +item.universalSingularities.vanilla.coal.name=煤炭奇点 +item.universalSingularities.vanilla.diamond.name=钻石奇点 +item.universalSingularities.vanilla.emerald.name=绿宝石奇点 +//Vanilla + +//General +item.universalSingularities.general.aluminum.name=铝奇点 +item.universalSingularities.general.brass.name=黄铜奇点 +item.universalSingularities.general.bronze.name=青铜奇点 +item.universalSingularities.general.charcoal.name=木炭奇点 +item.universalSingularities.general.electrum.name=琥珀金奇点 +item.universalSingularities.general.invar.name=殷钢奇点 +item.universalSingularities.general.magnesium.name=镁奇点 +item.universalSingularities.general.osmium.name=锇奇点 +item.universalSingularities.general.peridot.name=橄榄石奇点 +item.universalSingularities.general.ruby.name=红宝石奇点 +item.universalSingularities.general.sapphire.name=蓝宝石奇点 +item.universalSingularities.general.steel.name=钢奇点 +item.universalSingularities.general.titanium.name=钛奇点 +item.universalSingularities.general.tungsten.name=钨奇点 +item.universalSingularities.general.uranium.name=铀奇点 +item.universalSingularities.general.zinc.name=锌奇点 +item.universalSingularities.general.palladium.name=钯奇点 +item.universalSingularities.general.saltpeter.name=硝石奇点 +item.universalSingularities.general.quicksilver.name=水银奇点 +item.universalSingularities.general.blackSteel.name=黑钢奇点 +item.universalSingularities.general.damascusSteel.name=大马士革钢奇点 +item.universalSingularities.general.phosphorus.name=磷奇点 +item.universalSingularities.general.shadowSteel.name=暗影钢奇点 +item.universalSingularities.general.sulfur.name=硫奇点 +item.universalSingularities.general.iridium.name=铱奇点 +item.universalSingularities.general.netherstar.name=下界之星奇点 +item.universalSingularities.general.platinum.name=铂奇点 +item.universalSingularities.general.electrumFlux.name=流体琥珀金奇点 +item.universalSingularities.general.naquadria.name=超能硅岩奇点 +item.universalSingularities.general.plutonium.name=钚奇点 +item.universalSingularities.general.desh.name=戴斯奇点 +item.universalSingularities.general.meteoricIron.name=陨铁奇点 +item.universalSingularities.general.europium.name=铕奇点 +//General + +//Big Reactors +item.universalSingularities.bigReactors.blutonium.name=蓝钚奇点 +item.universalSingularities.bigReactors.cyanite.name=蓝晶奇点 +item.universalSingularities.bigReactors.graphite.name=石墨奇点 +item.universalSingularities.bigReactors.ludicrite.name=纯镥奇点 +item.universalSingularities.bigReactors.yellorium.name=黄铀奇点 +//Big Reactors + +//Draconic Evolution +item.universalSingularities.draconicEvolution.draconium.name=龙奇点 +item.universalSingularities.draconicEvolution.draconiumAwakened.name=觉醒龙奇点 +//Draconic Evolution + +//Ender IO +item.universalSingularities.enderIO.conductiveIron.name=导电铁奇点 +item.universalSingularities.enderIO.electricalSteel.name=磁钢奇点 +item.universalSingularities.enderIO.energeticAlloy.name=充能合金奇点 +item.universalSingularities.enderIO.darkSteel.name=玄钢奇点 +item.universalSingularities.enderIO.pulsatingIron.name=脉动铁奇点 +item.universalSingularities.enderIO.redstoneAlloy.name=红石合金奇点 +item.universalSingularities.enderIO.soularium.name=魂金奇点 +item.universalSingularities.enderIO.vibrantAlloy.name=脉冲合金奇点 +//Ender IO + +//ExtraPlanets +item.universalSingularities.extraPlanets.blueGem.name=蓝色宝石奇点 +item.universalSingularities.extraPlanets.carbon.name=碳奇点 +item.universalSingularities.extraPlanets.crystal.name=水晶奇点 +item.universalSingularities.extraPlanets.redGem.name=红色宝石奇点 +item.universalSingularities.extraPlanets.whiteGem.name=白色宝石奇点 +//ExtraPlanets + +//ExtraTiC +item.universalSingularities.extraTiC.fairy.name=精灵奇点 +item.universalSingularities.extraTiC.pokefennium.name=铁血奇点 +//ExtraTiC + +//Extra Utilities +item.universalSingularities.extraUtilities.unstable.name=不稳定金属奇点 +//Extra Utilities + +//Mekanism +item.universalSingularities.mekanism.refinedGlowstone.name=强化荧石奇点 +item.universalSingularities.mekanism.refinedObsidian.name=强化黑曜石奇点 +//Mekanism + +//Metallurgy 4 +//Utility +item.universalSingularities.metallurgy.bitumen.name=沥青奇点 +item.universalSingularities.metallurgy.potash.name=碳酸钾奇点 +//Alloys - Base +item.universalSingularities.metallurgy.angmallen.name=金铁奇点 +item.universalSingularities.metallurgy.hepatizon.name=魂晶奇点 +//Alloys - Ender +item.universalSingularities.metallurgy.desichalkos.name=虚空魂石奇点 +//Alloys - Fantasy +item.universalSingularities.metallurgy.celenegil.name=幽冥毒晶奇点 +item.universalSingularities.metallurgy.haderoth.name=幻铜奇点 +item.universalSingularities.metallurgy.tartarite.name=熔火石奇点 +//Alloys - Nether +item.universalSingularities.metallurgy.amordrine.name=魔石奇点 +item.universalSingularities.metallurgy.inolashite.name=暗影秘银蓝金奇点 +//Metallurgy 4 + +//PneumaticCraft +item.universalSingularities.pneumaticCraft.compressedIron.name=致密铁奇点 +//PneumaticCraft + +//ProjectRed +item.universalSingularities.projectRed.electrotine.name=蓝石奇点 +//ProjectRed + +//Redstone Arsenal +item.universalSingularities.redstoneArsenal.crystalFlux.name=红石水晶奇点 +//Redstone Arsenal + +//Tinkers' Construct +item.universalSingularities.tinkersConstruct.aluminumBrass.name=铝黄铜奇点 +item.universalSingularities.tinkersConstruct.alumite.name=耐酸铝奇点 +item.universalSingularities.tinkersConstruct.ardite.name=阿迪特奇点 +item.universalSingularities.tinkersConstruct.cobalt.name=钴奇点 +item.universalSingularities.tinkersConstruct.ender.name=末影奇点 +item.universalSingularities.tinkersConstruct.glue.name=凝胶奇点 +item.universalSingularities.tinkersConstruct.manyullyn.name=玛玉灵奇点 +//item.universalSingularities.tinkersConstruct.pigIron.name=生铁奇点 +//Tinkers' Construct + +/*Removed + * item.universalSingularities.general.salt.name=盐奇点 + * item.universalSingularities.extraTiC.red_aurum.name=红金奇点 + */ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 8d88f1e..15bb814 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -1,15 +1,13 @@ -[ -{ - "modid": "universalsingularities", - "name": "Universal Singularities", +[{ + "modid": "${modId}", + "name": "${modName}", "description": "A Mod that Adds an Unending Amount of Singularities!", - "version": "8.0", - "mcversion": "1.7.10", + "version": "${modVersion}", + "mcversion": "${minecraftVersion}", "url": "https://minecraft.curseforge.com/projects/universal-singularities", "updateUrl": "", "authorList": ["Wealthyturtle, WanionCane"], "logoFile": "", "screenshots": [], "dependencies": [] -} -] +}]