diff --git a/LICENSE b/LICENSE index f288702..d7912b2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,24 @@ +Copyright (c) 2021 Marc + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see + + + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -631,8 +648,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - Copyright (C) + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -645,14 +662,14 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) + {project} Copyright (C) {year} {fullname} This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -664,11 +681,12 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..d453de7 --- /dev/null +++ b/build.gradle @@ -0,0 +1,77 @@ +plugins { + id 'fabric-loom' version '0.6-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +dependencies { + //to change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. + // You may need to force-disable transitiveness on them. +} + +processResources { + inputs.property "version", project.version + + from(sourceSets.main.resources.srcDirs) { + include "fabric.mod.json" + expand "version": project.version + } + + from(sourceSets.main.resources.srcDirs) { + exclude "fabric.mod.json" + } +} + +// ensure that the encoding is set to UTF-8, no matter what the system default is +// this fixes some edge cases with special characters not displaying correctly +// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html +tasks.withType(JavaCompile) { + options.encoding = "UTF-8" +} + +// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task +// if it is present. +// If you remove this task, sources will not be generated. +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = "sources" + from sourceSets.main.allSource +} + +jar { + from "LICENSE" +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } + + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..402c15e --- /dev/null +++ b/gradle.properties @@ -0,0 +1,14 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G +# Fabric Properties +# check these on https://modmuss50.me/fabric.html +minecraft_version=1.16.5 +yarn_mappings=1.16.5+build.5 +loader_version=0.11.2 +# Mod Properties +mod_version=1.0-SNAPSHOT +maven_group=mod +archives_base_name=marcy-moos-laggy-slaggy +# Dependencies +# check this on https://modmuss50.me/fabric.html +fabric_version=0.25.1+build.416-1.16 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..59d50f9 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or 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. +# + +############################################################################## +## +## 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='"-Xmx64m" "-Xms64m"' + +# 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 or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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=`expr $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 + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@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 + +@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 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 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. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +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. + +goto fail + +: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 %* + +: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 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..5b60df3 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + jcenter() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/mod/marcymooslaggyslaggy/Main.java b/src/main/java/mod/marcymooslaggyslaggy/Main.java new file mode 100644 index 0000000..835793d --- /dev/null +++ b/src/main/java/mod/marcymooslaggyslaggy/Main.java @@ -0,0 +1,13 @@ +package mod.marcymooslaggyslaggy; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.api.ModInitializer; +@Environment(EnvType.SERVER) +public class Main implements ModInitializer { + + @Override + public void onInitialize() { + System.out.println("Setting quite literially nothing up"); + } +} \ No newline at end of file diff --git a/src/main/java/mod/marcymooslaggyslaggy/MarcyMoosLaggySlaggy.java b/src/main/java/mod/marcymooslaggyslaggy/MarcyMoosLaggySlaggy.java new file mode 100644 index 0000000..d7f9921 --- /dev/null +++ b/src/main/java/mod/marcymooslaggyslaggy/MarcyMoosLaggySlaggy.java @@ -0,0 +1,61 @@ +package mod.marcymooslaggyslaggy; + +/* + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.passive.TameableEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.World; + +import java.util.Timer; +import java.util.TimerTask; + +public class MarcyMoosLaggySlaggy { + Timer timer; + + public MarcyMoosLaggySlaggy(int seconds) { + timer = new Timer(); + timer.schedule(new TimedPt(), seconds * 1000); + System.out.println("Timerthread Setup"); + } + + private class TimedPt extends TimerTask { + public void run() { + System.out.format("Timer Task Finished..!%n"); + EntPurge(); + } + } + + private boolean EntPurge() { + ServerWorld instance = (ServerWorld) (Object) this; + for (Entity entity : instance.getEntitiesByType(null, EntityPredicates.VALID_ENTITY)) { + if (entity instanceof TameableEntity) { + TameableEntity tameableEntity = (TameableEntity) entity; + + if (tameableEntity.isTamed() || entity.hasCustomName() || + entity.getType() == EntityType.ARMOR_STAND || entity.getType() == EntityType.ITEM_FRAME || + entity.getType() == EntityType.CHEST_MINECART || entity.getType() == EntityType.HOPPER_MINECART || + entity.getType() == EntityType.MINECART || entity.getType() == EntityType.FURNACE_MINECART || + entity.getType() == EntityType.COMMAND_BLOCK_MINECART || entity.getType() == EntityType.SPAWNER_MINECART || + entity.getType() == EntityType.END_CRYSTAL || entity.getType() == EntityType.PAINTING || + entity.getType() == EntityType.TNT_MINECART || entity.getType() == EntityType.ELDER_GUARDIAN || + entity.getType() == EntityType.ENDER_DRAGON || entity.getType() == EntityType.WITHER || entity.getType() == EntityType.SHULKER || + entity.getType() == EntityType.VILLAGER || ((TameableEntity) entity).isInSittingPose() || entity.getType() == EntityType.BOAT || + ((TameableEntity) entity).isLeashed() || entity instanceof PlayerEntity) + { + return false; + } else { + entity.kill(); + return true; + } + } + } + return false; + } + +} + + */ \ No newline at end of file diff --git a/src/main/java/mod/marcymooslaggyslaggy/client/MarcyMoosLaggySlaggyClient.java b/src/main/java/mod/marcymooslaggyslaggy/client/MarcyMoosLaggySlaggyClient.java new file mode 100644 index 0000000..81ce53f --- /dev/null +++ b/src/main/java/mod/marcymooslaggyslaggy/client/MarcyMoosLaggySlaggyClient.java @@ -0,0 +1,5 @@ +package mod.marcymooslaggyslaggy.client; + +@net.fabricmc.api.Environment(net.fabricmc.api.EnvType.CLIENT) +public class MarcyMoosLaggySlaggyClient { +} diff --git a/src/main/java/mod/marcymooslaggyslaggy/mixin/ServerWorldMixin.java b/src/main/java/mod/marcymooslaggyslaggy/mixin/ServerWorldMixin.java new file mode 100644 index 0000000..2ecfdbc --- /dev/null +++ b/src/main/java/mod/marcymooslaggyslaggy/mixin/ServerWorldMixin.java @@ -0,0 +1,203 @@ +package mod.marcymooslaggyslaggy.mixin; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.passive.TameableEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.MessageType; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.tag.TagManager; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; +import net.minecraft.util.Util; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Iterator; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +@Mixin(ServerWorld.class) +abstract +class Clear { + int tick = 0; + @Shadow protected abstract void tickTime(); + + @Shadow @Final private List players; + + @Shadow @NotNull public abstract MinecraftServer getServer(); + + @Inject(at = @At("TAIL"), method = "tick") + private void Clear(CallbackInfo info) { + tick = (tick + 50); + int secondsPassed = (tick/1000); + + //1 Seconds + if(secondsPassed == 3599) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 1 second!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //2 Seconds + if(secondsPassed == 3598) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 2 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //3 Seconds + if(secondsPassed == 3597) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 3 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //4 Seconds + if(secondsPassed == 3596) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 4 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //5 Seconds + if(secondsPassed == 3595) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 5 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //6 Seconds + if(secondsPassed == 3594) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 6 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //7 Seconds + if(secondsPassed == 3593) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 7 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //8 Seconds + if(secondsPassed == 3592) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 8 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //9 Seconds + if(secondsPassed == 3591) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 9 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + + //10 Seconds + if(secondsPassed == 3590) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 10 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //15 Seconds + if(secondsPassed == 3585) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 15 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //30 Seconds + if(secondsPassed == 3570) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 30 seconds!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //1 Minute + if(secondsPassed == 3540) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 1 minute!"), MessageType.GAME_INFO, Util.NIL_UUID); + + } + + //5 Minutes LEFT + if(secondsPassed == 3300) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 5 minutes!"), MessageType.GAME_INFO, Util.NIL_UUID); + } + + //10 Minutes LEFT + if(secondsPassed == 3000) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 10 minutes!"), MessageType.GAME_INFO, Util.NIL_UUID); + } + + //15 Minutes LEFT + if(secondsPassed == 2700) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 15 minutes!"), MessageType.GAME_INFO, Util.NIL_UUID); + } + + //30 Minutes LEFT + if(secondsPassed == 1800) { + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities will be cleared in 30 minutes!"), MessageType.GAME_INFO, Util.NIL_UUID); + } + + //1 Hour + if(secondsPassed == 3600) { + tick = 0; + secondsPassed = 0; + EntPurge(); + PlayerManager pm = getServer().getPlayerManager(); + pm.broadcastChatMessage(new LiteralText("Entities have been cleared."), MessageType.GAME_INFO, Util.NIL_UUID); + } + } + + private void EntPurge() { + ServerWorld instance = (ServerWorld) (Object) this; + System.out.println(instance.getEntitiesByType(null, EntityPredicates.EXCEPT_CREATIVE_OR_SPECTATOR)); + for (Entity entity : instance.getEntitiesByType(null, EntityPredicates.EXCEPT_CREATIVE_OR_SPECTATOR)) { + + if (entity instanceof TameableEntity) + { + TameableEntity tameableEntity = (TameableEntity) entity; + + if (tameableEntity.isTamed() || tameableEntity.hasCustomName() ||tameableEntity.hasVehicle()) { + } else { + entity.kill(); + } + } + if (entity.hasCustomName() || + entity.getType() == EntityType.ARMOR_STAND || entity.getType() == EntityType.ITEM_FRAME || + entity.getType() == EntityType.CHEST_MINECART || entity.getType() == EntityType.HOPPER_MINECART || + entity.getType() == EntityType.MINECART || entity.getType() == EntityType.FURNACE_MINECART || + entity.getType() == EntityType.COMMAND_BLOCK_MINECART || entity.getType() == EntityType.SPAWNER_MINECART || + entity.getType() == EntityType.END_CRYSTAL || entity.getType() == EntityType.PAINTING || + entity.getType() == EntityType.TNT_MINECART || entity.getType() == EntityType.ELDER_GUARDIAN || + entity.getType() == EntityType.ENDER_DRAGON || entity.getType() == EntityType.WITHER || entity.getType() == EntityType.SHULKER || + entity.getType() == EntityType.VILLAGER || entity.hasVehicle() || entity.getType() == EntityType.BOAT || + entity instanceof PlayerEntity || entity instanceof TameableEntity) + { + + } else { + entity.kill(); + } + } + } + } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..79e245e --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "id": "marcy-moos-laggy-slaggy", + "version": "${version}", + "name": "Marcy Moos Laggy Slaggy", + "description": "Marcy Moo's Laggy Slaggy for OriginCSMP", + "authors": [ + "Marc" + ], + "contact": { + "website": "https://github.com/Diliard", + "repo": "https://github.com/Diliard/MMLS" + }, + "license": "GPL-3.0", + "icon": "assets/marcy-moos-laggy-slaggy/icon.png", + "environment": "server", + "entrypoints": { + "client": [ + "mod.marcymooslaggyslaggy.client.MarcyMoosLaggySlaggyClient" + ], + "main": [ + "mod.marcymooslaggyslaggy.Main" + ] + }, + "mixins": [ + "marcy-moos-laggy-slaggy.mixins.json" + ], + "depends": { + "fabricloader": ">=0.11.2", + "fabric": "*", + "minecraft": "1.16.5" + } +} diff --git a/src/main/resources/marcy-moos-laggy-slaggy.mixins.json b/src/main/resources/marcy-moos-laggy-slaggy.mixins.json new file mode 100644 index 0000000..57cbf74 --- /dev/null +++ b/src/main/resources/marcy-moos-laggy-slaggy.mixins.json @@ -0,0 +1,16 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "mod.marcymooslaggyslaggy.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + ], + "client": [ + ], + "server": [ + "Clear" + ], + "injectors": { + "defaultRequire": 1 + } +}