init
This commit is contained in:
commit
f710cd083e
17 changed files with 739 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
.gradle
|
||||||
|
.idea
|
||||||
|
build
|
||||||
|
gradle
|
||||||
|
autocopy.bat
|
||||||
|
run
|
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Lilase
|
99
build.gradle
Normal file
99
build.gradle
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
plugins {
|
||||||
|
id 'net.minecraftforge.gradle.forge' version 'FG_2.1-SNAPSHOT'
|
||||||
|
id 'com.github.johnrengelman.shadow' version '6.1.0'
|
||||||
|
id 'org.spongepowered.mixin' version '0.6-SNAPSHOT'
|
||||||
|
}
|
||||||
|
|
||||||
|
version = "1.0.0"
|
||||||
|
group = "me.night0721.lilase"
|
||||||
|
archivesBaseName = "Lilase"
|
||||||
|
sourceCompatibility = 1.8
|
||||||
|
|
||||||
|
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
|
options.encoding = 'UTF-8'
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url 'https://jitpack.io/' }
|
||||||
|
maven { url 'https://repo.spongepowered.org/repository/maven-public/' }
|
||||||
|
maven { url "https://repo.sk1er.club/repository/maven-public" }
|
||||||
|
maven { url "https://repo.sk1er.club/repository/maven-releases/" }
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft {
|
||||||
|
version = '1.8.9-11.15.1.2318-1.8.9'
|
||||||
|
runDir = 'run'
|
||||||
|
mappings = 'stable_22'
|
||||||
|
makeObfSourceJar = false
|
||||||
|
replace '@VERSION@': project.version
|
||||||
|
clientRunArgs += ["--tweakClass gg.essential.loader.stage0.EssentialSetupTweaker", "--mixin mixins.night0721.json"]
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
packageLib
|
||||||
|
configurations.implementation.extendsFrom(configurations.packageLib)
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
packageLib("gg.essential:loader-launchwrapper:1.1.3")
|
||||||
|
implementation("gg.essential:essential-1.8.9-forge:2581")
|
||||||
|
annotationProcessor('org.spongepowered:mixin:0.7.11-SNAPSHOT')
|
||||||
|
implementation('org.spongepowered:mixin:0.7.11-SNAPSHOT') {
|
||||||
|
transitive = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mixin {
|
||||||
|
disableRefMapWarning = true
|
||||||
|
defaultObfuscationEnv searge
|
||||||
|
add sourceSets.main, 'mixins.night0721.refmap.json'
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||||
|
|
||||||
|
manifest.attributes(
|
||||||
|
'FMLCorePluginContainsFMLMod': true,
|
||||||
|
"FMLCorePlugin": "me.night0721.lilase.mixins.MixinLoader",
|
||||||
|
'ForceLoadAsMod': true,
|
||||||
|
'MixinConfigs': 'mixins.night0721.json',
|
||||||
|
'ModSide': 'CLIENT',
|
||||||
|
'TweakClass': 'gg.essential.loader.stage0.EssentialSetupTweaker',
|
||||||
|
'TweakOrder': '0'
|
||||||
|
)
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
archiveFileName = jar.archiveFileName
|
||||||
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||||
|
configurations = [project.configurations.packageLib]
|
||||||
|
}
|
||||||
|
|
||||||
|
reobf {
|
||||||
|
shadowJar {
|
||||||
|
classpath = sourceSets.main.compileClasspath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
inputs.property 'version', project.version
|
||||||
|
inputs.property 'mcversion', project.minecraft.version
|
||||||
|
|
||||||
|
from(sourceSets.main.resources.srcDirs) {
|
||||||
|
include 'mcmod.info'
|
||||||
|
expand 'version':project.version, 'mcversion':project.minecraft.version
|
||||||
|
}
|
||||||
|
from(sourceSets.main.resources.srcDirs) {
|
||||||
|
exclude 'mcmod.info'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main { output.resourcesDir = java.outputDir }
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.reobfJar.dependsOn(shadowJar)
|
169
gradlew
vendored
Normal file
169
gradlew
vendored
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
##
|
||||||
|
## Gradle start up script for UN*X
|
||||||
|
##
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# 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\"`/" >/dev/null
|
||||||
|
APP_HOME="`pwd -P`"
|
||||||
|
cd "$SAVED" >/dev/null
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS=""
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn ( ) {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die ( ) {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
NONSTOP* )
|
||||||
|
nonstop=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
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"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "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
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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"`
|
||||||
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
|
# 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\""
|
||||||
|
fi
|
||||||
|
i=$((i+1))
|
||||||
|
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"
|
||||||
|
|
||||||
|
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||||
|
if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
84
gradlew.bat
vendored
Normal file
84
gradlew.bat
vendored
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
@if "%DEBUG%" == "" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@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=
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto init
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:init
|
||||||
|
@rem Get command-line arguments, handling Windows variants
|
||||||
|
|
||||||
|
if not "%OS%" == "Windows_NT" goto win9xME_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=%*
|
||||||
|
|
||||||
|
: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%
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if "%ERRORLEVEL%"=="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
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
28
settings.gradle
Normal file
28
settings.gradle
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
|
||||||
|
maven {
|
||||||
|
name = "Forge"
|
||||||
|
url = "https://maven.minecraftforge.net"
|
||||||
|
}
|
||||||
|
|
||||||
|
maven {
|
||||||
|
name = "Jitpack"
|
||||||
|
url = "https://jitpack.io/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolutionStrategy {
|
||||||
|
eachPlugin {
|
||||||
|
if (requested.id.id == "net.minecraftforge.gradle.forge") {
|
||||||
|
useModule("com.github.realfork:ForgeGradle:${requested.version}")
|
||||||
|
}
|
||||||
|
if (requested.id.id == "org.spongepowered.mixin") {
|
||||||
|
useModule("com.github.xcfrg:MixinGradle:${requested.version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = "Lilase"
|
101
src/main/java/me/night0721/lilase/Main.java
Normal file
101
src/main/java/me/night0721/lilase/Main.java
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
package me.night0721.lilase;
|
||||||
|
|
||||||
|
import com.mojang.realmsclient.gui.ChatFormatting;
|
||||||
|
import me.night0721.lilase.events.PacketReceivedEvent;
|
||||||
|
import me.night0721.lilase.utils.Utils;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.network.play.client.C0DPacketCloseWindow;
|
||||||
|
import net.minecraft.network.play.server.S2DPacketOpenWindow;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
import net.minecraftforge.client.event.ClientChatReceivedEvent;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
@Mod(modid = Main.MODID, name = Main.MOD_NAME, version = Main.VERSION, acceptedMinecraftVersions="[1.8.9]")
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static final String MOD_NAME = "Lilase";
|
||||||
|
public static final String MODID = "Lilase";
|
||||||
|
public static final String VERSION = "1.0.0";
|
||||||
|
|
||||||
|
static int tickAmount;
|
||||||
|
static Minecraft mc = Minecraft.getMinecraft();
|
||||||
|
static KeyBinding[] keyBindings = new KeyBinding[2];
|
||||||
|
static ArrayList<Block> interactables = new ArrayList<>(Arrays.asList(Blocks.acacia_door, Blocks.anvil, Blocks.beacon, Blocks.bed, Blocks.birch_door, Blocks.brewing_stand, Blocks.command_block, Blocks.crafting_table, Blocks.chest, Blocks.dark_oak_door,
|
||||||
|
Blocks.daylight_detector, Blocks.daylight_detector_inverted, Blocks.dispenser, Blocks.dropper, Blocks.enchanting_table, Blocks.ender_chest, Blocks.furnace, Blocks.hopper, Blocks.jungle_door, Blocks.lever,
|
||||||
|
Blocks.noteblock, Blocks.powered_comparator, Blocks.unpowered_comparator, Blocks.powered_repeater, Blocks.unpowered_repeater, Blocks.standing_sign, Blocks.wall_sign, Blocks.trapdoor, Blocks.trapped_chest, Blocks.wooden_button,
|
||||||
|
Blocks.stone_button, Blocks.oak_door, Blocks.skull));
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void init(FMLInitializationEvent event) {
|
||||||
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
|
|
||||||
|
keyBindings[0] = new KeyBinding("Ghost Block Bind", Keyboard.KEY_G, "Lilase");
|
||||||
|
keyBindings[1] = new KeyBinding("Hub", Keyboard.KEY_DIVIDE, "Lilase");
|
||||||
|
|
||||||
|
for (KeyBinding keyBinding : keyBindings) {
|
||||||
|
ClientRegistry.registerKeyBinding(keyBinding);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onTick(TickEvent.ClientTickEvent event) {
|
||||||
|
if (mc.thePlayer == null || event.phase != TickEvent.Phase.START) return;
|
||||||
|
tickAmount++;
|
||||||
|
|
||||||
|
if (keyBindings[0].isKeyDown()) {
|
||||||
|
if (mc.objectMouseOver.getBlockPos() == null) return;
|
||||||
|
Block block = mc.theWorld.getBlockState(mc.objectMouseOver.getBlockPos()).getBlock();
|
||||||
|
if (!interactables.contains(block)) {
|
||||||
|
mc.theWorld.setBlockToAir(mc.objectMouseOver.getBlockPos());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (keyBindings[1].isKeyDown()) {
|
||||||
|
mc.thePlayer.sendChatMessage("/hub");
|
||||||
|
}
|
||||||
|
if (tickAmount % 20 == 0) {
|
||||||
|
Utils.checkForDungeon();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onChat(ClientChatReceivedEvent event) {
|
||||||
|
String message = event.message.getUnformattedText();
|
||||||
|
if (!message.contains(":")) {
|
||||||
|
if (message.equals("Myrap opened a WITHER door!")) {
|
||||||
|
Utils.addTitle("&aMyr opened a door");
|
||||||
|
} else if (message.equals("SpideySb opened a WITHER door!")) {
|
||||||
|
Utils.addTitle("&aSpidey opened a door");
|
||||||
|
} else if (message.endsWith("Myrap has obtained Wither Key!")) {
|
||||||
|
Utils.addTitle("&aMyr has picked up the key");
|
||||||
|
} else if (message.endsWith("SpideySb has obtained Wither Key!")) {
|
||||||
|
Utils.addTitle("&aSpidey has picked up the key");
|
||||||
|
} else if (message.endsWith("Myrap has obtained Blood Key!")) {
|
||||||
|
Utils.addTitle("&aMyr has picked up the key");
|
||||||
|
} else if (message.endsWith("SpideySb has obtained Blood Key!")) {
|
||||||
|
Utils.addTitle("&aSpidey has picked up the key");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event.message = new ChatComponentText(event.message.getFormattedText().replace("§bCo-op > ", "§zCo-op > "));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onPacket(PacketReceivedEvent event) {
|
||||||
|
if (Utils.inDungeon && event.packet instanceof S2DPacketOpenWindow && ChatFormatting.stripFormatting(((S2DPacketOpenWindow) event.packet).getWindowTitle().getFormattedText()).equals("Chest")) {
|
||||||
|
event.setCanceled(true);
|
||||||
|
mc.getNetHandler().getNetworkManager().sendPacket(new C0DPacketCloseWindow(((S2DPacketOpenWindow) event.packet).getWindowId()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package me.night0721.lilase.events;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
|
|
||||||
|
@Cancelable
|
||||||
|
public class PacketReceivedEvent extends Event {
|
||||||
|
public final Packet<?> packet;
|
||||||
|
public final ChannelHandlerContext context;
|
||||||
|
|
||||||
|
public PacketReceivedEvent(final Packet<?> packet, final ChannelHandlerContext context) {
|
||||||
|
this.packet = packet;
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package me.night0721.lilase.events;
|
||||||
|
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.*;
|
||||||
|
import net.minecraft.network.*;
|
||||||
|
|
||||||
|
@Cancelable
|
||||||
|
public class PacketSentEvent extends Event {
|
||||||
|
public final Packet<?> packet;
|
||||||
|
|
||||||
|
public PacketSentEvent(Packet<?> packet) {
|
||||||
|
this.packet = packet;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
32
src/main/java/me/night0721/lilase/mixins/MixinLoader.java
Normal file
32
src/main/java/me/night0721/lilase/mixins/MixinLoader.java
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package me.night0721.lilase.mixins;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
|
||||||
|
import org.spongepowered.asm.launch.MixinBootstrap;
|
||||||
|
import org.spongepowered.asm.mixin.Mixins;
|
||||||
|
|
||||||
|
public class MixinLoader implements IFMLLoadingPlugin {
|
||||||
|
public MixinLoader() {
|
||||||
|
MixinBootstrap.init();
|
||||||
|
Mixins.addConfiguration("mixins.night0721.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getASMTransformerClass() {
|
||||||
|
return new String[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModContainerClass() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSetupClass() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void injectData(Map<String, Object> data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAccessTransformerClass() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package me.night0721.lilase.mixins;
|
||||||
|
|
||||||
|
import me.night0721.lilase.events.PacketReceivedEvent;
|
||||||
|
import me.night0721.lilase.events.PacketSentEvent;
|
||||||
|
import me.night0721.lilase.utils.PlayerUtils;
|
||||||
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
|
import net.minecraft.network.NetworkManager;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(value={NetworkManager.class})
|
||||||
|
public class MixinNetworkManager {
|
||||||
|
@Inject(method={"channelRead0"}, at={@At(value="HEAD")}, cancellable=true)
|
||||||
|
private void read(ChannelHandlerContext context, Packet<?> packet, CallbackInfo ci) {
|
||||||
|
if (MinecraftForge.EVENT_BUS.post(new PacketReceivedEvent(packet, context))) {
|
||||||
|
ci.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Inject(method={"sendPacket(Lnet/minecraft/network/Packet;)V"}, at={@At(value="HEAD")}, cancellable=true)
|
||||||
|
private void onSendPacket(Packet<?> packet, CallbackInfo ci) {
|
||||||
|
if (!PlayerUtils.packets.contains(packet)) {
|
||||||
|
if (MinecraftForge.EVENT_BUS.post(new PacketSentEvent(packet))) {
|
||||||
|
ci.cancel();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PlayerUtils.packets.remove(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.night0721.lilase.utils;
|
||||||
|
|
||||||
|
public class AuctionHouse {
|
||||||
|
}
|
18
src/main/java/me/night0721/lilase/utils/PlayerUtils.java
Normal file
18
src/main/java/me/night0721/lilase/utils/PlayerUtils.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package me.night0721.lilase.utils;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class PlayerUtils {
|
||||||
|
public static final Minecraft mc = Minecraft.getMinecraft();
|
||||||
|
|
||||||
|
public static final ArrayList<Packet<?>> packets = new ArrayList<>();
|
||||||
|
|
||||||
|
public static void sendPacketWithoutEvent(Packet<?> packet) {
|
||||||
|
packets.add(packet);
|
||||||
|
mc.getNetHandler().getNetworkManager().sendPacket(packet);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
67
src/main/java/me/night0721/lilase/utils/ScoreboardUtils.java
Normal file
67
src/main/java/me/night0721/lilase/utils/ScoreboardUtils.java
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
package me.night0721.lilase.utils;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.scoreboard.Score;
|
||||||
|
import net.minecraft.scoreboard.ScoreObjective;
|
||||||
|
import net.minecraft.scoreboard.ScorePlayerTeam;
|
||||||
|
import net.minecraft.scoreboard.Scoreboard;
|
||||||
|
import net.minecraft.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ScoreboardUtils {
|
||||||
|
|
||||||
|
public static String cleanSB(String scoreboard) {
|
||||||
|
char[] nvString = StringUtils.stripControlCodes(scoreboard).toCharArray();
|
||||||
|
StringBuilder cleaned = new StringBuilder();
|
||||||
|
|
||||||
|
for (char c : nvString) {
|
||||||
|
if ((int) c > 20 && (int) c < 127) {
|
||||||
|
cleaned.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cleaned.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean hasLine(String str) {
|
||||||
|
for (String line : getSidebarLines()) {
|
||||||
|
if (line.contains(str)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> getSidebarLines() {
|
||||||
|
List<String> lines = new ArrayList<>();
|
||||||
|
if (Minecraft.getMinecraft().theWorld == null) return lines;
|
||||||
|
Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard();
|
||||||
|
if (scoreboard == null) return lines;
|
||||||
|
|
||||||
|
ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1);
|
||||||
|
if (objective == null) return lines;
|
||||||
|
|
||||||
|
Collection<Score> scores = scoreboard.getSortedScores(objective);
|
||||||
|
List<Score> list = scores.stream()
|
||||||
|
.filter(input -> input != null && input.getPlayerName() != null && !input.getPlayerName()
|
||||||
|
.startsWith("#"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (list.size() > 15) {
|
||||||
|
scores = Lists.newArrayList(Iterables.skip(list, scores.size() - 15));
|
||||||
|
} else {
|
||||||
|
scores = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Score score : scores) {
|
||||||
|
ScorePlayerTeam team = scoreboard.getPlayersTeam(score.getPlayerName());
|
||||||
|
lines.add(ScorePlayerTeam.formatPlayerName(team, score.getPlayerName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
}
|
44
src/main/java/me/night0721/lilase/utils/Utils.java
Normal file
44
src/main/java/me/night0721/lilase/utils/Utils.java
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package me.night0721.lilase.utils;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.network.play.server.S45PacketTitle;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Utils {
|
||||||
|
|
||||||
|
public static boolean inDungeon;
|
||||||
|
|
||||||
|
public static String translateAlternateColorCodes(String text) {
|
||||||
|
char[] b = text.toCharArray();
|
||||||
|
for (int i = 0; i < b.length - 1; i++) {
|
||||||
|
if (b[i] == '&' && "0123456789AaBbCcDdEeFfKkLlMmNnOoRrZz".indexOf(b[i + 1]) > -1) {
|
||||||
|
b[i] = '§';
|
||||||
|
b[i + 1] = Character.toLowerCase(b[i + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new String(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addTitle(String title) {
|
||||||
|
S45PacketTitle p1 = new S45PacketTitle(0, 20, 0);
|
||||||
|
S45PacketTitle p2 = new S45PacketTitle(S45PacketTitle.Type.TITLE, new ChatComponentText(Utils.translateAlternateColorCodes(title)));
|
||||||
|
Minecraft.getMinecraft().thePlayer.sendQueue.handleTitle(p1);
|
||||||
|
Minecraft.getMinecraft().thePlayer.sendQueue.handleTitle(p2);
|
||||||
|
Minecraft.getMinecraft().thePlayer.playSound("spidey:sbesound", 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkForDungeon() {
|
||||||
|
List<String> scoreboard = ScoreboardUtils.getSidebarLines();
|
||||||
|
for (String s : scoreboard) {
|
||||||
|
String sCleaned = ScoreboardUtils.cleanSB(s);
|
||||||
|
if (sCleaned.contains("The Catacombs") || (sCleaned.contains("Cleared:") && sCleaned.contains("% ("))) {
|
||||||
|
inDungeon = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inDungeon = false;
|
||||||
|
}
|
||||||
|
}
|
11
src/main/resources/mcmod.info
Normal file
11
src/main/resources/mcmod.info
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"modid": "Lilase",
|
||||||
|
"name": "Lilase",
|
||||||
|
"version": "${version}",
|
||||||
|
"mcversion": "${mcversion}",
|
||||||
|
"authorList": ["night0721"],
|
||||||
|
"description": "Lilac",
|
||||||
|
"url": "https://github.com/night0721"
|
||||||
|
}
|
||||||
|
]
|
9
src/main/resources/mixins.night0721.json
Normal file
9
src/main/resources/mixins.night0721.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"package": "me.night0721.lilase.mixins",
|
||||||
|
"refmap": "mixins.night0721.refmap.json",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"mixins": [
|
||||||
|
"MixinNetworkManager"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in a new issue