Each block represents a slate.
Rain
Drop a water bucket in the center to activate.
[Water ] [Water ] [Water ]
[Air ] [Air ] [Air ]
[Distorted] [Distorted] [Distorted]
[Water ] [Water ] [Water ]
import net.minecraftforge.fml.common.FMLLog; | |
import net.minecraftforge.fml.relauncher.ReflectionHelper; | |
import org.apache.logging.log4j.Logger; | |
import java.lang.reflect.Field; | |
public class Nope { | |
/** | |
* Make forge not spew "dangerous alternative prefix" messages in this block. | |
*/ |
@file:Suppress("PropertyName") | |
import net.minecraftforge.gradle.user.UserBaseExtension | |
import org.gradle.jvm.tasks.Jar | |
val mod_name: String by extra | |
val mod_version: String by extra | |
val mc_version: String by extra | |
val forge_version: String by extra | |
val mappings_version: String by extra |
#!/bin/bash | |
query_abort() { | |
printf "==> %s [Y/n] " "$1" | |
read -n 1 response | |
case "$response" in | |
'Y'|'y'|'') | |
;; | |
*) | |
printf "\n%s\n" "Aborting." |
Each block represents a slate.
Rain
Drop a water bucket in the center to activate.
[Water ] [Water ] [Water ]
[Air ] [Air ] [Air ]
[Distorted] [Distorted] [Distorted]
[Water ] [Water ] [Water ]
- Craft a tuning fork. It is used to change the resonance strength and natures of a crystal. | |
- Hold the tuning fork in your hand to make it pick up the resonance in the environment. Eventually it will start resonating too. | |
- Find a crystal in the world and stand right next to it with the tuning fork. The crystal and tuning fork will now slowly balance out their resonance and natures. | |
- After it has balanced out enough, you can right click the crystal to pick it up. Breaking it with a pickaxe will instead drop dusts of the natures the crystal had. These will also come in useful, so it's a good idea to break a few crystals. | |
- Create a few slates and place them in a 3x3 pattern on the ground. | |
- Place some dust on the slates so that it forms a correct recipe (see below) | |
- Click the center slate with your tuning fork to create a seal. This can be placed anywhere on a flat surface, as long as there is enough space for it (most seals are 3x3 in size) | |
- To make the seal do something, you must supply it with energy. Y |
# library | |
# sanitizes paths and interprets them as relative to / (adds / at the beginning, removes it at the end, deduplicates multiple /, removes .. and .) | |
SED_DIRSANIT='s`(^|$)`/`g;s`/+`/`g;:b;s`/\./`/`;tb;:a;s`(^|/[^/]*?)/\.\./`/`g;ta;s`^(.+)/$`\1`g' | |
# escapes strings for use in a sed command | |
SED_ESCAPE='s/[]\/$*.^[]/\\&/g' | |
die() { # vararg errmsg | |
(tput bold |
Put the publish.gradle.kts
file next to your build.gradle.
Edit the RepoURL
and RepoBranch
properties. (each time you change these, make sure to delete the build/maven
folder!)
Add apply from: 'publish.gradle.kts'
(Groovy) or apply { from("publish.gradle.kts") }
(Kotlin) to your build.gradle
.
Test if everything works by executing the updateLocalRepo
task, there should now be a git repository in build/maven
.
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile | |
import net.minecraftforge.gradle.kotlin.* | |
val kotlin_version: String by extra | |
val mappings_version: String by extra | |
val mc_version: String by extra | |
val mod_version: String by extra | |
val forge_version: String by extra | |
val jei_version: String by extra |
import java.util.ArrayList; | |
import java.util.List; | |
public class StrParse { | |
public static List<String> qsplit(String s) { | |
List<String> list = new ArrayList<>(); | |
int quote = 0; | |
boolean esc = false; |
package cuchaz.enigma.gui.util; | |
import java.awt.Component; | |
import java.awt.event.MouseEvent; | |
import javax.swing.*; | |
import javax.swing.border.Border; | |
public abstract class AbstractListCellRenderer<E> extends JPanel implements ListCellRenderer<E> { |