diff --git a/.gitignore b/.gitignore index 724d452..9c5daa7 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,5 @@ libraries/*.jar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* >>>>>>> 354c5c7d98801e512c3da0913cd1824a9cf4b2cf + +/run \ No newline at end of file diff --git a/.gradle/7.1/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.1/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000..c24a7d1 Binary files /dev/null and b/.gradle/7.1/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/7.1/dependencies-accessors/gc.properties b/.gradle/7.1/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/7.1/executionHistory/executionHistory.bin b/.gradle/7.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000..b372564 Binary files /dev/null and b/.gradle/7.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.1/executionHistory/executionHistory.lock b/.gradle/7.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000..35c04fa Binary files /dev/null and b/.gradle/7.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.1/fileChanges/last-build.bin b/.gradle/7.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/7.1/fileChanges/last-build.bin differ diff --git a/.gradle/7.1/fileHashes/fileHashes.bin b/.gradle/7.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000..0ce0fb8 Binary files /dev/null and b/.gradle/7.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.1/fileHashes/fileHashes.lock b/.gradle/7.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..eb57ca1 Binary files /dev/null and b/.gradle/7.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.1/fileHashes/resourceHashesCache.bin b/.gradle/7.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..7e94d0a Binary files /dev/null and b/.gradle/7.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/7.1/gc.properties b/.gradle/7.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..841a09a Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..382e4d9 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Fri Jun 24 19:31:05 CEST 2022 +gradle.version=7.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..89bf868 Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock new file mode 100644 index 0000000..057e535 Binary files /dev/null and b/.gradle/checksums/checksums.lock differ diff --git a/.gradle/checksums/md5-checksums.bin b/.gradle/checksums/md5-checksums.bin new file mode 100644 index 0000000..66cba72 Binary files /dev/null and b/.gradle/checksums/md5-checksums.bin differ diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin new file mode 100644 index 0000000..89a276e Binary files /dev/null and b/.gradle/checksums/sha1-checksums.bin differ diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/TacoSpigot-API/pom.xml b/TacoSpigot-API/pom.xml deleted file mode 100644 index a5cd46c..0000000 --- a/TacoSpigot-API/pom.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - 4.0.0 - - - net.techcable.tacospigot - parent - dev-SNAPSHOT - - - net.techcable.tacospigot - api - 1.8.8-R0.2-SNAPSHOT - jar - - TacoSpigot-API - https://github.com/TacoSpigot - An enhanced plugin API for Minecraft servers. - - - - -Xdoclint:none - 1.8 - 1.8 - UTF-8 - - - - - - destroystokyo-releases - https://repo.destroystokyo.com/content/repositories/releases/ - - - destroystokyo-snapshots - https://repo.destroystokyo.com/content/repositories/snapshots/ - - - - - - - spigotmc-public - https://hub.spigotmc.org/nexus/content/groups/public/ - - - - - - net.sf.trove4j - trove4j - 3.0.3 - - provided - - - commons-lang - commons-lang - 2.6 - compile - - - com.googlecode.json-simple - json-simple - 1.1.1 - jar - compile - - - - com.google.guava - guava - 17.0 - compile - - - - com.google.code.gson - gson - 2.9.0 - - - org.avaje - ebean - 2.8.1 - compile - - - org.yaml - snakeyaml - 1.30 - compile - - - net.md-5 - bungeecord-chat - 1.8-SNAPSHOT - jar - compile - - - org.projectlombok - lombok - 1.18.22 - provided - - - - net.openhft - affinity - 3.20.0 - compile - - - - - junit - junit - 4.12 - test - - - org.hamcrest - hamcrest-library - 1.3 - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 3.1 - - - true - - - - - org.codehaus.plexus - plexus-compiler-eclipse - 2.5.0-spigotmc - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.3 - - - package - - shade - - - - - - false - - true - - - - - diff --git a/TacoSpigot-Server/deprecation-mappings.at b/TacoSpigot-Server/deprecation-mappings.at deleted file mode 100644 index 5858b48..0000000 --- a/TacoSpigot-Server/deprecation-mappings.at +++ /dev/null @@ -1,62 +0,0 @@ -public+synthetic org/bukkit/Bukkit/getOnlinePlayers()[Lorg/bukkit/entity/Player; -public+synthetic org/bukkit/Server/getOnlinePlayers()[Lorg/bukkit/entity/Player; - -public+synthetic org/bukkit/entity/Damageable/damage(I)V -public+synthetic org/bukkit/entity/Damageable/damage(ILorg/bukkit/entity/Entity;)V -public+synthetic org/bukkit/entity/Damageable/getHealth()I -public+synthetic org/bukkit/entity/Damageable/getMaxHealth()I -public+synthetic org/bukkit/entity/Damageable/setHealth(I)V -public+synthetic org/bukkit/entity/Damageable/setMaxHealth(I)V - -public+synthetic org/bukkit/entity/LivingEntity/getLastDamage()I -public+synthetic org/bukkit/entity/LivingEntity/setLastDamage(I)V - -public+synthetic org/bukkit/entity/Minecart/getDamage()I -public+synthetic org/bukkit/entity/Minecart/setDamage(I)V - -public+synthetic org/bukkit/entity/Projectile/getShooter()Lorg/bukkit/entity/LivingEntity; -public+synthetic org/bukkit/entity/Projectile/setShooter(Lorg/bukkit/entity/LivingEntity;)V - -public+synthetic org/bukkit/event/entity/EntityDamageEvent/getDamage()I -public+synthetic org/bukkit/event/entity/EntityDamageEvent/setDamage(I)V - -public+synthetic org/bukkit/event/entity/EntityRegainHealthEvent/getAmount()I -public+synthetic org/bukkit/event/entity/EntityRegainHealthEvent/setAmount(I)V - -public+synthetic org/bukkit/event/vehicle/VehicleDamageEvent/getDamage()I -public+synthetic org/bukkit/event/vehicle/VehicleDamageEvent/setDamage(I)V - -# CraftBukkit -public+synthetic org/bukkit/craftbukkit/v1_8_R3/CraftServer/getOnlinePlayers()[Lorg/bukkit/entity/Player; - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftArrow/getShooter()Lorg/bukkit/entity/LivingEntity; -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftArrow/setShooter(Lorg/bukkit/entity/LivingEntity;)V - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/damage(I)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/damage(ILorg/bukkit/entity/Entity;)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/getHealth()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/getMaxHealth()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/setHealth(I)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftEnderDragonPart/setMaxHealth(I)V - - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftFireball/getShooter()Lorg/bukkit/entity/LivingEntity; -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftFireball/setShooter(Lorg/bukkit/entity/LivingEntity;)V - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftFish/getShooter()Lorg/bukkit/entity/LivingEntity; -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftFish/setShooter(Lorg/bukkit/entity/LivingEntity;)V - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/damage(I)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/damage(ILorg/bukkit/entity/Entity;)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/getHealth()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/getMaxHealth()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/setHealth(I)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/setMaxHealth(I)V -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/getLastDamage()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftLivingEntity/setLastDamage(I)V - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftMinecart/getDamage()I -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftMinecart/setDamage(I)V - -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftProjectile/getShooter()Lorg/bukkit/entity/LivingEntity; -public+synthetic org/bukkit/craftbukkit/v1_8_R3/entity/CraftProjectile/setShooter(Lorg/bukkit/entity/LivingEntity;)V diff --git a/TacoSpigot-Server/deprecation-mappings.csrg b/TacoSpigot-Server/deprecation-mappings.csrg deleted file mode 100644 index 48bc504..0000000 --- a/TacoSpigot-Server/deprecation-mappings.csrg +++ /dev/null @@ -1,27 +0,0 @@ -org/bukkit/Bukkit _INVALID_getOnlinePlayers ()[Lorg/bukkit/entity/Player; getOnlinePlayers -org/bukkit/Server _INVALID_getOnlinePlayers ()[Lorg/bukkit/entity/Player; getOnlinePlayers - -org/bukkit/entity/Damageable _INVALID_damage (I)V damage -org/bukkit/entity/Damageable _INVALID_damage (ILorg/bukkit/entity/Entity;)V damage -org/bukkit/entity/Damageable _INVALID_getHealth ()I getHealth -org/bukkit/entity/Damageable _INVALID_getMaxHealth ()I getMaxHealth -org/bukkit/entity/Damageable _INVALID_setHealth (I)V setHealth -org/bukkit/entity/Damageable _INVALID_setMaxHealth (I)V setMaxHealth - -org/bukkit/entity/LivingEntity _INVALID_getLastDamage ()I getLastDamage -org/bukkit/entity/LivingEntity _INVALID_setLastDamage (I)V setLastDamage - -org/bukkit/entity/Minecart _INVALID_getDamage ()I getDamage -org/bukkit/entity/Minecart _INVALID_setDamage (I)V setDamage - -org/bukkit/entity/Projectile _INVALID_getShooter ()Lorg/bukkit/entity/LivingEntity; getShooter -org/bukkit/entity/Projectile _INVALID_setShooter (Lorg/bukkit/entity/LivingEntity;)V setShooter - -org/bukkit/event/entity/EntityDamageEvent _INVALID_getDamage ()I getDamage -org/bukkit/event/entity/EntityDamageEvent _INVALID_setDamage (I)V setDamage - -org/bukkit/event/entity/EntityRegainHealthEvent _INVALID_getAmount ()I getAmount -org/bukkit/event/entity/EntityRegainHealthEvent _INVALID_setAmount (I)V setAmount - -org/bukkit/event/vehicle/VehicleDamageEvent _INVALID_getDamage ()I getDamage -org/bukkit/event/vehicle/VehicleDamageEvent _INVALID_setDamage (I)V setDamage diff --git a/TacoSpigot-Server/pom.xml b/TacoSpigot-Server/pom.xml deleted file mode 100644 index 9b14d20..0000000 --- a/TacoSpigot-Server/pom.xml +++ /dev/null @@ -1,306 +0,0 @@ - - 4.0.0 - net.techcable.tacospigot - server - jar - 1.8.8-R0.2-SNAPSHOT - TacoSpigot - https://github.com/TacoSpigot - - - UTF-8 - unknown - 4.11 - 1.8.8 - 1_8_R3 - git-Bukkit- - - - 1.8 - 1.8 - - - - net.techcable.tacospigot - parent - dev-SNAPSHOT - ../pom.xml - - - - - org.projectlombok - lombok - 1.18.22 - provided - - - io.netty - netty-all - 4.1.78.Final - compile - - - org.slf4j - slf4j-api - 1.7.32 - compile - - - net.sf.trove4j - trove4j - 3.0.3 - - - it.unimi.dsi - fastutil - 7.0.12 - - - net.techcable.tacospigot - api - ${project.version} - jar - compile - - - org.spigotmc - minecraft-server - ${minecraft.version}-SNAPSHOT - jar - compile - - - net.sf.jopt-simple - jopt-simple - 3.2 - jar - compile - - - jline - jline - 2.12 - jar - compile - - - org.xerial - sqlite-jdbc - 3.7.2 - jar - compile - - - mysql - mysql-connector-java - 8.0.29 - jar - compile - - - - junit - junit - ${junit.version} - test - - - org.mockito - mockito-core - 1.10.19 - - - it.unimi.dsi - fastutil - 8.1.0 - - - net.jafama - jafama - 2.3.2 - compile - - - org.hamcrest - hamcrest-library - 1.3 - test - - - com.velocitypowered - velocity-native - 1.1.0-SNAPSHOT - - - org.lz4 - lz4-java - 1.8.0 - - - com.github.luben - zstd-jni - 1.5.2-3 - - - org.apache.logging.log4j - log4j-core - 2.17.2 - compile - - - - - - - spigotmc-public - https://hub.spigotmc.org/nexus/content/groups/public/ - - - - destroystokyo - https://papermc.io/repo/repository/maven-public/ - - - - - - install - - - org.apache.maven.plugins - maven-jar-plugin - 2.5 - - true - - - org.bukkit.craftbukkit.Main - CraftBukkit - RELEASE - Bukkit Team - Bukkit - ${api.version} - Bukkit Team - - - - net/bukkit/ - - true - - - - com/bukkit/ - - true - - - - org/bukkit/ - - true - - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.3 - - - package - - shade - - - ${project.build.directory}/dependency-reduced-pom.xml - - false - - - joptsimple - org.bukkit.craftbukkit.libs.joptsimple - - - jline - org.bukkit.craftbukkit.libs.jline - - - org.ibex - org.bukkit.craftbukkit.libs.org.ibex - - - org.gjt - org.bukkit.craftbukkit.libs.org.gjt - - - org.bukkit.craftbukkit - org.bukkit.craftbukkit.v${minecraft_version} - - org.bukkit.craftbukkit.Main* - - - - net.minecraft.server - net.minecraft.server.v${minecraft_version} - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 3.8.1 - - - true - - - - - org.codehaus.plexus - plexus-compiler-eclipse - 2.5.0-spigotmc - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.18 - - ${basedir}/target/test-server - - org/bukkit/craftbukkit/inventory/ItemStack*Test.java - - - - - - diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java b/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java deleted file mode 100644 index 1526dd0..0000000 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.minecraft.server; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.ByteToMessageDecoder; -import io.netty.handler.codec.CorruptedFrameException; -import java.util.List; - -public class PacketSplitter extends ByteToMessageDecoder { - - private final byte[] lenBuf = new byte[3]; // Paper - - public PacketSplitter() { - } - - protected void decode(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf, List list) throws Exception { - // Paper start - if channel is not active just discard the packet - if (!channelhandlercontext.channel().isActive()) { - bytebuf.skipBytes(bytebuf.readableBytes()); - return; - } - bytebuf.markReaderIndex(); - - // Paper start - reuse temporary length buffer - byte[] abyte = lenBuf; - java.util.Arrays.fill(abyte, (byte) 0); - // Paper end - - for(int var5 = 0; var5 < abyte.length; ++var5) { - if (!bytebuf.isReadable()) { - bytebuf.resetReaderIndex(); - return; - } - - abyte[var5] = bytebuf.readByte(); - if (abyte[var5] >= 0) { - PacketDataSerializer var6 = new PacketDataSerializer(Unpooled.wrappedBuffer(abyte)); - - try { - int var7 = var6.e(); - if (bytebuf.readableBytes() < var7) { - bytebuf.resetReaderIndex(); - return; - } - - list.add(bytebuf.readBytes(var7)); - } finally { - var6.release(); - } - - return; - } - } - - throw new CorruptedFrameException("length wider than 21-bit"); - } -} \ No newline at end of file diff --git a/TacoSpigot-API/.gitignore b/eSpigot-API/.gitignore similarity index 100% rename from TacoSpigot-API/.gitignore rename to eSpigot-API/.gitignore diff --git a/eSpigot-API/build.gradle.kts b/eSpigot-API/build.gradle.kts new file mode 100644 index 0000000..a1175d0 --- /dev/null +++ b/eSpigot-API/build.gradle.kts @@ -0,0 +1,80 @@ +plugins { + java + `java-library` +} + +repositories { + mavenCentral() + gradlePluginPortal() + maven(url = "https://libraries.minecraft.net") + maven(url = "https://oss.sonatype.org/content/groups/public") + maven(url = "https://hub.spigotmc.org/nexus/content/groups/public") +} + +java { + withSourcesJar() + withJavadocJar() +} + +group = "com.elevatemc.espigot" +version = "1.8.8-R0.1-SNAPSHOT" + +dependencies { + java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + api("commons-lang:commons-lang:2.6") + api("org.avaje:ebean:2.8.1") + api("com.googlecode.json-simple:json-simple:1.1.1") + api("org.yaml:snakeyaml:1.30") + api("net.md-5:bungeecord-chat:1.8-SNAPSHOT") + compileOnlyApi("net.sf.trove4j:trove4j:3.0.3") // provided by server + + // bundled with Minecraft, should be kept in sync + api("com.google.guava:guava:17.0") + api("com.google.code.gson:gson:2.2.4") + + // testing + testImplementation("junit:junit:4.12") + testImplementation("org.hamcrest:hamcrest-library:1.3") + testImplementation("net.sf.trove4j:trove4j:3.0.3") // required by tests +} + +tasks { + val generateApiVersioningFile by registering { + inputs.property("version", project.version) + val pomProps = layout.buildDirectory.file("pom.properties") + outputs.file(pomProps) + doLast { + pomProps.get().asFile.writeText("version=${project.version}") + } + } + + jar { + from(generateApiVersioningFile.map { it.outputs.files.singleFile }) { + into("META-INF/maven/${project.group}/${project.name.toLowerCase()}") + } + + manifest { + attributes( + "Automatic-Module-Name" to "org.bukkit" + ) + } + } + + withType { + (options as StandardJavadocDocletOptions).let { + // hide warnings + it.addStringOption("Xdoclint:none", "-quiet") + + it.links( + "https://guava.dev/releases/21.0/api/docs/", + "https://javadoc.io/doc/org.yaml/snakeyaml/1.28/", + "https://javadoc.io/doc/org.jetbrains/annotations-java5/21.0.1/", + "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/", + ) + } + } +} \ No newline at end of file diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/FullServerTickHandler.java b/eSpigot-API/src/main/java/co/aikar/timings/FullServerTickHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/FullServerTickHandler.java rename to eSpigot-API/src/main/java/co/aikar/timings/FullServerTickHandler.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/NullTimingHandler.java b/eSpigot-API/src/main/java/co/aikar/timings/NullTimingHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/NullTimingHandler.java rename to eSpigot-API/src/main/java/co/aikar/timings/NullTimingHandler.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimedEventExecutor.java b/eSpigot-API/src/main/java/co/aikar/timings/TimedEventExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimedEventExecutor.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimedEventExecutor.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/Timing.java b/eSpigot-API/src/main/java/co/aikar/timings/Timing.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/Timing.java rename to eSpigot-API/src/main/java/co/aikar/timings/Timing.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingData.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingData.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingData.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingData.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingHandler.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingHandler.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingHandler.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingHistory.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingHistory.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingHistory.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingHistory.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingHistoryEntry.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingHistoryEntry.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingHistoryEntry.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingHistoryEntry.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingIdentifier.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingIdentifier.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingIdentifier.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingIdentifier.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/Timings.java b/eSpigot-API/src/main/java/co/aikar/timings/Timings.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/Timings.java rename to eSpigot-API/src/main/java/co/aikar/timings/Timings.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingsCommand.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingsCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingsCommand.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingsCommand.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingsExport.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingsExport.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingsExport.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingsExport.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/TimingsManager.java b/eSpigot-API/src/main/java/co/aikar/timings/TimingsManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/TimingsManager.java rename to eSpigot-API/src/main/java/co/aikar/timings/TimingsManager.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/timings/UnsafeTimingHandler.java b/eSpigot-API/src/main/java/co/aikar/timings/UnsafeTimingHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/timings/UnsafeTimingHandler.java rename to eSpigot-API/src/main/java/co/aikar/timings/UnsafeTimingHandler.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/util/JSONUtil.java b/eSpigot-API/src/main/java/co/aikar/util/JSONUtil.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/util/JSONUtil.java rename to eSpigot-API/src/main/java/co/aikar/util/JSONUtil.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/util/LoadingIntMap.java b/eSpigot-API/src/main/java/co/aikar/util/LoadingIntMap.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/util/LoadingIntMap.java rename to eSpigot-API/src/main/java/co/aikar/util/LoadingIntMap.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/util/LoadingMap.java b/eSpigot-API/src/main/java/co/aikar/util/LoadingMap.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/util/LoadingMap.java rename to eSpigot-API/src/main/java/co/aikar/util/LoadingMap.java diff --git a/TacoSpigot-API/src/main/java/co/aikar/util/MRUMapCache.java b/eSpigot-API/src/main/java/co/aikar/util/MRUMapCache.java similarity index 100% rename from TacoSpigot-API/src/main/java/co/aikar/util/MRUMapCache.java rename to eSpigot-API/src/main/java/co/aikar/util/MRUMapCache.java diff --git a/TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ArrowCollideEvent.java b/eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ArrowCollideEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ArrowCollideEvent.java rename to eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ArrowCollideEvent.java diff --git a/TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ChunkSnapshot.java b/eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ChunkSnapshot.java similarity index 100% rename from TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ChunkSnapshot.java rename to eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/ChunkSnapshot.java diff --git a/TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/SpawnerPreSpawnEvent.java b/eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/SpawnerPreSpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/SpawnerPreSpawnEvent.java rename to eSpigot-API/src/main/java/net/techcable/tacospigot/event/entity/SpawnerPreSpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Achievement.java b/eSpigot-API/src/main/java/org/bukkit/Achievement.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Achievement.java rename to eSpigot-API/src/main/java/org/bukkit/Achievement.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Art.java b/eSpigot-API/src/main/java/org/bukkit/Art.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Art.java rename to eSpigot-API/src/main/java/org/bukkit/Art.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/BanEntry.java b/eSpigot-API/src/main/java/org/bukkit/BanEntry.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/BanEntry.java rename to eSpigot-API/src/main/java/org/bukkit/BanEntry.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/BanList.java b/eSpigot-API/src/main/java/org/bukkit/BanList.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/BanList.java rename to eSpigot-API/src/main/java/org/bukkit/BanList.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/BlockChangeDelegate.java b/eSpigot-API/src/main/java/org/bukkit/BlockChangeDelegate.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/BlockChangeDelegate.java rename to eSpigot-API/src/main/java/org/bukkit/BlockChangeDelegate.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Bukkit.java b/eSpigot-API/src/main/java/org/bukkit/Bukkit.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Bukkit.java rename to eSpigot-API/src/main/java/org/bukkit/Bukkit.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/ChatColor.java b/eSpigot-API/src/main/java/org/bukkit/ChatColor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/ChatColor.java rename to eSpigot-API/src/main/java/org/bukkit/ChatColor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Chunk.java b/eSpigot-API/src/main/java/org/bukkit/Chunk.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Chunk.java rename to eSpigot-API/src/main/java/org/bukkit/Chunk.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/ChunkSnapshot.java b/eSpigot-API/src/main/java/org/bukkit/ChunkSnapshot.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/ChunkSnapshot.java rename to eSpigot-API/src/main/java/org/bukkit/ChunkSnapshot.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/CoalType.java b/eSpigot-API/src/main/java/org/bukkit/CoalType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/CoalType.java rename to eSpigot-API/src/main/java/org/bukkit/CoalType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Color.java b/eSpigot-API/src/main/java/org/bukkit/Color.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Color.java rename to eSpigot-API/src/main/java/org/bukkit/Color.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/CropState.java b/eSpigot-API/src/main/java/org/bukkit/CropState.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/CropState.java rename to eSpigot-API/src/main/java/org/bukkit/CropState.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Difficulty.java b/eSpigot-API/src/main/java/org/bukkit/Difficulty.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Difficulty.java rename to eSpigot-API/src/main/java/org/bukkit/Difficulty.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/DyeColor.java b/eSpigot-API/src/main/java/org/bukkit/DyeColor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/DyeColor.java rename to eSpigot-API/src/main/java/org/bukkit/DyeColor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Effect.java b/eSpigot-API/src/main/java/org/bukkit/Effect.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Effect.java rename to eSpigot-API/src/main/java/org/bukkit/Effect.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/EntityEffect.java b/eSpigot-API/src/main/java/org/bukkit/EntityEffect.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/EntityEffect.java rename to eSpigot-API/src/main/java/org/bukkit/EntityEffect.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/FireworkEffect.java b/eSpigot-API/src/main/java/org/bukkit/FireworkEffect.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/FireworkEffect.java rename to eSpigot-API/src/main/java/org/bukkit/FireworkEffect.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/GameMode.java b/eSpigot-API/src/main/java/org/bukkit/GameMode.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/GameMode.java rename to eSpigot-API/src/main/java/org/bukkit/GameMode.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/GrassSpecies.java b/eSpigot-API/src/main/java/org/bukkit/GrassSpecies.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/GrassSpecies.java rename to eSpigot-API/src/main/java/org/bukkit/GrassSpecies.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Instrument.java b/eSpigot-API/src/main/java/org/bukkit/Instrument.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Instrument.java rename to eSpigot-API/src/main/java/org/bukkit/Instrument.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Location.java b/eSpigot-API/src/main/java/org/bukkit/Location.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Location.java rename to eSpigot-API/src/main/java/org/bukkit/Location.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Material.java b/eSpigot-API/src/main/java/org/bukkit/Material.java similarity index 98% rename from TacoSpigot-API/src/main/java/org/bukkit/Material.java rename to eSpigot-API/src/main/java/org/bukkit/Material.java index 80529dc..18087e0 100644 --- a/TacoSpigot-API/src/main/java/org/bukkit/Material.java +++ b/eSpigot-API/src/main/java/org/bukkit/Material.java @@ -461,7 +461,7 @@ public enum Material { private final Constructor ctor; private static Material[] byId = new Material[383]; private final static Map BY_NAME = Maps.newHashMap(); - private final int maxStack; + private int maxStack; // PandaSpigot - Make non-final private final short durability; private Material(final int id) { @@ -516,6 +516,21 @@ public enum Material { return maxStack; } + // PandaSpigot start - Add setMaxStackSize() + /** + * Sets the maximum amount of this material that can be held in a stack. + *

+ * This method is for internal use only. Use at your own risk. + * + * @param maxStack The new maximum stack size for this material. + * @deprecated For internal use only. + */ + @Deprecated + public void setMaxStackSize(int maxStack) { + this.maxStack = maxStack; + } + // PandaSpigot end + /** * Gets the maximum durability of this material * diff --git a/TacoSpigot-API/src/main/java/org/bukkit/NetherWartsState.java b/eSpigot-API/src/main/java/org/bukkit/NetherWartsState.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/NetherWartsState.java rename to eSpigot-API/src/main/java/org/bukkit/NetherWartsState.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Note.java b/eSpigot-API/src/main/java/org/bukkit/Note.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Note.java rename to eSpigot-API/src/main/java/org/bukkit/Note.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java b/eSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java rename to eSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/PortalType.java b/eSpigot-API/src/main/java/org/bukkit/PortalType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/PortalType.java rename to eSpigot-API/src/main/java/org/bukkit/PortalType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Rotation.java b/eSpigot-API/src/main/java/org/bukkit/Rotation.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Rotation.java rename to eSpigot-API/src/main/java/org/bukkit/Rotation.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/SandstoneType.java b/eSpigot-API/src/main/java/org/bukkit/SandstoneType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/SandstoneType.java rename to eSpigot-API/src/main/java/org/bukkit/SandstoneType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Server.java b/eSpigot-API/src/main/java/org/bukkit/Server.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Server.java rename to eSpigot-API/src/main/java/org/bukkit/Server.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/SkullType.java b/eSpigot-API/src/main/java/org/bukkit/SkullType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/SkullType.java rename to eSpigot-API/src/main/java/org/bukkit/SkullType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Sound.java b/eSpigot-API/src/main/java/org/bukkit/Sound.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Sound.java rename to eSpigot-API/src/main/java/org/bukkit/Sound.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Statistic.java b/eSpigot-API/src/main/java/org/bukkit/Statistic.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Statistic.java rename to eSpigot-API/src/main/java/org/bukkit/Statistic.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TravelAgent.java b/eSpigot-API/src/main/java/org/bukkit/TravelAgent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/TravelAgent.java rename to eSpigot-API/src/main/java/org/bukkit/TravelAgent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TreeSpecies.java b/eSpigot-API/src/main/java/org/bukkit/TreeSpecies.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/TreeSpecies.java rename to eSpigot-API/src/main/java/org/bukkit/TreeSpecies.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TreeType.java b/eSpigot-API/src/main/java/org/bukkit/TreeType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/TreeType.java rename to eSpigot-API/src/main/java/org/bukkit/TreeType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/UnsafeValues.java b/eSpigot-API/src/main/java/org/bukkit/UnsafeValues.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/UnsafeValues.java rename to eSpigot-API/src/main/java/org/bukkit/UnsafeValues.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Utility.java b/eSpigot-API/src/main/java/org/bukkit/Utility.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Utility.java rename to eSpigot-API/src/main/java/org/bukkit/Utility.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Warning.java b/eSpigot-API/src/main/java/org/bukkit/Warning.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/Warning.java rename to eSpigot-API/src/main/java/org/bukkit/Warning.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WeatherType.java b/eSpigot-API/src/main/java/org/bukkit/WeatherType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/WeatherType.java rename to eSpigot-API/src/main/java/org/bukkit/WeatherType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/World.java b/eSpigot-API/src/main/java/org/bukkit/World.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/World.java rename to eSpigot-API/src/main/java/org/bukkit/World.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldBorder.java b/eSpigot-API/src/main/java/org/bukkit/WorldBorder.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/WorldBorder.java rename to eSpigot-API/src/main/java/org/bukkit/WorldBorder.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldCreator.java b/eSpigot-API/src/main/java/org/bukkit/WorldCreator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/WorldCreator.java rename to eSpigot-API/src/main/java/org/bukkit/WorldCreator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldType.java b/eSpigot-API/src/main/java/org/bukkit/WorldType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/WorldType.java rename to eSpigot-API/src/main/java/org/bukkit/WorldType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Banner.java b/eSpigot-API/src/main/java/org/bukkit/block/Banner.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Banner.java rename to eSpigot-API/src/main/java/org/bukkit/block/Banner.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Beacon.java b/eSpigot-API/src/main/java/org/bukkit/block/Beacon.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Beacon.java rename to eSpigot-API/src/main/java/org/bukkit/block/Beacon.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Biome.java b/eSpigot-API/src/main/java/org/bukkit/block/Biome.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Biome.java rename to eSpigot-API/src/main/java/org/bukkit/block/Biome.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Block.java b/eSpigot-API/src/main/java/org/bukkit/block/Block.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Block.java rename to eSpigot-API/src/main/java/org/bukkit/block/Block.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BlockFace.java b/eSpigot-API/src/main/java/org/bukkit/block/BlockFace.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/BlockFace.java rename to eSpigot-API/src/main/java/org/bukkit/block/BlockFace.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BlockState.java b/eSpigot-API/src/main/java/org/bukkit/block/BlockState.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/BlockState.java rename to eSpigot-API/src/main/java/org/bukkit/block/BlockState.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java b/eSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java rename to eSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Chest.java b/eSpigot-API/src/main/java/org/bukkit/block/Chest.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Chest.java rename to eSpigot-API/src/main/java/org/bukkit/block/Chest.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java rename to eSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java rename to eSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java b/eSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java rename to eSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Dispenser.java b/eSpigot-API/src/main/java/org/bukkit/block/Dispenser.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Dispenser.java rename to eSpigot-API/src/main/java/org/bukkit/block/Dispenser.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java b/eSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java rename to eSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Dropper.java b/eSpigot-API/src/main/java/org/bukkit/block/Dropper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Dropper.java rename to eSpigot-API/src/main/java/org/bukkit/block/Dropper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Furnace.java b/eSpigot-API/src/main/java/org/bukkit/block/Furnace.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Furnace.java rename to eSpigot-API/src/main/java/org/bukkit/block/Furnace.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Hopper.java b/eSpigot-API/src/main/java/org/bukkit/block/Hopper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Hopper.java rename to eSpigot-API/src/main/java/org/bukkit/block/Hopper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Jukebox.java b/eSpigot-API/src/main/java/org/bukkit/block/Jukebox.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Jukebox.java rename to eSpigot-API/src/main/java/org/bukkit/block/Jukebox.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java rename to eSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java b/eSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java rename to eSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Sign.java b/eSpigot-API/src/main/java/org/bukkit/block/Sign.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Sign.java rename to eSpigot-API/src/main/java/org/bukkit/block/Sign.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Skull.java b/eSpigot-API/src/main/java/org/bukkit/block/Skull.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/Skull.java rename to eSpigot-API/src/main/java/org/bukkit/block/Skull.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java b/eSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java rename to eSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java b/eSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java rename to eSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java rename to eSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/Command.java b/eSpigot-API/src/main/java/org/bukkit/command/Command.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/Command.java rename to eSpigot-API/src/main/java/org/bukkit/command/Command.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandException.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandException.java rename to eSpigot-API/src/main/java/org/bukkit/command/CommandException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java rename to eSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandMap.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandMap.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandMap.java rename to eSpigot-API/src/main/java/org/bukkit/command/CommandMap.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandSender.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandSender.java rename to eSpigot-API/src/main/java/org/bukkit/command/CommandSender.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java rename to eSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/eSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java rename to eSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java b/eSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java rename to eSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java rename to eSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java rename to eSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java rename to eSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java b/eSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java rename to eSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java rename to eSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java b/eSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java rename to eSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java rename to eSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java similarity index 92% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java index ff02ff6..f708c81 100644 --- a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java +++ b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java @@ -31,11 +31,7 @@ public class VersionCommand extends BukkitCommand { } if (args.length == 0) { - String[] message = new String[] { - "§3This server is running §b§leSpigot§3 by the ElevateMC development team. Version §b§l1.8.9", - }; - - sender.sendMessage(message); + sender.sendMessage(ChatColor.DARK_AQUA + "This server is running " + ChatColor.AQUA + ChatColor.BOLD + "eSpigot" + ChatColor.DARK_AQUA +" by the ElevateMC development team. Version " + ChatColor.AQUA + ChatColor.BOLD + "1.8.9"); } else { StringBuilder name = new StringBuilder(); @@ -76,7 +72,7 @@ public class VersionCommand extends BukkitCommand { sender.sendMessage(ChatColor.AQUA + desc.getName() + ChatColor.DARK_AQUA + " version " + ChatColor.AQUA + desc.getVersion()); if (desc.getDescription() != null) { - sender.sendMessage(desc.getDescription()); + sender.sendMessage(ChatColor.DARK_AQUA + "Description: " + ChatColor.AQUA + desc.getDescription()); } if (desc.getWebsite() != null) { diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java b/eSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java rename to eSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java rename to eSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java rename to eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java rename to eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ageable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ageable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ageable.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Ageable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ambient.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ambient.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ambient.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Ambient.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java b/eSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java rename to eSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Animals.java b/eSpigot-API/src/main/java/org/bukkit/entity/Animals.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Animals.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Animals.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java b/eSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Arrow.java b/eSpigot-API/src/main/java/org/bukkit/entity/Arrow.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Arrow.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Arrow.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Bat.java b/eSpigot-API/src/main/java/org/bukkit/entity/Bat.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Bat.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Bat.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Blaze.java b/eSpigot-API/src/main/java/org/bukkit/entity/Blaze.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Blaze.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Blaze.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Boat.java b/eSpigot-API/src/main/java/org/bukkit/entity/Boat.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Boat.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Boat.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java b/eSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java rename to eSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Chicken.java b/eSpigot-API/src/main/java/org/bukkit/entity/Chicken.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Chicken.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Chicken.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java b/eSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Cow.java b/eSpigot-API/src/main/java/org/bukkit/entity/Cow.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Cow.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Cow.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Creature.java b/eSpigot-API/src/main/java/org/bukkit/entity/Creature.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Creature.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Creature.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java b/eSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java rename to eSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Creeper.java b/eSpigot-API/src/main/java/org/bukkit/entity/Creeper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Creeper.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Creeper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Damageable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Damageable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Damageable.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Damageable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Egg.java b/eSpigot-API/src/main/java/org/bukkit/entity/Egg.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Egg.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Egg.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Enderman.java b/eSpigot-API/src/main/java/org/bukkit/entity/Enderman.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Enderman.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Enderman.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Endermite.java b/eSpigot-API/src/main/java/org/bukkit/entity/Endermite.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Endermite.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Endermite.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Entity.java b/eSpigot-API/src/main/java/org/bukkit/entity/Entity.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Entity.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Entity.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EntityType.java b/eSpigot-API/src/main/java/org/bukkit/entity/EntityType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EntityType.java rename to eSpigot-API/src/main/java/org/bukkit/entity/EntityType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java b/eSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Explosive.java b/eSpigot-API/src/main/java/org/bukkit/entity/Explosive.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Explosive.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Explosive.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java b/eSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java rename to eSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java b/eSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java rename to eSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Fireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/Fireball.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Fireball.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Fireball.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Firework.java b/eSpigot-API/src/main/java/org/bukkit/entity/Firework.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Firework.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Firework.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Fish.java b/eSpigot-API/src/main/java/org/bukkit/entity/Fish.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Fish.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Fish.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FishHook.java b/eSpigot-API/src/main/java/org/bukkit/entity/FishHook.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FishHook.java rename to eSpigot-API/src/main/java/org/bukkit/entity/FishHook.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Flying.java b/eSpigot-API/src/main/java/org/bukkit/entity/Flying.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Flying.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Flying.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ghast.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ghast.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ghast.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Ghast.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Giant.java b/eSpigot-API/src/main/java/org/bukkit/entity/Giant.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Giant.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Giant.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Golem.java b/eSpigot-API/src/main/java/org/bukkit/entity/Golem.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Golem.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Golem.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Guardian.java b/eSpigot-API/src/main/java/org/bukkit/entity/Guardian.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Guardian.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Guardian.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Hanging.java b/eSpigot-API/src/main/java/org/bukkit/entity/Hanging.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Hanging.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Hanging.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Horse.java b/eSpigot-API/src/main/java/org/bukkit/entity/Horse.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Horse.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Horse.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java rename to eSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java b/eSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java rename to eSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Item.java b/eSpigot-API/src/main/java/org/bukkit/entity/Item.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Item.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Item.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java b/eSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java rename to eSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java b/eSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java rename to eSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java b/eSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java rename to eSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java rename to eSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java b/eSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java rename to eSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Minecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/Minecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Minecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Minecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Monster.java b/eSpigot-API/src/main/java/org/bukkit/entity/Monster.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Monster.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Monster.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java b/eSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java rename to eSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/NPC.java b/eSpigot-API/src/main/java/org/bukkit/entity/NPC.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/NPC.java rename to eSpigot-API/src/main/java/org/bukkit/entity/NPC.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Painting.java b/eSpigot-API/src/main/java/org/bukkit/entity/Painting.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Painting.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Painting.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Pig.java b/eSpigot-API/src/main/java/org/bukkit/entity/Pig.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Pig.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Pig.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java b/eSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java rename to eSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Player.java b/eSpigot-API/src/main/java/org/bukkit/entity/Player.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Player.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Player.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Projectile.java b/eSpigot-API/src/main/java/org/bukkit/entity/Projectile.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Projectile.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Projectile.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java b/eSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Sheep.java b/eSpigot-API/src/main/java/org/bukkit/entity/Sheep.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Sheep.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Sheep.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java b/eSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java b/eSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Slime.java b/eSpigot-API/src/main/java/org/bukkit/entity/Slime.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Slime.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Slime.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java rename to eSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Snowball.java b/eSpigot-API/src/main/java/org/bukkit/entity/Snowball.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Snowball.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Snowball.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Snowman.java b/eSpigot-API/src/main/java/org/bukkit/entity/Snowman.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Snowman.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Snowman.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Spider.java b/eSpigot-API/src/main/java/org/bukkit/entity/Spider.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Spider.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Spider.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Squid.java b/eSpigot-API/src/main/java/org/bukkit/entity/Squid.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Squid.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Squid.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java b/eSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java rename to eSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Tameable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Tameable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Tameable.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Tameable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java b/eSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java b/eSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java rename to eSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java b/eSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Villager.java b/eSpigot-API/src/main/java/org/bukkit/entity/Villager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Villager.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Villager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java b/eSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java rename to eSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Weather.java b/eSpigot-API/src/main/java/org/bukkit/entity/Weather.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Weather.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Weather.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Witch.java b/eSpigot-API/src/main/java/org/bukkit/entity/Witch.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Witch.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Witch.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Wither.java b/eSpigot-API/src/main/java/org/bukkit/entity/Wither.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Wither.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Wither.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java b/eSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java rename to eSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Wolf.java b/eSpigot-API/src/main/java/org/bukkit/entity/Wolf.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Wolf.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Wolf.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Zombie.java b/eSpigot-API/src/main/java/org/bukkit/entity/Zombie.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Zombie.java rename to eSpigot-API/src/main/java/org/bukkit/entity/Zombie.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Cancellable.java b/eSpigot-API/src/main/java/org/bukkit/event/Cancellable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/Cancellable.java rename to eSpigot-API/src/main/java/org/bukkit/event/Cancellable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Event.java b/eSpigot-API/src/main/java/org/bukkit/event/Event.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/Event.java rename to eSpigot-API/src/main/java/org/bukkit/event/Event.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventException.java b/eSpigot-API/src/main/java/org/bukkit/event/EventException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventException.java rename to eSpigot-API/src/main/java/org/bukkit/event/EventException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventHandler.java b/eSpigot-API/src/main/java/org/bukkit/event/EventHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventHandler.java rename to eSpigot-API/src/main/java/org/bukkit/event/EventHandler.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventPriority.java b/eSpigot-API/src/main/java/org/bukkit/event/EventPriority.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventPriority.java rename to eSpigot-API/src/main/java/org/bukkit/event/EventPriority.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/HandlerList.java b/eSpigot-API/src/main/java/org/bukkit/event/HandlerList.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/HandlerList.java rename to eSpigot-API/src/main/java/org/bukkit/event/HandlerList.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Listener.java b/eSpigot-API/src/main/java/org/bukkit/event/Listener.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/Listener.java rename to eSpigot-API/src/main/java/org/bukkit/event/Listener.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/Action.java b/eSpigot-API/src/main/java/org/bukkit/event/block/Action.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/Action.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/Action.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java b/eSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java rename to eSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java b/eSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java rename to eSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpMap.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpMap.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpMap.java rename to eSpigot-API/src/main/java/org/bukkit/help/HelpMap.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java rename to eSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java b/eSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java b/eSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCursor.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCursor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCursor.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapCursor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapFont.java b/eSpigot-API/src/main/java/org/bukkit/map/MapFont.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapFont.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapFont.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapPalette.java b/eSpigot-API/src/main/java/org/bukkit/map/MapPalette.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapPalette.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapPalette.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java b/eSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapView.java b/eSpigot-API/src/main/java/org/bukkit/map/MapView.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapView.java rename to eSpigot-API/src/main/java/org/bukkit/map/MapView.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java b/eSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java rename to eSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Attachable.java b/eSpigot-API/src/main/java/org/bukkit/material/Attachable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Attachable.java rename to eSpigot-API/src/main/java/org/bukkit/material/Attachable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Banner.java b/eSpigot-API/src/main/java/org/bukkit/material/Banner.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Banner.java rename to eSpigot-API/src/main/java/org/bukkit/material/Banner.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Bed.java b/eSpigot-API/src/main/java/org/bukkit/material/Bed.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Bed.java rename to eSpigot-API/src/main/java/org/bukkit/material/Bed.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Button.java b/eSpigot-API/src/main/java/org/bukkit/material/Button.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Button.java rename to eSpigot-API/src/main/java/org/bukkit/material/Button.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Cake.java b/eSpigot-API/src/main/java/org/bukkit/material/Cake.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Cake.java rename to eSpigot-API/src/main/java/org/bukkit/material/Cake.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Cauldron.java b/eSpigot-API/src/main/java/org/bukkit/material/Cauldron.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Cauldron.java rename to eSpigot-API/src/main/java/org/bukkit/material/Cauldron.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Chest.java b/eSpigot-API/src/main/java/org/bukkit/material/Chest.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Chest.java rename to eSpigot-API/src/main/java/org/bukkit/material/Chest.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Coal.java b/eSpigot-API/src/main/java/org/bukkit/material/Coal.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Coal.java rename to eSpigot-API/src/main/java/org/bukkit/material/Coal.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java b/eSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java rename to eSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Colorable.java b/eSpigot-API/src/main/java/org/bukkit/material/Colorable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Colorable.java rename to eSpigot-API/src/main/java/org/bukkit/material/Colorable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Command.java b/eSpigot-API/src/main/java/org/bukkit/material/Command.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Command.java rename to eSpigot-API/src/main/java/org/bukkit/material/Command.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Crops.java b/eSpigot-API/src/main/java/org/bukkit/material/Crops.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Crops.java rename to eSpigot-API/src/main/java/org/bukkit/material/Crops.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java b/eSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java rename to eSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Diode.java b/eSpigot-API/src/main/java/org/bukkit/material/Diode.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Diode.java rename to eSpigot-API/src/main/java/org/bukkit/material/Diode.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Directional.java b/eSpigot-API/src/main/java/org/bukkit/material/Directional.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Directional.java rename to eSpigot-API/src/main/java/org/bukkit/material/Directional.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java b/eSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java rename to eSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Dispenser.java b/eSpigot-API/src/main/java/org/bukkit/material/Dispenser.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Dispenser.java rename to eSpigot-API/src/main/java/org/bukkit/material/Dispenser.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Door.java b/eSpigot-API/src/main/java/org/bukkit/material/Door.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Door.java rename to eSpigot-API/src/main/java/org/bukkit/material/Door.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Dye.java b/eSpigot-API/src/main/java/org/bukkit/material/Dye.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Dye.java rename to eSpigot-API/src/main/java/org/bukkit/material/Dye.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/EnderChest.java b/eSpigot-API/src/main/java/org/bukkit/material/EnderChest.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/EnderChest.java rename to eSpigot-API/src/main/java/org/bukkit/material/EnderChest.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java b/eSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java rename to eSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java b/eSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java rename to eSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Furnace.java b/eSpigot-API/src/main/java/org/bukkit/material/Furnace.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Furnace.java rename to eSpigot-API/src/main/java/org/bukkit/material/Furnace.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java b/eSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java rename to eSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Gate.java b/eSpigot-API/src/main/java/org/bukkit/material/Gate.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Gate.java rename to eSpigot-API/src/main/java/org/bukkit/material/Gate.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Ladder.java b/eSpigot-API/src/main/java/org/bukkit/material/Ladder.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Ladder.java rename to eSpigot-API/src/main/java/org/bukkit/material/Ladder.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Leaves.java b/eSpigot-API/src/main/java/org/bukkit/material/Leaves.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Leaves.java rename to eSpigot-API/src/main/java/org/bukkit/material/Leaves.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Lever.java b/eSpigot-API/src/main/java/org/bukkit/material/Lever.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Lever.java rename to eSpigot-API/src/main/java/org/bukkit/material/Lever.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/LongGrass.java b/eSpigot-API/src/main/java/org/bukkit/material/LongGrass.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/LongGrass.java rename to eSpigot-API/src/main/java/org/bukkit/material/LongGrass.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/MaterialData.java b/eSpigot-API/src/main/java/org/bukkit/material/MaterialData.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/MaterialData.java rename to eSpigot-API/src/main/java/org/bukkit/material/MaterialData.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java b/eSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java rename to eSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Mushroom.java b/eSpigot-API/src/main/java/org/bukkit/material/Mushroom.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Mushroom.java rename to eSpigot-API/src/main/java/org/bukkit/material/Mushroom.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java b/eSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java rename to eSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Openable.java b/eSpigot-API/src/main/java/org/bukkit/material/Openable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Openable.java rename to eSpigot-API/src/main/java/org/bukkit/material/Openable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java rename to eSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java rename to eSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java b/eSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java rename to eSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java b/eSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java rename to eSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java b/eSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java rename to eSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java b/eSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java rename to eSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Rails.java b/eSpigot-API/src/main/java/org/bukkit/material/Rails.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Rails.java rename to eSpigot-API/src/main/java/org/bukkit/material/Rails.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Redstone.java b/eSpigot-API/src/main/java/org/bukkit/material/Redstone.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Redstone.java rename to eSpigot-API/src/main/java/org/bukkit/material/Redstone.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java b/eSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java rename to eSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java b/eSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java rename to eSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Sandstone.java b/eSpigot-API/src/main/java/org/bukkit/material/Sandstone.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Sandstone.java rename to eSpigot-API/src/main/java/org/bukkit/material/Sandstone.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Sign.java b/eSpigot-API/src/main/java/org/bukkit/material/Sign.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Sign.java rename to eSpigot-API/src/main/java/org/bukkit/material/Sign.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java b/eSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java rename to eSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Skull.java b/eSpigot-API/src/main/java/org/bukkit/material/Skull.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Skull.java rename to eSpigot-API/src/main/java/org/bukkit/material/Skull.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java b/eSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java rename to eSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java b/eSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java rename to eSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Stairs.java b/eSpigot-API/src/main/java/org/bukkit/material/Stairs.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Stairs.java rename to eSpigot-API/src/main/java/org/bukkit/material/Stairs.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Step.java b/eSpigot-API/src/main/java/org/bukkit/material/Step.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Step.java rename to eSpigot-API/src/main/java/org/bukkit/material/Step.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java rename to eSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Torch.java b/eSpigot-API/src/main/java/org/bukkit/material/Torch.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Torch.java rename to eSpigot-API/src/main/java/org/bukkit/material/Torch.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java b/eSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java rename to eSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Tree.java b/eSpigot-API/src/main/java/org/bukkit/material/Tree.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Tree.java rename to eSpigot-API/src/main/java/org/bukkit/material/Tree.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Tripwire.java b/eSpigot-API/src/main/java/org/bukkit/material/Tripwire.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Tripwire.java rename to eSpigot-API/src/main/java/org/bukkit/material/Tripwire.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java b/eSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java rename to eSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Vine.java b/eSpigot-API/src/main/java/org/bukkit/material/Vine.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Vine.java rename to eSpigot-API/src/main/java/org/bukkit/material/Vine.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java b/eSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java rename to eSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Wool.java b/eSpigot-API/src/main/java/org/bukkit/material/Wool.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/material/Wool.java rename to eSpigot-API/src/main/java/org/bukkit/material/Wool.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java b/eSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java rename to eSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java b/eSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/Permission.java b/eSpigot-API/src/main/java/org/bukkit/permissions/Permission.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/Permission.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/Permission.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java b/eSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java rename to eSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java b/eSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java b/eSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java b/eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java b/eSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/Potion.java b/eSpigot-API/src/main/java/org/bukkit/potion/Potion.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/Potion.java rename to eSpigot-API/src/main/java/org/bukkit/potion/Potion.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionType.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionType.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionType.java rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionType.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java b/eSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java rename to eSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java b/eSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java rename to eSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java b/eSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java rename to eSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/BlockVector.java b/eSpigot-API/src/main/java/org/bukkit/util/BlockVector.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/BlockVector.java rename to eSpigot-API/src/main/java/org/bukkit/util/BlockVector.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java b/eSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java rename to eSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java b/eSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java rename to eSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java b/eSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java rename to eSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/FileUtil.java b/eSpigot-API/src/main/java/org/bukkit/util/FileUtil.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/FileUtil.java rename to eSpigot-API/src/main/java/org/bukkit/util/FileUtil.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java b/eSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java rename to eSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java b/eSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java rename to eSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/StringUtil.java b/eSpigot-API/src/main/java/org/bukkit/util/StringUtil.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/StringUtil.java rename to eSpigot-API/src/main/java/org/bukkit/util/StringUtil.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/Vector.java b/eSpigot-API/src/main/java/org/bukkit/util/Vector.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/Vector.java rename to eSpigot-API/src/main/java/org/bukkit/util/Vector.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java b/eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java rename to eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java b/eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java rename to eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java b/eSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java rename to eSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java rename to eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/Title.java b/eSpigot-API/src/main/java/org/github/paperspigot/Title.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/Title.java rename to eSpigot-API/src/main/java/org/github/paperspigot/Title.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java b/eSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java rename to eSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java b/eSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java rename to eSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java b/eSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java rename to eSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java rename to eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java rename to eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java similarity index 100% rename from TacoSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java rename to eSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java similarity index 100% rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java rename to eSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java diff --git a/TacoSpigot-API/src/main/javadoc/overview.html b/eSpigot-API/src/main/javadoc/overview.html similarity index 100% rename from TacoSpigot-API/src/main/javadoc/overview.html rename to eSpigot-API/src/main/javadoc/overview.html diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ArtTest.java b/eSpigot-API/src/test/java/org/bukkit/ArtTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/ArtTest.java rename to eSpigot-API/src/test/java/org/bukkit/ArtTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java b/eSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java rename to eSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ChatColorTest.java b/eSpigot-API/src/test/java/org/bukkit/ChatColorTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/ChatColorTest.java rename to eSpigot-API/src/test/java/org/bukkit/ChatColorTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java b/eSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java rename to eSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java b/eSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java rename to eSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ColorTest.java b/eSpigot-API/src/test/java/org/bukkit/ColorTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/ColorTest.java rename to eSpigot-API/src/test/java/org/bukkit/ColorTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/CropStateTest.java b/eSpigot-API/src/test/java/org/bukkit/CropStateTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/CropStateTest.java rename to eSpigot-API/src/test/java/org/bukkit/CropStateTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/DifficultyTest.java b/eSpigot-API/src/test/java/org/bukkit/DifficultyTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/DifficultyTest.java rename to eSpigot-API/src/test/java/org/bukkit/DifficultyTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/DyeColorTest.java b/eSpigot-API/src/test/java/org/bukkit/DyeColorTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/DyeColorTest.java rename to eSpigot-API/src/test/java/org/bukkit/DyeColorTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/EffectTest.java b/eSpigot-API/src/test/java/org/bukkit/EffectTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/EffectTest.java rename to eSpigot-API/src/test/java/org/bukkit/EffectTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java b/eSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java rename to eSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/GameModeTest.java b/eSpigot-API/src/test/java/org/bukkit/GameModeTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/GameModeTest.java rename to eSpigot-API/src/test/java/org/bukkit/GameModeTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java b/eSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java rename to eSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/InstrumentTest.java b/eSpigot-API/src/test/java/org/bukkit/InstrumentTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/InstrumentTest.java rename to eSpigot-API/src/test/java/org/bukkit/InstrumentTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/LocationTest.java b/eSpigot-API/src/test/java/org/bukkit/LocationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/LocationTest.java rename to eSpigot-API/src/test/java/org/bukkit/LocationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/MaterialTest.java b/eSpigot-API/src/test/java/org/bukkit/MaterialTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/MaterialTest.java rename to eSpigot-API/src/test/java/org/bukkit/MaterialTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/NoteTest.java b/eSpigot-API/src/test/java/org/bukkit/NoteTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/NoteTest.java rename to eSpigot-API/src/test/java/org/bukkit/NoteTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/TestServer.java b/eSpigot-API/src/test/java/org/bukkit/TestServer.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/TestServer.java rename to eSpigot-API/src/test/java/org/bukkit/TestServer.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java b/eSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java rename to eSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java b/eSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java rename to eSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java rename to eSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java rename to eSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java rename to eSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java b/eSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java rename to eSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java rename to eSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java b/eSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java rename to eSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java b/eSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java rename to eSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/TestEvent.java b/eSpigot-API/src/test/java/org/bukkit/event/TestEvent.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/event/TestEvent.java rename to eSpigot-API/src/test/java/org/bukkit/event/TestEvent.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java b/eSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java rename to eSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java rename to eSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java rename to eSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java b/eSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java b/eSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java rename to eSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java b/eSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java rename to eSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java b/eSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java rename to eSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java b/eSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java similarity index 100% rename from TacoSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java rename to eSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java diff --git a/TacoSpigot-Server/.gitignore b/eSpigot-Server/.gitignore similarity index 100% rename from TacoSpigot-Server/.gitignore rename to eSpigot-Server/.gitignore diff --git a/eSpigot-Server/build.gradle.kts b/eSpigot-Server/build.gradle.kts new file mode 100644 index 0000000..5a92e5a --- /dev/null +++ b/eSpigot-Server/build.gradle.kts @@ -0,0 +1,154 @@ +import java.util.Date +import java.text.SimpleDateFormat + +plugins { + java + `java-library` + id("com.github.johnrengelman.shadow") version "7.1.0" +} + +repositories { + mavenCentral() + gradlePluginPortal() + maven(url = "https://libraries.minecraft.net") + maven(url = "https://oss.sonatype.org/content/groups/public") + maven(url = "https://hub.spigotmc.org/nexus/content/groups/public") + maven(url = "https://repo.velocitypowered.com/snapshots/") +} + +val minecraftVersion = "1_8_R3" + +group = "com.elevatemc.espigot" +version = "1.8.8-R0.1-SNAPSHOT" + +repositories { + maven(url = "https://libraries.minecraft.net") +} + +dependencies { + implementation(project(":espigot-api")) + + implementation("io.netty:netty-all:4.1.69.Final") // eSpigot - Update Netty to 4.1.x + implementation("com.mojang:authlib:1.5.21") + implementation("org.apache.logging.log4j:log4j-api:2.17.2") + implementation("org.apache.logging.log4j:log4j-core:2.17.2") + implementation("org.apache.commons:commons-lang3:3.12.0") + implementation("commons-io:commons-io:2.4") + implementation("commons-codec:commons-codec:1.9") + implementation("com.google.guava:guava:31.1-jre") + implementation("com.google.code.gson:gson:2.2.4") + implementation("net.sf.trove4j:trove4j:3.0.3") + implementation("net.sf.jopt-simple:jopt-simple:3.2") + implementation("org.xerial:sqlite-jdbc:3.7.2") + implementation("mysql:mysql-connector-java:5.1.14") + implementation("net.minecrell:terminalconsoleappender:1.3.0") + implementation("org.jline:jline-terminal-jansi:3.20.0") + implementation("it.unimi.dsi:fastutil:8.5.8") + implementation("com.velocitypowered:velocity-native:1.1.0-SNAPSHOT") + implementation("org.lz4:lz4-java:1.8.0") + implementation("com.github.luben:zstd-jni:1.5.2-3") + implementation("net.openhft:affinity:3.20.0") + implementation("net.jafama:jafama:2.3.2") + + + testImplementation("junit:junit:4.11") + testImplementation("org.hamcrest:hamcrest-library:1.3") + + compileOnly("org.projectlombok:lombok:1.18.24") + annotationProcessor("org.projectlombok:lombok:1.18.24") +} + +fun TaskContainer.registerRunTask( + name: String, block: JavaExec.() -> Unit +): TaskProvider = register(name) { + group = "espigot" + standardInput = System.`in` + workingDir = rootProject.layout.projectDirectory.dir( + providers.gradleProperty("runWorkDir").forUseAtConfigurationTime().orElse("run") + ).get().asFile + + if (project.hasProperty("disableWatchdog")) { + systemProperty("disable.watchdog", true) + } + doFirst { + workingDir.mkdirs() + } + block(this) +} + +tasks { + withType().configureEach { + options.encoding = "UTF-8" + } + + java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + val prepareTestServerDir by registering { + doLast { + mkdir("$buildDir/test-server") + } + } + + test { + workingDir = file("$buildDir/test-server/") + + dependsOn(prepareTestServerDir) + } + + shadowJar { + mergeServiceFiles() + append("META-INF/io.netty.versions.properties") + transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) // eSpigot - Use TerminalConsoleAppender + archiveBaseName.set("espigot") + archiveClassifier.set("") // without "-all" + val cbLibsPkg = "org.bukkit.craftbukkit.libs" + + relocate("joptsimple", "$cbLibsPkg.joptsimple") + relocate("jline", "$cbLibsPkg.jline") + relocate("org.ibex", "$cbLibsPkg.org.ibex") + relocate("org.gjt", "$cbLibsPkg.org.gjt") + + relocate("org.bukkit.craftbukkit", "org.bukkit.craftbukkit.v${minecraftVersion}") { + exclude("org.bukkit.craftbukkit.Main*") // don't relocate main class + } + relocate("net.minecraft.server", "net.minecraft.server.v${minecraftVersion}") + } + + named("build") { + dependsOn(named("shadowJar")) + } + + test { + exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class", "org/bukkit/craftbukkit/inventory/ItemFactoryTest.class") + } + + jar { + manifest { + val date = SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(Date()) + attributes( + "Main-Class" to "org.bukkit.craftbukkit.Main", + "Implementation-Title" to "CraftBukkit", + "Implementation-Version" to "git-eSpigot-1.8.9", + "Implementation-Vendor" to date, + "Specification-Title" to "Bukkit", + "Specification-Version" to project.version, + "Specification-Vendor" to "Bukkit Team", + "Multi-Release" to true + ) + } + } + + registerRunTask("runShadow") { + description = "Spin up a test server from the shadowJar archiveFile" + classpath(shadowJar.flatMap { it.archiveFile }) + } + + registerRunTask("runDev") { + description = "Spin up a non-shaded non-relocated test server" + classpath = java.sourceSets.main.get().runtimeClasspath + mainClass.set("org.bukkit.craftbukkit.Main") + } +} diff --git a/TacoSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java b/eSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java similarity index 100% rename from TacoSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java rename to eSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java diff --git a/TacoSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/eSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java rename to eSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java similarity index 62% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java index cd1829f..578e01b 100644 --- a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java @@ -1,22 +1,12 @@ package com.elevatemc.spigot.command; -import com.elevatemc.spigot.util.DateUtil; import com.velocitypowered.natives.util.Natives; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldServer; import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.craftbukkit.entity.CraftEntity; -import org.bukkit.entity.Entity; -import org.spigotmc.ActivationRange; - -import java.lang.management.ManagementFactory; -import java.math.RoundingMode; -import java.text.DecimalFormat; public class TicksPerSecondCommand extends Command { @@ -59,19 +49,28 @@ public class TicksPerSecondCommand extends Command { totalEntities += server.entityList.size(); } - sb.append(ChatColor.WHITE).append("TPS from last 5s, 1m, 5m, 15m: ") - .append(StringUtils.join(tpsAvg, ", ")).append("\n"); - sb.append(ChatColor.WHITE).append("Full Tick: ") - .append(formatMs(MinecraftServer.getLastTickTime())).append(" ms").append("\n"); - sb.append(ChatColor.WHITE) - .append("Online Players: ").append(ChatColor.AQUA).append(totalPlayers).append(ChatColor.WHITE) - .append(" ❘ Total Entities: ").append(ChatColor.AQUA).append(totalEntities).append(ChatColor.WHITE) - .append(" ❘ Chunks: ").append(ChatColor.AQUA).append(totalChunks).append("\n"); - sb.append(ChatColor.WHITE).append("Active Threads: ").append(ChatColor.AQUA).append(Thread.activeCount()) - .append(ChatColor.WHITE).append(" ❘ Daemon Threads: ").append(ChatColor.AQUA) - .append(Thread.getAllStackTraces().keySet().stream().filter(Thread::isDaemon).count()) + sb.append(ChatColor.DARK_AQUA).append("TPS from last 5s, 1m, 5m, 15m: ") + .append(StringUtils.join(tpsAvg, ", ")) .append("\n"); - sb.append(ChatColor.WHITE).append("Memory Usage: ").append(ChatColor.AQUA) + sb.append(ChatColor.DARK_AQUA).append("Full Tick: ") + .append(formatMs(MinecraftServer.getLastTickTime())).append(" ms") + .append("\n"); + sb.append(ChatColor.DARK_AQUA) + .append("Online Players: ").append(ChatColor.AQUA).append(totalPlayers).append(ChatColor.DARK_AQUA) + .append(" ❘ Total Entities: ").append(ChatColor.AQUA).append(totalEntities).append(ChatColor.DARK_AQUA) + .append(" ❘ Chunks: ").append(ChatColor.AQUA).append(totalChunks) + .append("\n"); + sb.append(ChatColor.DARK_AQUA) + .append("Java Version: ").append(ChatColor.AQUA).append(getJavaVersion()).append(ChatColor.DARK_AQUA) + .append(" ❘ Compression: ").append(ChatColor.AQUA).append(Natives.compress.getLoadedVariant()).append(ChatColor.DARK_AQUA) + .append(" ❘ Cipher: ").append(ChatColor.AQUA).append(Natives.cipher.getLoadedVariant()) + .append("\n"); + sb.append(ChatColor.DARK_AQUA) + .append("Active Threads: ").append(ChatColor.AQUA).append(Thread.activeCount()).append(ChatColor.DARK_AQUA) + .append(" ❘ Daemon Threads: ").append(ChatColor.AQUA).append(Thread.getAllStackTraces().keySet().stream().filter(Thread::isDaemon).count()) + .append("\n"); + sb.append(ChatColor.DARK_AQUA) + .append("Memory Usage: ").append(ChatColor.AQUA) .append(formatMem(usedMemory)).append("/").append(formatMem(maxMemory)) .append(" MB ").append("(").append(formatMem(freeMemory)) .append(" MB free)"); @@ -80,6 +79,18 @@ public class TicksPerSecondCommand extends Command { return true; } + private int getJavaVersion() { + String[] versionElements = System.getProperty("java.version").split("\\."); + int discard = Integer.parseInt(versionElements[0]); + int version; + if (discard == 1) { + version = Integer.parseInt(versionElements[1]); + } else { + version = discard; + } + return version; + } + private static String formatTps(double tps) // PaperSpigot - made static { return String.format("%s%s%s", (tps > 18.0 ? ChatColor.AQUA : tps > 16.0 ? ChatColor.YELLOW : ChatColor.RED), tps > 20.0 ? "*" : "", Math.min(Math.round(tps * 100.0) / 100.0, 20.0)); diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java new file mode 100644 index 0000000..3bed5d7 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java @@ -0,0 +1,39 @@ +package com.elevatemc.spigot.console; + +import net.minecraft.server.DedicatedServer; +import net.minecrell.terminalconsole.SimpleTerminalConsole; +import org.jline.reader.LineReader; +import org.jline.reader.LineReaderBuilder; + +import java.nio.file.Paths; + +public class PandaConsole extends SimpleTerminalConsole { + private final DedicatedServer server; + + public PandaConsole(DedicatedServer server) { + this.server = server; + } + + @Override + protected boolean isRunning() { + return !this.server.isStopped() && this.server.isRunning(); + } + + @Override + protected void runCommand(String command) { + this.server.issueCommand(command, this.server); + } + + @Override + protected void shutdown() { + this.server.safeShutdown(); + } + + @Override + protected LineReader buildReader(LineReaderBuilder builder) { + return super.buildReader(builder + .appName("eSpigot") + .variable(LineReader.HISTORY_FILE, Paths.get(".console_history")) + .completer(new PandaConsoleCompleter(this.server))); + } +} diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java new file mode 100644 index 0000000..550edf4 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java @@ -0,0 +1,15 @@ +package com.elevatemc.spigot.console; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.bukkit.craftbukkit.command.CraftConsoleCommandSender; + +public class PandaConsoleCommandSender extends CraftConsoleCommandSender { + private static final Logger LOGGER = LogManager.getRootLogger(); + + @Override + public void sendRawMessage(String message) { + // TerminalConsoleAppender supports color codes directly in log messages + LOGGER.info(message); + } +} diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java new file mode 100644 index 0000000..17de12a --- /dev/null +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java @@ -0,0 +1,56 @@ +package com.elevatemc.spigot.console; + +import net.minecraft.server.DedicatedServer; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.util.Waitable; +import org.jline.reader.Candidate; +import org.jline.reader.Completer; +import org.jline.reader.LineReader; +import org.jline.reader.ParsedLine; + +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; + +public class PandaConsoleCompleter implements Completer { + private final DedicatedServer server; + + public PandaConsoleCompleter(DedicatedServer server) { + this.server = server; + } + + @Override + public void complete(LineReader reader, ParsedLine line, List candidates) { + CompletionWaiter waiter = new CompletionWaiter(line.line()); + this.server.addMainThreadTask(waiter); + + try { + List offers = waiter.get(); // wait until completions get processed on main thread + + for (String offer : offers) { + if (offer.isEmpty()) continue; + + candidates.add(new Candidate(offer)); + } + } catch (ExecutionException e) { + this.server.server.getLogger().log(Level.WARNING, "Unhandled exception when tab completing", e); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + private class CompletionWaiter extends Waitable> { + private final String buffer; + + private CompletionWaiter(String buffer) { + this.buffer = buffer; + } + + @Override + protected List evaluate() { + final CraftServer server = PandaConsoleCompleter.this.server.server; + + return server.getCommandMap().tabComplete(server.getConsoleSender(), this.buffer); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java similarity index 97% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java index fbcfdd9..6b05c49 100644 --- a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java @@ -46,7 +46,7 @@ public class eSpigot { server.getCommandMap() .register(command.getLabel(), "eSpigot", command); - EXECUTOR_SERVICE.scheduleAtFixedRate(() -> MinecraftServer.getServer().aq().processFastPackets(), 5L, 5L, TimeUnit.MILLISECONDS); + EXECUTOR_SERVICE.scheduleAtFixedRate(() -> MinecraftServer.getServer().aq().processFastPackets(), 5L, 3L, TimeUnit.MILLISECONDS); } public void addPacketHandler(PacketHandler handler) { diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java new file mode 100644 index 0000000..141ae45 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java @@ -0,0 +1,51 @@ +// Original source: velocity +package com.elevatemc.spigot.network; + +import io.netty.util.ByteProcessor; + +public class VarIntByteDecoder implements ByteProcessor { + private int readVarint; + private int bytesRead; + private DecodeResult result = DecodeResult.TOO_SHORT; + + @Override + public boolean process(byte k) { + if (k == 0 && bytesRead == 0) { + // tentatively say it's invalid, but there's a possibility of redemption + result = DecodeResult.RUN_OF_ZEROES; + return true; + } + if (result == DecodeResult.RUN_OF_ZEROES) { + return false; + } + readVarint |= (k & 0x7F) << bytesRead++ * 7; + if (bytesRead > 3) { + result = DecodeResult.TOO_BIG; + return false; + } + if ((k & 0x80) != 128) { + result = DecodeResult.SUCCESS; + return false; + } + return true; + } + + public int getReadVarint() { + return readVarint; + } + + public int getBytesRead() { + return bytesRead; + } + + public DecodeResult getResult() { + return result; + } + + public enum DecodeResult { + SUCCESS, + TOO_SHORT, + TOO_BIG, + RUN_OF_ZEROES + } +} diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java new file mode 100644 index 0000000..4013383 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java @@ -0,0 +1,114 @@ +package com.elevatemc.spigot.network; + +import io.netty.buffer.ByteBuf; +import io.netty.handler.codec.CorruptedFrameException; + +public class VarIntUtil { + private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33]; + + static { + for (int i = 0; i <= 32; ++i) { + VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d); + } + VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0. + } + + /** + * Reads a Minecraft-style VarInt from the specified {@code buf}. + * + * @param buf the buffer to read from + * @return the decoded VarInt + */ + public static int readVarInt(ByteBuf buf) { + int read = readVarIntSafely(buf); + if (read == Integer.MIN_VALUE) { + throw new CorruptedFrameException("Bad VarInt decoded"); + } + return read; + } + + /** + * Reads a Minecraft-style VarInt from the specified {@code buf}. The difference between this + * method and {@link #readVarInt(ByteBuf)} is that this function returns a sentinel value if the + * varint is invalid. + * + * @param buf the buffer to read from + * @return the decoded VarInt, or {@code Integer.MIN_VALUE} if the varint is invalid + */ + public static int readVarIntSafely(ByteBuf buf) { + int i = 0; + int maxRead = Math.min(5, buf.readableBytes()); + for (int j = 0; j < maxRead; j++) { + int k = buf.readByte(); + i |= (k & 0x7F) << j * 7; + if ((k & 0x80) != 128) { + return i; + } + } + return Integer.MIN_VALUE; + } + + /** + * Returns the exact byte size of {@code value} if it were encoded as a VarInt. + * + * @param value the value to encode + * @return the byte size of {@code value} if encoded as a VarInt + */ + public static int varIntBytes(int value) { + return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; + } + + /** + * Writes a Minecraft-style VarInt to the specified {@code buf}. + * + * @param buf the buffer to read from + * @param value the integer to write + */ + public static void writeVarInt(ByteBuf buf, int value) { + // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes + // that the proxy will write, to improve inlining. + if ((value & (0xFFFFFFFF << 7)) == 0) { + buf.writeByte(value); + } else if ((value & (0xFFFFFFFF << 14)) == 0) { + int w = (value & 0x7F | 0x80) << 8 | (value >>> 7); + buf.writeShort(w); + } else { + writeVarIntFull(buf, value); + } + } + + private static void writeVarIntFull(ByteBuf buf, int value) { + // See https://steinborn.me/posts/performance/how-fast-can-you-write-a-varint/ + if ((value & (0xFFFFFFFF << 7)) == 0) { + buf.writeByte(value); + } else if ((value & (0xFFFFFFFF << 14)) == 0) { + int w = (value & 0x7F | 0x80) << 8 | (value >>> 7); + buf.writeShort(w); + } else if ((value & (0xFFFFFFFF << 21)) == 0) { + int w = (value & 0x7F | 0x80) << 16 | ((value >>> 7) & 0x7F | 0x80) << 8 | (value >>> 14); + buf.writeMedium(w); + } else if ((value & (0xFFFFFFFF << 28)) == 0) { + int w = (value & 0x7F | 0x80) << 24 | (((value >>> 7) & 0x7F | 0x80) << 16) + | ((value >>> 14) & 0x7F | 0x80) << 8 | (value >>> 21); + buf.writeInt(w); + } else { + int w = (value & 0x7F | 0x80) << 24 | ((value >>> 7) & 0x7F | 0x80) << 16 + | ((value >>> 14) & 0x7F | 0x80) << 8 | ((value >>> 21) & 0x7F | 0x80); + buf.writeInt(w); + buf.writeByte(value >>> 28); + } + } + + /** + * Writes the specified {@code value} as a 21-bit Minecraft VarInt to the specified {@code buf}. + * The upper 11 bits will be discarded. + * + * @param buf the buffer to read from + * @param value the integer to write + */ + public static void write21BitVarInt(ByteBuf buf, int value) { + // See https://steinborn.me/posts/performance/how-fast-can-you-write-a-varint/ + int w = (value & 0x7F | 0x80) << 16 | ((value >>> 7) & 0x7F | 0x80) << 8 | (value >>> 14); + buf.writeMedium(w); + } +} diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java similarity index 100% rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java diff --git a/eSpigot-Server/src/main/java/com/google/common/base/Objects.java b/eSpigot-Server/src/main/java/com/google/common/base/Objects.java new file mode 100644 index 0000000..0101907 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/google/common/base/Objects.java @@ -0,0 +1,451 @@ +/* + * Copyright (C) 2007 The Guava 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 + * + * http://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. + */ + +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; + +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; +import java.util.Arrays; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Helper functions that can operate on any {@code Object}. + * + *

See the Guava User Guide on writing + * {@code Object} methods with {@code Objects}. + * + * @author Laurence Gonsalves + * @since 2.0 (imported from Google Collections Library) + */ +@GwtCompatible +public final class Objects { + private Objects() {} + + /** + * Determines whether two possibly-null objects are equal. Returns: + * + *

    + *
  • {@code true} if {@code a} and {@code b} are both null. + *
  • {@code true} if {@code a} and {@code b} are both non-null and they are + * equal according to {@link Object#equals(Object)}. + *
  • {@code false} in all other situations. + *
+ * + *

This assumes that any non-null objects passed to this function conform + * to the {@code equals()} contract. + */ + @CheckReturnValue + public static boolean equal(@Nullable Object a, @Nullable Object b) { + return java.util.Objects.equals(a, b); // Nacho + } + + /** + * Generates a hash code for multiple values. The hash code is generated by + * calling {@link Arrays#hashCode(Object[])}. Note that array arguments to + * this method, with the exception of a single Object array, do not get any + * special handling; their hash codes are based on identity and not contents. + * + *

This is useful for implementing {@link Object#hashCode()}. For example, + * in an object that has three properties, {@code x}, {@code y}, and + * {@code z}, one could write: + *

   {@code
+     *   public int hashCode() {
+     *     return Objects.hashCode(getX(), getY(), getZ());
+     *   }}
+ * + *

Warning: When a single object is supplied, the returned hash code + * does not equal the hash code of that object. + */ + public static int hashCode(@Nullable Object... objects) { + return Arrays.hashCode(objects); + } + + // Nacho start + /** + * Creates an instance of {@link ToStringHelper}. + * + *

This is helpful for implementing {@link Object#toString()}. + * Specification by example:

   {@code
+     *   // Returns "ClassName{}"
+     *   Objects.toStringHelper(this)
+     *       .toString();
+     *
+     *   // Returns "ClassName{x=1}"
+     *   Objects.toStringHelper(this)
+     *       .add("x", 1)
+     *       .toString();
+     *
+     *   // Returns "MyObject{x=1}"
+     *   Objects.toStringHelper("MyObject")
+     *       .add("x", 1)
+     *       .toString();
+     *
+     *   // Returns "ClassName{x=1, y=foo}"
+     *   Objects.toStringHelper(this)
+     *       .add("x", 1)
+     *       .add("y", "foo")
+     *       .toString();
+     *
+     *   // Returns "ClassName{x=1}"
+     *   Objects.toStringHelper(this)
+     *       .omitNullValues()
+     *       .add("x", 1)
+     *       .add("y", null)
+     *       .toString();
+     *   }}
+ * + *

Note that in GWT, class names are often obfuscated. + * + * @param self the object to generate the string for (typically {@code this}), + * used only for its class name + * @since 2.0 + * @deprecated replaced by {@link MoreObjects#toStringHelper(Object)} + * @see MoreObjects#toStringHelper(Object) + */ + @Deprecated + public static ToStringHelper toStringHelper(Object self) { + return new ToStringHelper(simpleName(self.getClass())); + } + + /** + * Creates an instance of {@link ToStringHelper} in the same manner as + * {@link Objects#toStringHelper(Object)}, but using the name of {@code clazz} + * instead of using an instance's {@link Object#getClass()}. + * + *

Note that in GWT, class names are often obfuscated. + * + * @param clazz the {@link Class} of the instance + * @since 7.0 (source-compatible since 2.0) + * @deprecated replaced by {@link MoreObjects#toStringHelper(Class)} + * @see MoreObjects#toStringHelper(Class) + */ + @Deprecated + public static ToStringHelper toStringHelper(Class clazz) { + return new ToStringHelper(simpleName(clazz)); + } + + /** + * Creates an instance of {@link ToStringHelper} in the same manner as + * {@link Objects#toStringHelper(Object)}, but using {@code className} instead + * of using an instance's {@link Object#getClass()}. + * + * @param className the name of the instance type + * @since 7.0 (source-compatible since 2.0) + * @deprecated replaced by {@link MoreObjects#toStringHelper(String)} + * @see MoreObjects#toStringHelper(String) + */ + @Deprecated + public static ToStringHelper toStringHelper(String className) { + return new ToStringHelper(className); + } + + /** + * {@link Class#getSimpleName()} is not GWT compatible yet, so we + * provide our own implementation. + * @deprecated {@link Class#getSimpleName()} is now GWT compatible, use it instead + * @see Class#getSimpleName() + */ + @Deprecated + private static String simpleName(Class clazz) { + String name = clazz.getName(); + + // the nth anonymous class has a class name ending in "Outer$n" + // and local inner classes have names ending in "Outer.$1Inner" + name = name.replaceAll("\\$[0-9]+", "\\$"); + + // we want the name of the inner class all by its lonesome + int start = name.lastIndexOf('$'); + + // if this isn't an inner class, just find the start of the + // top level class name. + if (start == -1) { + start = name.lastIndexOf('.'); + } + return name.substring(start + 1); + } + + /** + * Returns the first of two given parameters that is not {@code null}, if + * either is, or otherwise throws a {@link NullPointerException}. + * + *

Note: if {@code first} is represented as an {@link Optional}, + * this can be accomplished with + * {@linkplain Optional#or(Object) first.or(second)}. + * That approach also allows for lazy evaluation of the fallback instance, + * using {@linkplain Optional#or(Supplier) first.or(Supplier)}. + * + * @return {@code first} if {@code first} is not {@code null}, or + * {@code second} if {@code first} is {@code null} and {@code second} is + * not {@code null} + * @throws NullPointerException if both {@code first} and {@code second} were + * {@code null} + * @since 3.0 + * @deprecated replaced by {@link MoreObjects#firstNonNull(Object, Object)} + * @see MoreObjects#firstNonNull(Object, Object) + */ + @Deprecated + public static T firstNonNull(@Nullable T first, @Nullable T second) { + return first != null ? first : checkNotNull(second); + } + + /** + * Support class for {@link Objects#toStringHelper}. + * + * @author Jason Lee + * @since 2.0 + * @deprecated replaced by {@link MoreObjects.ToStringHelper} + * @see MoreObjects.ToStringHelper + */ + @Deprecated + public static final class ToStringHelper { + private final String className; + private ValueHolder holderHead = new ValueHolder(); + private ValueHolder holderTail = holderHead; + private boolean omitNullValues = false; + + /** + * Use {@link Objects#toStringHelper(Object)} to create an instance. + */ + private ToStringHelper(String className) { + this.className = checkNotNull(className); + } + + /** + * Configures the {@link ToStringHelper} so {@link #toString()} will ignore + * properties with null value. The order of calling this method, relative + * to the {@code add()}/{@code addValue()} methods, is not significant. + * + * @since 12.0 + */ + public ToStringHelper omitNullValues() { + omitNullValues = true; + return this; + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. If {@code value} is {@code null}, the string {@code "null"} + * is used, unless {@link #omitNullValues()} is called, in which case this + * name/value pair will not be added. + */ + public ToStringHelper add(String name, @Nullable Object value) { + return addHolder(name, value); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, boolean value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, char value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, double value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, float value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, int value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds a name/value pair to the formatted output in {@code name=value} + * format. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper add(String name, long value) { + return addHolder(name, String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, Object)} instead + * and give value a readable name. + */ + public ToStringHelper addValue(@Nullable Object value) { + return addHolder(value); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, boolean)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(boolean value) { + return addHolder(String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, char)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(char value) { + return addHolder(String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, double)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(double value) { + return addHolder(String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, float)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(float value) { + return addHolder(String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, int)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(int value) { + return addHolder(String.valueOf(value)); + } + + /** + * Adds an unnamed value to the formatted output. + * + *

It is strongly encouraged to use {@link #add(String, long)} instead + * and give value a readable name. + * + * @since 11.0 (source-compatible since 2.0) + */ + public ToStringHelper addValue(long value) { + return addHolder(String.valueOf(value)); + } + + /** + * Returns a string in the format specified by {@link + * Objects#toStringHelper(Object)}. + * + *

After calling this method, you can keep adding more properties to later + * call toString() again and get a more complete representation of the + * same object; but properties cannot be removed, so this only allows + * limited reuse of the helper instance. The helper allows duplication of + * properties (multiple name/value pairs with the same name can be added). + */ + @Override public String toString() { + // create a copy to keep it consistent in case value changes + boolean omitNullValuesSnapshot = omitNullValues; + String nextSeparator = ""; + StringBuilder builder = new StringBuilder(32).append(className) + .append('{'); + for (ValueHolder valueHolder = holderHead.next; valueHolder != null; + valueHolder = valueHolder.next) { + if (!omitNullValuesSnapshot || valueHolder.value != null) { + builder.append(nextSeparator); + nextSeparator = ", "; + + if (valueHolder.name != null) { + builder.append(valueHolder.name).append('='); + } + builder.append(valueHolder.value); + } + } + return builder.append('}').toString(); + } + + private ValueHolder addHolder() { + ValueHolder valueHolder = new ValueHolder(); + holderTail = holderTail.next = valueHolder; + return valueHolder; + } + + private ToStringHelper addHolder(@Nullable Object value) { + ValueHolder valueHolder = addHolder(); + valueHolder.value = value; + return this; + } + + private ToStringHelper addHolder(String name, @Nullable Object value) { + ValueHolder valueHolder = addHolder(); + valueHolder.value = value; + valueHolder.name = checkNotNull(name); + return this; + } + + private static final class ValueHolder { + String name; + Object value; + ValueHolder next; + } + } + // Nacho end +} \ No newline at end of file diff --git a/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java b/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java new file mode 100644 index 0000000..24b84d3 --- /dev/null +++ b/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java @@ -0,0 +1,1172 @@ +/* + * Copyright (C) 2007 The Guava 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 + * + * http://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. + */ + +package com.google.common.util.concurrent; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.util.concurrent.Internal.toNanosSaturated; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Supplier; +import com.google.common.base.Throwables; +import com.google.common.collect.Lists; +import com.google.common.collect.Queues; +import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture; +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import com.google.errorprone.annotations.concurrent.GuardedBy; +import java.lang.reflect.InvocationTargetException; +import java.time.Duration; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.Delayed; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.checkerframework.checker.nullness.qual.Nullable; + +/** + * Factory and utility methods for {@link java.util.concurrent.Executor}, {@link ExecutorService}, + * and {@link java.util.concurrent.ThreadFactory}. + * + * @author Eric Fellheimer + * @author Kyle Littlefield + * @author Justin Mahoney + * @since 3.0 + */ +@GwtCompatible(emulated = true) +@ElementTypesAreNonnullByDefault +public final class MoreExecutors { + private MoreExecutors() {} + + /** + * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application + * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their + * completion. + * + *

This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @return an unmodifiable version of the input which will not hang the JVM + * @since 28.0 + */ + @Beta + @GwtIncompatible // TODO + public static ExecutorService getExitingExecutorService( + ThreadPoolExecutor executor, Duration terminationTimeout) { + return getExitingExecutorService( + executor, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS); + } + + /** + * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application + * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their + * completion. + * + *

This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @param timeUnit unit of time for the time parameter + * @return an unmodifiable version of the input which will not hang the JVM + */ + @Beta + @GwtIncompatible // TODO + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public static ExecutorService getExitingExecutorService( + ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + return new Application().getExitingExecutorService(executor, terminationTimeout, timeUnit); + } + + /** + * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application + * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their + * completion. + * + *

This method waits 120 seconds before continuing with JVM termination, even if the executor + * has not finished its work. + * + *

This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @return an unmodifiable version of the input which will not hang the JVM + */ + @Beta + @GwtIncompatible // concurrency + public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) { + return new Application().getExitingExecutorService(executor); + } + + /** + * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when + * the application is complete. It does so by using daemon threads and adding a shutdown hook to + * wait for their completion. + * + *

This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @return an unmodifiable version of the input which will not hang the JVM + * @since 28.0 + */ + @Beta + @GwtIncompatible // java.time.Duration + public static ScheduledExecutorService getExitingScheduledExecutorService( + ScheduledThreadPoolExecutor executor, Duration terminationTimeout) { + return getExitingScheduledExecutorService( + executor, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS); + } + + /** + * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when + * the application is complete. It does so by using daemon threads and adding a shutdown hook to + * wait for their completion. + * + *

This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @param timeUnit unit of time for the time parameter + * @return an unmodifiable version of the input which will not hang the JVM + */ + @Beta + @GwtIncompatible // TODO + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public static ScheduledExecutorService getExitingScheduledExecutorService( + ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + return new Application() + .getExitingScheduledExecutorService(executor, terminationTimeout, timeUnit); + } + + /** + * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when + * the application is complete. It does so by using daemon threads and adding a shutdown hook to + * wait for their completion. + * + *

This method waits 120 seconds before continuing with JVM termination, even if the executor + * has not finished its work. + * + *

This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}. + * + * @param executor the executor to modify to make sure it exits when the application is finished + * @return an unmodifiable version of the input which will not hang the JVM + */ + @Beta + @GwtIncompatible // TODO + public static ScheduledExecutorService getExitingScheduledExecutorService( + ScheduledThreadPoolExecutor executor) { + return new Application().getExitingScheduledExecutorService(executor); + } + + /** + * Add a shutdown hook to wait for thread completion in the given {@link ExecutorService service}. + * This is useful if the given service uses daemon threads, and we want to keep the JVM from + * exiting immediately on shutdown, instead giving these daemon threads a chance to terminate + * normally. + * + * @param service ExecutorService which uses daemon threads + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @since 28.0 + */ + @Beta + @GwtIncompatible // java.time.Duration + public static void addDelayedShutdownHook(ExecutorService service, Duration terminationTimeout) { + addDelayedShutdownHook(service, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS); + } + + /** + * Add a shutdown hook to wait for thread completion in the given {@link ExecutorService service}. + * This is useful if the given service uses daemon threads, and we want to keep the JVM from + * exiting immediately on shutdown, instead giving these daemon threads a chance to terminate + * normally. + * + * @param service ExecutorService which uses daemon threads + * @param terminationTimeout how long to wait for the executor to finish before terminating the + * JVM + * @param timeUnit unit of time for the time parameter + */ + @Beta + @GwtIncompatible // TODO + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public static void addDelayedShutdownHook( + ExecutorService service, long terminationTimeout, TimeUnit timeUnit) { + new Application().addDelayedShutdownHook(service, terminationTimeout, timeUnit); + } + + /** Represents the current application to register shutdown hooks. */ + @GwtIncompatible // TODO + @VisibleForTesting + static class Application { + + final ExecutorService getExitingExecutorService( + ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + useDaemonThreadFactory(executor); + ExecutorService service = Executors.unconfigurableExecutorService(executor); + addDelayedShutdownHook(executor, terminationTimeout, timeUnit); + return service; + } + + final ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) { + return getExitingExecutorService(executor, 120, TimeUnit.SECONDS); + } + + final ScheduledExecutorService getExitingScheduledExecutorService( + ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + useDaemonThreadFactory(executor); + ScheduledExecutorService service = Executors.unconfigurableScheduledExecutorService(executor); + addDelayedShutdownHook(executor, terminationTimeout, timeUnit); + return service; + } + + final ScheduledExecutorService getExitingScheduledExecutorService( + ScheduledThreadPoolExecutor executor) { + return getExitingScheduledExecutorService(executor, 120, TimeUnit.SECONDS); + } + + final void addDelayedShutdownHook( + final ExecutorService service, final long terminationTimeout, final TimeUnit timeUnit) { + checkNotNull(service); + checkNotNull(timeUnit); + addShutdownHook( + MoreExecutors.newThread( + "DelayedShutdownHook-for-" + service, + new Runnable() { + @Override + public void run() { + try { + // We'd like to log progress and failures that may arise in the + // following code, but unfortunately the behavior of logging + // is undefined in shutdown hooks. + // This is because the logging code installs a shutdown hook of its + // own. See Cleaner class inside {@link LogManager}. + service.shutdown(); + service.awaitTermination(terminationTimeout, timeUnit); + } catch (InterruptedException ignored) { + // We're shutting down anyway, so just ignore. + } + } + })); + } + + @VisibleForTesting + void addShutdownHook(Thread hook) { + Runtime.getRuntime().addShutdownHook(hook); + } + } + + @GwtIncompatible // TODO + private static void useDaemonThreadFactory(ThreadPoolExecutor executor) { + executor.setThreadFactory( + new ThreadFactoryBuilder() + .setDaemon(true) + .setThreadFactory(executor.getThreadFactory()) + .build()); + } + + // See newDirectExecutorService javadoc for behavioral notes. + @GwtIncompatible // TODO + private static final class DirectExecutorService extends AbstractListeningExecutorService { + /** Lock used whenever accessing the state variables (runningTasks, shutdown) of the executor */ + private final Object lock = new Object(); + + /* + * Conceptually, these two variables describe the executor being in + * one of three states: + * - Active: shutdown == false + * - Shutdown: runningTasks > 0 and shutdown == true + * - Terminated: runningTasks == 0 and shutdown == true + */ + @GuardedBy("lock") + private int runningTasks = 0; + + @GuardedBy("lock") + private boolean shutdown = false; + + @Override + public void execute(Runnable command) { + startTask(); + try { + command.run(); + } finally { + endTask(); + } + } + + @Override + public boolean isShutdown() { + synchronized (lock) { + return shutdown; + } + } + + @Override + public void shutdown() { + synchronized (lock) { + shutdown = true; + if (runningTasks == 0) { + lock.notifyAll(); + } + } + } + + // See newDirectExecutorService javadoc for unusual behavior of this method. + @Override + public List shutdownNow() { + shutdown(); + return Collections.emptyList(); + } + + @Override + public boolean isTerminated() { + synchronized (lock) { + return shutdown && runningTasks == 0; + } + } + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + long nanos = unit.toNanos(timeout); + synchronized (lock) { + while (true) { + if (shutdown && runningTasks == 0) { + return true; + } else if (nanos <= 0) { + return false; + } else { + long now = System.nanoTime(); + TimeUnit.NANOSECONDS.timedWait(lock, nanos); + nanos -= System.nanoTime() - now; // subtract the actual time we waited + } + } + } + } + + /** + * Checks if the executor has been shut down and increments the running task count. + * + * @throws RejectedExecutionException if the executor has been previously shutdown + */ + private void startTask() { + synchronized (lock) { + if (shutdown) { + throw new RejectedExecutionException("Executor already shutdown"); + } + runningTasks++; + } + } + + /** Decrements the running task count. */ + private void endTask() { + synchronized (lock) { + int numRunning = --runningTasks; + if (numRunning == 0) { + lock.notifyAll(); + } + } + } + } + + /** + * Creates an executor service that runs each task in the thread that invokes {@code + * execute/submit}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}. This applies both to + * individually submitted tasks and to collections of tasks submitted via {@code invokeAll} or + * {@code invokeAny}. In the latter case, tasks will run serially on the calling thread. Tasks are + * run to completion before a {@code Future} is returned to the caller (unless the executor has + * been shutdown). + * + *

Although all tasks are immediately executed in the thread that submitted the task, this + * {@code ExecutorService} imposes a small locking overhead on each task submission in order to + * implement shutdown and termination behavior. + * + *

The implementation deviates from the {@code ExecutorService} specification with regards to + * the {@code shutdownNow} method. First, "best-effort" with regards to canceling running tasks is + * implemented as "no-effort". No interrupts or other attempts are made to stop threads executing + * tasks. Second, the returned list will always be empty, as any submitted task is considered to + * have started execution. This applies also to tasks given to {@code invokeAll} or {@code + * invokeAny} which are pending serial execution, even the subset of the tasks that have not yet + * started execution. It is unclear from the {@code ExecutorService} specification if these should + * be included, and it's much easier to implement the interpretation that they not be. Finally, a + * call to {@code shutdown} or {@code shutdownNow} may result in concurrent calls to {@code + * invokeAll/invokeAny} throwing RejectedExecutionException, although a subset of the tasks may + * already have been executed. + * + * @since 18.0 (present as MoreExecutors.sameThreadExecutor() since 10.0) + */ + @GwtIncompatible // TODO + public static ListeningExecutorService newDirectExecutorService() { + return new DirectExecutorService(); + } + + /** + * Returns an {@link Executor} that runs each task in the thread that invokes {@link + * Executor#execute execute}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}. + * + *

This executor is appropriate for tasks that are lightweight and not deeply chained. + * Inappropriate {@code directExecutor} usage can cause problems, and these problems can be + * difficult to reproduce because they depend on timing. For example: + * + *

    + *
  • A call like {@code future.transform(function, directExecutor())} may execute the function + * immediately in the thread that is calling {@code transform}. (This specific case happens + * if the future is already completed.) If {@code transform} call was made from a UI thread + * or other latency-sensitive thread, a heavyweight function can harm responsiveness. + *
  • If the task will be executed later, consider which thread will trigger the execution -- + * since that thread will execute the task inline. If the thread is a shared system thread + * like an RPC network thread, a heavyweight task can stall progress of the whole system or + * even deadlock it. + *
  • If many tasks will be triggered by the same event, one heavyweight task may delay other + * tasks -- even tasks that are not themselves {@code directExecutor} tasks. + *
  • If many such tasks are chained together (such as with {@code + * future.transform(...).transform(...).transform(...)....}), they may overflow the stack. + * (In simple cases, callers can avoid this by registering all tasks with the same {@link + * MoreExecutors#newSequentialExecutor} wrapper around {@code directExecutor()}. More + * complex cases may require using thread pools or making deeper changes.) + *
  • If an exception propagates out of a {@code Runnable}, it is not necessarily seen by any + * {@code UncaughtExceptionHandler} for the thread. For example, if the callback passed to + * {@link Futures#addCallback} throws an exception, that exception will be typically be + * logged by the {@link ListenableFuture} implementation, even if the thread is configured + * to do something different. In other cases, no code will catch the exception, and it may + * terminate whichever thread happens to trigger the execution. + *
+ * + * Additionally, beware of executing tasks with {@code directExecutor} while holding a lock. Since + * the task you submit to the executor (or any other arbitrary work the executor does) may do slow + * work or acquire other locks, you risk deadlocks. + * + *

This instance is equivalent to: + * + *

{@code
+     * final class DirectExecutor implements Executor {
+     *   public void execute(Runnable r) {
+     *     r.run();
+     *   }
+     * }
+     * }
+ * + *

This should be preferred to {@link #newDirectExecutorService()} because implementing the + * {@link ExecutorService} subinterface necessitates significant performance overhead. + * + * @since 18.0 + */ + public static Executor directExecutor() { + return DirectExecutor.INSTANCE; + } + + /** + * Returns an {@link Executor} that runs each task executed sequentially, such that no two tasks + * are running concurrently. Submitted tasks have a happens-before order as defined in the Java + * Language Specification. + * + *

The executor uses {@code delegate} in order to {@link Executor#execute execute} each task in + * turn, and does not create any threads of its own. + * + *

After execution begins on a thread from the {@code delegate} {@link Executor}, tasks are + * polled and executed from a task queue until there are no more tasks. The thread will not be + * released until there are no more tasks to run. + * + *

If a task is submitted while a thread is executing tasks from the task queue, the thread + * will not be released until that submitted task is also complete. + * + *

If a task is {@linkplain Thread#interrupt interrupted} while a task is running: + * + *

    + *
  1. execution will not stop until the task queue is empty. + *
  2. tasks will begin execution with the thread marked as not interrupted - any interruption + * applies only to the task that was running at the point of interruption. + *
  3. if the thread was interrupted before the SequentialExecutor's worker begins execution, + * the interrupt will be restored to the thread after it completes so that its {@code + * delegate} Executor may process the interrupt. + *
  4. subtasks are run with the thread uninterrupted and interrupts received during execution + * of a task are ignored. + *
+ * + *

{@code RuntimeException}s thrown by tasks are simply logged and the executor keeps trucking. + * If an {@code Error} is thrown, the error will propagate and execution will stop until the next + * time a task is submitted. + * + *

When an {@code Error} is thrown by an executed task, previously submitted tasks may never + * run. An attempt will be made to restart execution on the next call to {@code execute}. If the + * {@code delegate} has begun to reject execution, the previously submitted tasks may never run, + * despite not throwing a RejectedExecutionException synchronously with the call to {@code + * execute}. If this behaviour is problematic, use an Executor with a single thread (e.g. {@link + * Executors#newSingleThreadExecutor}). + * + * @since 23.3 (since 23.1 as {@code sequentialExecutor}) + */ + @Beta + @GwtIncompatible + public static Executor newSequentialExecutor(Executor delegate) { + return new SequentialExecutor(delegate); + } + + /** + * Creates an {@link ExecutorService} whose {@code submit} and {@code invokeAll} methods submit + * {@link ListenableFutureTask} instances to the given delegate executor. Those methods, as well + * as {@code execute} and {@code invokeAny}, are implemented in terms of calls to {@code + * delegate.execute}. All other methods are forwarded unchanged to the delegate. This implies that + * the returned {@code ListeningExecutorService} never calls the delegate's {@code submit}, {@code + * invokeAll}, and {@code invokeAny} methods, so any special handling of tasks must be implemented + * in the delegate's {@code execute} method or by wrapping the returned {@code + * ListeningExecutorService}. + * + *

If the delegate executor was already an instance of {@code ListeningExecutorService}, it is + * returned untouched, and the rest of this documentation does not apply. + * + * @since 10.0 + */ + @GwtIncompatible // TODO + public static ListeningExecutorService listeningDecorator(ExecutorService delegate) { + return (delegate instanceof ListeningExecutorService) + ? (ListeningExecutorService) delegate + : (delegate instanceof ScheduledExecutorService) + ? new ScheduledListeningDecorator((ScheduledExecutorService) delegate) + : new ListeningDecorator(delegate); + } + + /** + * Creates a {@link ScheduledExecutorService} whose {@code submit} and {@code invokeAll} methods + * submit {@link ListenableFutureTask} instances to the given delegate executor. Those methods, as + * well as {@code execute} and {@code invokeAny}, are implemented in terms of calls to {@code + * delegate.execute}. All other methods are forwarded unchanged to the delegate. This implies that + * the returned {@code ListeningScheduledExecutorService} never calls the delegate's {@code + * submit}, {@code invokeAll}, and {@code invokeAny} methods, so any special handling of tasks + * must be implemented in the delegate's {@code execute} method or by wrapping the returned {@code + * ListeningScheduledExecutorService}. + * + *

If the delegate executor was already an instance of {@code + * ListeningScheduledExecutorService}, it is returned untouched, and the rest of this + * documentation does not apply. + * + * @since 10.0 + */ + @GwtIncompatible // TODO + public static ListeningScheduledExecutorService listeningDecorator( + ScheduledExecutorService delegate) { + return (delegate instanceof ListeningScheduledExecutorService) + ? (ListeningScheduledExecutorService) delegate + : new ScheduledListeningDecorator(delegate); + } + + @GwtIncompatible // TODO + private static class ListeningDecorator extends AbstractListeningExecutorService { + private final ExecutorService delegate; + + ListeningDecorator(ExecutorService delegate) { + this.delegate = checkNotNull(delegate); + } + + @Override + public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return delegate.awaitTermination(timeout, unit); + } + + @Override + public final boolean isShutdown() { + return delegate.isShutdown(); + } + + @Override + public final boolean isTerminated() { + return delegate.isTerminated(); + } + + @Override + public final void shutdown() { + delegate.shutdown(); + } + + @Override + public final List shutdownNow() { + return delegate.shutdownNow(); + } + + @Override + public final void execute(Runnable command) { + delegate.execute(command); + } + + @Override + public final String toString() { + return super.toString() + "[" + delegate + "]"; + } + } + + @GwtIncompatible // TODO + private static final class ScheduledListeningDecorator extends ListeningDecorator + implements ListeningScheduledExecutorService { + @SuppressWarnings("hiding") + final ScheduledExecutorService delegate; + + ScheduledListeningDecorator(ScheduledExecutorService delegate) { + super(delegate); + this.delegate = checkNotNull(delegate); + } + + @Override + public ListenableScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + TrustedListenableFutureTask<@Nullable Void> task = + TrustedListenableFutureTask.create(command, null); + ScheduledFuture scheduled = delegate.schedule(task, delay, unit); + return new ListenableScheduledTask<@Nullable Void>(task, scheduled); + } + + @Override + public ListenableScheduledFuture schedule( + Callable callable, long delay, TimeUnit unit) { + TrustedListenableFutureTask task = TrustedListenableFutureTask.create(callable); + ScheduledFuture scheduled = delegate.schedule(task, delay, unit); + return new ListenableScheduledTask(task, scheduled); + } + + @Override + public ListenableScheduledFuture scheduleAtFixedRate( + Runnable command, long initialDelay, long period, TimeUnit unit) { + NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command); + ScheduledFuture scheduled = delegate.scheduleAtFixedRate(task, initialDelay, period, unit); + return new ListenableScheduledTask<@Nullable Void>(task, scheduled); + } + + @Override + public ListenableScheduledFuture scheduleWithFixedDelay( + Runnable command, long initialDelay, long delay, TimeUnit unit) { + NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command); + ScheduledFuture scheduled = + delegate.scheduleWithFixedDelay(task, initialDelay, delay, unit); + return new ListenableScheduledTask<@Nullable Void>(task, scheduled); + } + + private static final class ListenableScheduledTask + extends SimpleForwardingListenableFuture implements ListenableScheduledFuture { + + private final ScheduledFuture scheduledDelegate; + + public ListenableScheduledTask( + ListenableFuture listenableDelegate, ScheduledFuture scheduledDelegate) { + super(listenableDelegate); + this.scheduledDelegate = scheduledDelegate; + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + boolean cancelled = super.cancel(mayInterruptIfRunning); + if (cancelled) { + // Unless it is cancelled, the delegate may continue being scheduled + scheduledDelegate.cancel(mayInterruptIfRunning); + + // TODO(user): Cancel "this" if "scheduledDelegate" is cancelled. + } + return cancelled; + } + + @Override + public long getDelay(TimeUnit unit) { + return scheduledDelegate.getDelay(unit); + } + + @Override + public int compareTo(Delayed other) { + return scheduledDelegate.compareTo(other); + } + } + + @GwtIncompatible // TODO + private static final class NeverSuccessfulListenableFutureTask + extends AbstractFuture.TrustedFuture<@Nullable Void> implements Runnable { + private final Runnable delegate; + + public NeverSuccessfulListenableFutureTask(Runnable delegate) { + this.delegate = checkNotNull(delegate); + } + + @Override + public void run() { + try { + delegate.run(); + } catch (Throwable t) { + setException(t); + throw Throwables.propagate(t); + } + } + + @Override + protected String pendingToString() { + return "task=[" + delegate + "]"; + } + } + } + + /* + * This following method is a modified version of one found in + * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/test/tck/AbstractExecutorServiceTest.java?revision=1.30 + * which contained the following notice: + * + * Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to + * the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ + * + * Other contributors include Andrew Wright, Jeffrey Hayes, Pat Fisher, Mike Judd. + */ + + /** + * An implementation of {@link ExecutorService#invokeAny} for {@link ListeningExecutorService} + * implementations. + */ + @GwtIncompatible + @ParametricNullness + static T invokeAnyImpl( + ListeningExecutorService executorService, + Collection> tasks, + boolean timed, + Duration timeout) + throws InterruptedException, ExecutionException, TimeoutException { + return invokeAnyImpl( + executorService, tasks, timed, toNanosSaturated(timeout), TimeUnit.NANOSECONDS); + } + + /** + * An implementation of {@link ExecutorService#invokeAny} for {@link ListeningExecutorService} + * implementations. + */ + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + @GwtIncompatible + @ParametricNullness + static T invokeAnyImpl( + ListeningExecutorService executorService, + Collection> tasks, + boolean timed, + long timeout, + TimeUnit unit) + throws InterruptedException, ExecutionException, TimeoutException { + checkNotNull(executorService); + checkNotNull(unit); + int ntasks = tasks.size(); + checkArgument(ntasks > 0); + List> futures = Lists.newArrayListWithCapacity(ntasks); + BlockingQueue> futureQueue = Queues.newLinkedBlockingQueue(); + long timeoutNanos = unit.toNanos(timeout); + + // For efficiency, especially in executors with limited + // parallelism, check to see if previously submitted tasks are + // done before submitting more of them. This interleaving + // plus the exception mechanics account for messiness of main + // loop. + + try { + // Record exceptions so that if we fail to obtain any + // result, we can throw the last exception we got. + ExecutionException ee = null; + long lastTime = timed ? System.nanoTime() : 0; + Iterator> it = tasks.iterator(); + + futures.add(submitAndAddQueueListener(executorService, it.next(), futureQueue)); + --ntasks; + int active = 1; + + while (true) { + Future f = futureQueue.poll(); + if (f == null) { + if (ntasks > 0) { + --ntasks; + futures.add(submitAndAddQueueListener(executorService, it.next(), futureQueue)); + ++active; + } else if (active == 0) { + break; + } else if (timed) { + f = futureQueue.poll(timeoutNanos, TimeUnit.NANOSECONDS); + if (f == null) { + throw new TimeoutException(); + } + long now = System.nanoTime(); + timeoutNanos -= now - lastTime; + lastTime = now; + } else { + f = futureQueue.take(); + } + } + if (f != null) { + --active; + try { + return f.get(); + } catch (ExecutionException eex) { + ee = eex; + } catch (RuntimeException rex) { + ee = new ExecutionException(rex); + } + } + } + + if (ee == null) { + ee = new ExecutionException(null); + } + throw ee; + } finally { + for (Future f : futures) { + f.cancel(true); + } + } + } + + /** + * Submits the task and adds a listener that adds the future to {@code queue} when it completes. + */ + @GwtIncompatible // TODO + private static ListenableFuture submitAndAddQueueListener( + ListeningExecutorService executorService, + Callable task, + final BlockingQueue> queue) { + final ListenableFuture future = executorService.submit(task); + future.addListener( + new Runnable() { + @Override + public void run() { + queue.add(future); + } + }, + directExecutor()); + return future; + } + + /** + * Returns a default thread factory used to create new threads. + * + *

When running on AppEngine with access to AppEngine legacy + * APIs, this method returns {@code ThreadManager.currentRequestThreadFactory()}. Otherwise, + * it returns {@link Executors#defaultThreadFactory()}. + * + * @since 14.0 + */ + @Beta + @GwtIncompatible // concurrency + public static ThreadFactory platformThreadFactory() { + if (!isAppEngineWithApiClasses()) { + return Executors.defaultThreadFactory(); + } + try { + return (ThreadFactory) + Class.forName("com.google.appengine.api.ThreadManager") + .getMethod("currentRequestThreadFactory") + .invoke(null); + /* + * Do not merge the 3 catch blocks below. javac would infer a type of + * ReflectiveOperationException, which Animal Sniffer would reject. (Old versions of Android + * don't *seem* to mind, but there might be edge cases of which we're unaware.) + */ + } catch (IllegalAccessException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } catch (InvocationTargetException e) { + throw Throwables.propagate(e.getCause()); + } + } + + @GwtIncompatible // TODO + private static boolean isAppEngineWithApiClasses() { + if (System.getProperty("com.google.appengine.runtime.environment") == null) { + return false; + } + try { + Class.forName("com.google.appengine.api.utils.SystemProperty"); + } catch (ClassNotFoundException e) { + return false; + } + try { + // If the current environment is null, we're not inside AppEngine. + return Class.forName("com.google.apphosting.api.ApiProxy") + .getMethod("getCurrentEnvironment") + .invoke(null) + != null; + } catch (ClassNotFoundException e) { + // If ApiProxy doesn't exist, we're not on AppEngine at all. + return false; + } catch (InvocationTargetException e) { + // If ApiProxy throws an exception, we're not in a proper AppEngine environment. + return false; + } catch (IllegalAccessException e) { + // If the method isn't accessible, we're not on a supported version of AppEngine; + return false; + } catch (NoSuchMethodException e) { + // If the method doesn't exist, we're not on a supported version of AppEngine; + return false; + } + } + + /** + * Creates a thread using {@link #platformThreadFactory}, and sets its name to {@code name} unless + * changing the name is forbidden by the security manager. + */ + @GwtIncompatible // concurrency + static Thread newThread(String name, Runnable runnable) { + checkNotNull(name); + checkNotNull(runnable); + Thread result = platformThreadFactory().newThread(runnable); + try { + result.setName(name); + } catch (SecurityException e) { + // OK if we can't set the name in this environment. + } + return result; + } + + // TODO(lukes): provide overloads for ListeningExecutorService? ListeningScheduledExecutorService? + // TODO(lukes): provide overloads that take constant strings? Functions to + // calculate names? + + /** + * Creates an {@link Executor} that renames the {@link Thread threads} that its tasks run in. + * + *

The names are retrieved from the {@code nameSupplier} on the thread that is being renamed + * right before each task is run. The renaming is best effort, if a {@link SecurityManager} + * prevents the renaming then it will be skipped but the tasks will still execute. + * + * @param executor The executor to decorate + * @param nameSupplier The source of names for each task + */ + @GwtIncompatible // concurrency + static Executor renamingDecorator(final Executor executor, final Supplier nameSupplier) { + checkNotNull(executor); + checkNotNull(nameSupplier); + return new Executor() { + @Override + public void execute(Runnable command) { + executor.execute(Callables.threadRenaming(command, nameSupplier)); + } + }; + } + + /** + * Creates an {@link ExecutorService} that renames the {@link Thread threads} that its tasks run + * in. + * + *

The names are retrieved from the {@code nameSupplier} on the thread that is being renamed + * right before each task is run. The renaming is best effort, if a {@link SecurityManager} + * prevents the renaming then it will be skipped but the tasks will still execute. + * + * @param service The executor to decorate + * @param nameSupplier The source of names for each task + */ + @GwtIncompatible // concurrency + static ExecutorService renamingDecorator( + final ExecutorService service, final Supplier nameSupplier) { + checkNotNull(service); + checkNotNull(nameSupplier); + return new WrappingExecutorService(service) { + @Override + protected Callable wrapTask(Callable callable) { + return Callables.threadRenaming(callable, nameSupplier); + } + + @Override + protected Runnable wrapTask(Runnable command) { + return Callables.threadRenaming(command, nameSupplier); + } + }; + } + + /** + * Creates a {@link ScheduledExecutorService} that renames the {@link Thread threads} that its + * tasks run in. + * + *

The names are retrieved from the {@code nameSupplier} on the thread that is being renamed + * right before each task is run. The renaming is best effort, if a {@link SecurityManager} + * prevents the renaming then it will be skipped but the tasks will still execute. + * + * @param service The executor to decorate + * @param nameSupplier The source of names for each task + */ + @GwtIncompatible // concurrency + static ScheduledExecutorService renamingDecorator( + final ScheduledExecutorService service, final Supplier nameSupplier) { + checkNotNull(service); + checkNotNull(nameSupplier); + return new WrappingScheduledExecutorService(service) { + @Override + protected Callable wrapTask(Callable callable) { + return Callables.threadRenaming(callable, nameSupplier); + } + + @Override + protected Runnable wrapTask(Runnable command) { + return Callables.threadRenaming(command, nameSupplier); + } + }; + } + + /** + * Shuts down the given executor service gradually, first disabling new submissions and later, if + * necessary, cancelling remaining tasks. + * + *

The method takes the following steps: + * + *

    + *
  1. calls {@link ExecutorService#shutdown()}, disabling acceptance of new submitted tasks. + *
  2. awaits executor service termination for half of the specified timeout. + *
  3. if the timeout expires, it calls {@link ExecutorService#shutdownNow()}, cancelling + * pending tasks and interrupting running tasks. + *
  4. awaits executor service termination for the other half of the specified timeout. + *
+ * + *

If, at any step of the process, the calling thread is interrupted, the method calls {@link + * ExecutorService#shutdownNow()} and returns. + * + * @param service the {@code ExecutorService} to shut down + * @param timeout the maximum time to wait for the {@code ExecutorService} to terminate + * @return {@code true} if the {@code ExecutorService} was terminated successfully, {@code false} + * if the call timed out or was interrupted + * @since 28.0 + */ + @Beta + @CanIgnoreReturnValue + @GwtIncompatible // java.time.Duration + public static boolean shutdownAndAwaitTermination(ExecutorService service, Duration timeout) { + return shutdownAndAwaitTermination(service, toNanosSaturated(timeout), TimeUnit.NANOSECONDS); + } + + /** + * Shuts down the given executor service gradually, first disabling new submissions and later, if + * necessary, cancelling remaining tasks. + * + *

The method takes the following steps: + * + *

    + *
  1. calls {@link ExecutorService#shutdown()}, disabling acceptance of new submitted tasks. + *
  2. awaits executor service termination for half of the specified timeout. + *
  3. if the timeout expires, it calls {@link ExecutorService#shutdownNow()}, cancelling + * pending tasks and interrupting running tasks. + *
  4. awaits executor service termination for the other half of the specified timeout. + *
+ * + *

If, at any step of the process, the calling thread is interrupted, the method calls {@link + * ExecutorService#shutdownNow()} and returns. + * + * @param service the {@code ExecutorService} to shut down + * @param timeout the maximum time to wait for the {@code ExecutorService} to terminate + * @param unit the time unit of the timeout argument + * @return {@code true} if the {@code ExecutorService} was terminated successfully, {@code false} + * if the call timed out or was interrupted + * @since 17.0 + */ + @Beta + @CanIgnoreReturnValue + @GwtIncompatible // concurrency + @SuppressWarnings("GoodTime") // should accept a java.time.Duration + public static boolean shutdownAndAwaitTermination( + ExecutorService service, long timeout, TimeUnit unit) { + long halfTimeoutNanos = unit.toNanos(timeout) / 2; + // Disable new tasks from being submitted + service.shutdown(); + try { + // Wait for half the duration of the timeout for existing tasks to terminate + if (!service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS)) { + // Cancel currently executing tasks + service.shutdownNow(); + // Wait the other half of the timeout for tasks to respond to being cancelled + service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS); + } + } catch (InterruptedException ie) { + // Preserve interrupt status + Thread.currentThread().interrupt(); + // (Re-)Cancel if current thread also interrupted + service.shutdownNow(); + } + return service.isTerminated(); + } + + /** + * Returns an Executor that will propagate {@link RejectedExecutionException} from the delegate + * executor to the given {@code future}. + * + *

Note, the returned executor can only be used once. + */ + static Executor rejectionPropagatingExecutor( + final Executor delegate, final AbstractFuture future) { + checkNotNull(delegate); + checkNotNull(future); + if (delegate == directExecutor()) { + // directExecutor() cannot throw RejectedExecutionException + return delegate; + } + return new Executor() { + @Override + public void execute(Runnable command) { + try { + delegate.execute(command); + } catch (RejectedExecutionException e) { + future.setException(e); + } + } + }; + } + + // Nacho start + /** + * Creates an executor service that runs each task in the thread that invokes {@code + * execute/submit}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}. This applies both to + * individually submitted tasks and to collections of tasks submitted via {@code invokeAll} or + * {@code invokeAny}. In the latter case, tasks will run serially on the calling thread. Tasks are + * run to completion before a {@code Future} is returned to the caller (unless the executor has + * been shutdown). + * + *

Although all tasks are immediately executed in the thread that submitted the task, this + * {@code ExecutorService} imposes a small locking overhead on each task submission in order to + * implement shutdown and termination behavior. + * + *

The implementation deviates from the {@code ExecutorService} specification with regards to + * the {@code shutdownNow} method. First, "best-effort" with regards to canceling running tasks is + * implemented as "no-effort". No interrupts or other attempts are made to stop threads executing + * tasks. Second, the returned list will always be empty, as any submitted task is considered to + * have started execution. This applies also to tasks given to {@code invokeAll} or {@code + * invokeAny} which are pending serial execution, even the subset of the tasks that have not yet + * started execution. It is unclear from the {@code ExecutorService} specification if these should + * be included, and it's much easier to implement the interpretation that they not be. Finally, a + * call to {@code shutdown} or {@code shutdownNow} may result in concurrent calls to {@code + * invokeAll/invokeAny} throwing RejectedExecutionException, although a subset of the tasks may + * already have been executed. + * + * @since 10.0 + * @deprecated replaced by {@link MoreExecutors#sameThreadExecutor()} + * @see MoreExecutors#sameThreadExecutor() + */ + @Deprecated + @GwtIncompatible + public static ListeningExecutorService sameThreadExecutor() { + return newDirectExecutorService(); + } + // Nacho end +} \ No newline at end of file diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java b/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java new file mode 100644 index 0000000..09b69bb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +public class Achievement extends Statistic { + + public final int a; + public final int b; + public final Achievement c; + private final String k; + public final ItemStack d; + private boolean m; + + public Achievement(String s, String s1, int i, int j, Item item, Achievement achievement) { + this(s, s1, i, j, new ItemStack(item), achievement); + } + + public Achievement(String s, String s1, int i, int j, Block block, Achievement achievement) { + this(s, s1, i, j, new ItemStack(block), achievement); + } + + public Achievement(String s, String s1, int i, int j, ItemStack itemstack, Achievement achievement) { + super(s, new ChatMessage("achievement." + s1, new Object[0])); + this.d = itemstack; + this.k = "achievement." + s1 + ".desc"; + this.a = i; + this.b = j; + + if (i > AchievementList.c) { + AchievementList.c = i; + } + + if (j > AchievementList.d) { + AchievementList.d = j; + } + + this.c = achievement; + } + + public Achievement a() { + this.f = true; + return this; + } + + public Achievement b() { + this.m = true; + return this; + } + + public Achievement c() { + super.h(); + AchievementList.e.add(this); + return this; + } + + public boolean d() { + return true; + } + + public IChatBaseComponent e() { + IChatBaseComponent ichatbasecomponent = super.e(); + + ichatbasecomponent.getChatModifier().setColor(this.g() ? EnumChatFormat.DARK_PURPLE : EnumChatFormat.GREEN); + return ichatbasecomponent; + } + + public Achievement a(Class oclass) { + return (Achievement) super.b(oclass); + } + + public boolean g() { + return this.m; + } + + public Statistic b(Class oclass) { + return this.a(oclass); + } + + public Statistic h() { + return this.c(); + } + + public Statistic i() { + return this.a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java new file mode 100644 index 0000000..4c92425 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; + +public class AchievementList { + + public static int a; + public static int b; + public static int c; + public static int d; + public static List e = Lists.newArrayList(); + public static Achievement f = (new Achievement("achievement.openInventory", "openInventory", 0, 0, Items.BOOK, (Achievement) null)).a().c(); + public static Achievement g = (new Achievement("achievement.mineWood", "mineWood", 2, 1, Blocks.LOG, AchievementList.f)).c(); + public static Achievement h = (new Achievement("achievement.buildWorkBench", "buildWorkBench", 4, -1, Blocks.CRAFTING_TABLE, AchievementList.g)).c(); + public static Achievement i = (new Achievement("achievement.buildPickaxe", "buildPickaxe", 4, 2, Items.WOODEN_PICKAXE, AchievementList.h)).c(); + public static Achievement j = (new Achievement("achievement.buildFurnace", "buildFurnace", 3, 4, Blocks.FURNACE, AchievementList.i)).c(); + public static Achievement k = (new Achievement("achievement.acquireIron", "acquireIron", 1, 4, Items.IRON_INGOT, AchievementList.j)).c(); + public static Achievement l = (new Achievement("achievement.buildHoe", "buildHoe", 2, -3, Items.WOODEN_HOE, AchievementList.h)).c(); + public static Achievement m = (new Achievement("achievement.makeBread", "makeBread", -1, -3, Items.BREAD, AchievementList.l)).c(); + public static Achievement n = (new Achievement("achievement.bakeCake", "bakeCake", 0, -5, Items.CAKE, AchievementList.l)).c(); + public static Achievement o = (new Achievement("achievement.buildBetterPickaxe", "buildBetterPickaxe", 6, 2, Items.STONE_PICKAXE, AchievementList.i)).c(); + public static Achievement p = (new Achievement("achievement.cookFish", "cookFish", 2, 6, Items.COOKED_FISH, AchievementList.j)).c(); + public static Achievement q = (new Achievement("achievement.onARail", "onARail", 2, 3, Blocks.RAIL, AchievementList.k)).b().c(); + public static Achievement r = (new Achievement("achievement.buildSword", "buildSword", 6, -1, Items.WOODEN_SWORD, AchievementList.h)).c(); + public static Achievement s = (new Achievement("achievement.killEnemy", "killEnemy", 8, -1, Items.BONE, AchievementList.r)).c(); + public static Achievement t = (new Achievement("achievement.killCow", "killCow", 7, -3, Items.LEATHER, AchievementList.r)).c(); + public static Achievement u = (new Achievement("achievement.flyPig", "flyPig", 9, -3, Items.SADDLE, AchievementList.t)).b().c(); + public static Achievement v = (new Achievement("achievement.snipeSkeleton", "snipeSkeleton", 7, 0, Items.BOW, AchievementList.s)).b().c(); + public static Achievement w = (new Achievement("achievement.diamonds", "diamonds", -1, 5, Blocks.DIAMOND_ORE, AchievementList.k)).c(); + public static Achievement x = (new Achievement("achievement.diamondsToYou", "diamondsToYou", -1, 2, Items.DIAMOND, AchievementList.w)).c(); + public static Achievement y = (new Achievement("achievement.portal", "portal", -1, 7, Blocks.OBSIDIAN, AchievementList.w)).c(); + public static Achievement z = (new Achievement("achievement.ghast", "ghast", -4, 8, Items.GHAST_TEAR, AchievementList.y)).b().c(); + public static Achievement A = (new Achievement("achievement.blazeRod", "blazeRod", 0, 9, Items.BLAZE_ROD, AchievementList.y)).c(); + public static Achievement B = (new Achievement("achievement.potion", "potion", 2, 8, Items.POTION, AchievementList.A)).c(); + public static Achievement C = (new Achievement("achievement.theEnd", "theEnd", 3, 10, Items.ENDER_EYE, AchievementList.A)).b().c(); + public static Achievement D = (new Achievement("achievement.theEnd2", "theEnd2", 4, 13, Blocks.DRAGON_EGG, AchievementList.C)).b().c(); + public static Achievement E = (new Achievement("achievement.enchantments", "enchantments", -4, 4, Blocks.ENCHANTING_TABLE, AchievementList.w)).c(); + public static Achievement F = (new Achievement("achievement.overkill", "overkill", -4, 1, Items.DIAMOND_SWORD, AchievementList.E)).b().c(); + public static Achievement G = (new Achievement("achievement.bookcase", "bookcase", -3, 6, Blocks.BOOKSHELF, AchievementList.E)).c(); + public static Achievement H = (new Achievement("achievement.breedCow", "breedCow", 7, -5, Items.WHEAT, AchievementList.t)).c(); + public static Achievement I = (new Achievement("achievement.spawnWither", "spawnWither", 7, 12, new ItemStack(Items.SKULL, 1, 1), AchievementList.D)).c(); + public static Achievement J = (new Achievement("achievement.killWither", "killWither", 7, 10, Items.NETHER_STAR, AchievementList.I)).c(); + public static Achievement K = (new Achievement("achievement.fullBeacon", "fullBeacon", 7, 8, Blocks.BEACON, AchievementList.J)).b().c(); + public static Achievement L = (new Achievement("achievement.exploreAllBiomes", "exploreAllBiomes", 4, 8, Items.DIAMOND_BOOTS, AchievementList.C)).a(AchievementSet.class).b().c(); + public static Achievement M = (new Achievement("achievement.overpowered", "overpowered", 6, 4, new ItemStack(Items.GOLDEN_APPLE, 1, 1), AchievementList.o)).b().c(); + + public static void a() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java new file mode 100644 index 0000000..ad2d9dc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.Sets; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; + +public class AchievementSet extends ForwardingSet implements IJsonStatistic { + + private final Set a = Sets.newHashSet(); + + public AchievementSet() {} + + public void a(JsonElement jsonelement) { + if (jsonelement.isJsonArray()) { + Iterator iterator = jsonelement.getAsJsonArray().iterator(); + + while (iterator.hasNext()) { + JsonElement jsonelement1 = (JsonElement) iterator.next(); + + this.add(jsonelement1.getAsString()); + } + } + + } + + public JsonElement a() { + JsonArray jsonarray = new JsonArray(); + Iterator iterator = this.iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + + jsonarray.add(new JsonPrimitive(s)); + } + + return jsonarray; + } + + protected Set delegate() { + return this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java new file mode 100644 index 0000000..9ef9bfe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +public abstract class AttributeBase implements IAttribute { + + private final IAttribute a; + private final String b; + private final double c; + private boolean d; + + protected AttributeBase(IAttribute iattribute, String s, double d0) { + this.a = iattribute; + this.b = s; + this.c = d0; + if (s == null) { + throw new IllegalArgumentException("Name cannot be null!"); + } + } + + public String getName() { + return this.b; + } + + public double b() { + return this.c; + } + + public boolean c() { + return this.d; + } + + public AttributeBase a(boolean flag) { + this.d = flag; + return this; + } + + public IAttribute d() { + return this.a; + } + + public int hashCode() { + return this.b.hashCode(); + } + + public boolean equals(Object object) { + return object instanceof IAttribute && this.b.equals(((IAttribute) object).getName()); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java new file mode 100644 index 0000000..c730d77 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.UUID; + +public interface AttributeInstance { + + IAttribute getAttribute(); + + double b(); + + void setValue(double d0); + + Collection a(int i); + + Collection c(); + + boolean a(AttributeModifier attributemodifier); + + AttributeModifier a(UUID uuid); + + void b(AttributeModifier attributemodifier); + + void c(AttributeModifier attributemodifier); + + double getValue(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java new file mode 100644 index 0000000..6b7aabc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java @@ -0,0 +1,80 @@ +package net.minecraft.server; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public abstract class AttributeMapBase { + + protected final Map a = Maps.newHashMap(); + protected final Map b = new InsensitiveStringMap(); + protected final Multimap c = HashMultimap.create(); + + public AttributeMapBase() {} + + public AttributeInstance a(IAttribute iattribute) { + return (AttributeInstance) this.a.get(iattribute); + } + + public AttributeInstance a(String s) { + return (AttributeInstance) this.b.get(s); + } + + public AttributeInstance b(IAttribute iattribute) { + if (this.b.containsKey(iattribute.getName())) { + throw new IllegalArgumentException("Attribute is already registered!"); + } else { + AttributeInstance attributeinstance = this.c(iattribute); + + this.b.put(iattribute.getName(), attributeinstance); + this.a.put(iattribute, attributeinstance); + + for (IAttribute iattribute1 = iattribute.d(); iattribute1 != null; iattribute1 = iattribute1.d()) { + this.c.put(iattribute1, iattribute); + } + + return attributeinstance; + } + } + + protected abstract AttributeInstance c(IAttribute iattribute); + + public Collection a() { + return this.b.values(); + } + + public void a(AttributeInstance attributeinstance) {} + + public void a(Multimap multimap) { + Iterator iterator = multimap.entries().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + AttributeInstance attributeinstance = this.a((String) entry.getKey()); + + if (attributeinstance != null) { + attributeinstance.c((AttributeModifier) entry.getValue()); + } + } + + } + + public void b(Multimap multimap) { + Iterator iterator = multimap.entries().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + AttributeInstance attributeinstance = this.a((String) entry.getKey()); + + if (attributeinstance != null) { + attributeinstance.c((AttributeModifier) entry.getValue()); + attributeinstance.b((AttributeModifier) entry.getValue()); + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java new file mode 100644 index 0000000..97726c9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java @@ -0,0 +1,89 @@ +package net.minecraft.server; + +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +public class AttributeMapServer extends AttributeMapBase { + + private final Set e = Sets.newHashSet(); + protected final Map d = new InsensitiveStringMap(); + + public AttributeMapServer() {} + + public AttributeModifiable e(IAttribute iattribute) { + return (AttributeModifiable) super.a(iattribute); + } + + public AttributeModifiable b(String s) { + AttributeInstance attributeinstance = super.a(s); + + if (attributeinstance == null) { + attributeinstance = (AttributeInstance) this.d.get(s); + } + + return (AttributeModifiable) attributeinstance; + } + + public AttributeInstance b(IAttribute iattribute) { + AttributeInstance attributeinstance = super.b(iattribute); + + if (iattribute instanceof AttributeRanged && ((AttributeRanged) iattribute).g() != null) { + this.d.put(((AttributeRanged) iattribute).g(), attributeinstance); + } + + return attributeinstance; + } + + protected AttributeInstance c(IAttribute iattribute) { + return new AttributeModifiable(this, iattribute); + } + + public void a(AttributeInstance attributeinstance) { + if (attributeinstance.getAttribute().c()) { + this.e.add(attributeinstance); + } + + Iterator iterator = this.c.get(attributeinstance.getAttribute()).iterator(); + + while (iterator.hasNext()) { + IAttribute iattribute = (IAttribute) iterator.next(); + AttributeModifiable attributemodifiable = this.e(iattribute); + + if (attributemodifiable != null) { + attributemodifiable.f(); + } + } + + } + + public Set getAttributes() { + return this.e; + } + + public Collection c() { + HashSet hashset = Sets.newHashSet(); + Iterator iterator = this.a().iterator(); + + while (iterator.hasNext()) { + AttributeInstance attributeinstance = (AttributeInstance) iterator.next(); + + if (attributeinstance.getAttribute().c()) { + hashset.add(attributeinstance); + } + } + + return hashset; + } + + public AttributeInstance a(String s) { + return this.b(s); + } + + public AttributeInstance a(IAttribute iattribute) { + return this.e(iattribute); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java new file mode 100644 index 0000000..58c9d00 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java @@ -0,0 +1,156 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +public class AttributeModifiable implements AttributeInstance { + + private final AttributeMapBase a; + private final IAttribute b; + private final Map> c = Maps.newHashMap(); + private final Map> d = Maps.newHashMap(); + private final Map e = Maps.newHashMap(); + private double f; + private boolean g = true; + private double h; + + public AttributeModifiable(AttributeMapBase attributemapbase, IAttribute iattribute) { + this.a = attributemapbase; + this.b = iattribute; + this.f = iattribute.b(); + + for (int i = 0; i < 3; ++i) { + this.c.put(Integer.valueOf(i), Sets.newHashSet()); + } + + } + + public IAttribute getAttribute() { + return this.b; + } + + public double b() { + return this.f; + } + + public void setValue(double d0) { + if (d0 != this.b()) { + this.f = d0; + this.f(); + } + } + + public Collection a(int i) { + return (Collection) this.c.get(Integer.valueOf(i)); + } + + public Collection c() { + HashSet hashset = Sets.newHashSet(); + + for (int i = 0; i < 3; ++i) { + hashset.addAll(this.a(i)); + } + + return hashset; + } + + public AttributeModifier a(UUID uuid) { + return (AttributeModifier) this.e.get(uuid); + } + + public boolean a(AttributeModifier attributemodifier) { + return this.e.get(attributemodifier.a()) != null; + } + + public void b(AttributeModifier attributemodifier) { + if (this.a(attributemodifier.a()) != null) { + throw new IllegalArgumentException("Modifier is already applied on this attribute!"); + } else { + Set object = this.d.computeIfAbsent(attributemodifier.b(), k -> Sets.newHashSet()); + + this.c.get(attributemodifier.c()).add(attributemodifier); + object.add(attributemodifier); + this.e.put(attributemodifier.a(), attributemodifier); + this.f(); + } + } + + protected void f() { + this.g = true; + this.a.a((AttributeInstance) this); + } + + public void c(AttributeModifier attributemodifier) { + for (int i = 0; i < 3; ++i) { + Set set = (Set) this.c.get(Integer.valueOf(i)); + + set.remove(attributemodifier); + } + + Set set1 = (Set) this.d.get(attributemodifier.b()); + + if (set1 != null) { + set1.remove(attributemodifier); + if (set1.isEmpty()) { + this.d.remove(attributemodifier.b()); + } + } + + this.e.remove(attributemodifier.a()); + this.f(); + } + + public double getValue() { + if (this.g) { + this.h = this.g(); + this.g = false; + } + + return this.h; + } + + private double g() { + double d0 = this.b(); + + AttributeModifier attributemodifier; + + for (Iterator iterator = this.b(0).iterator(); iterator.hasNext(); d0 += attributemodifier.d()) { + attributemodifier = (AttributeModifier) iterator.next(); + } + + double d1 = d0; + + Iterator iterator1; + AttributeModifier attributemodifier1; + + for (iterator1 = this.b(1).iterator(); iterator1.hasNext(); d1 += d0 * attributemodifier1.d()) { + attributemodifier1 = (AttributeModifier) iterator1.next(); + } + + for (iterator1 = this.b(2).iterator(); iterator1.hasNext(); d1 *= 1.0D + attributemodifier1.d()) { + attributemodifier1 = (AttributeModifier) iterator1.next(); + } + + return this.b.a(d1); + } + + private Collection b(int i) { + HashSet hashset = Sets.newHashSet(this.a(i)); + + for (IAttribute iattribute = this.b.d(); iattribute != null; iattribute = iattribute.d()) { + AttributeInstance attributeinstance = this.a.a(iattribute); + + if (attributeinstance != null) { + hashset.addAll(attributeinstance.a(i)); + } + } + + return hashset; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java new file mode 100644 index 0000000..da33bb6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java @@ -0,0 +1,82 @@ +package net.minecraft.server; + +import io.netty.util.internal.ThreadLocalRandom; +import java.util.Random; +import java.util.UUID; +import org.apache.commons.lang3.Validate; + +public class AttributeModifier { + + private final double a; + private final int b; + private final String c; + private final UUID d; + private boolean e; + + public AttributeModifier(String s, double d0, int i) { + this(MathHelper.a((Random) ThreadLocalRandom.current()), s, d0, i); + } + + public AttributeModifier(UUID uuid, String s, double d0, int i) { + this.e = true; + this.d = uuid; + this.c = s; + this.a = d0; + this.b = i; + Validate.notEmpty(s, "Modifier name cannot be empty", new Object[0]); + Validate.inclusiveBetween(0L, 2L, (long) i, "Invalid operation"); + } + + public UUID a() { + return this.d; + } + + public String b() { + return this.c; + } + + public int c() { + return this.b; + } + + public double d() { + return this.a; + } + + public boolean e() { + return this.e; + } + + public AttributeModifier a(boolean flag) { + this.e = flag; + return this; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (object != null && this.getClass() == object.getClass()) { + AttributeModifier attributemodifier = (AttributeModifier) object; + + if (this.d != null) { + if (!this.d.equals(attributemodifier.d)) { + return false; + } + } else if (attributemodifier.d != null) { + return false; + } + + return true; + } else { + return false; + } + } + + public int hashCode() { + return this.d != null ? this.d.hashCode() : 0; + } + + public String toString() { + return "AttributeModifier{amount=" + this.a + ", operation=" + this.b + ", name=\'" + this.c + '\'' + ", id=" + this.d + ", serialize=" + this.e + '}'; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java rename to eSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java b/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java new file mode 100644 index 0000000..88b6fe5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java @@ -0,0 +1,285 @@ +package net.minecraft.server; + +public class AxisAlignedBB { + + public final double a; + public final double b; + public final double c; + public final double d; + public final double e; + public final double f; + + public AxisAlignedBB(double d0, double d1, double d2, double d3, double d4, double d5) { + this.a = Math.min(d0, d3); + this.b = Math.min(d1, d4); + this.c = Math.min(d2, d5); + this.d = Math.max(d0, d3); + this.e = Math.max(d1, d4); + this.f = Math.max(d2, d5); + } + + public AxisAlignedBB(BlockPosition blockposition, BlockPosition blockposition1) { + this.a = (double) blockposition.getX(); + this.b = (double) blockposition.getY(); + this.c = (double) blockposition.getZ(); + this.d = (double) blockposition1.getX(); + this.e = (double) blockposition1.getY(); + this.f = (double) blockposition1.getZ(); + } + + public AxisAlignedBB a(double d0, double d1, double d2) { + double d3 = this.a; + double d4 = this.b; + double d5 = this.c; + double d6 = this.d; + double d7 = this.e; + double d8 = this.f; + + if (d0 < 0.0D) { + d3 += d0; + } else if (d0 > 0.0D) { + d6 += d0; + } + + if (d1 < 0.0D) { + d4 += d1; + } else if (d1 > 0.0D) { + d7 += d1; + } + + if (d2 < 0.0D) { + d5 += d2; + } else if (d2 > 0.0D) { + d8 += d2; + } + + return new AxisAlignedBB(d3, d4, d5, d6, d7, d8); + } + + public AxisAlignedBB grow(double d0, double d1, double d2) { + double d3 = this.a - d0; + double d4 = this.b - d1; + double d5 = this.c - d2; + double d6 = this.d + d0; + double d7 = this.e + d1; + double d8 = this.f + d2; + + return new AxisAlignedBB(d3, d4, d5, d6, d7, d8); + } + + public AxisAlignedBB a(AxisAlignedBB axisalignedbb) { + double d0 = Math.min(this.a, axisalignedbb.a); + double d1 = Math.min(this.b, axisalignedbb.b); + double d2 = Math.min(this.c, axisalignedbb.c); + double d3 = Math.max(this.d, axisalignedbb.d); + double d4 = Math.max(this.e, axisalignedbb.e); + double d5 = Math.max(this.f, axisalignedbb.f); + + return new AxisAlignedBB(d0, d1, d2, d3, d4, d5); + } + + public static AxisAlignedBB a(double d0, double d1, double d2, double d3, double d4, double d5) { + double d6 = Math.min(d0, d3); + double d7 = Math.min(d1, d4); + double d8 = Math.min(d2, d5); + double d9 = Math.max(d0, d3); + double d10 = Math.max(d1, d4); + double d11 = Math.max(d2, d5); + + return new AxisAlignedBB(d6, d7, d8, d9, d10, d11); + } + + public AxisAlignedBB c(double d0, double d1, double d2) { + return new AxisAlignedBB(this.a + d0, this.b + d1, this.c + d2, this.d + d0, this.e + d1, this.f + d2); + } + + public double a(AxisAlignedBB axisalignedbb, double d0) { + if (axisalignedbb.e > this.b && axisalignedbb.b < this.e && axisalignedbb.f > this.c && axisalignedbb.c < this.f) { + double d1; + + if (d0 > 0.0D && axisalignedbb.d <= this.a) { + d1 = this.a - axisalignedbb.d; + if (d1 < d0) { + d0 = d1; + } + } else if (d0 < 0.0D && axisalignedbb.a >= this.d) { + d1 = this.d - axisalignedbb.a; + if (d1 > d0) { + d0 = d1; + } + } + + return d0; + } else { + return d0; + } + } + + public double b(AxisAlignedBB axisalignedbb, double d0) { + if (axisalignedbb.d > this.a && axisalignedbb.a < this.d && axisalignedbb.f > this.c && axisalignedbb.c < this.f) { + double d1; + + if (d0 > 0.0D && axisalignedbb.e <= this.b) { + d1 = this.b - axisalignedbb.e; + if (d1 < d0) { + d0 = d1; + } + } else if (d0 < 0.0D && axisalignedbb.b >= this.e) { + d1 = this.e - axisalignedbb.b; + if (d1 > d0) { + d0 = d1; + } + } + + return d0; + } else { + return d0; + } + } + + public double c(AxisAlignedBB axisalignedbb, double d0) { + if (axisalignedbb.d > this.a && axisalignedbb.a < this.d && axisalignedbb.e > this.b && axisalignedbb.b < this.e) { + double d1; + + if (d0 > 0.0D && axisalignedbb.f <= this.c) { + d1 = this.c - axisalignedbb.f; + if (d1 < d0) { + d0 = d1; + } + } else if (d0 < 0.0D && axisalignedbb.c >= this.f) { + d1 = this.f - axisalignedbb.c; + if (d1 > d0) { + d0 = d1; + } + } + + return d0; + } else { + return d0; + } + } + + public boolean b(AxisAlignedBB axisalignedbb) { + return axisalignedbb.d > this.a && axisalignedbb.a < this.d ? (axisalignedbb.e > this.b && axisalignedbb.b < this.e ? axisalignedbb.f > this.c && axisalignedbb.c < this.f : false) : false; + } + + public boolean a(Vec3D vec3d) { + return vec3d.a > this.a && vec3d.a < this.d ? (vec3d.b > this.b && vec3d.b < this.e ? vec3d.c > this.c && vec3d.c < this.f : false) : false; + } + + public double a() { + double d0 = this.d - this.a; + double d1 = this.e - this.b; + double d2 = this.f - this.c; + + return (d0 + d1 + d2) / 3.0D; + } + + public AxisAlignedBB shrink(double d0, double d1, double d2) { + double d3 = this.a + d0; + double d4 = this.b + d1; + double d5 = this.c + d2; + double d6 = this.d - d0; + double d7 = this.e - d1; + double d8 = this.f - d2; + + return new AxisAlignedBB(d3, d4, d5, d6, d7, d8); + } + + public MovingObjectPosition a(Vec3D vec3d, Vec3D vec3d1) { + Vec3D vec3d2 = vec3d.a(vec3d1, this.a); + Vec3D vec3d3 = vec3d.a(vec3d1, this.d); + Vec3D vec3d4 = vec3d.b(vec3d1, this.b); + Vec3D vec3d5 = vec3d.b(vec3d1, this.e); + Vec3D vec3d6 = vec3d.c(vec3d1, this.c); + Vec3D vec3d7 = vec3d.c(vec3d1, this.f); + + if (!this.b(vec3d2)) { + vec3d2 = null; + } + + if (!this.b(vec3d3)) { + vec3d3 = null; + } + + if (!this.c(vec3d4)) { + vec3d4 = null; + } + + if (!this.c(vec3d5)) { + vec3d5 = null; + } + + if (!this.d(vec3d6)) { + vec3d6 = null; + } + + if (!this.d(vec3d7)) { + vec3d7 = null; + } + + Vec3D vec3d8 = null; + + if (vec3d2 != null) { + vec3d8 = vec3d2; + } + + if (vec3d3 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d3) < vec3d.distanceSquared(vec3d8))) { + vec3d8 = vec3d3; + } + + if (vec3d4 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d4) < vec3d.distanceSquared(vec3d8))) { + vec3d8 = vec3d4; + } + + if (vec3d5 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d5) < vec3d.distanceSquared(vec3d8))) { + vec3d8 = vec3d5; + } + + if (vec3d6 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d6) < vec3d.distanceSquared(vec3d8))) { + vec3d8 = vec3d6; + } + + if (vec3d7 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d7) < vec3d.distanceSquared(vec3d8))) { + vec3d8 = vec3d7; + } + + if (vec3d8 == null) { + return null; + } else { + EnumDirection enumdirection = null; + + if (vec3d8 == vec3d2) { + enumdirection = EnumDirection.WEST; + } else if (vec3d8 == vec3d3) { + enumdirection = EnumDirection.EAST; + } else if (vec3d8 == vec3d4) { + enumdirection = EnumDirection.DOWN; + } else if (vec3d8 == vec3d5) { + enumdirection = EnumDirection.UP; + } else if (vec3d8 == vec3d6) { + enumdirection = EnumDirection.NORTH; + } else { + enumdirection = EnumDirection.SOUTH; + } + + return new MovingObjectPosition(vec3d8, enumdirection); + } + } + + private boolean b(Vec3D vec3d) { + return vec3d == null ? false : vec3d.b >= this.b && vec3d.b <= this.e && vec3d.c >= this.c && vec3d.c <= this.f; + } + + private boolean c(Vec3D vec3d) { + return vec3d == null ? false : vec3d.a >= this.a && vec3d.a <= this.d && vec3d.c >= this.c && vec3d.c <= this.f; + } + + private boolean d(Vec3D vec3d) { + return vec3d == null ? false : vec3d.a >= this.a && vec3d.a <= this.d && vec3d.b >= this.b && vec3d.b <= this.e; + } + + public String toString() { + return "box[" + this.a + ", " + this.b + ", " + this.c + " -> " + this.d + ", " + this.e + ", " + this.f + "]"; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java similarity index 94% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java index 54f9c32..f86c12f 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java @@ -1,6 +1,6 @@ package net.minecraft.server; -import com.google.common.base.Objects; +import com.google.common.base.MoreObjects; public class BaseBlockPosition implements Comparable { @@ -80,7 +80,7 @@ public class BaseBlockPosition implements Comparable { } public String toString() { - return Objects.toStringHelper(this).add("x", this.getX()).add("y", this.getY()).add("z", this.getZ()).toString(); + return MoreObjects.toStringHelper(this).add("x", this.getX()).add("y", this.getY()).add("z", this.getZ()).toString(); } // Paperspigot - Signature change, Object -> BaseBlockPosition diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java new file mode 100644 index 0000000..e2280a4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Random; + +public class BiomeBaseSub extends BiomeBase { + + protected BiomeBase aE; + + public BiomeBaseSub(int i, BiomeBase biomebase) { + super(i); + this.aE = biomebase; + this.a(biomebase.ai, true); + this.ah = biomebase.ah + " M"; + this.ak = biomebase.ak; + this.al = biomebase.al; + this.am = biomebase.am; + this.an = biomebase.an; + this.ao = biomebase.ao; + this.temperature = biomebase.temperature; + this.humidity = biomebase.humidity; + this.ar = biomebase.ar; + this.ax = biomebase.ax; + this.ay = biomebase.ay; + this.au = Lists.newArrayList(biomebase.au); + this.at = Lists.newArrayList(biomebase.at); + this.aw = Lists.newArrayList(biomebase.aw); + this.av = Lists.newArrayList(biomebase.av); + this.temperature = biomebase.temperature; + this.humidity = biomebase.humidity; + this.an = biomebase.an + 0.1F; + this.ao = biomebase.ao + 0.2F; + } + + public void a(World world, Random random, BlockPosition blockposition) { + this.aE.as.a(world, random, this, blockposition); + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + this.aE.a(world, random, chunksnapshot, i, j, d0); + } + + public float g() { + return this.aE.g(); + } + + public WorldGenTreeAbstract a(Random random) { + return this.aE.a(random); + } + + public Class l() { + return this.aE.l(); + } + + public boolean a(BiomeBase biomebase) { + return this.aE.a(biomebase); + } + + public BiomeBase.EnumTemperature m() { + return this.aE.m(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java new file mode 100644 index 0000000..ba9285d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class BiomeBeach extends BiomeBase { + + public BiomeBeach(int i) { + super(i); + this.au.clear(); + this.ak = Blocks.SAND.getBlockData(); + this.al = Blocks.SAND.getBlockData(); + this.as.A = -999; + this.as.D = 0; + this.as.F = 0; + this.as.G = 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java new file mode 100644 index 0000000..90c4992 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java @@ -0,0 +1,87 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeBigHills extends BiomeBase { + + private WorldGenerator aD; + private WorldGenTaiga2 aE; + private int aF; + private int aG; + private int aH; + private int aI; + + protected BiomeBigHills(int i, boolean flag) { + super(i); + this.aD = new WorldGenMinable(Blocks.MONSTER_EGG.getBlockData().set(BlockMonsterEggs.VARIANT, BlockMonsterEggs.EnumMonsterEggVarient.STONE), 9); + this.aE = new WorldGenTaiga2(false); + this.aF = 0; + this.aG = 1; + this.aH = 2; + this.aI = this.aF; + if (flag) { + this.as.A = 3; + this.aI = this.aG; + } + + } + + public WorldGenTreeAbstract a(Random random) { + return (WorldGenTreeAbstract) (random.nextInt(3) > 0 ? this.aE : super.a(random)); + } + + public void a(World world, Random random, BlockPosition blockposition) { + super.a(world, random, blockposition); + int i = 3 + random.nextInt(6); + + int j; + int k; + int l; + + for (j = 0; j < i; ++j) { + k = random.nextInt(16); + l = random.nextInt(28) + 4; + int i1 = random.nextInt(16); + BlockPosition blockposition1 = blockposition.a(k, l, i1); + + if (world.getType(blockposition1).getBlock() == Blocks.STONE) { + world.setTypeAndData(blockposition1, Blocks.EMERALD_ORE.getBlockData(), 2); + } + } + + for (i = 0; i < 7; ++i) { + j = random.nextInt(16); + k = random.nextInt(64); + l = random.nextInt(16); + this.aD.generate(world, random, blockposition.a(j, k, l)); + } + + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + this.ak = Blocks.GRASS.getBlockData(); + this.al = Blocks.DIRT.getBlockData(); + if ((d0 < -1.0D || d0 > 2.0D) && this.aI == this.aH) { + this.ak = Blocks.GRAVEL.getBlockData(); + this.al = Blocks.GRAVEL.getBlockData(); + } else if (d0 > 1.0D && this.aI != this.aG) { + this.ak = Blocks.STONE.getBlockData(); + this.al = Blocks.STONE.getBlockData(); + } + + this.b(world, random, chunksnapshot, i, j, d0); + } + + private BiomeBigHills b(BiomeBase biomebase) { + this.aI = this.aH; + this.a(biomebase.ai, true); + this.a(biomebase.ah + " M"); + this.a(new BiomeBase.BiomeTemperature(biomebase.an, biomebase.ao)); + this.a(biomebase.temperature, biomebase.humidity); + return this; + } + + protected BiomeBase d(int i) { + return (new BiomeBigHills(i, false)).b((BiomeBase) this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java new file mode 100644 index 0000000..d1c0634 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; + +public class BiomeCache { + + private final WorldChunkManager a; + private long b; + private LongHashMap c = new LongHashMap(); + private List d = Lists.newArrayList(); + + public BiomeCache(WorldChunkManager worldchunkmanager) { + this.a = worldchunkmanager; + } + + public BiomeCache.BiomeCacheBlock a(int i, int j) { + i >>= 4; + j >>= 4; + long k = (long) i & 4294967295L | ((long) j & 4294967295L) << 32; + BiomeCache.BiomeCacheBlock biomecache_biomecacheblock = (BiomeCache.BiomeCacheBlock) this.c.getEntry(k); + + if (biomecache_biomecacheblock == null) { + biomecache_biomecacheblock = new BiomeCache.BiomeCacheBlock(i, j); + this.c.put(k, biomecache_biomecacheblock); + this.d.add(biomecache_biomecacheblock); + } + + biomecache_biomecacheblock.e = MinecraftServer.az(); + return biomecache_biomecacheblock; + } + + public BiomeBase a(int i, int j, BiomeBase biomebase) { + BiomeBase biomebase1 = this.a(i, j).a(i, j); + + return biomebase1 == null ? biomebase : biomebase1; + } + + public void a() { + long i = MinecraftServer.az(); + long j = i - this.b; + + if (j > 7500L || j < 0L) { + this.b = i; + + for (int k = 0; k < this.d.size(); ++k) { + BiomeCache.BiomeCacheBlock biomecache_biomecacheblock = (BiomeCache.BiomeCacheBlock) this.d.get(k); + long l = i - biomecache_biomecacheblock.e; + + if (l > 30000L || l < 0L) { + this.d.remove(k--); + long i1 = (long) biomecache_biomecacheblock.c & 4294967295L | ((long) biomecache_biomecacheblock.d & 4294967295L) << 32; + + this.c.remove(i1); + } + } + } + + } + + public BiomeBase[] c(int i, int j) { + return this.a(i, j).b; + } + + public class BiomeCacheBlock { + + public float[] a = new float[256]; + public BiomeBase[] b = new BiomeBase[256]; + public int c; + public int d; + public long e; + + public BiomeCacheBlock(int i, int j) { + this.c = i; + this.d = j; + BiomeCache.this.a.getWetness(this.a, i << 4, j << 4, 16, 16); + BiomeCache.this.a.a(this.b, i << 4, j << 4, 16, 16, false); + } + + public BiomeBase a(int i, int j) { + return this.b[i & 15 | (j & 15) << 4]; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java new file mode 100644 index 0000000..59bea06 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeDesert extends BiomeBase { + + public BiomeDesert(int i) { + super(i); + this.au.clear(); + this.ak = Blocks.SAND.getBlockData(); + this.al = Blocks.SAND.getBlockData(); + this.as.A = -999; + this.as.D = 2; + this.as.F = 50; + this.as.G = 10; + this.au.clear(); + } + + public void a(World world, Random random, BlockPosition blockposition) { + super.a(world, random, blockposition); + if (random.nextInt(1000) == 0) { + int i = random.nextInt(16) + 8; + int j = random.nextInt(16) + 8; + BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(i, 0, j)).up(); + + (new WorldGenDesertWell()).generate(world, random, blockposition1); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java new file mode 100644 index 0000000..022c626 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java @@ -0,0 +1,159 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeForest extends BiomeBase { + + private int aG; + protected static final WorldGenForest aD = new WorldGenForest(false, true); + protected static final WorldGenForest aE = new WorldGenForest(false, false); + protected static final WorldGenForestTree aF = new WorldGenForestTree(false); + + public BiomeForest(int i, int j) { + super(i); + this.aG = j; + this.as.A = 10; + this.as.C = 2; + if (this.aG == 1) { + this.as.A = 6; + this.as.B = 100; + this.as.C = 1; + } + + this.a(5159473); + this.a(0.7F, 0.8F); + if (this.aG == 2) { + this.aj = 353825; + this.ai = 3175492; + this.a(0.6F, 0.6F); + } + + if (this.aG == 0) { + this.au.add(new BiomeBase.BiomeMeta(EntityWolf.class, 5, 4, 4)); + } + + if (this.aG == 3) { + this.as.A = -999; + } + + } + + protected BiomeBase a(int i, boolean flag) { + if (this.aG == 2) { + this.aj = 353825; + this.ai = i; + if (flag) { + this.aj = (this.aj & 16711422) >> 1; + } + + return this; + } else { + return super.a(i, flag); + } + } + + public WorldGenTreeAbstract a(Random random) { + return (WorldGenTreeAbstract) (this.aG == 3 && random.nextInt(3) > 0 ? BiomeForest.aF : (this.aG != 2 && random.nextInt(5) != 0 ? this.aA : BiomeForest.aE)); + } + + public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) { + if (this.aG == 1) { + double d0 = MathHelper.a((1.0D + BiomeForest.af.a((double) blockposition.getX() / 48.0D, (double) blockposition.getZ() / 48.0D)) / 2.0D, 0.0D, 0.9999D); + BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient = BlockFlowers.EnumFlowerVarient.values()[(int) (d0 * (double) BlockFlowers.EnumFlowerVarient.values().length)]; + + return blockflowers_enumflowervarient == BlockFlowers.EnumFlowerVarient.BLUE_ORCHID ? BlockFlowers.EnumFlowerVarient.POPPY : blockflowers_enumflowervarient; + } else { + return super.a(random, blockposition); + } + } + + public void a(World world, Random random, BlockPosition blockposition) { + int i; + int j; + int k; + int l; + + if (this.aG == 3) { + for (i = 0; i < 4; ++i) { + for (j = 0; j < 4; ++j) { + k = i * 4 + 1 + 8 + random.nextInt(3); + l = j * 4 + 1 + 8 + random.nextInt(3); + BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(k, 0, l)); + + if (random.nextInt(20) == 0) { + WorldGenHugeMushroom worldgenhugemushroom = new WorldGenHugeMushroom(); + + worldgenhugemushroom.generate(world, random, blockposition1); + } else { + WorldGenTreeAbstract worldgentreeabstract = this.a(random); + + worldgentreeabstract.e(); + if (worldgentreeabstract.generate(world, random, blockposition1)) { + worldgentreeabstract.a(world, random, blockposition1); + } + } + } + } + } + + i = random.nextInt(5) - 3; + if (this.aG == 1) { + i += 2; + } + + j = 0; + + while (j < i) { + k = random.nextInt(3); + if (k == 0) { + BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.SYRINGA); + } else if (k == 1) { + BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.ROSE); + } else if (k == 2) { + BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.PAEONIA); + } + + l = 0; + + while (true) { + if (l < 5) { + int i1 = random.nextInt(16) + 8; + int j1 = random.nextInt(16) + 8; + int k1 = random.nextInt(world.getHighestBlockYAt(blockposition.a(i1, 0, j1)).getY() + 32); + + if (!BiomeForest.ag.generate(world, random, new BlockPosition(blockposition.getX() + i1, k1, blockposition.getZ() + j1))) { + ++l; + continue; + } + } + + ++j; + break; + } + } + + super.a(world, random, blockposition); + } + + protected BiomeBase d(final int i) { + if (this.id == BiomeBase.FOREST.id) { + BiomeForest biomeforest = new BiomeForest(i, 1); + + biomeforest.a(new BiomeBase.BiomeTemperature(this.an, this.ao + 0.2F)); + biomeforest.a("Flower Forest"); + biomeforest.a(6976549, true); + biomeforest.a(8233509); + return biomeforest; + } else { + return this.id != BiomeBase.BIRCH_FOREST.id && this.id != BiomeBase.BIRCH_FOREST_HILLS.id ? new BiomeBaseSub(i, this) { + public void a(World world, Random random, BlockPosition blockposition) { + this.aE.a(world, random, blockposition); + } + } : new BiomeBaseSub(i, this) { + public WorldGenTreeAbstract a(Random random) { + return random.nextBoolean() ? BiomeForest.aD : BiomeForest.aE; + } + }; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java new file mode 100644 index 0000000..d2845b5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class BiomeHell extends BiomeBase { + + public BiomeHell(int i) { + super(i); + this.at.clear(); + this.au.clear(); + this.av.clear(); + this.aw.clear(); + this.at.add(new BiomeBase.BiomeMeta(EntityGhast.class, 50, 4, 4)); + this.at.add(new BiomeBase.BiomeMeta(EntityPigZombie.class, 100, 4, 4)); + this.at.add(new BiomeBase.BiomeMeta(EntityMagmaCube.class, 1, 4, 4)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java new file mode 100644 index 0000000..b5a5850 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeIcePlains extends BiomeBase { + + private boolean aD; + private WorldGenPackedIce2 aE = new WorldGenPackedIce2(); + private WorldGenPackedIce1 aF = new WorldGenPackedIce1(4); + + public BiomeIcePlains(int i, boolean flag) { + super(i); + this.aD = flag; + if (flag) { + this.ak = Blocks.SNOW.getBlockData(); + } + + this.au.clear(); + } + + public void a(World world, Random random, BlockPosition blockposition) { + if (this.aD) { + int i; + int j; + int k; + + for (i = 0; i < 3; ++i) { + j = random.nextInt(16) + 8; + k = random.nextInt(16) + 8; + this.aE.generate(world, random, world.getHighestBlockYAt(blockposition.a(j, 0, k))); + } + + for (i = 0; i < 2; ++i) { + j = random.nextInt(16) + 8; + k = random.nextInt(16) + 8; + this.aF.generate(world, random, world.getHighestBlockYAt(blockposition.a(j, 0, k))); + } + } + + super.a(world, random, blockposition); + } + + public WorldGenTreeAbstract a(Random random) { + return new WorldGenTaiga2(false); + } + + protected BiomeBase d(int i) { + BiomeBase biomebase = (new BiomeIcePlains(i, true)).a(13828095, true).a(this.ah + " Spikes").c().a(0.0F, 0.5F).a(new BiomeBase.BiomeTemperature(this.an + 0.1F, this.ao + 0.1F)); + + biomebase.an = this.an + 0.3F; + biomebase.ao = this.ao + 0.4F; + return biomebase; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java new file mode 100644 index 0000000..1d069d9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeJungle extends BiomeBase { + + private boolean aD; + private static final IBlockData aE = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.JUNGLE); + private static final IBlockData aF = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.JUNGLE).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + private static final IBlockData aG = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + + public BiomeJungle(int i, boolean flag) { + super(i); + this.aD = flag; + if (flag) { + this.as.A = 2; + } else { + this.as.A = 50; + } + + this.as.C = 25; + this.as.B = 4; + if (!flag) { + this.at.add(new BiomeBase.BiomeMeta(EntityOcelot.class, 2, 1, 1)); + } + + this.au.add(new BiomeBase.BiomeMeta(EntityChicken.class, 10, 4, 4)); + } + + public WorldGenTreeAbstract a(Random random) { + return (WorldGenTreeAbstract) (random.nextInt(10) == 0 ? this.aB : (random.nextInt(2) == 0 ? new WorldGenGroundBush(BiomeJungle.aE, BiomeJungle.aG) : (!this.aD && random.nextInt(3) == 0 ? new WorldGenJungleTree(false, 10, 20, BiomeJungle.aE, BiomeJungle.aF) : new WorldGenTrees(false, 4 + random.nextInt(7), BiomeJungle.aE, BiomeJungle.aF, true)))); + } + + public WorldGenerator b(Random random) { + return random.nextInt(4) == 0 ? new WorldGenGrass(BlockLongGrass.EnumTallGrassType.FERN) : new WorldGenGrass(BlockLongGrass.EnumTallGrassType.GRASS); + } + + public void a(World world, Random random, BlockPosition blockposition) { + super.a(world, random, blockposition); + int i = random.nextInt(16) + 8; + int j = random.nextInt(16) + 8; + int k = random.nextInt(world.getHighestBlockYAt(blockposition.a(i, 0, j)).getY() * 2); + + (new WorldGenMelon()).generate(world, random, blockposition.a(i, k, j)); + WorldGenVines worldgenvines = new WorldGenVines(); + + for (j = 0; j < 50; ++j) { + k = random.nextInt(16) + 8; + boolean flag = true; + int l = random.nextInt(16) + 8; + + worldgenvines.generate(world, random, blockposition.a(k, 128, l)); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java new file mode 100644 index 0000000..5e61e18 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java @@ -0,0 +1,18 @@ +package net.minecraft.server; + +public class BiomeMushrooms extends BiomeBase { + + public BiomeMushrooms(int i) { + super(i); + this.as.A = -100; + this.as.B = -100; + this.as.C = -100; + this.as.E = 1; + this.as.K = 1; + this.ak = Blocks.MYCELIUM.getBlockData(); + this.at.clear(); + this.au.clear(); + this.av.clear(); + this.au.add(new BiomeBase.BiomeMeta(EntityMushroomCow.class, 8, 4, 8)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java new file mode 100644 index 0000000..1ddc21c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeOcean extends BiomeBase { + + public BiomeOcean(int i) { + super(i); + this.au.clear(); + } + + public BiomeBase.EnumTemperature m() { + return BiomeBase.EnumTemperature.OCEAN; + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + super.a(world, random, chunksnapshot, i, j, d0); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java new file mode 100644 index 0000000..50d8e6a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java @@ -0,0 +1,93 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomePlains extends BiomeBase { + + protected boolean aD; + + protected BiomePlains(int i) { + super(i); + this.a(0.8F, 0.4F); + this.a(BiomePlains.e); + this.au.add(new BiomeBase.BiomeMeta(EntityHorse.class, 5, 2, 6)); + this.as.A = -999; + this.as.B = 4; + this.as.C = 10; + } + + public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) { + double d0 = BiomePlains.af.a((double) blockposition.getX() / 200.0D, (double) blockposition.getZ() / 200.0D); + int i; + + if (d0 < -0.8D) { + i = random.nextInt(4); + switch (i) { + case 0: + return BlockFlowers.EnumFlowerVarient.ORANGE_TULIP; + + case 1: + return BlockFlowers.EnumFlowerVarient.RED_TULIP; + + case 2: + return BlockFlowers.EnumFlowerVarient.PINK_TULIP; + + case 3: + default: + return BlockFlowers.EnumFlowerVarient.WHITE_TULIP; + } + } else if (random.nextInt(3) > 0) { + i = random.nextInt(3); + return i == 0 ? BlockFlowers.EnumFlowerVarient.POPPY : (i == 1 ? BlockFlowers.EnumFlowerVarient.HOUSTONIA : BlockFlowers.EnumFlowerVarient.OXEYE_DAISY); + } else { + return BlockFlowers.EnumFlowerVarient.DANDELION; + } + } + + public void a(World world, Random random, BlockPosition blockposition) { + double d0 = BiomePlains.af.a((double) (blockposition.getX() + 8) / 200.0D, (double) (blockposition.getZ() + 8) / 200.0D); + int i; + int j; + int k; + int l; + + if (d0 < -0.8D) { + this.as.B = 15; + this.as.C = 5; + } else { + this.as.B = 4; + this.as.C = 10; + BiomePlains.ag.a(BlockTallPlant.EnumTallFlowerVariants.GRASS); + + for (i = 0; i < 7; ++i) { + j = random.nextInt(16) + 8; + k = random.nextInt(16) + 8; + l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32); + BiomePlains.ag.generate(world, random, blockposition.a(j, l, k)); + } + } + + if (this.aD) { + BiomePlains.ag.a(BlockTallPlant.EnumTallFlowerVariants.SUNFLOWER); + + for (i = 0; i < 10; ++i) { + j = random.nextInt(16) + 8; + k = random.nextInt(16) + 8; + l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32); + BiomePlains.ag.generate(world, random, blockposition.a(j, l, k)); + } + } + + super.a(world, random, blockposition); + } + + protected BiomeBase d(int i) { + BiomePlains biomeplains = new BiomePlains(i); + + biomeplains.a("Sunflower Plains"); + biomeplains.aD = true; + biomeplains.b(9286496); + biomeplains.aj = 14273354; + return biomeplains; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java new file mode 100644 index 0000000..e0a0a79 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java @@ -0,0 +1,9 @@ +package net.minecraft.server; + +public class BiomeRiver extends BiomeBase { + + public BiomeRiver(int i) { + super(i); + this.au.clear(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java new file mode 100644 index 0000000..4d3d38a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java @@ -0,0 +1,70 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeSavanna extends BiomeBase { + + private static final WorldGenAcaciaTree aD = new WorldGenAcaciaTree(false); + + protected BiomeSavanna(int i) { + super(i); + this.au.add(new BiomeBase.BiomeMeta(EntityHorse.class, 1, 2, 6)); + this.as.A = 1; + this.as.B = 4; + this.as.C = 20; + } + + public WorldGenTreeAbstract a(Random random) { + return (WorldGenTreeAbstract) (random.nextInt(5) > 0 ? BiomeSavanna.aD : this.aA); + } + + protected BiomeBase d(int i) { + BiomeSavanna.BiomeSavannaSub biomesavanna_biomesavannasub = new BiomeSavanna.BiomeSavannaSub(i, this); + + biomesavanna_biomesavannasub.temperature = (this.temperature + 1.0F) * 0.5F; + biomesavanna_biomesavannasub.an = this.an * 0.5F + 0.3F; + biomesavanna_biomesavannasub.ao = this.ao * 0.5F + 1.2F; + return biomesavanna_biomesavannasub; + } + + public void a(World world, Random random, BlockPosition blockposition) { + BiomeSavanna.ag.a(BlockTallPlant.EnumTallFlowerVariants.GRASS); + + for (int i = 0; i < 7; ++i) { + int j = random.nextInt(16) + 8; + int k = random.nextInt(16) + 8; + int l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32); + + BiomeSavanna.ag.generate(world, random, blockposition.a(j, l, k)); + } + + super.a(world, random, blockposition); + } + + public static class BiomeSavannaSub extends BiomeBaseSub { + + public BiomeSavannaSub(int i, BiomeBase biomebase) { + super(i, biomebase); + this.as.A = 2; + this.as.B = 2; + this.as.C = 5; + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + this.ak = Blocks.GRASS.getBlockData(); + this.al = Blocks.DIRT.getBlockData(); + if (d0 > 1.75D) { + this.ak = Blocks.STONE.getBlockData(); + this.al = Blocks.STONE.getBlockData(); + } else if (d0 > -0.5D) { + this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.COARSE_DIRT); + } + + this.b(world, random, chunksnapshot, i, j, d0); + } + + public void a(World world, Random random, BlockPosition blockposition) { + this.as.a(world, random, this, blockposition); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java new file mode 100644 index 0000000..453033f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class BiomeStoneBeach extends BiomeBase { + + public BiomeStoneBeach(int i) { + super(i); + this.au.clear(); + this.ak = Blocks.STONE.getBlockData(); + this.al = Blocks.STONE.getBlockData(); + this.as.A = -999; + this.as.D = 0; + this.as.F = 0; + this.as.G = 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java new file mode 100644 index 0000000..29959fd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java @@ -0,0 +1,53 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeSwamp extends BiomeBase { + + protected BiomeSwamp(int i) { + super(i); + this.as.A = 2; + this.as.B = 1; + this.as.D = 1; + this.as.E = 8; + this.as.F = 10; + this.as.J = 1; + this.as.z = 4; + this.as.I = 0; + this.as.H = 0; + this.as.C = 5; + this.ar = 14745518; + this.at.add(new BiomeBase.BiomeMeta(EntitySlime.class, 1, 1, 1)); + } + + public WorldGenTreeAbstract a(Random random) { + return this.aC; + } + + public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) { + return BlockFlowers.EnumFlowerVarient.BLUE_ORCHID; + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + double d1 = BiomeSwamp.af.a((double) i * 0.25D, (double) j * 0.25D); + + if (d1 > 0.0D) { + int k = i & 15; + int l = j & 15; + + for (int i1 = 255; i1 >= 0; --i1) { + if (chunksnapshot.a(l, i1, k).getBlock().getMaterial() != Material.AIR) { + if (i1 == 62 && chunksnapshot.a(l, i1, k).getBlock() != Blocks.WATER) { + chunksnapshot.a(l, i1, k, Blocks.WATER.getBlockData()); + if (d1 < 0.12D) { + chunksnapshot.a(l, i1 + 1, k, Blocks.WATERLILY.getBlockData()); + } + } + break; + } + } + } + + this.b(world, random, chunksnapshot, i, j, d0); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java new file mode 100644 index 0000000..314dfed --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java @@ -0,0 +1,85 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BiomeTaiga extends BiomeBase { + + private static final WorldGenTaiga1 aD = new WorldGenTaiga1(); + private static final WorldGenTaiga2 aE = new WorldGenTaiga2(false); + private static final WorldGenMegaTree aF = new WorldGenMegaTree(false, false); + private static final WorldGenMegaTree aG = new WorldGenMegaTree(false, true); + private static final WorldGenTaigaStructure aH = new WorldGenTaigaStructure(Blocks.MOSSY_COBBLESTONE, 0); + private int aI; + + public BiomeTaiga(int i, int j) { + super(i); + this.aI = j; + this.au.add(new BiomeBase.BiomeMeta(EntityWolf.class, 8, 4, 4)); + this.as.A = 10; + if (j != 1 && j != 2) { + this.as.C = 1; + this.as.E = 1; + } else { + this.as.C = 7; + this.as.D = 1; + this.as.E = 3; + } + + } + + public WorldGenTreeAbstract a(Random random) { + return (WorldGenTreeAbstract) ((this.aI == 1 || this.aI == 2) && random.nextInt(3) == 0 ? (this.aI != 2 && random.nextInt(13) != 0 ? BiomeTaiga.aF : BiomeTaiga.aG) : (random.nextInt(3) == 0 ? BiomeTaiga.aD : BiomeTaiga.aE)); + } + + public WorldGenerator b(Random random) { + return random.nextInt(5) > 0 ? new WorldGenGrass(BlockLongGrass.EnumTallGrassType.FERN) : new WorldGenGrass(BlockLongGrass.EnumTallGrassType.GRASS); + } + + public void a(World world, Random random, BlockPosition blockposition) { + int i; + int j; + int k; + int l; + + if (this.aI == 1 || this.aI == 2) { + i = random.nextInt(3); + + for (j = 0; j < i; ++j) { + k = random.nextInt(16) + 8; + l = random.nextInt(16) + 8; + BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(k, 0, l)); + + BiomeTaiga.aH.generate(world, random, blockposition1); + } + } + + BiomeTaiga.ag.a(BlockTallPlant.EnumTallFlowerVariants.FERN); + + for (i = 0; i < 7; ++i) { + j = random.nextInt(16) + 8; + k = random.nextInt(16) + 8; + l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32); + BiomeTaiga.ag.generate(world, random, blockposition.a(j, l, k)); + } + + super.a(world, random, blockposition); + } + + public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) { + if (this.aI == 1 || this.aI == 2) { + this.ak = Blocks.GRASS.getBlockData(); + this.al = Blocks.DIRT.getBlockData(); + if (d0 > 1.75D) { + this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.COARSE_DIRT); + } else if (d0 > -0.95D) { + this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.PODZOL); + } + } + + this.b(world, random, chunksnapshot, i, j, d0); + } + + protected BiomeBase d(int i) { + return this.id == BiomeBase.MEGA_TAIGA.id ? (new BiomeTaiga(i, 2)).a(5858897, true).a("Mega Spruce Taiga").a(5159473).a(0.25F, 0.8F).a(new BiomeBase.BiomeTemperature(this.an, this.ao)) : super.d(i); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java new file mode 100644 index 0000000..24fb34d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class BiomeTheEnd extends BiomeBase { + + public BiomeTheEnd(int i) { + super(i); + this.at.clear(); + this.au.clear(); + this.av.clear(); + this.aw.clear(); + this.at.add(new BiomeBase.BiomeMeta(EntityEnderman.class, 10, 4, 4)); + this.ak = Blocks.DIRT.getBlockData(); + this.al = Blocks.DIRT.getBlockData(); + this.as = new BiomeTheEndDecorator(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Block.java b/eSpigot-Server/src/main/java/net/minecraft/server/Block.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Block.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Block.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java new file mode 100644 index 0000000..6fb62f2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java @@ -0,0 +1,46 @@ +package net.minecraft.server; + +public class BlockActionData { + + private BlockPosition a; + private Block b; + private int c; + private int d; + + public BlockActionData(BlockPosition blockposition, Block block, int i, int j) { + this.a = blockposition; + this.c = i; + this.d = j; + this.b = block; + } + + public BlockPosition a() { + return this.a; + } + + public int b() { + return this.c; + } + + public int c() { + return this.d; + } + + public Block d() { + return this.b; + } + + public boolean equals(Object object) { + if (!(object instanceof BlockActionData)) { + return false; + } else { + BlockActionData blockactiondata = (BlockActionData) object; + + return this.a.equals(blockactiondata.a) && this.c == blockactiondata.c && this.d == blockactiondata.d && this.b == blockactiondata.b; + } + } + + public String toString() { + return "TE(" + this.a + ")," + this.c + "," + this.d + "," + this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java new file mode 100644 index 0000000..58b6eeb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public class BlockAir extends Block { + + protected BlockAir() { + super(Material.AIR); + } + + public int b() { + return -1; + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return null; + } + + public boolean c() { + return false; + } + + public boolean a(IBlockData iblockdata, boolean flag) { + return false; + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {} + + public boolean a(World world, BlockPosition blockposition) { + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java new file mode 100644 index 0000000..e1fe30f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java @@ -0,0 +1,214 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Random; + +public class BlockBanner extends BlockContainer { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + public static final BlockStateInteger ROTATION = BlockStateInteger.of("rotation", 0, 15); + + protected BlockBanner() { + super(Material.WOOD); + float f = 0.25F; + float f1 = 1.0F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f); + } + + public String getName() { + return LocaleI18n.get("item.banner.white.name"); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return null; + } + + public boolean d() { + return false; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) { + return true; + } + + public boolean c() { + return false; + } + + public boolean g() { + return true; + } + + public TileEntity a(World world, int i) { + return new TileEntityBanner(); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.BANNER; + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityBanner) { + ItemStack itemstack = new ItemStack(Items.BANNER, 1, ((TileEntityBanner) tileentity).b()); + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + tileentity.b(nbttagcompound); + nbttagcompound.remove("x"); + nbttagcompound.remove("y"); + nbttagcompound.remove("z"); + nbttagcompound.remove("id"); + itemstack.a("BlockEntityTag", (NBTBase) nbttagcompound); + a(world, blockposition, itemstack); + } else { + super.dropNaturally(world, blockposition, iblockdata, f, i); + } + + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return !this.e(world, blockposition) && super.canPlace(world, blockposition); + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (tileentity instanceof TileEntityBanner) { + TileEntityBanner tileentitybanner = (TileEntityBanner) tileentity; + ItemStack itemstack = new ItemStack(Items.BANNER, 1, ((TileEntityBanner) tileentity).b()); + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + TileEntityBanner.a(nbttagcompound, tileentitybanner.b(), tileentitybanner.d()); + itemstack.a("BlockEntityTag", (NBTBase) nbttagcompound); + a(world, blockposition, itemstack); + } else { + super.a(world, entityhuman, blockposition, iblockdata, (TileEntity) null); + } + + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + BlockBanner.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockBanner.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockBanner.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockBanner.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } + + public static class BlockStandingBanner extends BlockBanner { + + public BlockStandingBanner() { + this.j(this.blockStateList.getBlockData().set(BlockBanner.BlockStandingBanner.ROTATION, Integer.valueOf(0))); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + if (!world.getType(blockposition.down()).getBlock().getMaterial().isBuildable()) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + super.doPhysics(world, blockposition, iblockdata, block); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockBanner.BlockStandingBanner.ROTATION, Integer.valueOf(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((Integer) iblockdata.get(BlockBanner.BlockStandingBanner.ROTATION)).intValue(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockBanner.BlockStandingBanner.ROTATION}); + } + } + + public static class BlockWallBanner extends BlockBanner { + + public BlockWallBanner() { + this.j(this.blockStateList.getBlockData().set(BlockBanner.BlockWallBanner.FACING, EnumDirection.NORTH)); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + EnumDirection enumdirection = (EnumDirection) iblockaccess.getType(blockposition).get(BlockBanner.BlockWallBanner.FACING); + float f = 0.0F; + float f1 = 0.78125F; + float f2 = 0.0F; + float f3 = 1.0F; + float f4 = 0.125F; + + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + switch (BlockBanner.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + default: + this.a(f2, f, 1.0F - f4, f3, f1, 1.0F); + break; + + case 2: + this.a(f2, f, 0.0F, f3, f1, f4); + break; + + case 3: + this.a(1.0F - f4, f, f2, 1.0F, f1, f3); + break; + + case 4: + this.a(0.0F, f, f2, f4, f1, f3); + } + + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockBanner.BlockWallBanner.FACING); + + if (!world.getType(blockposition.shift(enumdirection.opposite())).getBlock().getMaterial().isBuildable()) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + super.doPhysics(world, blockposition, iblockdata, block); + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType1(i); + + if (enumdirection.k() == EnumDirection.EnumAxis.Y) { + enumdirection = EnumDirection.NORTH; + } + + return this.getBlockData().set(BlockBanner.BlockWallBanner.FACING, enumdirection); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumDirection) iblockdata.get(BlockBanner.BlockWallBanner.FACING)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockBanner.BlockWallBanner.FACING}); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java new file mode 100644 index 0000000..6571694 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class BlockBarrier extends Block { + + protected BlockBarrier() { + super(Material.BANNER); + this.x(); + this.b(6000001.0F); + this.K(); + this.t = true; + } + + public int b() { + return -1; + } + + public boolean c() { + return false; + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {} +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java new file mode 100644 index 0000000..42d137e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java @@ -0,0 +1,233 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.Random; + +public class BlockBed extends BlockDirectional { + + public static final BlockStateEnum PART = BlockStateEnum.of("part", BlockBed.EnumBedPart.class); + public static final BlockStateBoolean OCCUPIED = BlockStateBoolean.of("occupied"); + + public BlockBed() { + super(Material.CLOTH); + this.j(this.blockStateList.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.FOOT).set(BlockBed.OCCUPIED, Boolean.valueOf(false))); + this.l(); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + if (iblockdata.get(BlockBed.PART) != BlockBed.EnumBedPart.HEAD) { + blockposition = blockposition.shift((EnumDirection) iblockdata.get(BlockBed.FACING)); + iblockdata = world.getType(blockposition); + if (iblockdata.getBlock() != this) { + return true; + } + } + + if (world.worldProvider.e() && world.getBiome(blockposition) != BiomeBase.HELL) { + if (((Boolean) iblockdata.get(BlockBed.OCCUPIED)).booleanValue()) { + EntityHuman entityhuman1 = this.f(world, blockposition); + + if (entityhuman1 != null) { + entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.occupied", new Object[0]))); + return true; + } + + iblockdata = iblockdata.set(BlockBed.OCCUPIED, Boolean.valueOf(false)); + world.setTypeAndData(blockposition, iblockdata, 4); + } + + EntityHuman.EnumBedResult entityhuman_enumbedresult = entityhuman.a(blockposition); + + if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.OK) { + iblockdata = iblockdata.set(BlockBed.OCCUPIED, Boolean.valueOf(true)); + world.setTypeAndData(blockposition, iblockdata, 4); + return true; + } else { + if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.NOT_POSSIBLE_NOW) { + entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.noSleep", new Object[0]))); + } else if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.NOT_SAFE) { + entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.notSafe", new Object[0]))); + } + + return true; + } + } else { + world.setAir(blockposition); + BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockBed.FACING)).opposite()); + + if (world.getType(blockposition1).getBlock() == this) { + world.setAir(blockposition1); + } + + world.createExplosion((Entity) null, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, 5.0F, true, true); + return true; + } + } + } + + private EntityHuman f(World world, BlockPosition blockposition) { + Iterator iterator = world.players.iterator(); + + EntityHuman entityhuman; + + do { + if (!iterator.hasNext()) { + return null; + } + + entityhuman = (EntityHuman) iterator.next(); + } while (!entityhuman.isSleeping() || !entityhuman.bx.equals(blockposition)); + + return entityhuman; + } + + public boolean d() { + return false; + } + + public boolean c() { + return false; + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + this.l(); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockBed.FACING); + + if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) { + if (world.getType(blockposition.shift(enumdirection.opposite())).getBlock() != this) { + world.setAir(blockposition); + } + } else if (world.getType(blockposition.shift(enumdirection)).getBlock() != this) { + world.setAir(blockposition); + if (!world.isClientSide) { + this.b(world, blockposition, iblockdata, 0); + } + } + + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD ? null : Items.BED; + } + + private void l() { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5625F, 1.0F); + } + + public static BlockPosition a(World world, BlockPosition blockposition, int i) { + EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockBed.FACING); + int j = blockposition.getX(); + int k = blockposition.getY(); + int l = blockposition.getZ(); + + for (int i1 = 0; i1 <= 1; ++i1) { + int j1 = j - enumdirection.getAdjacentX() * i1 - 1; + int k1 = l - enumdirection.getAdjacentZ() * i1 - 1; + int l1 = j1 + 2; + int i2 = k1 + 2; + + for (int j2 = j1; j2 <= l1; ++j2) { + for (int k2 = k1; k2 <= i2; ++k2) { + BlockPosition blockposition1 = new BlockPosition(j2, k, k2); + + if (e(world, blockposition1)) { + if (i <= 0) { + return blockposition1; + } + + --i; + } + } + } + } + + return null; + } + + protected static boolean e(World world, BlockPosition blockposition) { + return World.a((IBlockAccess) world, blockposition.down()) && !world.getType(blockposition).getBlock().getMaterial().isBuildable() && !world.getType(blockposition.up()).getBlock().getMaterial().isBuildable(); + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { + if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.FOOT) { + super.dropNaturally(world, blockposition, iblockdata, f, 0); + } + + } + + public int k() { + return 1; + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) { + if (entityhuman.abilities.canInstantlyBuild && iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) { + BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockBed.FACING)).opposite()); + + if (world.getType(blockposition1).getBlock() == this) { + world.setAir(blockposition1); + } + } + + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType2(i); + + return (i & 8) > 0 ? this.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.HEAD).set(BlockBed.FACING, enumdirection).set(BlockBed.OCCUPIED, Boolean.valueOf((i & 4) > 0)) : this.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.FOOT).set(BlockBed.FACING, enumdirection); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.FOOT) { + IBlockData iblockdata1 = iblockaccess.getType(blockposition.shift((EnumDirection) iblockdata.get(BlockBed.FACING))); + + if (iblockdata1.getBlock() == this) { + iblockdata = iblockdata.set(BlockBed.OCCUPIED, iblockdata1.get(BlockBed.OCCUPIED)); + } + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockBed.FACING)).b(); + + if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) { + i |= 8; + if (((Boolean) iblockdata.get(BlockBed.OCCUPIED)).booleanValue()) { + i |= 4; + } + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockBed.FACING, BlockBed.PART, BlockBed.OCCUPIED}); + } + + public static enum EnumBedPart implements INamable { + + HEAD("head"), FOOT("foot"); + + private final String c; + + private EnumBedPart(String s) { + this.c = s; + } + + public String toString() { + return this.c; + } + + public String getName() { + return this.c; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java new file mode 100644 index 0000000..37f43e9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockBookshelf extends Block { + + public BlockBookshelf() { + super(Material.WOOD); + this.a(CreativeModeTab.b); + } + + public int a(Random random) { + return 3; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.BOOK; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java similarity index 97% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java index 2758fd8..e67d4ee 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java @@ -63,7 +63,7 @@ public class BlockCactus extends Block { } public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { - if (!this.e(world, blockposition)) { + if (!this.e(world, blockposition) && ((WorldServer) world).hasPhysicsEvent) { org.bukkit.block.Block bukkit = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); BlockPhysicsEvent event = new BlockPhysicsEvent(bukkit, bukkit.getTypeId()); world.getServer().getPluginManager().callEvent(event); diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java new file mode 100644 index 0000000..3bdc67a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class BlockCarrots extends BlockCrops { + + public BlockCarrots() {} + + protected Item l() { + return Items.CARROT; + } + + protected Item n() { + return Items.CARROT; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java new file mode 100644 index 0000000..5a4d5f7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java @@ -0,0 +1,185 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class BlockCauldron extends Block { + + public static final BlockStateInteger LEVEL = BlockStateInteger.of("level", 0, 3); + + public BlockCauldron() { + super(Material.ORE, MaterialMapColor.m); + this.j(this.blockStateList.getBlockData().set(BlockCauldron.LEVEL, Integer.valueOf(0))); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.3125F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + float f = 0.125F; + + this.a(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.a(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.a(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.j(); + } + + public void j() { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) { + int i = ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue(); + float f = (float) blockposition.getY() + (6.0F + (float) (3 * i)) / 16.0F; + + if (!world.isClientSide && entity.isBurning() && i > 0 && entity.getBoundingBox().b <= (double) f) { + entity.extinguish(); + this.a(world, blockposition, iblockdata, i - 1); + } + + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + ItemStack itemstack = entityhuman.inventory.getItemInHand(); + + if (itemstack == null) { + return true; + } else { + int i = ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue(); + Item item = itemstack.getItem(); + + if (item == Items.WATER_BUCKET) { + if (i < 3) { + if (!entityhuman.abilities.canInstantlyBuild) { + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, new ItemStack(Items.BUCKET)); + } + + entityhuman.b(StatisticList.I); + this.a(world, blockposition, iblockdata, 3); + } + + return true; + } else { + ItemStack itemstack1; + + if (item == Items.GLASS_BOTTLE) { + if (i > 0) { + if (!entityhuman.abilities.canInstantlyBuild) { + itemstack1 = new ItemStack(Items.POTION, 1, 0); + if (!entityhuman.inventory.pickup(itemstack1)) { + world.addEntity(new EntityItem(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.5D, (double) blockposition.getZ() + 0.5D, itemstack1)); + } else if (entityhuman instanceof EntityPlayer) { + ((EntityPlayer) entityhuman).updateInventory(entityhuman.defaultContainer); + } + + entityhuman.b(StatisticList.J); + --itemstack.count; + if (itemstack.count <= 0) { + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); + } + } + + this.a(world, blockposition, iblockdata, i - 1); + } + + return true; + } else { + if (i > 0 && item instanceof ItemArmor) { + ItemArmor itemarmor = (ItemArmor) item; + + if (itemarmor.x_() == ItemArmor.EnumArmorMaterial.LEATHER && itemarmor.d_(itemstack)) { + itemarmor.c(itemstack); + this.a(world, blockposition, iblockdata, i - 1); + entityhuman.b(StatisticList.K); + return true; + } + } + + if (i > 0 && item instanceof ItemBanner && TileEntityBanner.c(itemstack) > 0) { + itemstack1 = itemstack.cloneItemStack(); + itemstack1.count = 1; + TileEntityBanner.e(itemstack1); + if (itemstack.count <= 1 && !entityhuman.abilities.canInstantlyBuild) { + entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, itemstack1); + } else { + if (!entityhuman.inventory.pickup(itemstack1)) { + world.addEntity(new EntityItem(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.5D, (double) blockposition.getZ() + 0.5D, itemstack1)); + } else if (entityhuman instanceof EntityPlayer) { + ((EntityPlayer) entityhuman).updateInventory(entityhuman.defaultContainer); + } + + entityhuman.b(StatisticList.L); + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + } + + if (!entityhuman.abilities.canInstantlyBuild) { + this.a(world, blockposition, iblockdata, i - 1); + } + + return true; + } else { + return false; + } + } + } + } + } + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) { + world.setTypeAndData(blockposition, iblockdata.set(BlockCauldron.LEVEL, Integer.valueOf(MathHelper.clamp(i, 0, 3))), 2); + world.updateAdjacentComparators(blockposition, this); + } + + public void k(World world, BlockPosition blockposition) { + if (world.random.nextInt(20) == 1) { + IBlockData iblockdata = world.getType(blockposition); + + if (((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue() < 3) { + world.setTypeAndData(blockposition, iblockdata.a(BlockCauldron.LEVEL), 2); + } + + } + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.CAULDRON; + } + + public boolean isComplexRedstone() { + return true; + } + + public int l(World world, BlockPosition blockposition) { + return ((Integer) world.getType(blockposition).get(BlockCauldron.LEVEL)).intValue(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockCauldron.LEVEL, Integer.valueOf(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockCauldron.LEVEL}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java new file mode 100644 index 0000000..dbbe36b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockClay extends Block { + + public BlockClay() { + super(Material.CLAY); + this.a(CreativeModeTab.b); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.CLAY_BALL; + } + + public int a(Random random) { + return 4; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java new file mode 100644 index 0000000..a834bd4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +public class BlockCloth extends Block { + + public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class); + + public BlockCloth(Material material) { + super(material); + this.j(this.blockStateList.getBlockData().set(BlockCloth.COLOR, EnumColor.WHITE)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).getColorIndex(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).e(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockCloth.COLOR, EnumColor.fromColorIndex(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).getColorIndex(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockCloth.COLOR}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java new file mode 100644 index 0000000..08f8b5e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java @@ -0,0 +1,160 @@ +package net.minecraft.server; + +public class BlockCobbleWall extends Block { + + public static final BlockStateBoolean UP = BlockStateBoolean.of("up"); + public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north"); + public static final BlockStateBoolean EAST = BlockStateBoolean.of("east"); + public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south"); + public static final BlockStateBoolean WEST = BlockStateBoolean.of("west"); + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockCobbleWall.EnumCobbleVariant.class); + + public BlockCobbleWall(Block block) { + super(block.material); + this.j(this.blockStateList.getBlockData().set(BlockCobbleWall.UP, Boolean.valueOf(false)).set(BlockCobbleWall.NORTH, Boolean.valueOf(false)).set(BlockCobbleWall.EAST, Boolean.valueOf(false)).set(BlockCobbleWall.SOUTH, Boolean.valueOf(false)).set(BlockCobbleWall.WEST, Boolean.valueOf(false)).set(BlockCobbleWall.VARIANT, BlockCobbleWall.EnumCobbleVariant.NORMAL)); + this.c(block.strength); + this.b(block.durability / 3.0F); + this.a(block.stepSound); + this.a(CreativeModeTab.b); + } + + public String getName() { + return LocaleI18n.get(this.a() + "." + BlockCobbleWall.EnumCobbleVariant.NORMAL.c() + ".name"); + } + + public boolean d() { + return false; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) { + return false; + } + + public boolean c() { + return false; + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + boolean flag = this.e(iblockaccess, blockposition.north()); + boolean flag1 = this.e(iblockaccess, blockposition.south()); + boolean flag2 = this.e(iblockaccess, blockposition.west()); + boolean flag3 = this.e(iblockaccess, blockposition.east()); + float f = 0.25F; + float f1 = 0.75F; + float f2 = 0.25F; + float f3 = 0.75F; + float f4 = 1.0F; + + if (flag) { + f2 = 0.0F; + } + + if (flag1) { + f3 = 1.0F; + } + + if (flag2) { + f = 0.0F; + } + + if (flag3) { + f1 = 1.0F; + } + + if (flag && flag1 && !flag2 && !flag3) { + f4 = 0.8125F; + f = 0.3125F; + f1 = 0.6875F; + } else if (!flag && !flag1 && flag2 && flag3) { + f4 = 0.8125F; + f2 = 0.3125F; + f3 = 0.6875F; + } + + this.a(f, 0.0F, f2, f1, f4, f3); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.updateShape(world, blockposition); + this.maxY = 1.5D; + return super.a(world, blockposition, iblockdata); + } + + public boolean e(IBlockAccess iblockaccess, BlockPosition blockposition) { + Block block = iblockaccess.getType(blockposition).getBlock(); + + return block == Blocks.BARRIER ? false : (block != this && !(block instanceof BlockFenceGate) ? (block.material.k() && block.d() ? block.material != Material.PUMPKIN : false) : true); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockCobbleWall.EnumCobbleVariant) iblockdata.get(BlockCobbleWall.VARIANT)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockCobbleWall.VARIANT, BlockCobbleWall.EnumCobbleVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockCobbleWall.EnumCobbleVariant) iblockdata.get(BlockCobbleWall.VARIANT)).a(); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + return iblockdata.set(BlockCobbleWall.UP, Boolean.valueOf(!iblockaccess.isEmpty(blockposition.up()))).set(BlockCobbleWall.NORTH, Boolean.valueOf(this.e(iblockaccess, blockposition.north()))).set(BlockCobbleWall.EAST, Boolean.valueOf(this.e(iblockaccess, blockposition.east()))).set(BlockCobbleWall.SOUTH, Boolean.valueOf(this.e(iblockaccess, blockposition.south()))).set(BlockCobbleWall.WEST, Boolean.valueOf(this.e(iblockaccess, blockposition.west()))); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockCobbleWall.UP, BlockCobbleWall.NORTH, BlockCobbleWall.EAST, BlockCobbleWall.WEST, BlockCobbleWall.SOUTH, BlockCobbleWall.VARIANT}); + } + + public static enum EnumCobbleVariant implements INamable { + + NORMAL(0, "cobblestone", "normal"), MOSSY(1, "mossy_cobblestone", "mossy"); + + private static final BlockCobbleWall.EnumCobbleVariant[] c = new BlockCobbleWall.EnumCobbleVariant[values().length]; + private final int d; + private final String e; + private String f; + + private EnumCobbleVariant(int i, String s, String s1) { + this.d = i; + this.e = s; + this.f = s1; + } + + public int a() { + return this.d; + } + + public String toString() { + return this.e; + } + + public static BlockCobbleWall.EnumCobbleVariant a(int i) { + if (i < 0 || i >= BlockCobbleWall.EnumCobbleVariant.c.length) { + i = 0; + } + + return BlockCobbleWall.EnumCobbleVariant.c[i]; + } + + public String getName() { + return this.e; + } + + public String c() { + return this.f; + } + + static { + BlockCobbleWall.EnumCobbleVariant[] ablockcobblewall_enumcobblevariant = values(); + int i = ablockcobblewall_enumcobblevariant.length; + + for (int j = 0; j < i; ++j) { + BlockCobbleWall.EnumCobbleVariant blockcobblewall_enumcobblevariant = ablockcobblewall_enumcobblevariant[j]; + + BlockCobbleWall.EnumCobbleVariant.c[blockcobblewall_enumcobblevariant.a()] = blockcobblewall_enumcobblevariant; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java new file mode 100644 index 0000000..c51f6c6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +public abstract class BlockContainer extends Block implements IContainer { + + protected BlockContainer(Material material) { + this(material, material.r()); + } + + protected BlockContainer(Material material, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + this.isTileEntity = true; + } + + protected boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) { + return world.getType(blockposition.shift(enumdirection)).getBlock().getMaterial() == Material.CACTUS; + } + + protected boolean e(World world, BlockPosition blockposition) { + return this.a(world, blockposition, EnumDirection.NORTH) || this.a(world, blockposition, EnumDirection.SOUTH) || this.a(world, blockposition, EnumDirection.WEST) || this.a(world, blockposition, EnumDirection.EAST); + } + + public int b() { + return -1; + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.remove(world, blockposition, iblockdata); + world.t(blockposition); + } + + public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) { + super.a(world, blockposition, iblockdata, i, j); + TileEntity tileentity = world.getTileEntity(blockposition); + + return tileentity == null ? false : tileentity.c(i, j); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java new file mode 100644 index 0000000..77d2a07 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java @@ -0,0 +1,63 @@ +package net.minecraft.server; + +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.collect.Iterables; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map.Entry; + +public abstract class BlockDataAbstract implements IBlockData { + + private static final Joiner a = Joiner.on(','); + private static final Function, String> b = new Function() { + public String a(Entry entry) { + if (entry == null) { + return ""; + } else { + IBlockState iblockstate = (IBlockState) entry.getKey(); + + return iblockstate.a() + "=" + iblockstate.a((Comparable) entry.getValue()); + } + } + + public Object apply(Object object) { + return this.a((Entry) object); + } + }; + + public BlockDataAbstract() {} + + public > IBlockData a(IBlockState iblockstate) { + return this.set(iblockstate, a(iblockstate.c(), this.get(iblockstate))); + } + + protected static T a(Collection collection, T t0) { + Iterator iterator = collection.iterator(); + + do { + if (!iterator.hasNext()) { + return iterator.next(); + } + } while (!iterator.next().equals(t0)); + + if (iterator.hasNext()) { + return iterator.next(); + } else { + return collection.iterator().next(); + } + } + + public String toString() { + StringBuilder stringbuilder = new StringBuilder(); + + stringbuilder.append(Block.REGISTRY.c(this.getBlock())); + if (!this.b().isEmpty()) { + stringbuilder.append("["); + BlockDataAbstract.a.appendTo(stringbuilder, Iterables.transform(this.b().entrySet(), BlockDataAbstract.b)); + stringbuilder.append("]"); + } + + return stringbuilder.toString(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java new file mode 100644 index 0000000..98c3304 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockDeadBush extends BlockPlant { + + protected BlockDeadBush() { + super(Material.REPLACEABLE_PLANT); + float f = 0.4F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.o; + } + + protected boolean c(Block block) { + return block == Blocks.SAND || block == Blocks.HARDENED_CLAY || block == Blocks.STAINED_HARDENED_CLAY || block == Blocks.DIRT; + } + + public boolean a(World world, BlockPosition blockposition) { + return true; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return null; + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) { + entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]); + a(world, blockposition, new ItemStack(Blocks.DEADBUSH, 1, 0)); + } else { + super.a(world, entityhuman, blockposition, iblockdata, tileentity); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java new file mode 100644 index 0000000..2005bc1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public abstract class BlockDirectional extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + + protected BlockDirectional(Material material) { + super(material); + } + + protected BlockDirectional(Material material, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java new file mode 100644 index 0000000..ced74e1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java @@ -0,0 +1,117 @@ +package net.minecraft.server; + +public class BlockDirt extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDirt.EnumDirtVariant.class); + public static final BlockStateBoolean SNOWY = BlockStateBoolean.of("snowy"); + + protected BlockDirt() { + super(Material.EARTH); + this.j(this.blockStateList.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT).set(BlockDirt.SNOWY, Boolean.valueOf(false))); + this.a(CreativeModeTab.b); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).d(); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + if (iblockdata.get(BlockDirt.VARIANT) == BlockDirt.EnumDirtVariant.PODZOL) { + Block block = iblockaccess.getType(blockposition.up()).getBlock(); + + iblockdata = iblockdata.set(BlockDirt.SNOWY, Boolean.valueOf(block == Blocks.SNOW || block == Blocks.SNOW_LAYER)); + } + + return iblockdata; + } + + public int getDropData(World world, BlockPosition blockposition) { + IBlockData iblockdata = world.getType(blockposition); + + return iblockdata.getBlock() != this ? 0 : ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockDirt.VARIANT, BlockDirt.SNOWY}); + } + + public int getDropData(IBlockData iblockdata) { + BlockDirt.EnumDirtVariant blockdirt_enumdirtvariant = (BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT); + + if (blockdirt_enumdirtvariant == BlockDirt.EnumDirtVariant.PODZOL) { + blockdirt_enumdirtvariant = BlockDirt.EnumDirtVariant.DIRT; + } + + return blockdirt_enumdirtvariant.a(); + } + + public static enum EnumDirtVariant implements INamable { + + DIRT(0, "dirt", "default", MaterialMapColor.l), COARSE_DIRT(1, "coarse_dirt", "coarse", MaterialMapColor.l), PODZOL(2, "podzol", MaterialMapColor.J); + + private static final BlockDirt.EnumDirtVariant[] d = new BlockDirt.EnumDirtVariant[values().length]; + private final int e; + private final String f; + private final String g; + private final MaterialMapColor h; + + private EnumDirtVariant(int i, String s, MaterialMapColor materialmapcolor) { + this(i, s, s, materialmapcolor); + } + + private EnumDirtVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) { + this.e = i; + this.f = s; + this.g = s1; + this.h = materialmapcolor; + } + + public int a() { + return this.e; + } + + public String c() { + return this.g; + } + + public MaterialMapColor d() { + return this.h; + } + + public String toString() { + return this.f; + } + + public static BlockDirt.EnumDirtVariant a(int i) { + if (i < 0 || i >= BlockDirt.EnumDirtVariant.d.length) { + i = 0; + } + + return BlockDirt.EnumDirtVariant.d[i]; + } + + public String getName() { + return this.f; + } + + static { + BlockDirt.EnumDirtVariant[] ablockdirt_enumdirtvariant = values(); + int i = ablockdirt_enumdirtvariant.length; + + for (int j = 0; j < i; ++j) { + BlockDirt.EnumDirtVariant blockdirt_enumdirtvariant = ablockdirt_enumdirtvariant[j]; + + BlockDirt.EnumDirtVariant.d[blockdirt_enumdirtvariant.a()] = blockdirt_enumdirtvariant; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java similarity index 97% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java index 4f10902..0acce70 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java @@ -20,6 +20,7 @@ public class BlockDispenser extends BlockContainer { return 4; } + /* // PandaSpigot - comment out - SPIGOT-1401 public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { super.onPlace(world, blockposition, iblockdata); this.e(world, blockposition, iblockdata); @@ -27,7 +28,7 @@ public class BlockDispenser extends BlockContainer { private void e(World world, BlockPosition blockposition, IBlockData iblockdata) { if (!world.isClientSide) { - EnumDirection enumdirection = iblockdata.get(BlockDispenser.FACING); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockDispenser.FACING); boolean flag = world.getType(blockposition.north()).getBlock().o(); boolean flag1 = world.getType(blockposition.south()).getBlock().o(); @@ -46,9 +47,10 @@ public class BlockDispenser extends BlockContainer { } } - world.setTypeAndData(blockposition, iblockdata.set(BlockDispenser.FACING, enumdirection).set(BlockDispenser.TRIGGERED, Boolean.FALSE), 2); + world.setTypeAndData(blockposition, iblockdata.set(BlockDispenser.FACING, enumdirection).set(BlockDispenser.TRIGGERED, Boolean.valueOf(false)), 2); } } + */ // PandaSpigot public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { if (world.isClientSide) { diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java new file mode 100644 index 0000000..46b853d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockDoubleStep extends BlockDoubleStepAbstract { + + public BlockDoubleStep() {} + + public boolean l() { + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java new file mode 100644 index 0000000..4d75099 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java @@ -0,0 +1,140 @@ +package net.minecraft.server; + +import java.util.Random; + +public abstract class BlockDoubleStepAbstract extends BlockStepAbstract { + + public static final BlockStateBoolean SEAMLESS = BlockStateBoolean.of("seamless"); + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDoubleStepAbstract.EnumStoneSlabVariant.class); + + public BlockDoubleStepAbstract() { + super(Material.STONE); + IBlockData iblockdata = this.blockStateList.getBlockData(); + + if (this.l()) { + iblockdata = iblockdata.set(BlockDoubleStepAbstract.SEAMLESS, Boolean.valueOf(false)); + } else { + iblockdata = iblockdata.set(BlockDoubleStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM); + } + + this.j(iblockdata.set(BlockDoubleStepAbstract.VARIANT, BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE)); + this.a(CreativeModeTab.b); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.STONE_SLAB); + } + + public String b(int i) { + return super.a() + "." + BlockDoubleStepAbstract.EnumStoneSlabVariant.a(i).d(); + } + + public IBlockState n() { + return BlockDoubleStepAbstract.VARIANT; + } + + public Object a(ItemStack itemstack) { + return BlockDoubleStepAbstract.EnumStoneSlabVariant.a(itemstack.getData() & 7); + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockDoubleStepAbstract.VARIANT, BlockDoubleStepAbstract.EnumStoneSlabVariant.a(i & 7)); + + if (this.l()) { + iblockdata = iblockdata.set(BlockDoubleStepAbstract.SEAMLESS, Boolean.valueOf((i & 8) != 0)); + } else { + iblockdata = iblockdata.set(BlockDoubleStepAbstract.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).a(); + + if (this.l()) { + if (((Boolean) iblockdata.get(BlockDoubleStepAbstract.SEAMLESS)).booleanValue()) { + i |= 8; + } + } else if (iblockdata.get(BlockDoubleStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return this.l() ? new BlockStateList(this, new IBlockState[] { BlockDoubleStepAbstract.SEAMLESS, BlockDoubleStepAbstract.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockDoubleStepAbstract.HALF, BlockDoubleStepAbstract.VARIANT}); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).a(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).c(); + } + + public static enum EnumStoneSlabVariant implements INamable { + + STONE(0, MaterialMapColor.m, "stone"), SAND(1, MaterialMapColor.d, "sandstone", "sand"), WOOD(2, MaterialMapColor.o, "wood_old", "wood"), COBBLESTONE(3, MaterialMapColor.m, "cobblestone", "cobble"), BRICK(4, MaterialMapColor.D, "brick"), SMOOTHBRICK(5, MaterialMapColor.m, "stone_brick", "smoothStoneBrick"), NETHERBRICK(6, MaterialMapColor.K, "nether_brick", "netherBrick"), QUARTZ(7, MaterialMapColor.p, "quartz"); + + private static final BlockDoubleStepAbstract.EnumStoneSlabVariant[] i = new BlockDoubleStepAbstract.EnumStoneSlabVariant[values().length]; + private final int j; + private final MaterialMapColor k; + private final String l; + private final String m; + + private EnumStoneSlabVariant(int i, MaterialMapColor materialmapcolor, String s) { + this(i, materialmapcolor, s, s); + } + + private EnumStoneSlabVariant(int i, MaterialMapColor materialmapcolor, String s, String s1) { + this.j = i; + this.k = materialmapcolor; + this.l = s; + this.m = s1; + } + + public int a() { + return this.j; + } + + public MaterialMapColor c() { + return this.k; + } + + public String toString() { + return this.l; + } + + public static BlockDoubleStepAbstract.EnumStoneSlabVariant a(int i) { + if (i < 0 || i >= BlockDoubleStepAbstract.EnumStoneSlabVariant.i.length) { + i = 0; + } + + return BlockDoubleStepAbstract.EnumStoneSlabVariant.i[i]; + } + + public String getName() { + return this.l; + } + + public String d() { + return this.m; + } + + static { + BlockDoubleStepAbstract.EnumStoneSlabVariant[] ablockdoublestepabstract_enumstoneslabvariant = values(); + int i = ablockdoublestepabstract_enumstoneslabvariant.length; + + for (int j = 0; j < i; ++j) { + BlockDoubleStepAbstract.EnumStoneSlabVariant blockdoublestepabstract_enumstoneslabvariant = ablockdoublestepabstract_enumstoneslabvariant[j]; + + BlockDoubleStepAbstract.EnumStoneSlabVariant.i[blockdoublestepabstract_enumstoneslabvariant.a()] = blockdoublestepabstract_enumstoneslabvariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java new file mode 100644 index 0000000..87c61c4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockDoubleStoneStep2 extends BlockDoubleStoneStepAbstract { + + public BlockDoubleStoneStep2() {} + + public boolean l() { + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java new file mode 100644 index 0000000..bd253ad --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java @@ -0,0 +1,138 @@ +package net.minecraft.server; + +import java.util.Random; + +public abstract class BlockDoubleStoneStepAbstract extends BlockStepAbstract { + + public static final BlockStateBoolean SEAMLESS = BlockStateBoolean.of("seamless"); + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.class); + + public BlockDoubleStoneStepAbstract() { + super(Material.STONE); + IBlockData iblockdata = this.blockStateList.getBlockData(); + + if (this.l()) { + iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.SEAMLESS, Boolean.valueOf(false)); + } else { + iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM); + } + + this.j(iblockdata.set(BlockDoubleStoneStepAbstract.VARIANT, BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.RED_SANDSTONE)); + this.a(CreativeModeTab.b); + } + + public String getName() { + return LocaleI18n.get(this.a() + ".red_sandstone.name"); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.STONE_SLAB2); + } + + public String b(int i) { + return super.a() + "." + BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(i).d(); + } + + public IBlockState n() { + return BlockDoubleStoneStepAbstract.VARIANT; + } + + public Object a(ItemStack itemstack) { + return BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(itemstack.getData() & 7); + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockDoubleStoneStepAbstract.VARIANT, BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(i & 7)); + + if (this.l()) { + iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.SEAMLESS, Boolean.valueOf((i & 8) != 0)); + } else { + iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).a(); + + if (this.l()) { + if (((Boolean) iblockdata.get(BlockDoubleStoneStepAbstract.SEAMLESS)).booleanValue()) { + i |= 8; + } + } else if (iblockdata.get(BlockDoubleStoneStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return this.l() ? new BlockStateList(this, new IBlockState[] { BlockDoubleStoneStepAbstract.SEAMLESS, BlockDoubleStoneStepAbstract.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockDoubleStoneStepAbstract.HALF, BlockDoubleStoneStepAbstract.VARIANT}); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).c(); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).a(); + } + + public static enum EnumStoneSlab2Variant implements INamable { + + RED_SANDSTONE(0, "red_sandstone", BlockSand.EnumSandVariant.RED_SAND.c()); + + private static final BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[] b = new BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[values().length]; + private final int c; + private final String d; + private final MaterialMapColor e; + + private EnumStoneSlab2Variant(int i, String s, MaterialMapColor materialmapcolor) { + this.c = i; + this.d = s; + this.e = materialmapcolor; + } + + public int a() { + return this.c; + } + + public MaterialMapColor c() { + return this.e; + } + + public String toString() { + return this.d; + } + + public static BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant a(int i) { + if (i < 0 || i >= BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b.length) { + i = 0; + } + + return BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b[i]; + } + + public String getName() { + return this.d; + } + + public String d() { + return this.d; + } + + static { + BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[] ablockdoublestonestepabstract_enumstoneslab2variant = values(); + int i = ablockdoublestonestepabstract_enumstoneslab2variant.length; + + for (int j = 0; j < i; ++j) { + BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant blockdoublestonestepabstract_enumstoneslab2variant = ablockdoublestonestepabstract_enumstoneslab2variant[j]; + + BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b[blockdoublestonestepabstract_enumstoneslab2variant.a()] = blockdoublestonestepabstract_enumstoneslab2variant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java new file mode 100644 index 0000000..56cb6c7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockDoubleWoodStep extends BlockWoodenStep { + + public BlockDoubleWoodStep() {} + + public boolean l() { + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java new file mode 100644 index 0000000..c27c0ff --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java @@ -0,0 +1,53 @@ +package net.minecraft.server; + +public class BlockEnchantmentTable extends BlockContainer { + + protected BlockEnchantmentTable() { + super(Material.STONE, MaterialMapColor.D); + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F); + this.e(0); + this.a(CreativeModeTab.c); + } + + public boolean d() { + return false; + } + + public boolean c() { + return false; + } + + public int b() { + return 3; + } + + public TileEntity a(World world, int i) { + return new TileEntityEnchantTable(); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityEnchantTable) { + entityhuman.openTileEntity((TileEntityEnchantTable) tileentity); + } + + return true; + } + } + + public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) { + super.postPlace(world, blockposition, iblockdata, entityliving, itemstack); + if (itemstack.hasName()) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityEnchantTable) { + ((TileEntityEnchantTable) tileentity).a(itemstack.getName()); + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java new file mode 100644 index 0000000..15b5f2f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java @@ -0,0 +1,90 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Random; + +public class BlockEnderChest extends BlockContainer { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + + protected BlockEnderChest() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockEnderChest.FACING, EnumDirection.NORTH)); + this.a(CreativeModeTab.c); + this.a(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F); + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public int b() { + return 2; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.OBSIDIAN); + } + + public int a(Random random) { + return 8; + } + + protected boolean I() { + return true; + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData().set(BlockEnderChest.FACING, entityliving.getDirection().opposite()); + } + + public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) { + world.setTypeAndData(blockposition, iblockdata.set(BlockEnderChest.FACING, entityliving.getDirection().opposite()), 2); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + InventoryEnderChest inventoryenderchest = entityhuman.getEnderChest(); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (inventoryenderchest != null && tileentity instanceof TileEntityEnderChest) { + if (world.getType(blockposition.up()).getBlock().isOccluding()) { + return true; + } else if (world.isClientSide) { + return true; + } else { + inventoryenderchest.a((TileEntityEnderChest) tileentity); + entityhuman.openContainer(inventoryenderchest); + entityhuman.b(StatisticList.V); + return true; + } + } else { + return true; + } + } + + public TileEntity a(World world, int i) { + return new TileEntityEnderChest(); + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType1(i); + + if (enumdirection.k() == EnumDirection.EnumAxis.Y) { + enumdirection = EnumDirection.NORTH; + } + + return this.getBlockData().set(BlockEnderChest.FACING, enumdirection); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumDirection) iblockdata.get(BlockEnderChest.FACING)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockEnderChest.FACING}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java new file mode 100644 index 0000000..43e1da0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java @@ -0,0 +1,70 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.List; +import java.util.Random; + +public class BlockEnderPortalFrame extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + public static final BlockStateBoolean EYE = BlockStateBoolean.of("eye"); + + public BlockEnderPortalFrame() { + super(Material.STONE, MaterialMapColor.C); + this.j(this.blockStateList.getBlockData().set(BlockEnderPortalFrame.FACING, EnumDirection.NORTH).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(false))); + } + + public boolean c() { + return false; + } + + public void j() { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + if (((Boolean) world.getType(blockposition).get(BlockEnderPortalFrame.EYE)).booleanValue()) { + this.a(0.3125F, 0.8125F, 0.3125F, 0.6875F, 1.0F, 0.6875F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + this.j(); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return null; + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData().set(BlockEnderPortalFrame.FACING, entityliving.getDirection().opposite()).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(false)); + } + + public boolean isComplexRedstone() { + return true; + } + + public int l(World world, BlockPosition blockposition) { + return ((Boolean) world.getType(blockposition).get(BlockEnderPortalFrame.EYE)).booleanValue() ? 15 : 0; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockEnderPortalFrame.EYE, Boolean.valueOf((i & 4) != 0)).set(BlockEnderPortalFrame.FACING, EnumDirection.fromType2(i & 3)); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockEnderPortalFrame.FACING)).b(); + + if (((Boolean) iblockdata.get(BlockEnderPortalFrame.EYE)).booleanValue()) { + i |= 4; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockEnderPortalFrame.FACING, BlockEnderPortalFrame.EYE}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java new file mode 100644 index 0000000..1d50055 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java @@ -0,0 +1,133 @@ +package net.minecraft.server; + +import java.util.List; + +public class BlockFence extends Block { + + public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north"); + public static final BlockStateBoolean EAST = BlockStateBoolean.of("east"); + public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south"); + public static final BlockStateBoolean WEST = BlockStateBoolean.of("west"); + + public BlockFence(Material material) { + this(material, material.r()); + } + + public BlockFence(Material material, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + this.j(this.blockStateList.getBlockData().set(BlockFence.NORTH, Boolean.valueOf(false)).set(BlockFence.EAST, Boolean.valueOf(false)).set(BlockFence.SOUTH, Boolean.valueOf(false)).set(BlockFence.WEST, Boolean.valueOf(false))); + this.a(CreativeModeTab.c); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + boolean flag = this.e(world, blockposition.north()); + boolean flag1 = this.e(world, blockposition.south()); + boolean flag2 = this.e(world, blockposition.west()); + boolean flag3 = this.e(world, blockposition.east()); + float f = 0.375F; + float f1 = 0.625F; + float f2 = 0.375F; + float f3 = 0.625F; + + if (flag) { + f2 = 0.0F; + } + + if (flag1) { + f3 = 1.0F; + } + + if (flag || flag1) { + this.a(f, 0.0F, f2, f1, 1.5F, f3); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + f2 = 0.375F; + f3 = 0.625F; + if (flag2) { + f = 0.0F; + } + + if (flag3) { + f1 = 1.0F; + } + + if (flag2 || flag3 || !flag && !flag1) { + this.a(f, 0.0F, f2, f1, 1.5F, f3); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + if (flag) { + f2 = 0.0F; + } + + if (flag1) { + f3 = 1.0F; + } + + this.a(f, 0.0F, f2, f1, 1.0F, f3); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + boolean flag = this.e(iblockaccess, blockposition.north()); + boolean flag1 = this.e(iblockaccess, blockposition.south()); + boolean flag2 = this.e(iblockaccess, blockposition.west()); + boolean flag3 = this.e(iblockaccess, blockposition.east()); + float f = 0.375F; + float f1 = 0.625F; + float f2 = 0.375F; + float f3 = 0.625F; + + if (flag) { + f2 = 0.0F; + } + + if (flag1) { + f3 = 1.0F; + } + + if (flag2) { + f = 0.0F; + } + + if (flag3) { + f1 = 1.0F; + } + + this.a(f, 0.0F, f2, f1, 1.0F, f3); + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) { + return false; + } + + public boolean e(IBlockAccess iblockaccess, BlockPosition blockposition) { + Block block = iblockaccess.getType(blockposition).getBlock(); + + return block == Blocks.BARRIER ? false : ((!(block instanceof BlockFence) || block.material != this.material) && !(block instanceof BlockFenceGate) ? (block.material.k() && block.d() ? block.material != Material.PUMPKIN : false) : true); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + return world.isClientSide ? true : ItemLeash.a(entityhuman, world, blockposition); + } + + public int toLegacyData(IBlockData iblockdata) { + return 0; + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + return iblockdata.set(BlockFence.NORTH, Boolean.valueOf(this.e(iblockaccess, blockposition.north()))).set(BlockFence.EAST, Boolean.valueOf(this.e(iblockaccess, blockposition.east()))).set(BlockFence.SOUTH, Boolean.valueOf(this.e(iblockaccess, blockposition.south()))).set(BlockFence.WEST, Boolean.valueOf(this.e(iblockaccess, blockposition.west()))); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockFence.NORTH, BlockFence.EAST, BlockFence.WEST, BlockFence.SOUTH}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java new file mode 100644 index 0000000..c022812 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java @@ -0,0 +1,126 @@ +package net.minecraft.server; + +public class BlockFenceGate extends BlockDirectional { + + public static final BlockStateBoolean OPEN = BlockStateBoolean.of("open"); + public static final BlockStateBoolean POWERED = BlockStateBoolean.of("powered"); + public static final BlockStateBoolean IN_WALL = BlockStateBoolean.of("in_wall"); + + public BlockFenceGate(BlockWood.EnumLogVariant blockwood_enumlogvariant) { + super(Material.WOOD, blockwood_enumlogvariant.c()); + this.j(this.blockStateList.getBlockData().set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)).set(BlockFenceGate.IN_WALL, Boolean.valueOf(false))); + this.a(CreativeModeTab.d); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).k(); + + if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z && (iblockaccess.getType(blockposition.west()).getBlock() == Blocks.COBBLESTONE_WALL || iblockaccess.getType(blockposition.east()).getBlock() == Blocks.COBBLESTONE_WALL) || enumdirection_enumaxis == EnumDirection.EnumAxis.X && (iblockaccess.getType(blockposition.north()).getBlock() == Blocks.COBBLESTONE_WALL || iblockaccess.getType(blockposition.south()).getBlock() == Blocks.COBBLESTONE_WALL)) { + iblockdata = iblockdata.set(BlockFenceGate.IN_WALL, Boolean.valueOf(true)); + } + + return iblockdata; + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return world.getType(blockposition.down()).getBlock().getMaterial().isBuildable() ? super.canPlace(world, blockposition) : false; + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) { + return null; + } else { + EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).k(); + + return enumdirection_enumaxis == EnumDirection.EnumAxis.Z ? new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.375F), (double) (blockposition.getX() + 1), (double) ((float) blockposition.getY() + 1.5F), (double) ((float) blockposition.getZ() + 0.625F)) : new AxisAlignedBB((double) ((float) blockposition.getX() + 0.375F), (double) blockposition.getY(), (double) blockposition.getZ(), (double) ((float) blockposition.getX() + 0.625F), (double) ((float) blockposition.getY() + 1.5F), (double) (blockposition.getZ() + 1)); + } + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockaccess.getType(blockposition).get(BlockFenceGate.FACING)).k(); + + if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z) { + this.a(0.0F, 0.0F, 0.375F, 1.0F, 1.0F, 0.625F); + } else { + this.a(0.375F, 0.0F, 0.0F, 0.625F, 1.0F, 1.0F); + } + + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) { + return ((Boolean) iblockaccess.getType(blockposition).get(BlockFenceGate.OPEN)).booleanValue(); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData().set(BlockFenceGate.FACING, entityliving.getDirection()).set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)).set(BlockFenceGate.IN_WALL, Boolean.valueOf(false)); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) { + iblockdata = iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(false)); + world.setTypeAndData(blockposition, iblockdata, 2); + } else { + EnumDirection enumdirection1 = EnumDirection.fromAngle((double) entityhuman.yaw); + + if (iblockdata.get(BlockFenceGate.FACING) == enumdirection1.opposite()) { + iblockdata = iblockdata.set(BlockFenceGate.FACING, enumdirection1); + } + + iblockdata = iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(true)); + world.setTypeAndData(blockposition, iblockdata, 2); + } + + world.a(entityhuman, ((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() ? 1003 : 1006, blockposition, 0); + return true; + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + if (!world.isClientSide) { + boolean flag = world.isBlockIndirectlyPowered(blockposition); + + if (flag || block.isPowerSource()) { + if (flag && !((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() && !((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) { + world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(true)).set(BlockFenceGate.POWERED, Boolean.valueOf(true)), 2); + world.a((EntityHuman) null, 1003, blockposition, 0); + } else if (!flag && ((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() && ((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) { + world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)), 2); + world.a((EntityHuman) null, 1006, blockposition, 0); + } else if (flag != ((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) { + world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.POWERED, Boolean.valueOf(flag)), 2); + } + } + + } + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockFenceGate.FACING, EnumDirection.fromType2(i)).set(BlockFenceGate.OPEN, Boolean.valueOf((i & 4) != 0)).set(BlockFenceGate.POWERED, Boolean.valueOf((i & 8) != 0)); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).b(); + + if (((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) { + i |= 8; + } + + if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) { + i |= 4; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockFenceGate.FACING, BlockFenceGate.OPEN, BlockFenceGate.POWERED, BlockFenceGate.IN_WALL}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java new file mode 100644 index 0000000..27bc097 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java @@ -0,0 +1,31 @@ +package net.minecraft.server; + +public class BlockFloorSign extends BlockSign { + + public static final BlockStateInteger ROTATION = BlockStateInteger.of("rotation", 0, 15); + + public BlockFloorSign() { + this.j(this.blockStateList.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(0))); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + if (!world.getType(blockposition.down()).getBlock().getMaterial().isBuildable()) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + super.doPhysics(world, blockposition, iblockdata, block); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((Integer) iblockdata.get(BlockFloorSign.ROTATION)).intValue(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockFloorSign.ROTATION}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java new file mode 100644 index 0000000..ce128d9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java @@ -0,0 +1,133 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; +import java.util.Collection; + +public abstract class BlockFlowers extends BlockPlant { + + protected BlockStateEnum TYPE; + + protected BlockFlowers() { + this.j(this.blockStateList.getBlockData().set(this.n(), this.l() == BlockFlowers.EnumFlowerType.RED ? BlockFlowers.EnumFlowerVarient.POPPY : BlockFlowers.EnumFlowerVarient.DANDELION)); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockFlowers.EnumFlowerVarient) iblockdata.get(this.n())).b(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(this.n(), BlockFlowers.EnumFlowerVarient.a(this.l(), i)); + } + + public abstract BlockFlowers.EnumFlowerType l(); + + public IBlockState n() { + if (this.TYPE == null) { + this.TYPE = BlockStateEnum.a("type", BlockFlowers.EnumFlowerVarient.class, new Predicate() { + public boolean a(BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) { + return blockflowers_enumflowervarient.a() == BlockFlowers.this.l(); + } + + public boolean apply(Object object) { + return this.a((BlockFlowers.EnumFlowerVarient) object); + } + }); + } + + return this.TYPE; + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockFlowers.EnumFlowerVarient) iblockdata.get(this.n())).b(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { this.n()}); + } + + public static enum EnumFlowerVarient implements INamable { + + DANDELION(BlockFlowers.EnumFlowerType.YELLOW, 0, "dandelion"), POPPY(BlockFlowers.EnumFlowerType.RED, 0, "poppy"), BLUE_ORCHID(BlockFlowers.EnumFlowerType.RED, 1, "blue_orchid", "blueOrchid"), ALLIUM(BlockFlowers.EnumFlowerType.RED, 2, "allium"), HOUSTONIA(BlockFlowers.EnumFlowerType.RED, 3, "houstonia"), RED_TULIP(BlockFlowers.EnumFlowerType.RED, 4, "red_tulip", "tulipRed"), ORANGE_TULIP(BlockFlowers.EnumFlowerType.RED, 5, "orange_tulip", "tulipOrange"), WHITE_TULIP(BlockFlowers.EnumFlowerType.RED, 6, "white_tulip", "tulipWhite"), PINK_TULIP(BlockFlowers.EnumFlowerType.RED, 7, "pink_tulip", "tulipPink"), OXEYE_DAISY(BlockFlowers.EnumFlowerType.RED, 8, "oxeye_daisy", "oxeyeDaisy"); + + private static final BlockFlowers.EnumFlowerVarient[][] k = new BlockFlowers.EnumFlowerVarient[BlockFlowers.EnumFlowerType.values().length][]; + private final BlockFlowers.EnumFlowerType l; + private final int m; + private final String n; + private final String o; + + private EnumFlowerVarient(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i, String s) { + this(blockflowers_enumflowertype, i, s, s); + } + + private EnumFlowerVarient(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i, String s, String s1) { + this.l = blockflowers_enumflowertype; + this.m = i; + this.n = s; + this.o = s1; + } + + public BlockFlowers.EnumFlowerType a() { + return this.l; + } + + public int b() { + return this.m; + } + + public static BlockFlowers.EnumFlowerVarient a(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i) { + BlockFlowers.EnumFlowerVarient[] ablockflowers_enumflowervarient = BlockFlowers.EnumFlowerVarient.k[blockflowers_enumflowertype.ordinal()]; + + if (i < 0 || i >= ablockflowers_enumflowervarient.length) { + i = 0; + } + + return ablockflowers_enumflowervarient[i]; + } + + public String toString() { + return this.n; + } + + public String getName() { + return this.n; + } + + public String d() { + return this.o; + } + + static { + BlockFlowers.EnumFlowerType[] ablockflowers_enumflowertype = BlockFlowers.EnumFlowerType.values(); + int i = ablockflowers_enumflowertype.length; + + for (int j = 0; j < i; ++j) { + final BlockFlowers.EnumFlowerType blockflowers_enumflowertype = ablockflowers_enumflowertype[j]; + Collection collection = Collections2.filter(Lists.newArrayList(values()), new Predicate() { + public boolean a(BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) { + return blockflowers_enumflowervarient.a() == blockflowers_enumflowertype; + } + + public boolean apply(Object object) { + return this.a((BlockFlowers.EnumFlowerVarient) object); + } + }); + + BlockFlowers.EnumFlowerVarient.k[blockflowers_enumflowertype.ordinal()] = (BlockFlowers.EnumFlowerVarient[]) collection.toArray(new BlockFlowers.EnumFlowerVarient[collection.size()]); + } + + } + } + + public static enum EnumFlowerType { + + YELLOW, RED; + + private EnumFlowerType() {} + + public BlockFlowers a() { + return this == BlockFlowers.EnumFlowerType.YELLOW ? Blocks.YELLOW_FLOWER : Blocks.RED_FLOWER; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java new file mode 100644 index 0000000..21d868c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java @@ -0,0 +1,148 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Random; + +public class BlockFurnace extends BlockContainer { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + private final boolean b; + private static boolean N; + + protected BlockFurnace(boolean flag) { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockFurnace.FACING, EnumDirection.NORTH)); + this.b = flag; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.FURNACE); + } + + /* // PandaSpigot - comment out - SPIGOT-1401 + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.e(world, blockposition, iblockdata); + } + + private void e(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.isClientSide) { + Block block = world.getType(blockposition.north()).getBlock(); + Block block1 = world.getType(blockposition.south()).getBlock(); + Block block2 = world.getType(blockposition.west()).getBlock(); + Block block3 = world.getType(blockposition.east()).getBlock(); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockFurnace.FACING); + + if (enumdirection == EnumDirection.NORTH && block.o() && !block1.o()) { + enumdirection = EnumDirection.SOUTH; + } else if (enumdirection == EnumDirection.SOUTH && block1.o() && !block.o()) { + enumdirection = EnumDirection.NORTH; + } else if (enumdirection == EnumDirection.WEST && block2.o() && !block3.o()) { + enumdirection = EnumDirection.EAST; + } else if (enumdirection == EnumDirection.EAST && block3.o() && !block2.o()) { + enumdirection = EnumDirection.WEST; + } + + world.setTypeAndData(blockposition, iblockdata.set(BlockFurnace.FACING, enumdirection), 2); + } + } + */ // PandaSpigot + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityFurnace) { + entityhuman.openContainer((TileEntityFurnace) tileentity); + entityhuman.b(StatisticList.Y); + } + + return true; + } + } + + public static void a(boolean flag, World world, BlockPosition blockposition) { + IBlockData iblockdata = world.getType(blockposition); + TileEntity tileentity = world.getTileEntity(blockposition); + + BlockFurnace.N = true; + if (flag) { + world.setTypeAndData(blockposition, Blocks.LIT_FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3); + world.setTypeAndData(blockposition, Blocks.LIT_FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3); + } else { + world.setTypeAndData(blockposition, Blocks.FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3); + world.setTypeAndData(blockposition, Blocks.FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3); + } + + BlockFurnace.N = false; + if (tileentity != null) { + tileentity.D(); + world.setTileEntity(blockposition, tileentity); + } + + } + + public TileEntity a(World world, int i) { + return new TileEntityFurnace(); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData().set(BlockFurnace.FACING, entityliving.getDirection().opposite()); + } + + public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) { + world.setTypeAndData(blockposition, iblockdata.set(BlockFurnace.FACING, entityliving.getDirection().opposite()), 2); + if (itemstack.hasName()) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityFurnace) { + ((TileEntityFurnace) tileentity).a(itemstack.getName()); + } + } + + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!BlockFurnace.N) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityFurnace) { + InventoryUtils.dropInventory(world, blockposition, (TileEntityFurnace) tileentity); + world.updateAdjacentComparators(blockposition, this); + } + } + + super.remove(world, blockposition, iblockdata); + } + + public boolean isComplexRedstone() { + return true; + } + + public int l(World world, BlockPosition blockposition) { + return Container.a(world.getTileEntity(blockposition)); + } + + public int b() { + return 3; + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType1(i); + + if (enumdirection.k() == EnumDirection.EnumAxis.Y) { + enumdirection = EnumDirection.NORTH; + } + + return this.getBlockData().set(BlockFurnace.FACING, enumdirection); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumDirection) iblockdata.get(BlockFurnace.FACING)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockFurnace.FACING}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java new file mode 100644 index 0000000..7879084 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockGlass extends BlockHalfTransparent { + + public BlockGlass(Material material, boolean flag) { + super(material, flag); + this.a(CreativeModeTab.b); + } + + public int a(Random random) { + return 0; + } + + public boolean d() { + return false; + } + + protected boolean I() { + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java new file mode 100644 index 0000000..d910b79 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockGravel extends BlockFalling { + + public BlockGravel() {} + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + if (i > 3) { + i = 3; + } + + return random.nextInt(10 - i * 3) == 0 ? Items.FLINT : Item.getItemOf(this); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.m; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java new file mode 100644 index 0000000..84c13ea --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +public class BlockHalfTransparent extends Block { + + private boolean a; + + protected BlockHalfTransparent(Material material, boolean flag) { + this(material, flag, material.r()); + } + + protected BlockHalfTransparent(Material material, boolean flag, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + this.a = flag; + } + + public boolean c() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java new file mode 100644 index 0000000..7b12023 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java @@ -0,0 +1,13 @@ +package net.minecraft.server; + +public class BlockHardenedClay extends Block { + + public BlockHardenedClay() { + super(Material.STONE); + this.a(CreativeModeTab.b); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.q; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java new file mode 100644 index 0000000..cc1dab7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java @@ -0,0 +1,48 @@ +package net.minecraft.server; + +public class BlockHay extends BlockRotatable { + + public BlockHay() { + super(Material.GRASS, MaterialMapColor.t); + this.j(this.blockStateList.getBlockData().set(BlockHay.AXIS, EnumDirection.EnumAxis.Y)); + this.a(CreativeModeTab.b); + } + + public IBlockData fromLegacyData(int i) { + EnumDirection.EnumAxis enumdirection_enumaxis = EnumDirection.EnumAxis.Y; + int j = i & 12; + + if (j == 4) { + enumdirection_enumaxis = EnumDirection.EnumAxis.X; + } else if (j == 8) { + enumdirection_enumaxis = EnumDirection.EnumAxis.Z; + } + + return this.getBlockData().set(BlockHay.AXIS, enumdirection_enumaxis); + } + + public int toLegacyData(IBlockData iblockdata) { + int i = 0; + EnumDirection.EnumAxis enumdirection_enumaxis = (EnumDirection.EnumAxis) iblockdata.get(BlockHay.AXIS); + + if (enumdirection_enumaxis == EnumDirection.EnumAxis.X) { + i |= 4; + } else if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockHay.AXIS}); + } + + protected ItemStack i(IBlockData iblockdata) { + return new ItemStack(Item.getItemOf(this), 1, 0); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockHay.AXIS, enumdirection.k()); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java new file mode 100644 index 0000000..e5642dd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java @@ -0,0 +1,129 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockHugeMushroom extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockHugeMushroom.EnumHugeMushroomVariant.class); + private final Block b; + + public BlockHugeMushroom(Material material, MaterialMapColor materialmapcolor, Block block) { + super(material, materialmapcolor); + this.j(this.blockStateList.getBlockData().set(BlockHugeMushroom.VARIANT, BlockHugeMushroom.EnumHugeMushroomVariant.ALL_OUTSIDE)); + this.b = block; + } + + public int a(Random random) { + return Math.max(0, random.nextInt(10) - 7); + } + + public MaterialMapColor g(IBlockData iblockdata) { + switch (BlockHugeMushroom.SyntheticClass_1.a[((BlockHugeMushroom.EnumHugeMushroomVariant) iblockdata.get(BlockHugeMushroom.VARIANT)).ordinal()]) { + case 1: + return MaterialMapColor.e; + + case 2: + return MaterialMapColor.d; + + case 3: + return MaterialMapColor.d; + + default: + return super.g(iblockdata); + } + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(this.b); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockHugeMushroom.VARIANT, BlockHugeMushroom.EnumHugeMushroomVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockHugeMushroom.EnumHugeMushroomVariant) iblockdata.get(BlockHugeMushroom.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockHugeMushroom.VARIANT}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[BlockHugeMushroom.EnumHugeMushroomVariant.values().length]; + + static { + try { + BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.ALL_STEM.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.ALL_INSIDE.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.STEM.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + } + } + + public static enum EnumHugeMushroomVariant implements INamable { + + NORTH_WEST(1, "north_west"), NORTH(2, "north"), NORTH_EAST(3, "north_east"), WEST(4, "west"), CENTER(5, "center"), EAST(6, "east"), SOUTH_WEST(7, "south_west"), SOUTH(8, "south"), SOUTH_EAST(9, "south_east"), STEM(10, "stem"), ALL_INSIDE(0, "all_inside"), ALL_OUTSIDE(14, "all_outside"), ALL_STEM(15, "all_stem"); + + private static final BlockHugeMushroom.EnumHugeMushroomVariant[] n = new BlockHugeMushroom.EnumHugeMushroomVariant[16]; + private final int o; + private final String p; + + private EnumHugeMushroomVariant(int i, String s) { + this.o = i; + this.p = s; + } + + public int a() { + return this.o; + } + + public String toString() { + return this.p; + } + + public static BlockHugeMushroom.EnumHugeMushroomVariant a(int i) { + if (i < 0 || i >= BlockHugeMushroom.EnumHugeMushroomVariant.n.length) { + i = 0; + } + + BlockHugeMushroom.EnumHugeMushroomVariant blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.n[i]; + + return blockhugemushroom_enumhugemushroomvariant == null ? BlockHugeMushroom.EnumHugeMushroomVariant.n[0] : blockhugemushroom_enumhugemushroomvariant; + } + + public String getName() { + return this.p; + } + + static { + BlockHugeMushroom.EnumHugeMushroomVariant[] ablockhugemushroom_enumhugemushroomvariant = values(); + int i = ablockhugemushroom_enumhugemushroomvariant.length; + + for (int j = 0; j < i; ++j) { + BlockHugeMushroom.EnumHugeMushroomVariant blockhugemushroom_enumhugemushroomvariant = ablockhugemushroom_enumhugemushroomvariant[j]; + + BlockHugeMushroom.EnumHugeMushroomVariant.n[blockhugemushroom_enumhugemushroomvariant.a()] = blockhugemushroom_enumhugemushroomvariant; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java new file mode 100644 index 0000000..529aff2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java @@ -0,0 +1,144 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Iterator; + +public class BlockLadder extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + + protected BlockLadder() { + super(Material.ORIENTABLE); + this.j(this.blockStateList.getBlockData().set(BlockLadder.FACING, EnumDirection.NORTH)); + this.a(CreativeModeTab.c); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.updateShape(world, blockposition); + return super.a(world, blockposition, iblockdata); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + + if (iblockdata.getBlock() == this) { + float f = 0.125F; + + switch (BlockLadder.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockLadder.FACING)).ordinal()]) { + case 1: + this.a(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F); + break; + + case 2: + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f); + break; + + case 3: + this.a(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + break; + + case 4: + default: + this.a(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F); + } + + } + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return world.getType(blockposition.west()).getBlock().isOccluding() ? true : (world.getType(blockposition.east()).getBlock().isOccluding() ? true : (world.getType(blockposition.north()).getBlock().isOccluding() ? true : world.getType(blockposition.south()).getBlock().isOccluding())); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + if (enumdirection.k().c() && this.a(world, blockposition, enumdirection)) { + return this.getBlockData().set(BlockLadder.FACING, enumdirection); + } else { + Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); + + EnumDirection enumdirection1; + + do { + if (!iterator.hasNext()) { + return this.getBlockData(); + } + + enumdirection1 = (EnumDirection) iterator.next(); + } while (!this.a(world, blockposition, enumdirection1)); + + return this.getBlockData().set(BlockLadder.FACING, enumdirection1); + } + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockLadder.FACING); + + if (!this.a(world, blockposition, enumdirection)) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + super.doPhysics(world, blockposition, iblockdata, block); + } + + protected boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) { + return world.getType(blockposition.shift(enumdirection.opposite())).getBlock().isOccluding(); + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType1(i); + + if (enumdirection.k() == EnumDirection.EnumAxis.Y) { + enumdirection = EnumDirection.NORTH; + } + + return this.getBlockData().set(BlockLadder.FACING, enumdirection); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumDirection) iblockdata.get(BlockLadder.FACING)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLadder.FACING}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + BlockLadder.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockLadder.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockLadder.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockLadder.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java new file mode 100644 index 0000000..aac5aa2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockLeaves1 extends BlockLeaves { + + public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() { + public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) { + return blockwood_enumlogvariant.a() < 4; + } + + public boolean apply(Object object) { + return this.a((BlockWood.EnumLogVariant) object); + } + }); + + public BlockLeaves1() { + this.j(this.blockStateList.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf(true)).set(BlockLeaves1.DECAYABLE, Boolean.valueOf(true))); + } + + protected void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) { + if (iblockdata.get(BlockLeaves1.VARIANT) == BlockWood.EnumLogVariant.OAK && world.random.nextInt(i) == 0) { + a(world, blockposition, new ItemStack(Items.APPLE, 1, 0)); + } + + } + + protected int d(IBlockData iblockdata) { + return iblockdata.get(BlockLeaves1.VARIANT) == BlockWood.EnumLogVariant.JUNGLE ? 40 : super.d(iblockdata); + } + + protected ItemStack i(IBlockData iblockdata) { + return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a()); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockLeaves1.VARIANT, this.b(i)).set(BlockLeaves1.DECAYABLE, Boolean.valueOf((i & 4) == 0)).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf((i & 8) > 0)); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a(); + + if (!((Boolean) iblockdata.get(BlockLeaves1.DECAYABLE)).booleanValue()) { + i |= 4; + } + + if (((Boolean) iblockdata.get(BlockLeaves1.CHECK_DECAY)).booleanValue()) { + i |= 8; + } + + return i; + } + + public BlockWood.EnumLogVariant b(int i) { + return BlockWood.EnumLogVariant.a((i & 3) % 4); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLeaves1.VARIANT, BlockLeaves1.CHECK_DECAY, BlockLeaves1.DECAYABLE}); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a(); + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) { + entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]); + a(world, blockposition, new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a())); + } else { + super.a(world, entityhuman, blockposition, iblockdata, tileentity); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java new file mode 100644 index 0000000..944ce5b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java @@ -0,0 +1,77 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockLeaves2 extends BlockLeaves { + + public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() { + public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) { + return blockwood_enumlogvariant.a() >= 4; + } + + public boolean apply(Object object) { + return this.a((BlockWood.EnumLogVariant) object); + } + }); + + public BlockLeaves2() { + this.j(this.blockStateList.getBlockData().set(BlockLeaves2.VARIANT, BlockWood.EnumLogVariant.ACACIA).set(BlockLeaves2.CHECK_DECAY, Boolean.valueOf(true)).set(BlockLeaves2.DECAYABLE, Boolean.valueOf(true))); + } + + protected void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) { + if (iblockdata.get(BlockLeaves2.VARIANT) == BlockWood.EnumLogVariant.DARK_OAK && world.random.nextInt(i) == 0) { + a(world, blockposition, new ItemStack(Items.APPLE, 1, 0)); + } + + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a(); + } + + public int getDropData(World world, BlockPosition blockposition) { + IBlockData iblockdata = world.getType(blockposition); + + return iblockdata.getBlock().toLegacyData(iblockdata) & 3; + } + + protected ItemStack i(IBlockData iblockdata) { + return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockLeaves2.VARIANT, this.b(i)).set(BlockLeaves2.DECAYABLE, Boolean.valueOf((i & 4) == 0)).set(BlockLeaves2.CHECK_DECAY, Boolean.valueOf((i & 8) > 0)); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4; + + if (!((Boolean) iblockdata.get(BlockLeaves2.DECAYABLE)).booleanValue()) { + i |= 4; + } + + if (((Boolean) iblockdata.get(BlockLeaves2.CHECK_DECAY)).booleanValue()) { + i |= 8; + } + + return i; + } + + public BlockWood.EnumLogVariant b(int i) { + return BlockWood.EnumLogVariant.a((i & 3) + 4); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLeaves2.VARIANT, BlockLeaves2.CHECK_DECAY, BlockLeaves2.DECAYABLE}); + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) { + entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]); + a(world, blockposition, new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4)); + } else { + super.a(world, entityhuman, blockposition, iblockdata, tileentity); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java new file mode 100644 index 0000000..b50dc9a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockLightStone extends Block { + + public BlockLightStone(Material material) { + super(material); + this.a(CreativeModeTab.b); + } + + public int getDropCount(int i, Random random) { + return MathHelper.clamp(this.a(random) + random.nextInt(i + 1), 1, 4); + } + + public int a(Random random) { + return 2 + random.nextInt(3); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.GLOWSTONE_DUST; + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.d; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java new file mode 100644 index 0000000..5290b36 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java @@ -0,0 +1,162 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockLog1 extends BlockLogAbstract { + + public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() { + public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) { + return blockwood_enumlogvariant.a() < 4; + } + + public boolean apply(Object object) { + return this.a((BlockWood.EnumLogVariant) object); + } + }); + + public BlockLog1() { + this.j(this.blockStateList.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Y)); + } + + public MaterialMapColor g(IBlockData iblockdata) { + BlockWood.EnumLogVariant blockwood_enumlogvariant = (BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT); + + switch (BlockLog1.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog1.AXIS)).ordinal()]) { + case 1: + case 2: + case 3: + default: + switch (BlockLog1.SyntheticClass_1.a[blockwood_enumlogvariant.ordinal()]) { + case 1: + default: + return BlockWood.EnumLogVariant.SPRUCE.c(); + + case 2: + return BlockWood.EnumLogVariant.DARK_OAK.c(); + + case 3: + return MaterialMapColor.p; + + case 4: + return BlockWood.EnumLogVariant.SPRUCE.c(); + } + + case 4: + return blockwood_enumlogvariant.c(); + } + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.a((i & 3) % 4)); + + switch (i & 12) { + case 0: + iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Y); + break; + + case 4: + iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.X); + break; + + case 8: + iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Z); + break; + + default: + iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.NONE); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a(); + + switch (BlockLog1.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog1.AXIS)).ordinal()]) { + case 1: + i |= 4; + break; + + case 2: + i |= 8; + break; + + case 3: + i |= 12; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLog1.VARIANT, BlockLog1.AXIS}); + } + + protected ItemStack i(IBlockData iblockdata) { + return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a()); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a(); + } + + static class SyntheticClass_1 { + + static final int[] a; + static final int[] b = new int[BlockLogAbstract.EnumLogRotation.values().length]; + + static { + try { + BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.X.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Z.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.NONE.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Y.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + a = new int[BlockWood.EnumLogVariant.values().length]; + + try { + BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.OAK.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.SPRUCE.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + try { + BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.BIRCH.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror6) { + ; + } + + try { + BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.JUNGLE.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror7) { + ; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java new file mode 100644 index 0000000..0f9cabc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java @@ -0,0 +1,144 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockLog2 extends BlockLogAbstract { + + public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() { + public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) { + return blockwood_enumlogvariant.a() >= 4; + } + + public boolean apply(Object object) { + return this.a((BlockWood.EnumLogVariant) object); + } + }); + + public BlockLog2() { + this.j(this.blockStateList.getBlockData().set(BlockLog2.VARIANT, BlockWood.EnumLogVariant.ACACIA).set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Y)); + } + + public MaterialMapColor g(IBlockData iblockdata) { + BlockWood.EnumLogVariant blockwood_enumlogvariant = (BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT); + + switch (BlockLog2.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog2.AXIS)).ordinal()]) { + case 1: + case 2: + case 3: + default: + switch (BlockLog2.SyntheticClass_1.a[blockwood_enumlogvariant.ordinal()]) { + case 1: + default: + return MaterialMapColor.m; + + case 2: + return BlockWood.EnumLogVariant.DARK_OAK.c(); + } + + case 4: + return blockwood_enumlogvariant.c(); + } + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockLog2.VARIANT, BlockWood.EnumLogVariant.a((i & 3) + 4)); + + switch (i & 12) { + case 0: + iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Y); + break; + + case 4: + iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.X); + break; + + case 8: + iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Z); + break; + + default: + iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.NONE); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4; + + switch (BlockLog2.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog2.AXIS)).ordinal()]) { + case 1: + i |= 4; + break; + + case 2: + i |= 8; + break; + + case 3: + i |= 12; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLog2.VARIANT, BlockLog2.AXIS}); + } + + protected ItemStack i(IBlockData iblockdata) { + return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4; + } + + static class SyntheticClass_1 { + + static final int[] a; + static final int[] b = new int[BlockLogAbstract.EnumLogRotation.values().length]; + + static { + try { + BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.X.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Z.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.NONE.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Y.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + a = new int[BlockWood.EnumLogVariant.values().length]; + + try { + BlockLog2.SyntheticClass_1.a[BlockWood.EnumLogVariant.ACACIA.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + BlockLog2.SyntheticClass_1.a[BlockWood.EnumLogVariant.DARK_OAK.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java new file mode 100644 index 0000000..69a1289 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java @@ -0,0 +1,99 @@ +package net.minecraft.server; + +import java.util.Iterator; + +public abstract class BlockLogAbstract extends BlockRotatable { + + public static final BlockStateEnum AXIS = BlockStateEnum.of("axis", BlockLogAbstract.EnumLogRotation.class); + + public BlockLogAbstract() { + super(Material.WOOD); + this.a(CreativeModeTab.b); + this.c(2.0F); + this.a(BlockLogAbstract.f); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + byte b0 = 4; + int i = b0 + 1; + + if (world.areChunksLoadedBetween(blockposition.a(-i, -i, -i), blockposition.a(i, i, i))) { + Iterator iterator = BlockPosition.a(blockposition.a(-b0, -b0, -b0), blockposition.a(b0, b0, b0)).iterator(); + + while (iterator.hasNext()) { + BlockPosition blockposition1 = (BlockPosition) iterator.next(); + IBlockData iblockdata1 = world.getType(blockposition1); + + if (iblockdata1.getBlock().getMaterial() == Material.LEAVES && !((Boolean) iblockdata1.get(BlockLeaves.CHECK_DECAY)).booleanValue()) { + world.setTypeAndData(blockposition1, iblockdata1.set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(true)), 4); + } + } + + } + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockLogAbstract.AXIS, BlockLogAbstract.EnumLogRotation.a(enumdirection.k())); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.EnumAxis.values().length]; + + static { + try { + BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + } + } + + public static enum EnumLogRotation implements INamable { + + X("x"), Y("y"), Z("z"), NONE("none"); + + private final String e; + + private EnumLogRotation(String s) { + this.e = s; + } + + public String toString() { + return this.e; + } + + public static BlockLogAbstract.EnumLogRotation a(EnumDirection.EnumAxis enumdirection_enumaxis) { + switch (BlockLogAbstract.SyntheticClass_1.a[enumdirection_enumaxis.ordinal()]) { + case 1: + return BlockLogAbstract.EnumLogRotation.X; + + case 2: + return BlockLogAbstract.EnumLogRotation.Y; + + case 3: + return BlockLogAbstract.EnumLogRotation.Z; + + default: + return BlockLogAbstract.EnumLogRotation.NONE; + } + } + + public String getName() { + return this.e; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java new file mode 100644 index 0000000..126a4d2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java @@ -0,0 +1,127 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockLongGrass extends BlockPlant implements IBlockFragilePlantElement { + + public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockLongGrass.EnumTallGrassType.class); + + protected BlockLongGrass() { + super(Material.REPLACEABLE_PLANT); + this.j(this.blockStateList.getBlockData().set(BlockLongGrass.TYPE, BlockLongGrass.EnumTallGrassType.DEAD_BUSH)); + float f = 0.4F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); + } + + public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) { + return this.c(world.getType(blockposition.down()).getBlock()); + } + + public boolean a(World world, BlockPosition blockposition) { + return true; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return random.nextInt(8) == 0 ? Items.WHEAT_SEEDS : null; + } + + public int getDropCount(int i, Random random) { + return 1 + random.nextInt(i * 2 + 1); + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) { + entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]); + a(world, blockposition, new ItemStack(Blocks.TALLGRASS, 1, ((BlockLongGrass.EnumTallGrassType) iblockdata.get(BlockLongGrass.TYPE)).a())); + } else { + super.a(world, entityhuman, blockposition, iblockdata, tileentity); + } + + } + + public int getDropData(World world, BlockPosition blockposition) { + IBlockData iblockdata = world.getType(blockposition); + + return iblockdata.getBlock().toLegacyData(iblockdata); + } + + public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) { + return iblockdata.get(BlockLongGrass.TYPE) != BlockLongGrass.EnumTallGrassType.DEAD_BUSH; + } + + public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) { + return true; + } + + public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = BlockTallPlant.EnumTallFlowerVariants.GRASS; + + if (iblockdata.get(BlockLongGrass.TYPE) == BlockLongGrass.EnumTallGrassType.FERN) { + blocktallplant_enumtallflowervariants = BlockTallPlant.EnumTallFlowerVariants.FERN; + } + + if (Blocks.DOUBLE_PLANT.canPlace(world, blockposition)) { + Blocks.DOUBLE_PLANT.a(world, blockposition, blocktallplant_enumtallflowervariants, 2); + } + + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockLongGrass.TYPE, BlockLongGrass.EnumTallGrassType.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockLongGrass.EnumTallGrassType) iblockdata.get(BlockLongGrass.TYPE)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockLongGrass.TYPE}); + } + + public static enum EnumTallGrassType implements INamable { + + DEAD_BUSH(0, "dead_bush"), GRASS(1, "tall_grass"), FERN(2, "fern"); + + private static final BlockLongGrass.EnumTallGrassType[] d = new BlockLongGrass.EnumTallGrassType[values().length]; + private final int e; + private final String f; + + private EnumTallGrassType(int i, String s) { + this.e = i; + this.f = s; + } + + public int a() { + return this.e; + } + + public String toString() { + return this.f; + } + + public static BlockLongGrass.EnumTallGrassType a(int i) { + if (i < 0 || i >= BlockLongGrass.EnumTallGrassType.d.length) { + i = 0; + } + + return BlockLongGrass.EnumTallGrassType.d[i]; + } + + public String getName() { + return this.f; + } + + static { + BlockLongGrass.EnumTallGrassType[] ablocklonggrass_enumtallgrasstype = values(); + int i = ablocklonggrass_enumtallgrasstype.length; + + for (int j = 0; j < i; ++j) { + BlockLongGrass.EnumTallGrassType blocklonggrass_enumtallgrasstype = ablocklonggrass_enumtallgrasstype[j]; + + BlockLongGrass.EnumTallGrassType.d[blocklonggrass_enumtallgrasstype.a()] = blocklonggrass_enumtallgrasstype; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java new file mode 100644 index 0000000..9365fe0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockMelon extends Block { + + protected BlockMelon() { + super(Material.PUMPKIN, MaterialMapColor.u); + this.a(CreativeModeTab.b); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.MELON; + } + + public int a(Random random) { + return 3 + random.nextInt(5); + } + + public int getDropCount(int i, Random random) { + return Math.min(9, this.a(random) + random.nextInt(1 + i)); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java new file mode 100644 index 0000000..f56f656 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +public class BlockMinecartTrack extends BlockMinecartTrackAbstract { + + public static final BlockStateEnum SHAPE = BlockStateEnum.of("shape", BlockMinecartTrackAbstract.EnumTrackPosition.class); + + protected BlockMinecartTrack() { + super(false); + this.j(this.blockStateList.getBlockData().set(BlockMinecartTrack.SHAPE, BlockMinecartTrackAbstract.EnumTrackPosition.NORTH_SOUTH)); + } + + protected void b(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + if (block.isPowerSource() && (new BlockMinecartTrackAbstract.MinecartTrackLogic(world, blockposition, iblockdata)).a() == 3) { + this.a(world, blockposition, iblockdata, false); + } + + } + + public IBlockState n() { + return BlockMinecartTrack.SHAPE; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockMinecartTrack.SHAPE, BlockMinecartTrackAbstract.EnumTrackPosition.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockMinecartTrackAbstract.EnumTrackPosition) iblockdata.get(BlockMinecartTrack.SHAPE)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockMinecartTrack.SHAPE}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java new file mode 100644 index 0000000..4ddcbd6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java @@ -0,0 +1,13 @@ +package net.minecraft.server; + +public class BlockNetherbrick extends Block { + + public BlockNetherbrick() { + super(Material.STONE); + this.a(CreativeModeTab.b); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.K; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java new file mode 100644 index 0000000..e6b7546 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java @@ -0,0 +1,86 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; + +public class BlockNote extends BlockContainer { + + private static final List a = Lists.newArrayList(new String[] { "harp", "bd", "snare", "hat", "bassattack"}); + + public BlockNote() { + super(Material.WOOD); + this.a(CreativeModeTab.d); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + boolean flag = world.isBlockIndirectlyPowered(blockposition); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityNote) { + TileEntityNote tileentitynote = (TileEntityNote) tileentity; + + if (tileentitynote.f != flag) { + if (flag) { + tileentitynote.play(world, blockposition); + } + + tileentitynote.f = flag; + } + } + + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityNote) { + TileEntityNote tileentitynote = (TileEntityNote) tileentity; + + tileentitynote.b(); + tileentitynote.play(world, blockposition); + entityhuman.b(StatisticList.S); + } + + return true; + } + } + + public void attack(World world, BlockPosition blockposition, EntityHuman entityhuman) { + if (!world.isClientSide) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityNote) { + ((TileEntityNote) tileentity).play(world, blockposition); + entityhuman.b(StatisticList.R); + } + + } + } + + public TileEntity a(World world, int i) { + return new TileEntityNote(); + } + + private String b(int i) { + if (i < 0 || i >= BlockNote.a.size()) { + i = 0; + } + + return (String) BlockNote.a.get(i); + } + + public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) { + float f = (float) Math.pow(2.0D, (double) (j - 12) / 12.0D); + + world.makeSound((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, "note." + this.b(i), 3.0F, f); + world.addParticle(EnumParticle.NOTE, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.2D, (double) blockposition.getZ() + 0.5D, (double) j / 24.0D, 0.0D, 0.0D, new int[0]); + return true; + } + + public int b() { + return 3; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java new file mode 100644 index 0000000..85ed566 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockObsidian extends Block { + + public BlockObsidian() { + super(Material.STONE); + this.a(CreativeModeTab.b); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.OBSIDIAN); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.E; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java new file mode 100644 index 0000000..38f0184 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockPackedIce extends Block { + + public BlockPackedIce() { + super(Material.SNOW_LAYER); + this.frictionFactor = 0.98F; + this.a(CreativeModeTab.b); + } + + public int a(Random random) { + return 0; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java new file mode 100644 index 0000000..371d104 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java @@ -0,0 +1,249 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class BlockPistonExtension extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing"); + public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockPistonExtension.EnumPistonType.class); + public static final BlockStateBoolean SHORT = BlockStateBoolean.of("short"); + + public BlockPistonExtension() { + super(Material.PISTON); + this.j(this.blockStateList.getBlockData().set(BlockPistonExtension.FACING, EnumDirection.NORTH).set(BlockPistonExtension.TYPE, BlockPistonExtension.EnumPistonType.DEFAULT).set(BlockPistonExtension.SHORT, Boolean.valueOf(false))); + this.a(BlockPistonExtension.i); + this.c(0.5F); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) { + if (entityhuman.abilities.canInstantlyBuild) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING); + + if (enumdirection != null) { + BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite()); + Block block = world.getType(blockposition1).getBlock(); + + if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON) { + world.setAir(blockposition1); + } + } + } + + super.a(world, blockposition, iblockdata, entityhuman); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.remove(world, blockposition, iblockdata); + EnumDirection enumdirection = ((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).opposite(); + + blockposition = blockposition.shift(enumdirection); + IBlockData iblockdata1 = world.getType(blockposition); + + if ((iblockdata1.getBlock() == Blocks.PISTON || iblockdata1.getBlock() == Blocks.STICKY_PISTON) && ((Boolean) iblockdata1.get(BlockPiston.EXTENDED)).booleanValue()) { + iblockdata1.getBlock().b(world, blockposition, iblockdata1, 0); + world.setAir(blockposition); + } + + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return false; + } + + public boolean canPlace(World world, BlockPosition blockposition, EnumDirection enumdirection) { + return false; + } + + public int a(Random random) { + return 0; + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + this.d(iblockdata); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.e(iblockdata); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + private void e(IBlockData iblockdata) { + float f = 0.25F; + float f1 = 0.375F; + float f2 = 0.625F; + float f3 = 0.25F; + float f4 = 0.75F; + + switch (BlockPistonExtension.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).ordinal()]) { + case 1: + this.a(0.375F, 0.25F, 0.375F, 0.625F, 1.0F, 0.625F); + break; + + case 2: + this.a(0.375F, 0.0F, 0.375F, 0.625F, 0.75F, 0.625F); + break; + + case 3: + this.a(0.25F, 0.375F, 0.25F, 0.75F, 0.625F, 1.0F); + break; + + case 4: + this.a(0.25F, 0.375F, 0.0F, 0.75F, 0.625F, 0.75F); + break; + + case 5: + this.a(0.375F, 0.25F, 0.25F, 0.625F, 0.75F, 1.0F); + break; + + case 6: + this.a(0.0F, 0.375F, 0.25F, 0.75F, 0.625F, 0.75F); + } + + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + this.d(iblockaccess.getType(blockposition)); + } + + public void d(IBlockData iblockdata) { + float f = 0.25F; + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING); + + if (enumdirection != null) { + switch (BlockPistonExtension.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F); + break; + + case 2: + this.a(0.0F, 0.75F, 0.0F, 1.0F, 1.0F, 1.0F); + break; + + case 3: + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F); + break; + + case 4: + this.a(0.0F, 0.0F, 0.75F, 1.0F, 1.0F, 1.0F); + break; + + case 5: + this.a(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F); + break; + + case 6: + this.a(0.75F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + } + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING); + BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite()); + IBlockData iblockdata1 = world.getType(blockposition1); + + if (iblockdata1.getBlock() != Blocks.PISTON && iblockdata1.getBlock() != Blocks.STICKY_PISTON) { + world.setAir(blockposition); + } else { + iblockdata1.getBlock().doPhysics(world, blockposition1, iblockdata1, block); + } + + } + + public static EnumDirection b(int i) { + int j = i & 7; + + return j > 5 ? null : EnumDirection.fromType1(j); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockPistonExtension.FACING, b(i)).set(BlockPistonExtension.TYPE, (i & 8) > 0 ? BlockPistonExtension.EnumPistonType.STICKY : BlockPistonExtension.EnumPistonType.DEFAULT); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).a(); + + if (iblockdata.get(BlockPistonExtension.TYPE) == BlockPistonExtension.EnumPistonType.STICKY) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockPistonExtension.FACING, BlockPistonExtension.TYPE, BlockPistonExtension.SHORT}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.DOWN.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.UP.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 5; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + BlockPistonExtension.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 6; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + } + } + + public static enum EnumPistonType implements INamable { + + DEFAULT("normal"), STICKY("sticky"); + + private final String c; + + private EnumPistonType(String s) { + this.c = s; + } + + public String toString() { + return this.c; + } + + public String getName() { + return this.c; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java new file mode 100644 index 0000000..3b33343 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java @@ -0,0 +1,210 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockPistonMoving extends BlockContainer { + + public static final BlockStateDirection FACING = BlockPistonExtension.FACING; + public static final BlockStateEnum TYPE = BlockPistonExtension.TYPE; + + public BlockPistonMoving() { + super(Material.PISTON); + this.j(this.blockStateList.getBlockData().set(BlockPistonMoving.FACING, EnumDirection.NORTH).set(BlockPistonMoving.TYPE, BlockPistonExtension.EnumPistonType.DEFAULT)); + this.c(-1.0F); + } + + public TileEntity a(World world, int i) { + return null; + } + + public static TileEntity a(IBlockData iblockdata, EnumDirection enumdirection, boolean flag, boolean flag1) { + return new TileEntityPiston(iblockdata, enumdirection, flag, flag1); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityPiston) { + ((TileEntityPiston) tileentity).h(); + } else { + super.remove(world, blockposition, iblockdata); + } + + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return false; + } + + public boolean canPlace(World world, BlockPosition blockposition, EnumDirection enumdirection) { + return false; + } + + public void postBreak(World world, BlockPosition blockposition, IBlockData iblockdata) { + BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockPistonMoving.FACING)).opposite()); + IBlockData iblockdata1 = world.getType(blockposition1); + + if (iblockdata1.getBlock() instanceof BlockPiston && ((Boolean) iblockdata1.get(BlockPiston.EXTENDED)).booleanValue()) { + world.setAir(blockposition1); + } + + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (!world.isClientSide && world.getTileEntity(blockposition) == null) { + world.setAir(blockposition); + return true; + } else { + return false; + } + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return null; + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { + if (!world.isClientSide) { + TileEntityPiston tileentitypiston = this.e((IBlockAccess) world, blockposition); + + if (tileentitypiston != null) { + IBlockData iblockdata1 = tileentitypiston.b(); + + iblockdata1.getBlock().b(world, blockposition, iblockdata1, 0); + } + } + } + + public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) { + return null; + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + if (!world.isClientSide) { + world.getTileEntity(blockposition); + } + + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + TileEntityPiston tileentitypiston = this.e((IBlockAccess) world, blockposition); + + if (tileentitypiston == null) { + return null; + } else { + float f = tileentitypiston.a(0.0F); + + if (tileentitypiston.d()) { + f = 1.0F - f; + } + + return this.a(world, blockposition, tileentitypiston.b(), f, tileentitypiston.e()); + } + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + TileEntityPiston tileentitypiston = this.e(iblockaccess, blockposition); + + if (tileentitypiston != null) { + IBlockData iblockdata = tileentitypiston.b(); + Block block = iblockdata.getBlock(); + + if (block == this || block.getMaterial() == Material.AIR) { + return; + } + + float f = tileentitypiston.a(0.0F); + + if (tileentitypiston.d()) { + f = 1.0F - f; + } + + block.updateShape(iblockaccess, blockposition); + if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON) { + f = 0.0F; + } + + EnumDirection enumdirection = tileentitypiston.e(); + + this.minX = block.B() - (double) ((float) enumdirection.getAdjacentX() * f); + this.minY = block.D() - (double) ((float) enumdirection.getAdjacentY() * f); + this.minZ = block.F() - (double) ((float) enumdirection.getAdjacentZ() * f); + this.maxX = block.C() - (double) ((float) enumdirection.getAdjacentX() * f); + this.maxY = block.E() - (double) ((float) enumdirection.getAdjacentY() * f); + this.maxZ = block.G() - (double) ((float) enumdirection.getAdjacentZ() * f); + } + + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata, float f, EnumDirection enumdirection) { + if (iblockdata.getBlock() != this && iblockdata.getBlock().getMaterial() != Material.AIR) { + AxisAlignedBB axisalignedbb = iblockdata.getBlock().a(world, blockposition, iblockdata); + + if (axisalignedbb == null) { + return null; + } else { + double d0 = axisalignedbb.a; + double d1 = axisalignedbb.b; + double d2 = axisalignedbb.c; + double d3 = axisalignedbb.d; + double d4 = axisalignedbb.e; + double d5 = axisalignedbb.f; + + if (enumdirection.getAdjacentX() < 0) { + d0 -= (double) ((float) enumdirection.getAdjacentX() * f); + } else { + d3 -= (double) ((float) enumdirection.getAdjacentX() * f); + } + + if (enumdirection.getAdjacentY() < 0) { + d1 -= (double) ((float) enumdirection.getAdjacentY() * f); + } else { + d4 -= (double) ((float) enumdirection.getAdjacentY() * f); + } + + if (enumdirection.getAdjacentZ() < 0) { + d2 -= (double) ((float) enumdirection.getAdjacentZ() * f); + } else { + d5 -= (double) ((float) enumdirection.getAdjacentZ() * f); + } + + return new AxisAlignedBB(d0, d1, d2, d3, d4, d5); + } + } else { + return null; + } + } + + private TileEntityPiston e(IBlockAccess iblockaccess, BlockPosition blockposition) { + TileEntity tileentity = iblockaccess.getTileEntity(blockposition); + + return tileentity instanceof TileEntityPiston ? (TileEntityPiston) tileentity : null; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockPistonMoving.FACING, BlockPistonExtension.b(i)).set(BlockPistonMoving.TYPE, (i & 8) > 0 ? BlockPistonExtension.EnumPistonType.STICKY : BlockPistonExtension.EnumPistonType.DEFAULT); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockPistonMoving.FACING)).a(); + + if (iblockdata.get(BlockPistonMoving.TYPE) == BlockPistonExtension.EnumPistonType.STICKY) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockPistonMoving.FACING, BlockPistonMoving.TYPE}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java similarity index 94% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java index 8b84846..6697837 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java @@ -42,7 +42,7 @@ public class BlockPlant extends Block { } protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { - if (!this.f(world, blockposition, iblockdata)) { + if (!this.f(world, blockposition, iblockdata) && ((WorldServer) world).hasPhysicsEvent) { // PandaSpigot - hasPhysicsEvent // CraftBukkit Start org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); BlockPhysicsEvent event = new BlockPhysicsEvent(block, block.getTypeId()); diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java new file mode 100644 index 0000000..2007ca1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +public class BlockPotatoes extends BlockCrops { + + public BlockPotatoes() {} + + protected Item l() { + return Items.POTATO; + } + + protected Item n() { + return Items.POTATO; + } + + public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { + super.dropNaturally(world, blockposition, iblockdata, f, i); + if (!world.isClientSide) { + if (((Integer) iblockdata.get(BlockPotatoes.AGE)).intValue() >= 7 && world.random.nextInt(50) == 0) { + a(world, blockposition, new ItemStack(Items.POISONOUS_POTATO)); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java new file mode 100644 index 0000000..798ae26 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class BlockPowered extends Block { + + public BlockPowered(Material material, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + } + + public boolean isPowerSource() { + return true; + } + + public int a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata, EnumDirection enumdirection) { + return 15; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java new file mode 100644 index 0000000..28af027 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockPredicate implements Predicate { + + private final Block a; + + private BlockPredicate(Block block) { + this.a = block; + } + + public static BlockPredicate a(Block block) { + return new BlockPredicate(block); + } + + public boolean a(IBlockData iblockdata) { + return iblockdata != null && iblockdata.getBlock() == this.a; + } + + public boolean apply(IBlockData object) { + return this.a(object); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java new file mode 100644 index 0000000..369f123 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java @@ -0,0 +1,91 @@ +package net.minecraft.server; + +public class BlockPrismarine extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockPrismarine.EnumPrismarineVariant.class); + public static final int b = BlockPrismarine.EnumPrismarineVariant.ROUGH.a(); + public static final int N = BlockPrismarine.EnumPrismarineVariant.BRICKS.a(); + public static final int O = BlockPrismarine.EnumPrismarineVariant.DARK.a(); + + public BlockPrismarine() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockPrismarine.VARIANT, BlockPrismarine.EnumPrismarineVariant.ROUGH)); + this.a(CreativeModeTab.b); + } + + public String getName() { + return LocaleI18n.get(this.a() + "." + BlockPrismarine.EnumPrismarineVariant.ROUGH.c() + ".name"); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return iblockdata.get(BlockPrismarine.VARIANT) == BlockPrismarine.EnumPrismarineVariant.ROUGH ? MaterialMapColor.y : MaterialMapColor.G; + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockPrismarine.EnumPrismarineVariant) iblockdata.get(BlockPrismarine.VARIANT)).a(); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockPrismarine.EnumPrismarineVariant) iblockdata.get(BlockPrismarine.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockPrismarine.VARIANT}); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockPrismarine.VARIANT, BlockPrismarine.EnumPrismarineVariant.a(i)); + } + + public static enum EnumPrismarineVariant implements INamable { + + ROUGH(0, "prismarine", "rough"), BRICKS(1, "prismarine_bricks", "bricks"), DARK(2, "dark_prismarine", "dark"); + + private static final BlockPrismarine.EnumPrismarineVariant[] d = new BlockPrismarine.EnumPrismarineVariant[values().length]; + private final int e; + private final String f; + private final String g; + + private EnumPrismarineVariant(int i, String s, String s1) { + this.e = i; + this.f = s; + this.g = s1; + } + + public int a() { + return this.e; + } + + public String toString() { + return this.f; + } + + public static BlockPrismarine.EnumPrismarineVariant a(int i) { + if (i < 0 || i >= BlockPrismarine.EnumPrismarineVariant.d.length) { + i = 0; + } + + return BlockPrismarine.EnumPrismarineVariant.d[i]; + } + + public String getName() { + return this.f; + } + + public String c() { + return this.g; + } + + static { + BlockPrismarine.EnumPrismarineVariant[] ablockprismarine_enumprismarinevariant = values(); + int i = ablockprismarine_enumprismarinevariant.length; + + for (int j = 0; j < i; ++j) { + BlockPrismarine.EnumPrismarineVariant blockprismarine_enumprismarinevariant = ablockprismarine_enumprismarinevariant[j]; + + BlockPrismarine.EnumPrismarineVariant.d[blockprismarine_enumprismarinevariant.a()] = blockprismarine_enumprismarinevariant; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java new file mode 100644 index 0000000..5c39ec2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java @@ -0,0 +1,132 @@ +package net.minecraft.server; + +public class BlockQuartz extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockQuartz.EnumQuartzVariant.class); + + public BlockQuartz() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.DEFAULT)); + this.a(CreativeModeTab.b); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + if (i == BlockQuartz.EnumQuartzVariant.LINES_Y.a()) { + switch (BlockQuartz.SyntheticClass_1.a[enumdirection.k().ordinal()]) { + case 1: + return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_Z); + + case 2: + return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_X); + + case 3: + default: + return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_Y); + } + } else { + return i == BlockQuartz.EnumQuartzVariant.CHISELED.a() ? this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.CHISELED) : this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.DEFAULT); + } + } + + public int getDropData(IBlockData iblockdata) { + BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = (BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT); + + return blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_X && blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_Z ? blockquartz_enumquartzvariant.a() : BlockQuartz.EnumQuartzVariant.LINES_Y.a(); + } + + protected ItemStack i(IBlockData iblockdata) { + BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = (BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT); + + return blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_X && blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_Z ? super.i(iblockdata) : new ItemStack(Item.getItemOf(this), 1, BlockQuartz.EnumQuartzVariant.LINES_Y.a()); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.p; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockQuartz.VARIANT}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.EnumAxis.values().length]; + + static { + try { + BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + } + } + + public static enum EnumQuartzVariant implements INamable { + + DEFAULT(0, "default", "default"), CHISELED(1, "chiseled", "chiseled"), LINES_Y(2, "lines_y", "lines"), LINES_X(3, "lines_x", "lines"), LINES_Z(4, "lines_z", "lines"); + + private static final BlockQuartz.EnumQuartzVariant[] f = new BlockQuartz.EnumQuartzVariant[values().length]; + private final int g; + private final String h; + private final String i; + + private EnumQuartzVariant(int i, String s, String s1) { + this.g = i; + this.h = s; + this.i = s1; + } + + public int a() { + return this.g; + } + + public String toString() { + return this.i; + } + + public static BlockQuartz.EnumQuartzVariant a(int i) { + if (i < 0 || i >= BlockQuartz.EnumQuartzVariant.f.length) { + i = 0; + } + + return BlockQuartz.EnumQuartzVariant.f[i]; + } + + public String getName() { + return this.h; + } + + static { + BlockQuartz.EnumQuartzVariant[] ablockquartz_enumquartzvariant = values(); + int i = ablockquartz_enumquartzvariant.length; + + for (int j = 0; j < i; ++j) { + BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = ablockquartz_enumquartzvariant[j]; + + BlockQuartz.EnumQuartzVariant.f[blockquartz_enumquartzvariant.a()] = blockquartz_enumquartzvariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java new file mode 100644 index 0000000..0f4a18e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockRedFlowers extends BlockFlowers { + + public BlockRedFlowers() {} + + public BlockFlowers.EnumFlowerType l() { + return BlockFlowers.EnumFlowerType.RED; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java new file mode 100644 index 0000000..9f2d9c6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java @@ -0,0 +1,80 @@ +package net.minecraft.server; + +public class BlockRedSandstone extends Block { + + public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockRedSandstone.EnumRedSandstoneVariant.class); + + public BlockRedSandstone() { + super(Material.STONE, BlockSand.EnumSandVariant.RED_SAND.c()); + this.j(this.blockStateList.getBlockData().set(BlockRedSandstone.TYPE, BlockRedSandstone.EnumRedSandstoneVariant.DEFAULT)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockRedSandstone.EnumRedSandstoneVariant) iblockdata.get(BlockRedSandstone.TYPE)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockRedSandstone.TYPE, BlockRedSandstone.EnumRedSandstoneVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockRedSandstone.EnumRedSandstoneVariant) iblockdata.get(BlockRedSandstone.TYPE)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockRedSandstone.TYPE}); + } + + public static enum EnumRedSandstoneVariant implements INamable { + + DEFAULT(0, "red_sandstone", "default"), CHISELED(1, "chiseled_red_sandstone", "chiseled"), SMOOTH(2, "smooth_red_sandstone", "smooth"); + + private static final BlockRedSandstone.EnumRedSandstoneVariant[] d = new BlockRedSandstone.EnumRedSandstoneVariant[values().length]; + private final int e; + private final String f; + private final String g; + + private EnumRedSandstoneVariant(int i, String s, String s1) { + this.e = i; + this.f = s; + this.g = s1; + } + + public int a() { + return this.e; + } + + public String toString() { + return this.f; + } + + public static BlockRedSandstone.EnumRedSandstoneVariant a(int i) { + if (i < 0 || i >= BlockRedSandstone.EnumRedSandstoneVariant.d.length) { + i = 0; + } + + return BlockRedSandstone.EnumRedSandstoneVariant.d[i]; + } + + public String getName() { + return this.f; + } + + public String c() { + return this.g; + } + + static { + BlockRedSandstone.EnumRedSandstoneVariant[] ablockredsandstone_enumredsandstonevariant = values(); + int i = ablockredsandstone_enumredsandstonevariant.length; + + for (int j = 0; j < i; ++j) { + BlockRedSandstone.EnumRedSandstoneVariant blockredsandstone_enumredsandstonevariant = ablockredsandstone_enumredsandstonevariant[j]; + + BlockRedSandstone.EnumRedSandstoneVariant.d[blockredsandstone_enumredsandstonevariant.a()] = blockredsandstone_enumredsandstonevariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java new file mode 100644 index 0000000..71aaf47 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java @@ -0,0 +1,244 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.List; +import java.util.Random; + +public class BlockRedstoneComparator extends BlockDiodeAbstract implements IContainer { + + public static final BlockStateBoolean POWERED = BlockStateBoolean.of("powered"); + public static final BlockStateEnum MODE = BlockStateEnum.of("mode", BlockRedstoneComparator.EnumComparatorMode.class); + + public BlockRedstoneComparator(boolean flag) { + super(flag); + this.j(this.blockStateList.getBlockData().set(BlockRedstoneComparator.FACING, EnumDirection.NORTH).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)).set(BlockRedstoneComparator.MODE, BlockRedstoneComparator.EnumComparatorMode.COMPARE)); + this.isTileEntity = true; + } + + public String getName() { + return LocaleI18n.get("item.comparator.name"); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.COMPARATOR; + } + + protected int d(IBlockData iblockdata) { + return 2; + } + + protected IBlockData e(IBlockData iblockdata) { + Boolean obool = (Boolean) iblockdata.get(BlockRedstoneComparator.POWERED); + BlockRedstoneComparator.EnumComparatorMode blockredstonecomparator_enumcomparatormode = (BlockRedstoneComparator.EnumComparatorMode) iblockdata.get(BlockRedstoneComparator.MODE); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING); + + return Blocks.POWERED_COMPARATOR.getBlockData().set(BlockRedstoneComparator.FACING, enumdirection).set(BlockRedstoneComparator.POWERED, obool).set(BlockRedstoneComparator.MODE, blockredstonecomparator_enumcomparatormode); + } + + protected IBlockData k(IBlockData iblockdata) { + Boolean obool = (Boolean) iblockdata.get(BlockRedstoneComparator.POWERED); + BlockRedstoneComparator.EnumComparatorMode blockredstonecomparator_enumcomparatormode = (BlockRedstoneComparator.EnumComparatorMode) iblockdata.get(BlockRedstoneComparator.MODE); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING); + + return Blocks.UNPOWERED_COMPARATOR.getBlockData().set(BlockRedstoneComparator.FACING, enumdirection).set(BlockRedstoneComparator.POWERED, obool).set(BlockRedstoneComparator.MODE, blockredstonecomparator_enumcomparatormode); + } + + protected boolean l(IBlockData iblockdata) { + return this.N || ((Boolean) iblockdata.get(BlockRedstoneComparator.POWERED)).booleanValue(); + } + + protected int a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) { + TileEntity tileentity = iblockaccess.getTileEntity(blockposition); + + return tileentity instanceof TileEntityComparator ? ((TileEntityComparator) tileentity).b() : 0; + } + + private int j(World world, BlockPosition blockposition, IBlockData iblockdata) { + return iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT ? Math.max(this.f(world, blockposition, iblockdata) - this.c(world, blockposition, iblockdata), 0) : this.f(world, blockposition, iblockdata); + } + + protected boolean e(World world, BlockPosition blockposition, IBlockData iblockdata) { + int i = this.f(world, blockposition, iblockdata); + + if (i >= 15) { + return true; + } else if (i == 0) { + return false; + } else { + int j = this.c(world, blockposition, iblockdata); + + return j == 0 ? true : i >= j; + } + } + + protected int f(World world, BlockPosition blockposition, IBlockData iblockdata) { + int i = super.f(world, blockposition, iblockdata); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING); + BlockPosition blockposition1 = blockposition.shift(enumdirection); + Block block = world.getType(blockposition1).getBlock(); + + if (block.isComplexRedstone()) { + i = block.l(world, blockposition1); + } else if (i < 15 && block.isOccluding()) { + blockposition1 = blockposition1.shift(enumdirection); + block = world.getType(blockposition1).getBlock(); + if (block.isComplexRedstone()) { + i = block.l(world, blockposition1); + } else if (block.getMaterial() == Material.AIR) { + EntityItemFrame entityitemframe = this.a(world, enumdirection, blockposition1); + + if (entityitemframe != null) { + i = entityitemframe.q(); + } + } + } + + return i; + } + + private EntityItemFrame a(World world, final EnumDirection enumdirection, BlockPosition blockposition) { + List list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), new Predicate() { + public boolean a(Entity entity) { + return entity != null && entity.getDirection() == enumdirection; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + + return list.size() == 1 ? (EntityItemFrame) list.get(0) : null; + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (!entityhuman.abilities.mayBuild) { + return false; + } else { + iblockdata = iblockdata.a(BlockRedstoneComparator.MODE); + world.makeSound((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, "random.click", 0.3F, iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT ? 0.55F : 0.5F); + world.setTypeAndData(blockposition, iblockdata, 2); + this.k(world, blockposition, iblockdata); + return true; + } + } + + protected void g(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.a(blockposition, (Block) this)) { + int i = this.j(world, blockposition, iblockdata); + TileEntity tileentity = world.getTileEntity(blockposition); + int j = tileentity instanceof TileEntityComparator ? ((TileEntityComparator) tileentity).b() : 0; + + if (i != j || this.l(iblockdata) != this.e(world, blockposition, iblockdata)) { + if (this.i(world, blockposition, iblockdata)) { + world.a(blockposition, this, 2, -1); + } else { + world.a(blockposition, this, 2, 0); + } + } + + } + } + + private void k(World world, BlockPosition blockposition, IBlockData iblockdata) { + int i = this.j(world, blockposition, iblockdata); + TileEntity tileentity = world.getTileEntity(blockposition); + int j = 0; + + if (tileentity instanceof TileEntityComparator) { + TileEntityComparator tileentitycomparator = (TileEntityComparator) tileentity; + + j = tileentitycomparator.b(); + tileentitycomparator.a(i); + } + + if (j != i || iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.COMPARE) { + boolean flag = this.e(world, blockposition, iblockdata); + boolean flag1 = this.l(iblockdata); + + if (flag1 && !flag) { + world.setTypeAndData(blockposition, iblockdata.set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)), 2); + } else if (!flag1 && flag) { + world.setTypeAndData(blockposition, iblockdata.set(BlockRedstoneComparator.POWERED, Boolean.valueOf(true)), 2); + } + + this.h(world, blockposition, iblockdata); + } + + } + + public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) { + if (this.N) { + world.setTypeAndData(blockposition, this.k(iblockdata).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(true)), 4); + } + + this.k(world, blockposition, iblockdata); + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.onPlace(world, blockposition, iblockdata); + world.setTileEntity(blockposition, this.a(world, 0)); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.remove(world, blockposition, iblockdata); + world.t(blockposition); + this.h(world, blockposition, iblockdata); + } + + public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) { + super.a(world, blockposition, iblockdata, i, j); + TileEntity tileentity = world.getTileEntity(blockposition); + + return tileentity == null ? false : tileentity.c(i, j); + } + + public TileEntity a(World world, int i) { + return new TileEntityComparator(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockRedstoneComparator.FACING, EnumDirection.fromType2(i)).set(BlockRedstoneComparator.POWERED, Boolean.valueOf((i & 8) > 0)).set(BlockRedstoneComparator.MODE, (i & 4) > 0 ? BlockRedstoneComparator.EnumComparatorMode.SUBTRACT : BlockRedstoneComparator.EnumComparatorMode.COMPARE); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING)).b(); + + if (((Boolean) iblockdata.get(BlockRedstoneComparator.POWERED)).booleanValue()) { + i |= 8; + } + + if (iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT) { + i |= 4; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockRedstoneComparator.FACING, BlockRedstoneComparator.MODE, BlockRedstoneComparator.POWERED}); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + return this.getBlockData().set(BlockRedstoneComparator.FACING, entityliving.getDirection().opposite()).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)).set(BlockRedstoneComparator.MODE, BlockRedstoneComparator.EnumComparatorMode.COMPARE); + } + + public static enum EnumComparatorMode implements INamable { + + COMPARE("compare"), SUBTRACT("subtract"); + + private final String c; + + private EnumComparatorMode(String s) { + this.c = s; + } + + public String toString() { + return this.c; + } + + public String getName() { + return this.c; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java new file mode 100644 index 0000000..29a2428 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockRepeater extends BlockDiodeAbstract { + + public static final BlockStateBoolean LOCKED = BlockStateBoolean.of("locked"); + public static final BlockStateInteger DELAY = BlockStateInteger.of("delay", 1, 4); + + protected BlockRepeater(boolean flag) { + super(flag); + this.j(this.blockStateList.getBlockData().set(BlockRepeater.FACING, EnumDirection.NORTH).set(BlockRepeater.DELAY, Integer.valueOf(1)).set(BlockRepeater.LOCKED, Boolean.valueOf(false))); + } + + public String getName() { + return LocaleI18n.get("item.diode.name"); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + return iblockdata.set(BlockRepeater.LOCKED, Boolean.valueOf(this.b(iblockaccess, blockposition, iblockdata))); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (!entityhuman.abilities.mayBuild) { + return false; + } else { + world.setTypeAndData(blockposition, iblockdata.a(BlockRepeater.DELAY), 3); + return true; + } + } + + protected int d(IBlockData iblockdata) { + return ((Integer) iblockdata.get(BlockRepeater.DELAY)).intValue() * 2; + } + + protected IBlockData e(IBlockData iblockdata) { + Integer integer = (Integer) iblockdata.get(BlockRepeater.DELAY); + Boolean obool = (Boolean) iblockdata.get(BlockRepeater.LOCKED); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRepeater.FACING); + + return Blocks.POWERED_REPEATER.getBlockData().set(BlockRepeater.FACING, enumdirection).set(BlockRepeater.DELAY, integer).set(BlockRepeater.LOCKED, obool); + } + + protected IBlockData k(IBlockData iblockdata) { + Integer integer = (Integer) iblockdata.get(BlockRepeater.DELAY); + Boolean obool = (Boolean) iblockdata.get(BlockRepeater.LOCKED); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRepeater.FACING); + + return Blocks.UNPOWERED_REPEATER.getBlockData().set(BlockRepeater.FACING, enumdirection).set(BlockRepeater.DELAY, integer).set(BlockRepeater.LOCKED, obool); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.REPEATER; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) { + return this.c(iblockaccess, blockposition, iblockdata) > 0; + } + + protected boolean c(Block block) { + return d(block); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.remove(world, blockposition, iblockdata); + this.h(world, blockposition, iblockdata); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockRepeater.FACING, EnumDirection.fromType2(i)).set(BlockRepeater.LOCKED, Boolean.valueOf(false)).set(BlockRepeater.DELAY, Integer.valueOf(1 + (i >> 2))); + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((EnumDirection) iblockdata.get(BlockRepeater.FACING)).b(); + + i |= ((Integer) iblockdata.get(BlockRepeater.DELAY)).intValue() - 1 << 2; + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockRepeater.FACING, BlockRepeater.DELAY, BlockRepeater.LOCKED}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java new file mode 100644 index 0000000..186eb0a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public abstract class BlockRotatable extends Block { + + public static final BlockStateEnum AXIS = BlockStateEnum.of("axis", EnumDirection.EnumAxis.class); + + protected BlockRotatable(Material material) { + super(material, material.r()); + } + + protected BlockRotatable(Material material, MaterialMapColor materialmapcolor) { + super(material, materialmapcolor); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java new file mode 100644 index 0000000..567c3be --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java @@ -0,0 +1,88 @@ +package net.minecraft.server; + +public class BlockSand extends BlockFalling { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockSand.EnumSandVariant.class); + + public BlockSand() { + this.j(this.blockStateList.getBlockData().set(BlockSand.VARIANT, BlockSand.EnumSandVariant.SAND)); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).a(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).c(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockSand.VARIANT, BlockSand.EnumSandVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockSand.VARIANT}); + } + + public static enum EnumSandVariant implements INamable { + + SAND(0, "sand", "default", MaterialMapColor.d), RED_SAND(1, "red_sand", "red", MaterialMapColor.q); + + private static final BlockSand.EnumSandVariant[] c = new BlockSand.EnumSandVariant[values().length]; + private final int d; + private final String e; + private final MaterialMapColor f; + private final String g; + + private EnumSandVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) { + this.d = i; + this.e = s; + this.f = materialmapcolor; + this.g = s1; + } + + public int a() { + return this.d; + } + + public String toString() { + return this.e; + } + + public MaterialMapColor c() { + return this.f; + } + + public static BlockSand.EnumSandVariant a(int i) { + if (i < 0 || i >= BlockSand.EnumSandVariant.c.length) { + i = 0; + } + + return BlockSand.EnumSandVariant.c[i]; + } + + public String getName() { + return this.e; + } + + public String d() { + return this.g; + } + + static { + BlockSand.EnumSandVariant[] ablocksand_enumsandvariant = values(); + int i = ablocksand_enumsandvariant.length; + + for (int j = 0; j < i; ++j) { + BlockSand.EnumSandVariant blocksand_enumsandvariant = ablocksand_enumsandvariant[j]; + + BlockSand.EnumSandVariant.c[blocksand_enumsandvariant.a()] = blocksand_enumsandvariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java new file mode 100644 index 0000000..c68ca87 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +public class BlockSandStone extends Block { + + public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockSandStone.EnumSandstoneVariant.class); + + public BlockSandStone() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockSandStone.TYPE, BlockSandStone.EnumSandstoneVariant.DEFAULT)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockSandStone.EnumSandstoneVariant) iblockdata.get(BlockSandStone.TYPE)).a(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.d; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockSandStone.TYPE, BlockSandStone.EnumSandstoneVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockSandStone.EnumSandstoneVariant) iblockdata.get(BlockSandStone.TYPE)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockSandStone.TYPE}); + } + + public static enum EnumSandstoneVariant implements INamable { + + DEFAULT(0, "sandstone", "default"), CHISELED(1, "chiseled_sandstone", "chiseled"), SMOOTH(2, "smooth_sandstone", "smooth"); + + private static final BlockSandStone.EnumSandstoneVariant[] d = new BlockSandStone.EnumSandstoneVariant[values().length]; + private final int e; + private final String f; + private final String g; + + private EnumSandstoneVariant(int i, String s, String s1) { + this.e = i; + this.f = s; + this.g = s1; + } + + public int a() { + return this.e; + } + + public String toString() { + return this.f; + } + + public static BlockSandStone.EnumSandstoneVariant a(int i) { + if (i < 0 || i >= BlockSandStone.EnumSandstoneVariant.d.length) { + i = 0; + } + + return BlockSandStone.EnumSandstoneVariant.d[i]; + } + + public String getName() { + return this.f; + } + + public String c() { + return this.g; + } + + static { + BlockSandStone.EnumSandstoneVariant[] ablocksandstone_enumsandstonevariant = values(); + int i = ablocksandstone_enumsandstonevariant.length; + + for (int j = 0; j < i; ++j) { + BlockSandStone.EnumSandstoneVariant blocksandstone_enumsandstonevariant = ablocksandstone_enumsandstonevariant[j]; + + BlockSandStone.EnumSandstoneVariant.d[blocksandstone_enumsandstonevariant.a()] = blocksandstone_enumsandstonevariant; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java new file mode 100644 index 0000000..9e7b525 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java @@ -0,0 +1,31 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockSeaLantern extends Block { + + public BlockSeaLantern(Material material) { + super(material); + this.a(CreativeModeTab.b); + } + + public int a(Random random) { + return 2 + random.nextInt(2); + } + + public int getDropCount(int i, Random random) { + return MathHelper.clamp(this.a(random) + random.nextInt(i + 1), 1, 5); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.PRISMARINE_CRYSTALS; + } + + public MaterialMapColor g(IBlockData iblockdata) { + return MaterialMapColor.p; + } + + protected boolean I() { + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java new file mode 100644 index 0000000..61cad56 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockSign extends BlockContainer { + + protected BlockSign() { + super(Material.WOOD); + float f = 0.25F; + float f1 = 1.0F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return null; + } + + public boolean d() { + return false; + } + + public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) { + return true; + } + + public boolean c() { + return false; + } + + public boolean g() { + return true; + } + + public TileEntity a(World world, int i) { + return new TileEntitySign(); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.SIGN; + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + TileEntity tileentity = world.getTileEntity(blockposition); + + return tileentity instanceof TileEntitySign ? ((TileEntitySign) tileentity).b(entityhuman) : false; + } + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return !this.e(world, blockposition) && super.canPlace(world, blockposition); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java new file mode 100644 index 0000000..331bafa --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +public class BlockSlime extends BlockHalfTransparent { + + public BlockSlime() { + super(Material.CLAY, false, MaterialMapColor.c); + this.a(CreativeModeTab.c); + this.frictionFactor = 0.8F; + } + + public void fallOn(World world, BlockPosition blockposition, Entity entity, float f) { + if (entity.isSneaking()) { + super.fallOn(world, blockposition, entity, f); + } else { + entity.e(f, 0.0F); + } + + } + + public void a(World world, Entity entity) { + if (entity.isSneaking()) { + super.a(world, entity); + } else if (entity.motY < 0.0D) { + entity.motY = -entity.motY; + } + + } + + public void a(World world, BlockPosition blockposition, Entity entity) { + if (Math.abs(entity.motY) < 0.1D && !entity.isSneaking()) { + double d0 = 0.4D + Math.abs(entity.motY) * 0.2D; + + entity.motX *= d0; + entity.motZ *= d0; + } + + super.a(world, blockposition, entity); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java new file mode 100644 index 0000000..8186574 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class BlockSlowSand extends Block { + + public BlockSlowSand() { + super(Material.SAND, MaterialMapColor.B); + this.a(CreativeModeTab.b); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + float f = 0.125F; + + return new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) ((float) (blockposition.getY() + 1) - f), (double) (blockposition.getZ() + 1)); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) { + entity.motX *= 0.4D; + entity.motZ *= 0.4D; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java new file mode 100644 index 0000000..01fdd9d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +public class BlockSmoothBrick extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockSmoothBrick.EnumStonebrickType.class); + public static final int b = BlockSmoothBrick.EnumStonebrickType.DEFAULT.a(); + public static final int N = BlockSmoothBrick.EnumStonebrickType.MOSSY.a(); + public static final int O = BlockSmoothBrick.EnumStonebrickType.CRACKED.a(); + public static final int P = BlockSmoothBrick.EnumStonebrickType.CHISELED.a(); + + public BlockSmoothBrick() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockSmoothBrick.VARIANT, BlockSmoothBrick.EnumStonebrickType.DEFAULT)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockSmoothBrick.EnumStonebrickType) iblockdata.get(BlockSmoothBrick.VARIANT)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockSmoothBrick.VARIANT, BlockSmoothBrick.EnumStonebrickType.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockSmoothBrick.EnumStonebrickType) iblockdata.get(BlockSmoothBrick.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockSmoothBrick.VARIANT}); + } + + public static enum EnumStonebrickType implements INamable { + + DEFAULT(0, "stonebrick", "default"), MOSSY(1, "mossy_stonebrick", "mossy"), CRACKED(2, "cracked_stonebrick", "cracked"), CHISELED(3, "chiseled_stonebrick", "chiseled"); + + private static final BlockSmoothBrick.EnumStonebrickType[] e = new BlockSmoothBrick.EnumStonebrickType[values().length]; + private final int f; + private final String g; + private final String h; + + private EnumStonebrickType(int i, String s, String s1) { + this.f = i; + this.g = s; + this.h = s1; + } + + public int a() { + return this.f; + } + + public String toString() { + return this.g; + } + + public static BlockSmoothBrick.EnumStonebrickType a(int i) { + if (i < 0 || i >= BlockSmoothBrick.EnumStonebrickType.e.length) { + i = 0; + } + + return BlockSmoothBrick.EnumStonebrickType.e[i]; + } + + public String getName() { + return this.g; + } + + public String c() { + return this.h; + } + + static { + BlockSmoothBrick.EnumStonebrickType[] ablocksmoothbrick_enumstonebricktype = values(); + int i = ablocksmoothbrick_enumstonebricktype.length; + + for (int j = 0; j < i; ++j) { + BlockSmoothBrick.EnumStonebrickType blocksmoothbrick_enumstonebricktype = ablocksmoothbrick_enumstonebricktype[j]; + + BlockSmoothBrick.EnumStonebrickType.e[blocksmoothbrick_enumstonebricktype.a()] = blocksmoothbrick_enumstonebricktype; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java new file mode 100644 index 0000000..de7714e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java @@ -0,0 +1,100 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedList; + +public class BlockSponge extends Block { + + public static final BlockStateBoolean WET = BlockStateBoolean.of("wet"); + + protected BlockSponge() { + super(Material.SPONGE); + this.j(this.blockStateList.getBlockData().set(BlockSponge.WET, Boolean.valueOf(false))); + this.a(CreativeModeTab.b); + } + + public String getName() { + return LocaleI18n.get(this.a() + ".dry.name"); + } + + public int getDropData(IBlockData iblockdata) { + return ((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() ? 1 : 0; + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.e(world, blockposition, iblockdata); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + this.e(world, blockposition, iblockdata); + super.doPhysics(world, blockposition, iblockdata, block); + } + + protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() && this.e(world, blockposition)) { + world.setTypeAndData(blockposition, iblockdata.set(BlockSponge.WET, Boolean.valueOf(true)), 2); + world.triggerEffect(2001, blockposition, Block.getId(Blocks.WATER)); + } + + } + + private boolean e(World world, BlockPosition blockposition) { + LinkedList linkedlist = Lists.newLinkedList(); + ArrayList arraylist = Lists.newArrayList(); + + linkedlist.add(new Tuple(blockposition, Integer.valueOf(0))); + int i = 0; + + BlockPosition blockposition1; + + while (!linkedlist.isEmpty()) { + Tuple tuple = (Tuple) linkedlist.poll(); + + blockposition1 = (BlockPosition) tuple.a(); + int j = ((Integer) tuple.b()).intValue(); + EnumDirection[] aenumdirection = EnumDirection.values(); + int k = aenumdirection.length; + + for (int l = 0; l < k; ++l) { + EnumDirection enumdirection = aenumdirection[l]; + BlockPosition blockposition2 = blockposition1.shift(enumdirection); + + if (world.getType(blockposition2).getBlock().getMaterial() == Material.WATER) { + world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 2); + arraylist.add(blockposition2); + ++i; + if (j < 6) { + linkedlist.add(new Tuple(blockposition2, Integer.valueOf(j + 1))); + } + } + } + + if (i > 64) { + break; + } + } + + Iterator iterator = arraylist.iterator(); + + while (iterator.hasNext()) { + blockposition1 = (BlockPosition) iterator.next(); + world.applyPhysics(blockposition1, Blocks.AIR); + } + + return i > 0; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockSponge.WET, Boolean.valueOf((i & 1) == 1)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() ? 1 : 0; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockSponge.WET}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java new file mode 100644 index 0000000..c60ff35 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockStainedGlass extends BlockHalfTransparent { + + public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class); + + public BlockStainedGlass(Material material) { + super(material, false); + this.j(this.blockStateList.getBlockData().set(BlockStainedGlass.COLOR, EnumColor.WHITE)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).getColorIndex(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).e(); + } + + public int a(Random random) { + return 0; + } + + protected boolean I() { + return true; + } + + public boolean d() { + return false; + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockStainedGlass.COLOR, EnumColor.fromColorIndex(i)); + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.isClientSide) { + BlockBeacon.f(world, blockposition); + } + + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.isClientSide) { + BlockBeacon.f(world, blockposition); + } + + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).getColorIndex(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockStainedGlass.COLOR}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java new file mode 100644 index 0000000..1d64e6e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java @@ -0,0 +1,46 @@ +package net.minecraft.server; + +public class BlockStainedGlassPane extends BlockThin { + + public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class); + + public BlockStainedGlassPane() { + super(Material.SHATTERABLE, false); + this.j(this.blockStateList.getBlockData().set(BlockStainedGlassPane.NORTH, Boolean.valueOf(false)).set(BlockStainedGlassPane.EAST, Boolean.valueOf(false)).set(BlockStainedGlassPane.SOUTH, Boolean.valueOf(false)).set(BlockStainedGlassPane.WEST, Boolean.valueOf(false)).set(BlockStainedGlassPane.COLOR, EnumColor.WHITE)); + this.a(CreativeModeTab.c); + } + + public int getDropData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).getColorIndex(); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).e(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockStainedGlassPane.COLOR, EnumColor.fromColorIndex(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).getColorIndex(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockStainedGlassPane.NORTH, BlockStainedGlassPane.EAST, BlockStainedGlassPane.WEST, BlockStainedGlassPane.SOUTH, BlockStainedGlassPane.COLOR}); + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.isClientSide) { + BlockBeacon.f(world, blockposition); + } + + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!world.isClientSide) { + BlockBeacon.f(world, blockposition); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java new file mode 100644 index 0000000..09ac41b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java @@ -0,0 +1,595 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +public class BlockStairs extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockStairs.EnumHalf.class); + public static final BlockStateEnum SHAPE = BlockStateEnum.of("shape", BlockStairs.EnumStairShape.class); + private static final int[][] O = new int[][] { { 4, 5}, { 5, 7}, { 6, 7}, { 4, 6}, { 0, 1}, { 1, 3}, { 2, 3}, { 0, 2}}; + private final Block P; + private final IBlockData Q; + private boolean R; + private int S; + + protected BlockStairs(IBlockData iblockdata) { + super(iblockdata.getBlock().material); + this.j(this.blockStateList.getBlockData().set(BlockStairs.FACING, EnumDirection.NORTH).set(BlockStairs.HALF, BlockStairs.EnumHalf.BOTTOM).set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT)); + this.P = iblockdata.getBlock(); + this.Q = iblockdata; + this.c(this.P.strength); + this.b(this.P.durability / 3.0F); + this.a(this.P.stepSound); + this.e(255); + this.a(CreativeModeTab.b); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + if (this.R) { + this.a(0.5F * (float) (this.S % 2), 0.5F * (float) (this.S / 4 % 2), 0.5F * (float) (this.S / 2 % 2), 0.5F + 0.5F * (float) (this.S % 2), 0.5F + 0.5F * (float) (this.S / 4 % 2), 0.5F + 0.5F * (float) (this.S / 2 % 2)); + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public void e(IBlockAccess iblockaccess, BlockPosition blockposition) { + if (iblockaccess.getType(blockposition).get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP) { + this.a(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + + } + + public static boolean c(Block block) { + return block instanceof BlockStairs; + } + + public static boolean a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) { + IBlockData iblockdata1 = iblockaccess.getType(blockposition); + Block block = iblockdata1.getBlock(); + + return c(block) && iblockdata1.get(BlockStairs.HALF) == iblockdata.get(BlockStairs.HALF) && iblockdata1.get(BlockStairs.FACING) == iblockdata.get(BlockStairs.FACING); + } + + public int f(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING); + BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF); + boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP; + IBlockData iblockdata1; + Block block; + EnumDirection enumdirection1; + + if (enumdirection == EnumDirection.EAST) { + iblockdata1 = iblockaccess.getType(blockposition.east()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + return flag ? 1 : 2; + } + + if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + return flag ? 2 : 1; + } + } + } else if (enumdirection == EnumDirection.WEST) { + iblockdata1 = iblockaccess.getType(blockposition.west()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + return flag ? 2 : 1; + } + + if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + return flag ? 1 : 2; + } + } + } else if (enumdirection == EnumDirection.SOUTH) { + iblockdata1 = iblockaccess.getType(blockposition.south()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) { + return flag ? 2 : 1; + } + + if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) { + return flag ? 1 : 2; + } + } + } else if (enumdirection == EnumDirection.NORTH) { + iblockdata1 = iblockaccess.getType(blockposition.north()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) { + return flag ? 1 : 2; + } + + if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) { + return flag ? 2 : 1; + } + } + } + + return 0; + } + + public int g(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING); + BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF); + boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP; + IBlockData iblockdata1; + Block block; + EnumDirection enumdirection1; + + if (enumdirection == EnumDirection.EAST) { + iblockdata1 = iblockaccess.getType(blockposition.west()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + return flag ? 1 : 2; + } + + if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + return flag ? 2 : 1; + } + } + } else if (enumdirection == EnumDirection.WEST) { + iblockdata1 = iblockaccess.getType(blockposition.east()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + return flag ? 2 : 1; + } + + if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + return flag ? 1 : 2; + } + } + } else if (enumdirection == EnumDirection.SOUTH) { + iblockdata1 = iblockaccess.getType(blockposition.north()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) { + return flag ? 2 : 1; + } + + if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) { + return flag ? 1 : 2; + } + } + } else if (enumdirection == EnumDirection.NORTH) { + iblockdata1 = iblockaccess.getType(blockposition.south()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) { + return flag ? 1 : 2; + } + + if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) { + return flag ? 2 : 1; + } + } + } + + return 0; + } + + public boolean h(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING); + BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF); + boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP; + float f = 0.5F; + float f1 = 1.0F; + + if (flag) { + f = 0.0F; + f1 = 0.5F; + } + + float f2 = 0.0F; + float f3 = 1.0F; + float f4 = 0.0F; + float f5 = 0.5F; + boolean flag1 = true; + IBlockData iblockdata1; + Block block; + EnumDirection enumdirection1; + + if (enumdirection == EnumDirection.EAST) { + f2 = 0.5F; + f5 = 1.0F; + iblockdata1 = iblockaccess.getType(blockposition.east()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + f5 = 0.5F; + flag1 = false; + } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + f4 = 0.5F; + flag1 = false; + } + } + } else if (enumdirection == EnumDirection.WEST) { + f3 = 0.5F; + f5 = 1.0F; + iblockdata1 = iblockaccess.getType(blockposition.west()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + f5 = 0.5F; + flag1 = false; + } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + f4 = 0.5F; + flag1 = false; + } + } + } else if (enumdirection == EnumDirection.SOUTH) { + f4 = 0.5F; + f5 = 1.0F; + iblockdata1 = iblockaccess.getType(blockposition.south()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) { + f3 = 0.5F; + flag1 = false; + } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) { + f2 = 0.5F; + flag1 = false; + } + } + } else if (enumdirection == EnumDirection.NORTH) { + iblockdata1 = iblockaccess.getType(blockposition.north()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) { + f3 = 0.5F; + flag1 = false; + } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) { + f2 = 0.5F; + flag1 = false; + } + } + } + + this.a(f2, f, f4, f3, f1, f5); + return flag1; + } + + public boolean i(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING); + BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF); + boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP; + float f = 0.5F; + float f1 = 1.0F; + + if (flag) { + f = 0.0F; + f1 = 0.5F; + } + + float f2 = 0.0F; + float f3 = 0.5F; + float f4 = 0.5F; + float f5 = 1.0F; + boolean flag1 = false; + IBlockData iblockdata1; + Block block; + EnumDirection enumdirection1; + + if (enumdirection == EnumDirection.EAST) { + iblockdata1 = iblockaccess.getType(blockposition.west()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + f4 = 0.0F; + f5 = 0.5F; + flag1 = true; + } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + f4 = 0.5F; + f5 = 1.0F; + flag1 = true; + } + } + } else if (enumdirection == EnumDirection.WEST) { + iblockdata1 = iblockaccess.getType(blockposition.east()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + f2 = 0.5F; + f3 = 1.0F; + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) { + f4 = 0.0F; + f5 = 0.5F; + flag1 = true; + } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) { + f4 = 0.5F; + f5 = 1.0F; + flag1 = true; + } + } + } else if (enumdirection == EnumDirection.SOUTH) { + iblockdata1 = iblockaccess.getType(blockposition.north()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + f4 = 0.0F; + f5 = 0.5F; + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) { + flag1 = true; + } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) { + f2 = 0.5F; + f3 = 1.0F; + flag1 = true; + } + } + } else if (enumdirection == EnumDirection.NORTH) { + iblockdata1 = iblockaccess.getType(blockposition.south()); + block = iblockdata1.getBlock(); + if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) { + enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING); + if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) { + flag1 = true; + } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) { + f2 = 0.5F; + f3 = 1.0F; + flag1 = true; + } + } + } + + if (flag1) { + this.a(f2, f, f4, f3, f1, f5); + } + + return flag1; + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + this.e(world, blockposition); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + boolean flag = this.h(world, blockposition); + + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + if (flag && this.i(world, blockposition)) { + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public void attack(World world, BlockPosition blockposition, EntityHuman entityhuman) { + this.P.attack(world, blockposition, entityhuman); + } + + public void postBreak(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.P.postBreak(world, blockposition, iblockdata); + } + + public float a(Entity entity) { + return this.P.a(entity); + } + + public int a(World world) { + return this.P.a(world); + } + + public Vec3D a(World world, BlockPosition blockposition, Entity entity, Vec3D vec3d) { + return this.P.a(world, blockposition, entity, vec3d); + } + + public boolean A() { + return this.P.A(); + } + + public boolean a(IBlockData iblockdata, boolean flag) { + return this.P.a(iblockdata, flag); + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return this.P.canPlace(world, blockposition); + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.doPhysics(world, blockposition, this.Q, Blocks.AIR); + this.P.onPlace(world, blockposition, this.Q); + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.P.remove(world, blockposition, this.Q); + } + + public void a(World world, BlockPosition blockposition, Entity entity) { + this.P.a(world, blockposition, entity); + } + + public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) { + this.P.b(world, blockposition, iblockdata, random); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + return this.P.interact(world, blockposition, this.Q, entityhuman, EnumDirection.DOWN, 0.0F, 0.0F, 0.0F); + } + + public void wasExploded(World world, BlockPosition blockposition, Explosion explosion) { + this.P.wasExploded(world, blockposition, explosion); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return this.P.g(this.Q); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + IBlockData iblockdata = super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving); + + iblockdata = iblockdata.set(BlockStairs.FACING, entityliving.getDirection()).set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT); + return enumdirection != EnumDirection.DOWN && (enumdirection == EnumDirection.UP || (double) f1 <= 0.5D) ? iblockdata.set(BlockStairs.HALF, BlockStairs.EnumHalf.BOTTOM) : iblockdata.set(BlockStairs.HALF, BlockStairs.EnumHalf.TOP); + } + + public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) { + MovingObjectPosition[] amovingobjectposition = new MovingObjectPosition[8]; + IBlockData iblockdata = world.getType(blockposition); + int i = ((EnumDirection) iblockdata.get(BlockStairs.FACING)).b(); + boolean flag = iblockdata.get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP; + int[] aint = BlockStairs.O[i + (flag ? 4 : 0)]; + + this.R = true; + + for (int j = 0; j < 8; ++j) { + this.S = j; + if (Arrays.binarySearch(aint, j) < 0) { + amovingobjectposition[j] = super.a(world, blockposition, vec3d, vec3d1); + } + } + + int[] aint1 = aint; + int k = aint.length; + + for (int l = 0; l < k; ++l) { + int i1 = aint1[l]; + + amovingobjectposition[i1] = null; + } + + MovingObjectPosition movingobjectposition = null; + double d0 = 0.0D; + MovingObjectPosition[] amovingobjectposition1 = amovingobjectposition; + int j1 = amovingobjectposition.length; + + for (int k1 = 0; k1 < j1; ++k1) { + MovingObjectPosition movingobjectposition1 = amovingobjectposition1[k1]; + + if (movingobjectposition1 != null) { + double d1 = movingobjectposition1.pos.distanceSquared(vec3d1); + + if (d1 > d0) { + movingobjectposition = movingobjectposition1; + d0 = d1; + } + } + } + + return movingobjectposition; + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockStairs.HALF, (i & 4) > 0 ? BlockStairs.EnumHalf.TOP : BlockStairs.EnumHalf.BOTTOM); + + iblockdata = iblockdata.set(BlockStairs.FACING, EnumDirection.fromType1(5 - (i & 3))); + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + int i = 0; + + if (iblockdata.get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP) { + i |= 4; + } + + i |= 5 - ((EnumDirection) iblockdata.get(BlockStairs.FACING)).a(); + return i; + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + if (this.h(iblockaccess, blockposition)) { + switch (this.g(iblockaccess, blockposition)) { + case 0: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT); + break; + + case 1: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.INNER_RIGHT); + break; + + case 2: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.INNER_LEFT); + } + } else { + switch (this.f(iblockaccess, blockposition)) { + case 0: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT); + break; + + case 1: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.OUTER_RIGHT); + break; + + case 2: + iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.OUTER_LEFT); + } + } + + return iblockdata; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockStairs.FACING, BlockStairs.HALF, BlockStairs.SHAPE}); + } + + public static enum EnumStairShape implements INamable { + + STRAIGHT("straight"), INNER_LEFT("inner_left"), INNER_RIGHT("inner_right"), OUTER_LEFT("outer_left"), OUTER_RIGHT("outer_right"); + + private final String f; + + private EnumStairShape(String s) { + this.f = s; + } + + public String toString() { + return this.f; + } + + public String getName() { + return this.f; + } + } + + public static enum EnumHalf implements INamable { + + TOP("top"), BOTTOM("bottom"); + + private final String c; + + private EnumHalf(String s) { + this.c = s; + } + + public String toString() { + return this.c; + } + + public String getName() { + return this.c; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java similarity index 88% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java index 049019d..634ce1e 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java @@ -1,6 +1,6 @@ package net.minecraft.server; -import com.google.common.base.Objects; +import com.google.common.base.MoreObjects; // TacoSpigot start @@ -41,7 +41,7 @@ public abstract class BlockState> implements IBlockState } public String toString() { - return Objects.toStringHelper(this).add("name", this.b).add("clazz", this.a).add("values", this.c()).toString(); + return MoreObjects.toStringHelper(this).add("name", this.b).add("clazz", this.a).add("values", this.c()).toString(); } public boolean equals(Object object) { diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java new file mode 100644 index 0000000..46339a2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; +import java.util.Collection; + +public class BlockStateDirection extends BlockStateEnum { + + protected BlockStateDirection(String s, Collection collection) { + super(s, EnumDirection.class, collection); + } + + public static BlockStateDirection of(String s) { + return of(s, Predicates.alwaysTrue()); + } + + public static BlockStateDirection of(String s, Predicate predicate) { + return a(s, Collections2.filter(Lists.newArrayList(EnumDirection.values()), predicate)); + } + + public static BlockStateDirection a(String s, Collection collection) { + return new BlockStateDirection(s, collection); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java similarity index 97% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java index aae2034..031d41b 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java @@ -2,7 +2,7 @@ package net.minecraft.server; import com.google.common.base.Function; import com.google.common.base.Joiner; -import com.google.common.base.Objects; +import com.google.common.base.MoreObjects; import com.google.common.collect.HashBasedTable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -110,7 +110,7 @@ public class BlockStateList { } public String toString() { - return Objects.toStringHelper(this).add("block", Block.REGISTRY.c(this.c)).add("properties", Iterables.transform(this.d, BlockStateList.b)).toString(); + return MoreObjects.toStringHelper(this).add("block", Block.REGISTRY.c(this.c)).add("properties", Iterables.transform(this.d, BlockStateList.b)).toString(); } static class BlockData extends BlockDataAbstract { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java new file mode 100644 index 0000000..4c97a4c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.collect.Maps; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public class BlockStatePredicate implements Predicate { + + private final BlockStateList a; + private final Map b = Maps.newHashMap(); + + private BlockStatePredicate(BlockStateList blockstatelist) { + this.a = blockstatelist; + } + + public static BlockStatePredicate a(Block block) { + return new BlockStatePredicate(block.P()); + } + + public boolean a(IBlockData iblockdata) { + if (iblockdata != null && iblockdata.getBlock().equals(this.a.getBlock())) { + Iterator iterator = this.b.entrySet().iterator(); + + Entry entry; + Comparable comparable; + + do { + if (!iterator.hasNext()) { + return true; + } + + entry = (Entry) iterator.next(); + comparable = iblockdata.get((IBlockState) entry.getKey()); + } while (((Predicate) entry.getValue()).apply(comparable)); + + return false; + } else { + return false; + } + } + + public > BlockStatePredicate a(IBlockState iblockstate, Predicate predicate) { + if (!this.a.d().contains(iblockstate)) { + throw new IllegalArgumentException(this.a + " cannot support property " + iblockstate); + } else { + this.b.put(iblockstate, predicate); + return this; + } + } + + public boolean apply(IBlockData object) { + return this.a(object); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java new file mode 100644 index 0000000..e69bbe0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockStep extends BlockDoubleStepAbstract { + + public BlockStep() {} + + public boolean l() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java new file mode 100644 index 0000000..668f932 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java @@ -0,0 +1,104 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public abstract class BlockStepAbstract extends Block { + + public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockStepAbstract.EnumSlabHalf.class); + + public BlockStepAbstract(Material material) { + super(material); + if (this.l()) { + this.r = true; + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + + this.e(255); + } + + protected boolean I() { + return false; + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + if (this.l()) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } else { + IBlockData iblockdata = iblockaccess.getType(blockposition); + + if (iblockdata.getBlock() == this) { + if (iblockdata.get(BlockStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) { + this.a(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + } + + } + } + + public void j() { + if (this.l()) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + this.updateShape(world, blockposition); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + public boolean c() { + return this.l(); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + IBlockData iblockdata = super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM); + + return this.l() ? iblockdata : (enumdirection != EnumDirection.DOWN && (enumdirection == EnumDirection.UP || (double) f1 <= 0.5D) ? iblockdata : iblockdata.set(BlockStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.TOP)); + } + + public int a(Random random) { + return this.l() ? 2 : 1; + } + + public boolean d() { + return this.l(); + } + + public abstract String b(int i); + + public int getDropData(World world, BlockPosition blockposition) { + return super.getDropData(world, blockposition) & 7; + } + + public abstract boolean l(); + + public abstract IBlockState n(); + + public abstract Object a(ItemStack itemstack); + + public static enum EnumSlabHalf implements INamable { + + TOP("top"), BOTTOM("bottom"); + + private final String c; + + private EnumSlabHalf(String s) { + this.c = s; + } + + public String toString() { + return this.c; + } + + public String getName() { + return this.c; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java new file mode 100644 index 0000000..596470f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java @@ -0,0 +1,104 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockStone extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockStone.EnumStoneVariant.class); + + public BlockStone() { + super(Material.STONE); + this.j(this.blockStateList.getBlockData().set(BlockStone.VARIANT, BlockStone.EnumStoneVariant.STONE)); + this.a(CreativeModeTab.b); + } + + public String getName() { + return LocaleI18n.get(this.a() + "." + BlockStone.EnumStoneVariant.STONE.d() + ".name"); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).c(); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return iblockdata.get(BlockStone.VARIANT) == BlockStone.EnumStoneVariant.STONE ? Item.getItemOf(Blocks.COBBLESTONE) : Item.getItemOf(Blocks.STONE); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockStone.VARIANT, BlockStone.EnumStoneVariant.a(i)); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockStone.VARIANT}); + } + + public static enum EnumStoneVariant implements INamable { + + STONE(0, MaterialMapColor.m, "stone"), GRANITE(1, MaterialMapColor.l, "granite"), GRANITE_SMOOTH(2, MaterialMapColor.l, "smooth_granite", "graniteSmooth"), DIORITE(3, MaterialMapColor.p, "diorite"), DIORITE_SMOOTH(4, MaterialMapColor.p, "smooth_diorite", "dioriteSmooth"), ANDESITE(5, MaterialMapColor.m, "andesite"), ANDESITE_SMOOTH(6, MaterialMapColor.m, "smooth_andesite", "andesiteSmooth"); + + private static final BlockStone.EnumStoneVariant[] h = new BlockStone.EnumStoneVariant[values().length]; + private final int i; + private final String j; + private final String k; + private final MaterialMapColor l; + + private EnumStoneVariant(int i, MaterialMapColor materialmapcolor, String s) { + this(i, materialmapcolor, s, s); + } + + private EnumStoneVariant(int i, MaterialMapColor materialmapcolor, String s, String s1) { + this.i = i; + this.j = s; + this.k = s1; + this.l = materialmapcolor; + } + + public int a() { + return this.i; + } + + public MaterialMapColor c() { + return this.l; + } + + public String toString() { + return this.j; + } + + public static BlockStone.EnumStoneVariant a(int i) { + if (i < 0 || i >= BlockStone.EnumStoneVariant.h.length) { + i = 0; + } + + return BlockStone.EnumStoneVariant.h[i]; + } + + public String getName() { + return this.j; + } + + public String d() { + return this.k; + } + + static { + BlockStone.EnumStoneVariant[] ablockstone_enumstonevariant = values(); + int i = ablockstone_enumstonevariant.length; + + for (int j = 0; j < i; ++j) { + BlockStone.EnumStoneVariant blockstone_enumstonevariant = ablockstone_enumstonevariant[j]; + + BlockStone.EnumStoneVariant.h[blockstone_enumstonevariant.a()] = blockstone_enumstonevariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java new file mode 100644 index 0000000..d07bb7c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public class BlockStoneButton extends BlockButtonAbstract { + + protected BlockStoneButton() { + super(false); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java new file mode 100644 index 0000000..e1e4081 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockStoneStep2 extends BlockDoubleStoneStepAbstract { + + public BlockStoneStep2() {} + + public boolean l() { + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java new file mode 100644 index 0000000..3fd33e5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java @@ -0,0 +1,267 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockTallPlant extends BlockPlant implements IBlockFragilePlantElement { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockTallPlant.EnumTallFlowerVariants.class); + public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockTallPlant.EnumTallPlantHalf.class); + public static final BlockStateEnum N = BlockDirectional.FACING; + + public BlockTallPlant() { + super(Material.REPLACEABLE_PLANT); + this.j(this.blockStateList.getBlockData().set(BlockTallPlant.VARIANT, BlockTallPlant.EnumTallFlowerVariants.SUNFLOWER).set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.N, EnumDirection.NORTH)); + this.c(0.0F); + this.a(BlockTallPlant.h); + this.c("doublePlant"); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public BlockTallPlant.EnumTallFlowerVariants e(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); + + if (iblockdata.getBlock() == this) { + iblockdata = this.updateState(iblockdata, iblockaccess, blockposition); + return (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT); + } else { + return BlockTallPlant.EnumTallFlowerVariants.FERN; + } + } + + public boolean canPlace(World world, BlockPosition blockposition) { + return super.canPlace(world, blockposition) && world.isEmpty(blockposition.up()); + } + + public boolean a(World world, BlockPosition blockposition) { + IBlockData iblockdata = world.getType(blockposition); + + if (iblockdata.getBlock() != this) { + return true; + } else { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) this.updateState(iblockdata, world, blockposition).get(BlockTallPlant.VARIANT); + + return blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.FERN || blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS; + } + } + + protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!this.f(world, blockposition, iblockdata)) { + boolean flag = iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER; + BlockPosition blockposition1 = flag ? blockposition : blockposition.up(); + BlockPosition blockposition2 = flag ? blockposition.down() : blockposition; + Object object = flag ? this : world.getType(blockposition1).getBlock(); + Object object1 = flag ? world.getType(blockposition2).getBlock() : this; + + if (object == this) { + world.setTypeAndData(blockposition1, Blocks.AIR.getBlockData(), 2); + } + + if (object1 == this) { + world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3); + if (!flag) { + this.b(world, blockposition2, iblockdata, 0); + } + } + + } + } + + public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) { + return world.getType(blockposition.down()).getBlock() == this; + } else { + IBlockData iblockdata1 = world.getType(blockposition.up()); + + return iblockdata1.getBlock() == this && super.f(world, blockposition, iblockdata1); + } + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) { + return null; + } else { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT); + + return blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.FERN ? null : (blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS ? (random.nextInt(8) == 0 ? Items.WHEAT_SEEDS : null) : Item.getItemOf(this)); + } + } + + public int getDropData(IBlockData iblockdata) { + return iblockdata.get(BlockTallPlant.HALF) != BlockTallPlant.EnumTallPlantHalf.UPPER && iblockdata.get(BlockTallPlant.VARIANT) != BlockTallPlant.EnumTallFlowerVariants.GRASS ? ((BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT)).a() : 0; + } + + public void a(World world, BlockPosition blockposition, BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants, int i) { + world.setTypeAndData(blockposition, this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, blocktallplant_enumtallflowervariants), i); + world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER), i); + } + + public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) { + world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER), 2); + } + + public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) { + if (world.isClientSide || entityhuman.bZ() == null || entityhuman.bZ().getItem() != Items.SHEARS || iblockdata.get(BlockTallPlant.HALF) != BlockTallPlant.EnumTallPlantHalf.LOWER || !this.b(world, blockposition, iblockdata, entityhuman)) { + super.a(world, entityhuman, blockposition, iblockdata, tileentity); + } + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) { + if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) { + if (world.getType(blockposition.down()).getBlock() == this) { + if (!entityhuman.abilities.canInstantlyBuild) { + IBlockData iblockdata1 = world.getType(blockposition.down()); + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata1.get(BlockTallPlant.VARIANT); + + if (blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS) { + world.setAir(blockposition.down(), true); + } else if (!world.isClientSide) { + if (entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) { + this.b(world, blockposition, iblockdata1, entityhuman); + world.setAir(blockposition.down()); + } else { + world.setAir(blockposition.down(), true); + } + } else { + world.setAir(blockposition.down()); + } + } else { + world.setAir(blockposition.down()); + } + } + } else if (entityhuman.abilities.canInstantlyBuild && world.getType(blockposition.up()).getBlock() == this) { + world.setTypeAndData(blockposition.up(), Blocks.AIR.getBlockData(), 2); + } + + super.a(world, blockposition, iblockdata, entityhuman); + } + + private boolean b(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT); + + if (blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS) { + return false; + } else { + entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]); + int i = (blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS ? BlockLongGrass.EnumTallGrassType.GRASS : BlockLongGrass.EnumTallGrassType.FERN).a(); + + a(world, blockposition, new ItemStack(Blocks.TALLGRASS, 2, i)); + return true; + } + } + + public int getDropData(World world, BlockPosition blockposition) { + return this.e(world, blockposition).a(); + } + + public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = this.e(world, blockposition); + + return blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN; + } + + public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) { + return true; + } + + public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) { + a(world, blockposition, new ItemStack(this, 1, this.e(world, blockposition).a())); + } + + public IBlockData fromLegacyData(int i) { + return (i & 8) > 0 ? this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER) : this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, BlockTallPlant.EnumTallFlowerVariants.a(i & 7)); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) { + IBlockData iblockdata1 = iblockaccess.getType(blockposition.down()); + + if (iblockdata1.getBlock() == this) { + iblockdata = iblockdata.set(BlockTallPlant.VARIANT, iblockdata1.get(BlockTallPlant.VARIANT)); + } + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + return iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER ? 8 | ((EnumDirection) iblockdata.get(BlockTallPlant.N)).b() : ((BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockTallPlant.HALF, BlockTallPlant.VARIANT, BlockTallPlant.N}); + } + + public static enum EnumTallPlantHalf implements INamable { + + UPPER, LOWER; + + private EnumTallPlantHalf() {} + + public String toString() { + return this.getName(); + } + + public String getName() { + return this == BlockTallPlant.EnumTallPlantHalf.UPPER ? "upper" : "lower"; + } + } + + public static enum EnumTallFlowerVariants implements INamable { + + SUNFLOWER(0, "sunflower"), SYRINGA(1, "syringa"), GRASS(2, "double_grass", "grass"), FERN(3, "double_fern", "fern"), ROSE(4, "double_rose", "rose"), PAEONIA(5, "paeonia"); + + private static final BlockTallPlant.EnumTallFlowerVariants[] g = new BlockTallPlant.EnumTallFlowerVariants[values().length]; + private final int h; + private final String i; + private final String j; + + private EnumTallFlowerVariants(int i, String s) { + this(i, s, s); + } + + private EnumTallFlowerVariants(int i, String s, String s1) { + this.h = i; + this.i = s; + this.j = s1; + } + + public int a() { + return this.h; + } + + public String toString() { + return this.i; + } + + public static BlockTallPlant.EnumTallFlowerVariants a(int i) { + if (i < 0 || i >= BlockTallPlant.EnumTallFlowerVariants.g.length) { + i = 0; + } + + return BlockTallPlant.EnumTallFlowerVariants.g[i]; + } + + public String getName() { + return this.i; + } + + public String c() { + return this.j; + } + + static { + BlockTallPlant.EnumTallFlowerVariants[] ablocktallplant_enumtallflowervariants = values(); + int i = ablocktallplant_enumtallflowervariants.length; + + for (int j = 0; j < i; ++j) { + BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = ablocktallplant_enumtallflowervariants[j]; + + BlockTallPlant.EnumTallFlowerVariants.g[blocktallplant_enumtallflowervariants.a()] = blocktallplant_enumtallflowervariants; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java new file mode 100644 index 0000000..5a89a77 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java @@ -0,0 +1,125 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class BlockThin extends Block { + + public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north"); + public static final BlockStateBoolean EAST = BlockStateBoolean.of("east"); + public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south"); + public static final BlockStateBoolean WEST = BlockStateBoolean.of("west"); + private final boolean a; + + protected BlockThin(Material material, boolean flag) { + super(material); + this.j(this.blockStateList.getBlockData().set(BlockThin.NORTH, Boolean.valueOf(false)).set(BlockThin.EAST, Boolean.valueOf(false)).set(BlockThin.SOUTH, Boolean.valueOf(false)).set(BlockThin.WEST, Boolean.valueOf(false))); + this.a = flag; + this.a(CreativeModeTab.c); + } + + public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { + return iblockdata.set(BlockThin.NORTH, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.north()).getBlock()))).set(BlockThin.SOUTH, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.south()).getBlock()))).set(BlockThin.WEST, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.west()).getBlock()))).set(BlockThin.EAST, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.east()).getBlock()))); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return !this.a ? null : super.getDropType(iblockdata, random, i); + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + boolean flag = this.c(world.getType(blockposition.north()).getBlock()); + boolean flag1 = this.c(world.getType(blockposition.south()).getBlock()); + boolean flag2 = this.c(world.getType(blockposition.west()).getBlock()); + boolean flag3 = this.c(world.getType(blockposition.east()).getBlock()); + + if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) { + if (flag2) { + this.a(0.0F, 0.0F, 0.4375F, 0.5F, 1.0F, 0.5625F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } else if (flag3) { + this.a(0.5F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + } else { + this.a(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1)) { + if (flag) { + this.a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 0.5F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } else if (flag1) { + this.a(0.4375F, 0.0F, 0.5F, 0.5625F, 1.0F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + } else { + this.a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F); + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + } + + public void j() { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + float f = 0.4375F; + float f1 = 0.5625F; + float f2 = 0.4375F; + float f3 = 0.5625F; + boolean flag = this.c(iblockaccess.getType(blockposition.north()).getBlock()); + boolean flag1 = this.c(iblockaccess.getType(blockposition.south()).getBlock()); + boolean flag2 = this.c(iblockaccess.getType(blockposition.west()).getBlock()); + boolean flag3 = this.c(iblockaccess.getType(blockposition.east()).getBlock()); + + if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) { + if (flag2) { + f = 0.0F; + } else if (flag3) { + f1 = 1.0F; + } + } else { + f = 0.0F; + f1 = 1.0F; + } + + if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1)) { + if (flag) { + f2 = 0.0F; + } else if (flag1) { + f3 = 1.0F; + } + } else { + f2 = 0.0F; + f3 = 1.0F; + } + + this.a(f, 0.0F, f2, f1, 1.0F, f3); + } + + public final boolean c(Block block) { + return block.o() || block == this || block == Blocks.GLASS || block == Blocks.STAINED_GLASS || block == Blocks.STAINED_GLASS_PANE || block instanceof BlockThin; + } + + protected boolean I() { + return true; + } + + public int toLegacyData(IBlockData iblockdata) { + return 0; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockThin.NORTH, BlockThin.EAST, BlockThin.WEST, BlockThin.SOUTH}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java new file mode 100644 index 0000000..db8a918 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java @@ -0,0 +1,261 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Iterator; + +public class BlockTorch extends Block { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", new Predicate() { + public boolean a(EnumDirection enumdirection) { + return enumdirection != EnumDirection.DOWN; + } + + public boolean apply(Object object) { + return this.a((EnumDirection) object); + } + }); + + protected BlockTorch() { + super(Material.ORIENTABLE); + this.j(this.blockStateList.getBlockData().set(BlockTorch.FACING, EnumDirection.UP)); + this.a(true); + this.a(CreativeModeTab.c); + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return null; + } + + public boolean c() { + return false; + } + + public boolean d() { + return false; + } + + private boolean e(World world, BlockPosition blockposition) { + if (World.a((IBlockAccess) world, blockposition)) { + return true; + } else { + Block block = world.getType(blockposition).getBlock(); + + return block instanceof BlockFence || block == Blocks.GLASS || block == Blocks.COBBLESTONE_WALL || block == Blocks.STAINED_GLASS; + } + } + + public boolean canPlace(World world, BlockPosition blockposition) { + Iterator iterator = BlockTorch.FACING.c().iterator(); + + EnumDirection enumdirection; + + do { + if (!iterator.hasNext()) { + return false; + } + + enumdirection = (EnumDirection) iterator.next(); + } while (!this.a(world, blockposition, enumdirection)); + + return true; + } + + private boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) { + BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite()); + boolean flag = enumdirection.k().c(); + + return flag && world.d(blockposition1, true) || enumdirection.equals(EnumDirection.UP) && this.e(world, blockposition1); + } + + public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) { + if (this.a(world, blockposition, enumdirection)) { + return this.getBlockData().set(BlockTorch.FACING, enumdirection); + } else { + Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); + + EnumDirection enumdirection1; + + do { + if (!iterator.hasNext()) { + return this.getBlockData(); + } + + enumdirection1 = (EnumDirection) iterator.next(); + } while (!world.d(blockposition.shift(enumdirection1.opposite()), true)); + + return this.getBlockData().set(BlockTorch.FACING, enumdirection1); + } + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { + this.f(world, blockposition, iblockdata); + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + this.e(world, blockposition, iblockdata); + } + + protected boolean e(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (!this.f(world, blockposition, iblockdata)) { + return true; + } else { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockTorch.FACING); + EnumDirection.EnumAxis enumdirection_enumaxis = enumdirection.k(); + EnumDirection enumdirection1 = enumdirection.opposite(); + boolean flag = false; + + if (enumdirection_enumaxis.c() && !world.d(blockposition.shift(enumdirection1), true)) { + flag = true; + } else if (enumdirection_enumaxis.b() && !this.e(world, blockposition.shift(enumdirection1))) { + flag = true; + } + + if (flag) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + return true; + } else { + return false; + } + } + } + + protected boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (iblockdata.getBlock() == this && this.a(world, blockposition, (EnumDirection) iblockdata.get(BlockTorch.FACING))) { + return true; + } else { + if (world.getType(blockposition).getBlock() == this) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + return false; + } + } + + public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) { + EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockTorch.FACING); + float f = 0.15F; + + if (enumdirection == EnumDirection.EAST) { + this.a(0.0F, 0.2F, 0.5F - f, f * 2.0F, 0.8F, 0.5F + f); + } else if (enumdirection == EnumDirection.WEST) { + this.a(1.0F - f * 2.0F, 0.2F, 0.5F - f, 1.0F, 0.8F, 0.5F + f); + } else if (enumdirection == EnumDirection.SOUTH) { + this.a(0.5F - f, 0.2F, 0.0F, 0.5F + f, 0.8F, f * 2.0F); + } else if (enumdirection == EnumDirection.NORTH) { + this.a(0.5F - f, 0.2F, 1.0F - f * 2.0F, 0.5F + f, 0.8F, 1.0F); + } else { + f = 0.1F; + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); + } + + return super.a(world, blockposition, vec3d, vec3d1); + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData(); + + switch (i) { + case 1: + iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.EAST); + break; + + case 2: + iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.WEST); + break; + + case 3: + iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.SOUTH); + break; + + case 4: + iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.NORTH); + break; + + case 5: + default: + iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.UP); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i; + + switch (BlockTorch.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockTorch.FACING)).ordinal()]) { + case 1: + i = b0 | 1; + break; + + case 2: + i = b0 | 2; + break; + + case 3: + i = b0 | 3; + break; + + case 4: + i = b0 | 4; + break; + + case 5: + case 6: + default: + i = b0 | 5; + } + + return i; + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockTorch.FACING}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.DOWN.ordinal()] = 5; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + BlockTorch.SyntheticClass_1.a[EnumDirection.UP.ordinal()] = 6; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java new file mode 100644 index 0000000..eb8339f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class BlockTransparent extends Block { + + protected boolean R; + + protected BlockTransparent(Material material, boolean flag) { + super(material); + this.R = flag; + } + + public boolean c() { + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java similarity index 98% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java index 5129862..ad6f39a 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java @@ -1,7 +1,7 @@ package net.minecraft.server; +import com.google.common.base.MoreObjects; import com.google.common.base.Objects; -import com.google.common.base.Predicate; import java.util.Iterator; import java.util.Random; @@ -113,7 +113,7 @@ public class BlockTripwireHook extends Block { flag5 = false; } else { if (k == i) { - iblockdata2 = Objects.firstNonNull(iblockdata1, iblockdata2); + iblockdata2 = MoreObjects.firstNonNull(iblockdata1, iblockdata2); } boolean flag7 = !(Boolean) iblockdata2.get(BlockTripwire.DISARMED); diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java new file mode 100644 index 0000000..4fcc357 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java @@ -0,0 +1,101 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class BlockWallSign extends BlockSign { + + public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL); + + public BlockWallSign() { + this.j(this.blockStateList.getBlockData().set(BlockWallSign.FACING, EnumDirection.NORTH)); + } + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + EnumDirection enumdirection = (EnumDirection) iblockaccess.getType(blockposition).get(BlockWallSign.FACING); + float f = 0.28125F; + float f1 = 0.78125F; + float f2 = 0.0F; + float f3 = 1.0F; + float f4 = 0.125F; + + this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + switch (BlockWallSign.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + this.a(f2, f, 1.0F - f4, f3, f1, 1.0F); + break; + + case 2: + this.a(f2, f, 0.0F, f3, f1, f4); + break; + + case 3: + this.a(1.0F - f4, f, f2, 1.0F, f1, f3); + break; + + case 4: + this.a(0.0F, f, f2, f4, f1, f3); + } + + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { + EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockWallSign.FACING); + + if (!world.getType(blockposition.shift(enumdirection.opposite())).getBlock().getMaterial().isBuildable()) { + this.b(world, blockposition, iblockdata, 0); + world.setAir(blockposition); + } + + super.doPhysics(world, blockposition, iblockdata, block); + } + + public IBlockData fromLegacyData(int i) { + EnumDirection enumdirection = EnumDirection.fromType1(i); + + if (enumdirection.k() == EnumDirection.EnumAxis.Y) { + enumdirection = EnumDirection.NORTH; + } + + return this.getBlockData().set(BlockWallSign.FACING, enumdirection); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((EnumDirection) iblockdata.get(BlockWallSign.FACING)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockWallSign.FACING}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + BlockWallSign.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + BlockWallSign.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + BlockWallSign.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + BlockWallSign.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java new file mode 100644 index 0000000..be856db --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import java.util.List; + +public class BlockWaterLily extends BlockPlant { + + protected BlockWaterLily() { + float f = 0.5F; + float f1 = 0.015625F; + + this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f); + this.a(CreativeModeTab.c); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) { + if (entity == null || !(entity instanceof EntityBoat)) { + super.a(world, blockposition, iblockdata, axisalignedbb, list, entity); + } + + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return new AxisAlignedBB((double) blockposition.getX() + this.minX, (double) blockposition.getY() + this.minY, (double) blockposition.getZ() + this.minZ, (double) blockposition.getX() + this.maxX, (double) blockposition.getY() + this.maxY, (double) blockposition.getZ() + this.maxZ); + } + + protected boolean c(Block block) { + return block == Blocks.WATER; + } + + public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (blockposition.getY() >= 0 && blockposition.getY() < 256) { + IBlockData iblockdata1 = world.getType(blockposition.down()); + + return iblockdata1.getBlock().getMaterial() == Material.WATER && ((Integer) iblockdata1.get(BlockFluids.LEVEL)).intValue() == 0; + } else { + return false; + } + } + + public int toLegacyData(IBlockData iblockdata) { + return 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java new file mode 100644 index 0000000..244e633 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +import java.util.Random; + +public class BlockWeb extends Block { + + public BlockWeb() { + super(Material.WEB); + this.a(CreativeModeTab.c); + } + + public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) { + entity.aA(); + } + + public boolean c() { + return false; + } + + public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) { + return null; + } + + public boolean d() { + return false; + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Items.STRING; + } + + protected boolean I() { + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java new file mode 100644 index 0000000..4d87f32 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java @@ -0,0 +1,94 @@ +package net.minecraft.server; + +public class BlockWood extends Block { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockWood.EnumLogVariant.class); + + public BlockWood() { + super(Material.WOOD); + this.j(this.blockStateList.getBlockData().set(BlockWood.VARIANT, BlockWood.EnumLogVariant.OAK)); + this.a(CreativeModeTab.b); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).a(); + } + + public IBlockData fromLegacyData(int i) { + return this.getBlockData().set(BlockWood.VARIANT, BlockWood.EnumLogVariant.a(i)); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).c(); + } + + public int toLegacyData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).a(); + } + + protected BlockStateList getStateList() { + return new BlockStateList(this, new IBlockState[] { BlockWood.VARIANT}); + } + + public static enum EnumLogVariant implements INamable { + + OAK(0, "oak", MaterialMapColor.o), SPRUCE(1, "spruce", MaterialMapColor.J), BIRCH(2, "birch", MaterialMapColor.d), JUNGLE(3, "jungle", MaterialMapColor.l), ACACIA(4, "acacia", MaterialMapColor.q), DARK_OAK(5, "dark_oak", "big_oak", MaterialMapColor.B); + + private static final BlockWood.EnumLogVariant[] g = new BlockWood.EnumLogVariant[values().length]; + private final int h; + private final String i; + private final String j; + private final MaterialMapColor k; + + private EnumLogVariant(int i, String s, MaterialMapColor materialmapcolor) { + this(i, s, s, materialmapcolor); + } + + private EnumLogVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) { + this.h = i; + this.i = s; + this.j = s1; + this.k = materialmapcolor; + } + + public int a() { + return this.h; + } + + public MaterialMapColor c() { + return this.k; + } + + public String toString() { + return this.i; + } + + public static BlockWood.EnumLogVariant a(int i) { + if (i < 0 || i >= BlockWood.EnumLogVariant.g.length) { + i = 0; + } + + return BlockWood.EnumLogVariant.g[i]; + } + + public String getName() { + return this.i; + } + + public String d() { + return this.j; + } + + static { + BlockWood.EnumLogVariant[] ablockwood_enumlogvariant = values(); + int i = ablockwood_enumlogvariant.length; + + for (int j = 0; j < i; ++j) { + BlockWood.EnumLogVariant blockwood_enumlogvariant = ablockwood_enumlogvariant[j]; + + BlockWood.EnumLogVariant.g[blockwood_enumlogvariant.a()] = blockwood_enumlogvariant; + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java new file mode 100644 index 0000000..e62cc86 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public class BlockWoodButton extends BlockButtonAbstract { + + protected BlockWoodButton() { + super(true); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java new file mode 100644 index 0000000..9b4ad90 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockWoodStep extends BlockWoodenStep { + + public BlockWoodStep() {} + + public boolean l() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java new file mode 100644 index 0000000..d90f3be --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java @@ -0,0 +1,69 @@ +package net.minecraft.server; + +import java.util.Random; + +public abstract class BlockWoodenStep extends BlockStepAbstract { + + public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockWood.EnumLogVariant.class); + + public BlockWoodenStep() { + super(Material.WOOD); + IBlockData iblockdata = this.blockStateList.getBlockData(); + + if (!this.l()) { + iblockdata = iblockdata.set(BlockWoodenStep.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM); + } + + this.j(iblockdata.set(BlockWoodenStep.VARIANT, BlockWood.EnumLogVariant.OAK)); + this.a(CreativeModeTab.b); + } + + public MaterialMapColor g(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).c(); + } + + public Item getDropType(IBlockData iblockdata, Random random, int i) { + return Item.getItemOf(Blocks.WOODEN_SLAB); + } + + public String b(int i) { + return super.a() + "." + BlockWood.EnumLogVariant.a(i).d(); + } + + public IBlockState n() { + return BlockWoodenStep.VARIANT; + } + + public Object a(ItemStack itemstack) { + return BlockWood.EnumLogVariant.a(itemstack.getData() & 7); + } + + public IBlockData fromLegacyData(int i) { + IBlockData iblockdata = this.getBlockData().set(BlockWoodenStep.VARIANT, BlockWood.EnumLogVariant.a(i & 7)); + + if (!this.l()) { + iblockdata = iblockdata.set(BlockWoodenStep.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP); + } + + return iblockdata; + } + + public int toLegacyData(IBlockData iblockdata) { + byte b0 = 0; + int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).a(); + + if (!this.l() && iblockdata.get(BlockWoodenStep.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) { + i |= 8; + } + + return i; + } + + protected BlockStateList getStateList() { + return this.l() ? new BlockStateList(this, new IBlockState[] { BlockWoodenStep.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockWoodenStep.HALF, BlockWoodenStep.VARIANT}); + } + + public int getDropData(IBlockData iblockdata) { + return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java new file mode 100644 index 0000000..dc3ed8a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +public class BlockWorkbench extends Block { + + protected BlockWorkbench() { + super(Material.WOOD); + this.a(CreativeModeTab.c); + } + + public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else { + entityhuman.openTileEntity(new BlockWorkbench.TileEntityContainerWorkbench(world, blockposition)); + entityhuman.b(StatisticList.Z); + return true; + } + } + + public static class TileEntityContainerWorkbench implements ITileEntityContainer { + + private final World a; + private final BlockPosition b; + + public TileEntityContainerWorkbench(World world, BlockPosition blockposition) { + this.a = world; + this.b = blockposition; + } + + public String getName() { + return null; + } + + public boolean hasCustomName() { + return false; + } + + public IChatBaseComponent getScoreboardDisplayName() { + return new ChatMessage(Blocks.CRAFTING_TABLE.a() + ".name", new Object[0]); + } + + public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) { + return new ContainerWorkbench(playerinventory, this.a, this.b); + } + + public String getContainerName() { + return "minecraft:crafting_table"; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java new file mode 100644 index 0000000..50c4009 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public class BlockYellowFlowers extends BlockFlowers { + + public BlockYellowFlowers() {} + + public BlockFlowers.EnumFlowerType l() { + return BlockFlowers.EnumFlowerType.YELLOW; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java b/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java new file mode 100644 index 0000000..58d86bb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java @@ -0,0 +1,412 @@ +package net.minecraft.server; + +public class Blocks { + + public static final Block AIR; + public static final Block STONE; + public static final BlockGrass GRASS; + public static final Block DIRT; + public static final Block COBBLESTONE; + public static final Block PLANKS; + public static final Block SAPLING; + public static final Block BEDROCK; + public static final BlockFlowing FLOWING_WATER; + public static final BlockStationary WATER; + public static final BlockFlowing FLOWING_LAVA; + public static final BlockStationary LAVA; + public static final BlockSand SAND; + public static final Block GRAVEL; + public static final Block GOLD_ORE; + public static final Block IRON_ORE; + public static final Block COAL_ORE; + public static final Block LOG; + public static final Block LOG2; + public static final BlockLeaves LEAVES; + public static final BlockLeaves LEAVES2; + public static final Block SPONGE; + public static final Block GLASS; + public static final Block LAPIS_ORE; + public static final Block LAPIS_BLOCK; + public static final Block DISPENSER; + public static final Block SANDSTONE; + public static final Block NOTEBLOCK; + public static final Block BED; + public static final Block GOLDEN_RAIL; + public static final Block DETECTOR_RAIL; + public static final BlockPiston STICKY_PISTON; + public static final Block WEB; + public static final BlockLongGrass TALLGRASS; + public static final BlockDeadBush DEADBUSH; + public static final BlockPiston PISTON; + public static final BlockPistonExtension PISTON_HEAD; + public static final Block WOOL; + public static final BlockPistonMoving PISTON_EXTENSION; + public static final BlockFlowers YELLOW_FLOWER; + public static final BlockFlowers RED_FLOWER; + public static final BlockPlant BROWN_MUSHROOM; + public static final BlockPlant RED_MUSHROOM; + public static final Block GOLD_BLOCK; + public static final Block IRON_BLOCK; + public static final BlockStepAbstract DOUBLE_STONE_SLAB; + public static final BlockStepAbstract STONE_SLAB; + public static final Block BRICK_BLOCK; + public static final Block TNT; + public static final Block BOOKSHELF; + public static final Block MOSSY_COBBLESTONE; + public static final Block OBSIDIAN; + public static final Block TORCH; + public static final BlockFire FIRE; + public static final Block MOB_SPAWNER; + public static final Block OAK_STAIRS; + public static final BlockChest CHEST; + public static final BlockRedstoneWire REDSTONE_WIRE; + public static final Block DIAMOND_ORE; + public static final Block DIAMOND_BLOCK; + public static final Block CRAFTING_TABLE; + public static final Block WHEAT; + public static final Block FARMLAND; + public static final Block FURNACE; + public static final Block LIT_FURNACE; + public static final Block STANDING_SIGN; + public static final Block WOODEN_DOOR; + public static final Block SPRUCE_DOOR; + public static final Block BIRCH_DOOR; + public static final Block JUNGLE_DOOR; + public static final Block ACACIA_DOOR; + public static final Block DARK_OAK_DOOR; + public static final Block LADDER; + public static final Block RAIL; + public static final Block STONE_STAIRS; + public static final Block WALL_SIGN; + public static final Block LEVER; + public static final Block STONE_PRESSURE_PLATE; + public static final Block IRON_DOOR; + public static final Block WOODEN_PRESSURE_PLATE; + public static final Block REDSTONE_ORE; + public static final Block LIT_REDSTONE_ORE; + public static final Block UNLIT_REDSTONE_TORCH; + public static final Block REDSTONE_TORCH; + public static final Block STONE_BUTTON; + public static final Block SNOW_LAYER; + public static final Block ICE; + public static final Block SNOW; + public static final BlockCactus CACTUS; + public static final Block CLAY; + public static final BlockReed REEDS; + public static final Block JUKEBOX; + public static final Block FENCE; + public static final Block SPRUCE_FENCE; + public static final Block BIRCH_FENCE; + public static final Block JUNGLE_FENCE; + public static final Block DARK_OAK_FENCE; + public static final Block ACACIA_FENCE; + public static final Block PUMPKIN; + public static final Block NETHERRACK; + public static final Block SOUL_SAND; + public static final Block GLOWSTONE; + public static final BlockPortal PORTAL; + public static final Block LIT_PUMPKIN; + public static final Block CAKE; + public static final BlockRepeater UNPOWERED_REPEATER; + public static final BlockRepeater POWERED_REPEATER; + public static final Block TRAPDOOR; + public static final Block MONSTER_EGG; + public static final Block STONEBRICK; + public static final Block BROWN_MUSHROOM_BLOCK; + public static final Block RED_MUSHROOM_BLOCK; + public static final Block IRON_BARS; + public static final Block GLASS_PANE; + public static final Block MELON_BLOCK; + public static final Block PUMPKIN_STEM; + public static final Block MELON_STEM; + public static final Block VINE; + public static final Block FENCE_GATE; + public static final Block SPRUCE_FENCE_GATE; + public static final Block BIRCH_FENCE_GATE; + public static final Block JUNGLE_FENCE_GATE; + public static final Block DARK_OAK_FENCE_GATE; + public static final Block ACACIA_FENCE_GATE; + public static final Block BRICK_STAIRS; + public static final Block STONE_BRICK_STAIRS; + public static final BlockMycel MYCELIUM; + public static final Block WATERLILY; + public static final Block NETHER_BRICK; + public static final Block NETHER_BRICK_FENCE; + public static final Block NETHER_BRICK_STAIRS; + public static final Block NETHER_WART; + public static final Block ENCHANTING_TABLE; + public static final Block BREWING_STAND; + public static final BlockCauldron cauldron; + public static final Block END_PORTAL; + public static final Block END_PORTAL_FRAME; + public static final Block END_STONE; + public static final Block DRAGON_EGG; + public static final Block REDSTONE_LAMP; + public static final Block LIT_REDSTONE_LAMP; + public static final BlockStepAbstract DOUBLE_WOODEN_SLAB; + public static final BlockStepAbstract WOODEN_SLAB; + public static final Block COCOA; + public static final Block SANDSTONE_STAIRS; + public static final Block EMERALD_ORE; + public static final Block ENDER_CHEST; + public static final BlockTripwireHook TRIPWIRE_HOOK; + public static final Block TRIPWIRE; + public static final Block EMERALD_BLOCK; + public static final Block SPRUCE_STAIRS; + public static final Block BIRCH_STAIRS; + public static final Block JUNGLE_STAIRS; + public static final Block COMMAND_BLOCK; + public static final BlockBeacon BEACON; + public static final Block COBBLESTONE_WALL; + public static final Block FLOWER_POT; + public static final Block CARROTS; + public static final Block POTATOES; + public static final Block WOODEN_BUTTON; + public static final BlockSkull SKULL; + public static final Block ANVIL; + public static final Block TRAPPED_CHEST; + public static final Block LIGHT_WEIGHTED_PRESSURE_PLATE; + public static final Block HEAVY_WEIGHTED_PRESSURE_PLATE; + public static final BlockRedstoneComparator UNPOWERED_COMPARATOR; + public static final BlockRedstoneComparator POWERED_COMPARATOR; + public static final BlockDaylightDetector DAYLIGHT_DETECTOR; + public static final BlockDaylightDetector DAYLIGHT_DETECTOR_INVERTED; + public static final Block REDSTONE_BLOCK; + public static final Block QUARTZ_ORE; + public static final BlockHopper HOPPER; + public static final Block QUARTZ_BLOCK; + public static final Block QUARTZ_STAIRS; + public static final Block ACTIVATOR_RAIL; + public static final Block DROPPER; + public static final Block STAINED_HARDENED_CLAY; + public static final Block BARRIER; + public static final Block IRON_TRAPDOOR; + public static final Block HAY_BLOCK; + public static final Block CARPET; + public static final Block HARDENED_CLAY; + public static final Block COAL_BLOCK; + public static final Block PACKED_ICE; + public static final Block ACACIA_STAIRS; + public static final Block DARK_OAK_STAIRS; + public static final Block SLIME; + public static final BlockTallPlant DOUBLE_PLANT; + public static final BlockStainedGlass STAINED_GLASS; + public static final BlockStainedGlassPane STAINED_GLASS_PANE; + public static final Block PRISMARINE; + public static final Block SEA_LANTERN; + public static final Block STANDING_BANNER; + public static final Block WALL_BANNER; + public static final Block RED_SANDSTONE; + public static final Block RED_SANDSTONE_STAIRS; + public static final BlockStepAbstract DOUBLE_STONE_SLAB2; + public static final BlockStepAbstract STONE_SLAB2; + + private static Block get(String s) { + return (Block) Block.REGISTRY.get(new MinecraftKey(s)); + } + + static { + if (!DispenserRegistry.a()) { + throw new RuntimeException("Accessed Blocks before Bootstrap!"); + } else { + AIR = get("air"); + STONE = get("stone"); + GRASS = (BlockGrass) get("grass"); + DIRT = get("dirt"); + COBBLESTONE = get("cobblestone"); + PLANKS = get("planks"); + SAPLING = get("sapling"); + BEDROCK = get("bedrock"); + FLOWING_WATER = (BlockFlowing) get("flowing_water"); + WATER = (BlockStationary) get("water"); + FLOWING_LAVA = (BlockFlowing) get("flowing_lava"); + LAVA = (BlockStationary) get("lava"); + SAND = (BlockSand) get("sand"); + GRAVEL = get("gravel"); + GOLD_ORE = get("gold_ore"); + IRON_ORE = get("iron_ore"); + COAL_ORE = get("coal_ore"); + LOG = get("log"); + LOG2 = get("log2"); + LEAVES = (BlockLeaves) get("leaves"); + LEAVES2 = (BlockLeaves) get("leaves2"); + SPONGE = get("sponge"); + GLASS = get("glass"); + LAPIS_ORE = get("lapis_ore"); + LAPIS_BLOCK = get("lapis_block"); + DISPENSER = get("dispenser"); + SANDSTONE = get("sandstone"); + NOTEBLOCK = get("noteblock"); + BED = get("bed"); + GOLDEN_RAIL = get("golden_rail"); + DETECTOR_RAIL = get("detector_rail"); + STICKY_PISTON = (BlockPiston) get("sticky_piston"); + WEB = get("web"); + TALLGRASS = (BlockLongGrass) get("tallgrass"); + DEADBUSH = (BlockDeadBush) get("deadbush"); + PISTON = (BlockPiston) get("piston"); + PISTON_HEAD = (BlockPistonExtension) get("piston_head"); + WOOL = get("wool"); + PISTON_EXTENSION = (BlockPistonMoving) get("piston_extension"); + YELLOW_FLOWER = (BlockFlowers) get("yellow_flower"); + RED_FLOWER = (BlockFlowers) get("red_flower"); + BROWN_MUSHROOM = (BlockPlant) get("brown_mushroom"); + RED_MUSHROOM = (BlockPlant) get("red_mushroom"); + GOLD_BLOCK = get("gold_block"); + IRON_BLOCK = get("iron_block"); + DOUBLE_STONE_SLAB = (BlockStepAbstract) get("double_stone_slab"); + STONE_SLAB = (BlockStepAbstract) get("stone_slab"); + BRICK_BLOCK = get("brick_block"); + TNT = get("tnt"); + BOOKSHELF = get("bookshelf"); + MOSSY_COBBLESTONE = get("mossy_cobblestone"); + OBSIDIAN = get("obsidian"); + TORCH = get("torch"); + FIRE = (BlockFire) get("fire"); + MOB_SPAWNER = get("mob_spawner"); + OAK_STAIRS = get("oak_stairs"); + CHEST = (BlockChest) get("chest"); + REDSTONE_WIRE = (BlockRedstoneWire) get("redstone_wire"); + DIAMOND_ORE = get("diamond_ore"); + DIAMOND_BLOCK = get("diamond_block"); + CRAFTING_TABLE = get("crafting_table"); + WHEAT = get("wheat"); + FARMLAND = get("farmland"); + FURNACE = get("furnace"); + LIT_FURNACE = get("lit_furnace"); + STANDING_SIGN = get("standing_sign"); + WOODEN_DOOR = get("wooden_door"); + SPRUCE_DOOR = get("spruce_door"); + BIRCH_DOOR = get("birch_door"); + JUNGLE_DOOR = get("jungle_door"); + ACACIA_DOOR = get("acacia_door"); + DARK_OAK_DOOR = get("dark_oak_door"); + LADDER = get("ladder"); + RAIL = get("rail"); + STONE_STAIRS = get("stone_stairs"); + WALL_SIGN = get("wall_sign"); + LEVER = get("lever"); + STONE_PRESSURE_PLATE = get("stone_pressure_plate"); + IRON_DOOR = get("iron_door"); + WOODEN_PRESSURE_PLATE = get("wooden_pressure_plate"); + REDSTONE_ORE = get("redstone_ore"); + LIT_REDSTONE_ORE = get("lit_redstone_ore"); + UNLIT_REDSTONE_TORCH = get("unlit_redstone_torch"); + REDSTONE_TORCH = get("redstone_torch"); + STONE_BUTTON = get("stone_button"); + SNOW_LAYER = get("snow_layer"); + ICE = get("ice"); + SNOW = get("snow"); + CACTUS = (BlockCactus) get("cactus"); + CLAY = get("clay"); + REEDS = (BlockReed) get("reeds"); + JUKEBOX = get("jukebox"); + FENCE = get("fence"); + SPRUCE_FENCE = get("spruce_fence"); + BIRCH_FENCE = get("birch_fence"); + JUNGLE_FENCE = get("jungle_fence"); + DARK_OAK_FENCE = get("dark_oak_fence"); + ACACIA_FENCE = get("acacia_fence"); + PUMPKIN = get("pumpkin"); + NETHERRACK = get("netherrack"); + SOUL_SAND = get("soul_sand"); + GLOWSTONE = get("glowstone"); + PORTAL = (BlockPortal) get("portal"); + LIT_PUMPKIN = get("lit_pumpkin"); + CAKE = get("cake"); + UNPOWERED_REPEATER = (BlockRepeater) get("unpowered_repeater"); + POWERED_REPEATER = (BlockRepeater) get("powered_repeater"); + TRAPDOOR = get("trapdoor"); + MONSTER_EGG = get("monster_egg"); + STONEBRICK = get("stonebrick"); + BROWN_MUSHROOM_BLOCK = get("brown_mushroom_block"); + RED_MUSHROOM_BLOCK = get("red_mushroom_block"); + IRON_BARS = get("iron_bars"); + GLASS_PANE = get("glass_pane"); + MELON_BLOCK = get("melon_block"); + PUMPKIN_STEM = get("pumpkin_stem"); + MELON_STEM = get("melon_stem"); + VINE = get("vine"); + FENCE_GATE = get("fence_gate"); + SPRUCE_FENCE_GATE = get("spruce_fence_gate"); + BIRCH_FENCE_GATE = get("birch_fence_gate"); + JUNGLE_FENCE_GATE = get("jungle_fence_gate"); + DARK_OAK_FENCE_GATE = get("dark_oak_fence_gate"); + ACACIA_FENCE_GATE = get("acacia_fence_gate"); + BRICK_STAIRS = get("brick_stairs"); + STONE_BRICK_STAIRS = get("stone_brick_stairs"); + MYCELIUM = (BlockMycel) get("mycelium"); + WATERLILY = get("waterlily"); + NETHER_BRICK = get("nether_brick"); + NETHER_BRICK_FENCE = get("nether_brick_fence"); + NETHER_BRICK_STAIRS = get("nether_brick_stairs"); + NETHER_WART = get("nether_wart"); + ENCHANTING_TABLE = get("enchanting_table"); + BREWING_STAND = get("brewing_stand"); + cauldron = (BlockCauldron) get("cauldron"); + END_PORTAL = get("end_portal"); + END_PORTAL_FRAME = get("end_portal_frame"); + END_STONE = get("end_stone"); + DRAGON_EGG = get("dragon_egg"); + REDSTONE_LAMP = get("redstone_lamp"); + LIT_REDSTONE_LAMP = get("lit_redstone_lamp"); + DOUBLE_WOODEN_SLAB = (BlockStepAbstract) get("double_wooden_slab"); + WOODEN_SLAB = (BlockStepAbstract) get("wooden_slab"); + COCOA = get("cocoa"); + SANDSTONE_STAIRS = get("sandstone_stairs"); + EMERALD_ORE = get("emerald_ore"); + ENDER_CHEST = get("ender_chest"); + TRIPWIRE_HOOK = (BlockTripwireHook) get("tripwire_hook"); + TRIPWIRE = get("tripwire"); + EMERALD_BLOCK = get("emerald_block"); + SPRUCE_STAIRS = get("spruce_stairs"); + BIRCH_STAIRS = get("birch_stairs"); + JUNGLE_STAIRS = get("jungle_stairs"); + COMMAND_BLOCK = get("command_block"); + BEACON = (BlockBeacon) get("beacon"); + COBBLESTONE_WALL = get("cobblestone_wall"); + FLOWER_POT = get("flower_pot"); + CARROTS = get("carrots"); + POTATOES = get("potatoes"); + WOODEN_BUTTON = get("wooden_button"); + SKULL = (BlockSkull) get("skull"); + ANVIL = get("anvil"); + TRAPPED_CHEST = get("trapped_chest"); + LIGHT_WEIGHTED_PRESSURE_PLATE = get("light_weighted_pressure_plate"); + HEAVY_WEIGHTED_PRESSURE_PLATE = get("heavy_weighted_pressure_plate"); + UNPOWERED_COMPARATOR = (BlockRedstoneComparator) get("unpowered_comparator"); + POWERED_COMPARATOR = (BlockRedstoneComparator) get("powered_comparator"); + DAYLIGHT_DETECTOR = (BlockDaylightDetector) get("daylight_detector"); + DAYLIGHT_DETECTOR_INVERTED = (BlockDaylightDetector) get("daylight_detector_inverted"); + REDSTONE_BLOCK = get("redstone_block"); + QUARTZ_ORE = get("quartz_ore"); + HOPPER = (BlockHopper) get("hopper"); + QUARTZ_BLOCK = get("quartz_block"); + QUARTZ_STAIRS = get("quartz_stairs"); + ACTIVATOR_RAIL = get("activator_rail"); + DROPPER = get("dropper"); + STAINED_HARDENED_CLAY = get("stained_hardened_clay"); + BARRIER = get("barrier"); + IRON_TRAPDOOR = get("iron_trapdoor"); + HAY_BLOCK = get("hay_block"); + CARPET = get("carpet"); + HARDENED_CLAY = get("hardened_clay"); + COAL_BLOCK = get("coal_block"); + PACKED_ICE = get("packed_ice"); + ACACIA_STAIRS = get("acacia_stairs"); + DARK_OAK_STAIRS = get("dark_oak_stairs"); + SLIME = get("slime"); + DOUBLE_PLANT = (BlockTallPlant) get("double_plant"); + STAINED_GLASS = (BlockStainedGlass) get("stained_glass"); + STAINED_GLASS_PANE = (BlockStainedGlassPane) get("stained_glass_pane"); + PRISMARINE = get("prismarine"); + SEA_LANTERN = get("sea_lantern"); + STANDING_BANNER = get("standing_banner"); + WALL_BANNER = get("wall_banner"); + RED_SANDSTONE = get("red_sandstone"); + RED_SANDSTONE_STAIRS = get("red_sandstone_stairs"); + DOUBLE_STONE_SLAB2 = (BlockStepAbstract) get("double_stone_slab2"); + STONE_SLAB2 = (BlockStepAbstract) get("stone_slab2"); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java b/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java new file mode 100644 index 0000000..63b7db3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public final class CancelledPacketHandleException extends RuntimeException { + + public static final CancelledPacketHandleException INSTANCE = new CancelledPacketHandleException(); + + private CancelledPacketHandleException() { + this.setStackTrace(new StackTraceElement[0]); + } + + public synchronized Throwable fillInStackTrace() { + this.setStackTrace(new StackTraceElement[0]); + return this; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java new file mode 100644 index 0000000..d319fa3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java @@ -0,0 +1,96 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Map; + +public class ChatClickable { + + private final ChatClickable.EnumClickAction a; + private final String b; + + public ChatClickable(ChatClickable.EnumClickAction chatclickable_enumclickaction, String s) { + this.a = chatclickable_enumclickaction; + this.b = s; + } + + public ChatClickable.EnumClickAction a() { + return this.a; + } + + public String b() { + return this.b; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (object != null && this.getClass() == object.getClass()) { + ChatClickable chatclickable = (ChatClickable) object; + + if (this.a != chatclickable.a) { + return false; + } else { + if (this.b != null) { + if (!this.b.equals(chatclickable.b)) { + return false; + } + } else if (chatclickable.b != null) { + return false; + } + + return true; + } + } else { + return false; + } + } + + public String toString() { + return "ClickEvent{action=" + this.a + ", value=\'" + this.b + '\'' + '}'; + } + + public int hashCode() { + int i = this.a.hashCode(); + + i = 31 * i + (this.b != null ? this.b.hashCode() : 0); + return i; + } + + public static enum EnumClickAction { + + OPEN_URL("open_url", true), OPEN_FILE("open_file", false), RUN_COMMAND("run_command", true), TWITCH_USER_INFO("twitch_user_info", false), SUGGEST_COMMAND("suggest_command", true), CHANGE_PAGE("change_page", true); + + private static final Map g = Maps.newHashMap(); + private final boolean h; + private final String i; + + private EnumClickAction(String s, boolean flag) { + this.i = s; + this.h = flag; + } + + public boolean a() { + return this.h; + } + + public String b() { + return this.i; + } + + public static ChatClickable.EnumClickAction a(String s) { + return (ChatClickable.EnumClickAction) ChatClickable.EnumClickAction.g.get(s); + } + + static { + ChatClickable.EnumClickAction[] achatclickable_enumclickaction = values(); + int i = achatclickable_enumclickaction.length; + + for (int j = 0; j < i; ++j) { + ChatClickable.EnumClickAction chatclickable_enumclickaction = achatclickable_enumclickaction[j]; + + ChatClickable.EnumClickAction.g.put(chatclickable_enumclickaction.b(), chatclickable_enumclickaction); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java new file mode 100644 index 0000000..26f903d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java @@ -0,0 +1,82 @@ +package net.minecraft.server; + +import java.util.Iterator; + +public class ChatComponentScore extends ChatBaseComponent { + + private final String b; + private final String c; + private String d = ""; + + public ChatComponentScore(String s, String s1) { + this.b = s; + this.c = s1; + } + + public String g() { + return this.b; + } + + public String h() { + return this.c; + } + + public void b(String s) { + this.d = s; + } + + public String getText() { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + + if (minecraftserver != null && minecraftserver.O() && UtilColor.b(this.d)) { + Scoreboard scoreboard = minecraftserver.getWorldServer(0).getScoreboard(); + ScoreboardObjective scoreboardobjective = scoreboard.getObjective(this.c); + + if (scoreboard.b(this.b, scoreboardobjective)) { + ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(this.b, scoreboardobjective); + + this.b(String.format("%d", new Object[] { Integer.valueOf(scoreboardscore.getScore())})); + } else { + this.d = ""; + } + } + + return this.d; + } + + public ChatComponentScore i() { + ChatComponentScore chatcomponentscore = new ChatComponentScore(this.b, this.c); + + chatcomponentscore.b(this.d); + chatcomponentscore.setChatModifier(this.getChatModifier().clone()); + Iterator iterator = this.a().iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + chatcomponentscore.addSibling(ichatbasecomponent.f()); + } + + return chatcomponentscore; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof ChatComponentScore)) { + return false; + } else { + ChatComponentScore chatcomponentscore = (ChatComponentScore) object; + + return this.b.equals(chatcomponentscore.b) && this.c.equals(chatcomponentscore.c) && super.equals(object); + } + } + + public String toString() { + return "ScoreComponent{name=\'" + this.b + '\'' + "objective=\'" + this.c + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}'; + } + + public IChatBaseComponent f() { + return this.i(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java new file mode 100644 index 0000000..2acccbe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java @@ -0,0 +1,55 @@ +package net.minecraft.server; + +import java.util.Iterator; + +public class ChatComponentSelector extends ChatBaseComponent { + + private final String b; + + public ChatComponentSelector(String s) { + this.b = s; + } + + public String g() { + return this.b; + } + + public String getText() { + return this.b; + } + + public ChatComponentSelector h() { + ChatComponentSelector chatcomponentselector = new ChatComponentSelector(this.b); + + chatcomponentselector.setChatModifier(this.getChatModifier().clone()); + Iterator iterator = this.a().iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + chatcomponentselector.addSibling(ichatbasecomponent.f()); + } + + return chatcomponentselector; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof ChatComponentSelector)) { + return false; + } else { + ChatComponentSelector chatcomponentselector = (ChatComponentSelector) object; + + return this.b.equals(chatcomponentselector.b) && super.equals(object); + } + } + + public String toString() { + return "SelectorComponent{pattern=\'" + this.b + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}'; + } + + public IChatBaseComponent f() { + return this.h(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java new file mode 100644 index 0000000..42cb342 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java @@ -0,0 +1,55 @@ +package net.minecraft.server; + +import java.util.Iterator; + +public class ChatComponentText extends ChatBaseComponent { + + private final String b; + + public ChatComponentText(String s) { + this.b = s; + } + + public String g() { + return this.b; + } + + public String getText() { + return this.b; + } + + public ChatComponentText h() { + ChatComponentText chatcomponenttext = new ChatComponentText(this.b); + + chatcomponenttext.setChatModifier(this.getChatModifier().clone()); + Iterator iterator = this.a().iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + chatcomponenttext.addSibling(ichatbasecomponent.f()); + } + + return chatcomponenttext; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof ChatComponentText)) { + return false; + } else { + ChatComponentText chatcomponenttext = (ChatComponentText) object; + + return this.b.equals(chatcomponenttext.g()) && super.equals(object); + } + } + + public String toString() { + return "TextComponent{text=\'" + this.b + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}'; + } + + public IChatBaseComponent f() { + return this.h(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java new file mode 100644 index 0000000..941a604 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java @@ -0,0 +1,70 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; + +public class ChatComponentUtils { + + public static IChatBaseComponent filterForDisplay(ICommandListener icommandlistener, IChatBaseComponent ichatbasecomponent, Entity entity) throws CommandException { + Object object = null; + + if (ichatbasecomponent instanceof ChatComponentScore) { + ChatComponentScore chatcomponentscore = (ChatComponentScore) ichatbasecomponent; + String s = chatcomponentscore.g(); + + if (PlayerSelector.isPattern(s)) { + List list = PlayerSelector.getPlayers(icommandlistener, s, Entity.class); + + if (list.size() != 1) { + throw new ExceptionEntityNotFound(); + } + + s = ((Entity) list.get(0)).getName(); + } + + object = entity != null && s.equals("*") ? new ChatComponentScore(entity.getName(), chatcomponentscore.h()) : new ChatComponentScore(s, chatcomponentscore.h()); + ((ChatComponentScore) object).b(chatcomponentscore.getText()); + } else if (ichatbasecomponent instanceof ChatComponentSelector) { + String s1 = ((ChatComponentSelector) ichatbasecomponent).g(); + + object = PlayerSelector.getPlayerNames(icommandlistener, s1); + if (object == null) { + object = new ChatComponentText(""); + } + } else if (ichatbasecomponent instanceof ChatComponentText) { + object = new ChatComponentText(((ChatComponentText) ichatbasecomponent).g()); + } else { + if (!(ichatbasecomponent instanceof ChatMessage)) { + return ichatbasecomponent; + } + + Object[] aobject = ((ChatMessage) ichatbasecomponent).j(); + + for (int i = 0; i < aobject.length; ++i) { + Object object1 = aobject[i]; + + if (object1 instanceof IChatBaseComponent) { + aobject[i] = filterForDisplay(icommandlistener, (IChatBaseComponent) object1, entity); + } + } + + object = new ChatMessage(((ChatMessage) ichatbasecomponent).i(), aobject); + } + + ChatModifier chatmodifier = ichatbasecomponent.getChatModifier(); + + if (chatmodifier != null) { + ((IChatBaseComponent) object).setChatModifier(chatmodifier.clone()); + } + + Iterator iterator = ichatbasecomponent.a().iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent1 = (IChatBaseComponent) iterator.next(); + + ((IChatBaseComponent) object).addSibling(filterForDisplay(icommandlistener, ichatbasecomponent1, entity)); + } + + return (IChatBaseComponent) object; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java new file mode 100644 index 0000000..4d679ea --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java @@ -0,0 +1,131 @@ +package net.minecraft.server; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSyntaxException; +import org.apache.commons.lang3.StringUtils; + +public class ChatDeserializer { + + public static boolean d(JsonObject jsonobject, String s) { + return !g(jsonobject, s) ? false : jsonobject.get(s).isJsonArray(); + } + + public static boolean g(JsonObject jsonobject, String s) { + return jsonobject == null ? false : jsonobject.get(s) != null; + } + + public static String a(JsonElement jsonelement, String s) { + if (jsonelement.isJsonPrimitive()) { + return jsonelement.getAsString(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a string, was " + d(jsonelement)); + } + } + + public static String h(JsonObject jsonobject, String s) { + if (jsonobject.has(s)) { + return a(jsonobject.get(s), s); + } else { + throw new JsonSyntaxException("Missing " + s + ", expected to find a string"); + } + } + + public static boolean b(JsonElement jsonelement, String s) { + if (jsonelement.isJsonPrimitive()) { + return jsonelement.getAsBoolean(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a Boolean, was " + d(jsonelement)); + } + } + + public static boolean a(JsonObject jsonobject, String s, boolean flag) { + return jsonobject.has(s) ? b(jsonobject.get(s), s) : flag; + } + + public static float d(JsonElement jsonelement, String s) { + if (jsonelement.isJsonPrimitive() && jsonelement.getAsJsonPrimitive().isNumber()) { + return jsonelement.getAsFloat(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a Float, was " + d(jsonelement)); + } + } + + public static float a(JsonObject jsonobject, String s, float f) { + return jsonobject.has(s) ? d(jsonobject.get(s), s) : f; + } + + public static int f(JsonElement jsonelement, String s) { + if (jsonelement.isJsonPrimitive() && jsonelement.getAsJsonPrimitive().isNumber()) { + return jsonelement.getAsInt(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a Int, was " + d(jsonelement)); + } + } + + public static int m(JsonObject jsonobject, String s) { + if (jsonobject.has(s)) { + return f(jsonobject.get(s), s); + } else { + throw new JsonSyntaxException("Missing " + s + ", expected to find a Int"); + } + } + + public static int a(JsonObject jsonobject, String s, int i) { + return jsonobject.has(s) ? f(jsonobject.get(s), s) : i; + } + + public static JsonObject l(JsonElement jsonelement, String s) { + if (jsonelement.isJsonObject()) { + return jsonelement.getAsJsonObject(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a JsonObject, was " + d(jsonelement)); + } + } + + public static JsonArray m(JsonElement jsonelement, String s) { + if (jsonelement.isJsonArray()) { + return jsonelement.getAsJsonArray(); + } else { + throw new JsonSyntaxException("Expected " + s + " to be a JsonArray, was " + d(jsonelement)); + } + } + + public static JsonArray t(JsonObject jsonobject, String s) { + if (jsonobject.has(s)) { + return m(jsonobject.get(s), s); + } else { + throw new JsonSyntaxException("Missing " + s + ", expected to find a JsonArray"); + } + } + + public static String d(JsonElement jsonelement) { + String s = StringUtils.abbreviateMiddle(String.valueOf(jsonelement), "...", 10); + + if (jsonelement == null) { + return "null (missing)"; + } else if (jsonelement.isJsonNull()) { + return "null (json)"; + } else if (jsonelement.isJsonArray()) { + return "an array (" + s + ")"; + } else if (jsonelement.isJsonObject()) { + return "an object (" + s + ")"; + } else { + if (jsonelement.isJsonPrimitive()) { + JsonPrimitive jsonprimitive = jsonelement.getAsJsonPrimitive(); + + if (jsonprimitive.isNumber()) { + return "a number (" + s + ")"; + } + + if (jsonprimitive.isBoolean()) { + return "a boolean (" + s + ")"; + } + } + + return s; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java new file mode 100644 index 0000000..6c13f31 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java @@ -0,0 +1,96 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Map; + +public class ChatHoverable { + + private final ChatHoverable.EnumHoverAction a; + private final IChatBaseComponent b; + + public ChatHoverable(ChatHoverable.EnumHoverAction chathoverable_enumhoveraction, IChatBaseComponent ichatbasecomponent) { + this.a = chathoverable_enumhoveraction; + this.b = ichatbasecomponent; + } + + public ChatHoverable.EnumHoverAction a() { + return this.a; + } + + public IChatBaseComponent b() { + return this.b; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (object != null && this.getClass() == object.getClass()) { + ChatHoverable chathoverable = (ChatHoverable) object; + + if (this.a != chathoverable.a) { + return false; + } else { + if (this.b != null) { + if (!this.b.equals(chathoverable.b)) { + return false; + } + } else if (chathoverable.b != null) { + return false; + } + + return true; + } + } else { + return false; + } + } + + public String toString() { + return "HoverEvent{action=" + this.a + ", value=\'" + this.b + '\'' + '}'; + } + + public int hashCode() { + int i = this.a.hashCode(); + + i = 31 * i + (this.b != null ? this.b.hashCode() : 0); + return i; + } + + public static enum EnumHoverAction { + + SHOW_TEXT("show_text", true), SHOW_ACHIEVEMENT("show_achievement", true), SHOW_ITEM("show_item", true), SHOW_ENTITY("show_entity", true); + + private static final Map e = Maps.newHashMap(); + private final boolean f; + private final String g; + + private EnumHoverAction(String s, boolean flag) { + this.g = s; + this.f = flag; + } + + public boolean a() { + return this.f; + } + + public String b() { + return this.g; + } + + public static ChatHoverable.EnumHoverAction a(String s) { + return (ChatHoverable.EnumHoverAction) ChatHoverable.EnumHoverAction.e.get(s); + } + + static { + ChatHoverable.EnumHoverAction[] achathoverable_enumhoveraction = values(); + int i = achathoverable_enumhoveraction.length; + + for (int j = 0; j < i; ++j) { + ChatHoverable.EnumHoverAction chathoverable_enumhoveraction = achathoverable_enumhoveraction[j]; + + ChatHoverable.EnumHoverAction.e.put(chathoverable_enumhoveraction.b(), chathoverable_enumhoveraction); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java new file mode 100644 index 0000000..6b6936f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java @@ -0,0 +1,242 @@ +package net.minecraft.server; + +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import java.util.Arrays; +import java.util.IllegalFormatException; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ChatMessage extends ChatBaseComponent { + + private final String d; + private final Object[] e; + private final Object f = new Object(); + private long g = -1L; + List b = Lists.newArrayList(); + public static final Pattern c = Pattern.compile("%(?:(\\d+)\\$)?([A-Za-z%]|$)"); + + public ChatMessage(String s, Object... aobject) { + this.d = s; + this.e = aobject; + Object[] aobject1 = aobject; + int i = aobject.length; + + for (int j = 0; j < i; ++j) { + Object object = aobject1[j]; + + if (object instanceof IChatBaseComponent) { + ((IChatBaseComponent) object).getChatModifier().setChatModifier(this.getChatModifier()); + } + } + + } + + synchronized void g() { + Object object = this.f; + + synchronized (this.f) { + long i = LocaleI18n.a(); + + if (i == this.g) { + return; + } + + this.g = i; + this.b.clear(); + } + + try { + this.b(LocaleI18n.get(this.d)); + } catch (ChatMessageException chatmessageexception) { + this.b.clear(); + + try { + this.b(LocaleI18n.b(this.d)); + } catch (ChatMessageException chatmessageexception1) { + throw chatmessageexception; + } + } + + } + + protected void b(String s) { + boolean flag = false; + Matcher matcher = ChatMessage.c.matcher(s); + int i = 0; + int j = 0; + + try { + int k; + + for (; matcher.find(j); j = k) { + int l = matcher.start(); + + k = matcher.end(); + if (l > j) { + ChatComponentText chatcomponenttext = new ChatComponentText(String.format(s.substring(j, l), new Object[0])); + + chatcomponenttext.getChatModifier().setChatModifier(this.getChatModifier()); + this.b.add(chatcomponenttext); + } + + String s1 = matcher.group(2); + String s2 = s.substring(l, k); + + if ("%".equals(s1) && "%%".equals(s2)) { + ChatComponentText chatcomponenttext1 = new ChatComponentText("%"); + + chatcomponenttext1.getChatModifier().setChatModifier(this.getChatModifier()); + this.b.add(chatcomponenttext1); + } else { + if (!"s".equals(s1)) { + throw new ChatMessageException(this, "Unsupported format: \'" + s2 + "\'"); + } + + String s3 = matcher.group(1); + int i1 = s3 != null ? Integer.parseInt(s3) - 1 : i++; + + if (i1 < this.e.length) { + this.b.add(this.a(i1)); + } + } + } + + if (j < s.length()) { + ChatComponentText chatcomponenttext2 = new ChatComponentText(String.format(s.substring(j), new Object[0])); + + chatcomponenttext2.getChatModifier().setChatModifier(this.getChatModifier()); + this.b.add(chatcomponenttext2); + } + + } catch (IllegalFormatException illegalformatexception) { + throw new ChatMessageException(this, illegalformatexception); + } + } + + private IChatBaseComponent a(int i) { + if (i >= this.e.length) { + throw new ChatMessageException(this, i); + } else { + Object object = this.e[i]; + Object object1; + + if (object instanceof IChatBaseComponent) { + object1 = (IChatBaseComponent) object; + } else { + object1 = new ChatComponentText(object == null ? "null" : object.toString()); + ((IChatBaseComponent) object1).getChatModifier().setChatModifier(this.getChatModifier()); + } + + return (IChatBaseComponent) object1; + } + } + + public IChatBaseComponent setChatModifier(ChatModifier chatmodifier) { + super.setChatModifier(chatmodifier); + Object[] aobject = this.e; + int i = aobject.length; + + for (int j = 0; j < i; ++j) { + Object object = aobject[j]; + + if (object instanceof IChatBaseComponent) { + ((IChatBaseComponent) object).getChatModifier().setChatModifier(this.getChatModifier()); + } + } + + if (this.g > -1L) { + Iterator iterator = this.b.iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + ichatbasecomponent.getChatModifier().setChatModifier(chatmodifier); + } + } + + return this; + } + + public Iterator iterator() { + this.g(); + return Iterators.concat(a((Iterable) this.b), a((Iterable) this.a)); + } + + public String getText() { + this.g(); + StringBuilder stringbuilder = new StringBuilder(); + Iterator iterator = this.b.iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + stringbuilder.append(ichatbasecomponent.getText()); + } + + return stringbuilder.toString(); + } + + public ChatMessage h() { + Object[] aobject = new Object[this.e.length]; + + for (int i = 0; i < this.e.length; ++i) { + if (this.e[i] instanceof IChatBaseComponent) { + aobject[i] = ((IChatBaseComponent) this.e[i]).f(); + } else { + aobject[i] = this.e[i]; + } + } + + ChatMessage chatmessage = new ChatMessage(this.d, aobject); + + chatmessage.setChatModifier(this.getChatModifier().clone()); + Iterator iterator = this.a().iterator(); + + while (iterator.hasNext()) { + IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next(); + + chatmessage.addSibling(ichatbasecomponent.f()); + } + + return chatmessage; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof ChatMessage)) { + return false; + } else { + ChatMessage chatmessage = (ChatMessage) object; + + return Arrays.equals(this.e, chatmessage.e) && this.d.equals(chatmessage.d) && super.equals(object); + } + } + + public int hashCode() { + int i = super.hashCode(); + + i = 31 * i + this.d.hashCode(); + i = 31 * i + Arrays.hashCode(this.e); + return i; + } + + public String toString() { + return "TranslatableComponent{key=\'" + this.d + '\'' + ", args=" + Arrays.toString(this.e) + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}'; + } + + public String i() { + return this.d; + } + + public Object[] j() { + return this.e; + } + + public IChatBaseComponent f() { + return this.h(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java new file mode 100644 index 0000000..65a5225 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class ChatMessageException extends IllegalArgumentException { + + public ChatMessageException(ChatMessage chatmessage, String s) { + super(String.format("Error parsing: %s: %s", new Object[] { chatmessage, s})); + } + + public ChatMessageException(ChatMessage chatmessage, int i) { + super(String.format("Invalid index %d requested for %s", new Object[] { Integer.valueOf(i), chatmessage})); + } + + public ChatMessageException(ChatMessage chatmessage, Throwable throwable) { + super(String.format("Error while parsing: %s", new Object[] { chatmessage}), throwable); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java new file mode 100644 index 0000000..2f2dbcd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.HashMap; +import java.util.Locale; + +public class ChatTypeAdapterFactory implements TypeAdapterFactory { + + public ChatTypeAdapterFactory() {} + + public TypeAdapter create(Gson gson, TypeToken typetoken) { + Class oclass = typetoken.getRawType(); + + if (!oclass.isEnum()) { + return null; + } else { + final HashMap hashmap = Maps.newHashMap(); + Object[] aobject = oclass.getEnumConstants(); + int i = aobject.length; + + for (int j = 0; j < i; ++j) { + Object object = aobject[j]; + + hashmap.put(this.a(object), (T) object); + } + + return new TypeAdapter() { + public void write(JsonWriter jsonwriter, T t0) throws IOException { + if (t0 == null) { + jsonwriter.nullValue(); + } else { + jsonwriter.value(ChatTypeAdapterFactory.this.a(t0)); + } + + } + + public T read(JsonReader jsonreader) throws IOException { + if (jsonreader.peek() == JsonToken.NULL) { + jsonreader.nextNull(); + return null; + } else { + return hashmap.get(jsonreader.nextString()); + } + } + }; + } + } + + private String a(Object object) { + return object instanceof Enum ? ((Enum) object).name().toLowerCase(Locale.US) : object.toString().toLowerCase(Locale.US); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java new file mode 100644 index 0000000..cfee9f0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +public class ChestLock { + + public static final ChestLock a = new ChestLock(""); + private final String b; + + public ChestLock(String s) { + this.b = s; + } + + public boolean a() { + return this.b == null || this.b.isEmpty(); + } + + public String b() { + return this.b; + } + + public void a(NBTTagCompound nbttagcompound) { + nbttagcompound.setString("Lock", this.b); + } + + public static ChestLock b(NBTTagCompound nbttagcompound) { + if (nbttagcompound.hasKeyOfType("Lock", 8)) { + String s = nbttagcompound.getString("Lock"); + + return new ChestLock(s); + } else { + return ChestLock.a; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java b/eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java similarity index 99% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java index 7d12ba3..0f79fef 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java @@ -145,6 +145,8 @@ public class Chunk { } // CraftBukkit end + private final ChunkCoordIntPair chunkCoords; // PandaSpigot + public Chunk(World world, int i, int j) { this.sections = new ChunkSection[16]; this.e = new byte[256]; @@ -171,6 +173,7 @@ public class Chunk { if (!(this instanceof EmptyChunk)) { this.bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this); } + this.chunkCoords = new ChunkCoordIntPair(this.locX, this.locZ); // PandaSpigot } public org.bukkit.Chunk bukkitChunk; @@ -1214,7 +1217,7 @@ public class Chunk { } public ChunkCoordIntPair j() { - return new ChunkCoordIntPair(this.locX, this.locZ); + return this.chunkCoords; // PandaSpigot } public boolean c(int i, int j) { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java new file mode 100644 index 0000000..45d385d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public class ChunkCache implements IBlockAccess { + + protected int a; + protected int b; + protected Chunk[][] c; + protected boolean d; + protected World e; + + public ChunkCache(World world, BlockPosition blockposition, BlockPosition blockposition1, int i) { + this.e = world; + this.a = blockposition.getX() - i >> 4; + this.b = blockposition.getZ() - i >> 4; + int j = blockposition1.getX() + i >> 4; + int k = blockposition1.getZ() + i >> 4; + + this.c = new Chunk[j - this.a + 1][k - this.b + 1]; + this.d = true; + + int l; + int i1; + + for (l = this.a; l <= j; ++l) { + for (i1 = this.b; i1 <= k; ++i1) { + this.c[l - this.a][i1 - this.b] = world.getChunkAt(l, i1); + } + } + + for (l = blockposition.getX() >> 4; l <= blockposition1.getX() >> 4; ++l) { + for (i1 = blockposition.getZ() >> 4; i1 <= blockposition1.getZ() >> 4; ++i1) { + Chunk chunk = this.c[l - this.a][i1 - this.b]; + + if (chunk != null && !chunk.c(blockposition.getY(), blockposition1.getY())) { + this.d = false; + } + } + } + + } + + public TileEntity getTileEntity(BlockPosition blockposition) { + int i = (blockposition.getX() >> 4) - this.a; + int j = (blockposition.getZ() >> 4) - this.b; + + return this.c[i][j].a(blockposition, Chunk.EnumTileEntityState.IMMEDIATE); + } + + public IBlockData getType(BlockPosition blockposition) { + if (blockposition.getY() >= 0 && blockposition.getY() < 256) { + int i = (blockposition.getX() >> 4) - this.a; + int j = (blockposition.getZ() >> 4) - this.b; + + if (i >= 0 && i < this.c.length && j >= 0 && j < this.c[i].length) { + Chunk chunk = this.c[i][j]; + + if (chunk != null) { + return chunk.getBlockData(blockposition); + } + } + } + + return Blocks.AIR.getBlockData(); + } + + public boolean isEmpty(BlockPosition blockposition) { + return this.getType(blockposition).getBlock().getMaterial() == Material.AIR; + } + + public int getBlockPower(BlockPosition blockposition, EnumDirection enumdirection) { + IBlockData iblockdata = this.getType(blockposition); + + return iblockdata.getBlock().b((IBlockAccess) this, blockposition, iblockdata, enumdirection); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java new file mode 100644 index 0000000..652c079 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java @@ -0,0 +1,71 @@ +package net.minecraft.server; + +public class ChunkCoordIntPair { + + public final int x; + public final int z; + + public ChunkCoordIntPair(int i, int j) { + this.x = i; + this.z = j; + } + + public static long a(int i, int j) { + return (long) i & 4294967295L | ((long) j & 4294967295L) << 32; + } + + public int hashCode() { + int i = 1664525 * this.x + 1013904223; + int j = 1664525 * (this.z ^ -559038737) + 1013904223; + + return i ^ j; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof ChunkCoordIntPair)) { + return false; + } else { + ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) object; + + return this.x == chunkcoordintpair.x && this.z == chunkcoordintpair.z; + } + } + + public int a() { + return (this.x << 4) + 8; + } + + public int b() { + return (this.z << 4) + 8; + } + + public int c() { + return this.x << 4; + } + + public int d() { + return this.z << 4; + } + + public int e() { + return (this.x << 4) + 15; + } + + public int f() { + return (this.z << 4) + 15; + } + + public BlockPosition a(int i, int j, int k) { + return new BlockPosition((this.x << 4) + i, j, (this.z << 4) + k); + } + + public BlockPosition a(int i) { + return new BlockPosition(this.a(), i, this.b()); + } + + public String toString() { + return "[" + this.x + ", " + this.z + "]"; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java new file mode 100644 index 0000000..c6230ab --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java @@ -0,0 +1,129 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; + +public class ChunkProviderDebug implements IChunkProvider { + + private static final List a = Lists.newArrayList(); + private static final int b; + private static final int c; + private final World d; + + public ChunkProviderDebug(World world) { + this.d = world; + } + + public Chunk getOrCreateChunk(int i, int j) { + ChunkSnapshot chunksnapshot = new ChunkSnapshot(); + + int k; + + for (int l = 0; l < 16; ++l) { + for (int i1 = 0; i1 < 16; ++i1) { + int j1 = i * 16 + l; + + k = j * 16 + i1; + chunksnapshot.a(l, 60, i1, Blocks.BARRIER.getBlockData()); + IBlockData iblockdata = b(j1, k); + + if (iblockdata != null) { + chunksnapshot.a(l, 70, i1, iblockdata); + } + } + } + + Chunk chunk = new Chunk(this.d, chunksnapshot, i, j); + + chunk.initLighting(); + BiomeBase[] abiomebase = this.d.getWorldChunkManager().getBiomeBlock((BiomeBase[]) null, i * 16, j * 16, 16, 16); + byte[] abyte = chunk.getBiomeIndex(); + + for (k = 0; k < abyte.length; ++k) { + abyte[k] = (byte) abiomebase[k].id; + } + + chunk.initLighting(); + return chunk; + } + + public static IBlockData b(int i, int j) { + IBlockData iblockdata = null; + + if (i > 0 && j > 0 && i % 2 != 0 && j % 2 != 0) { + i /= 2; + j /= 2; + if (i <= ChunkProviderDebug.b && j <= ChunkProviderDebug.c) { + int k = MathHelper.a(i * ChunkProviderDebug.b + j); + + if (k < ChunkProviderDebug.a.size()) { + iblockdata = (IBlockData) ChunkProviderDebug.a.get(k); + } + } + } + + return iblockdata; + } + + public boolean isChunkLoaded(int i, int j) { + return true; + } + + public void getChunkAt(IChunkProvider ichunkprovider, int i, int j) {} + + public boolean a(IChunkProvider ichunkprovider, Chunk chunk, int i, int j) { + return false; + } + + public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) { + return true; + } + + public void c() {} + + public boolean unloadChunks() { + return false; + } + + public boolean canSave() { + return true; + } + + public String getName() { + return "DebugLevelSource"; + } + + public List getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition) { + BiomeBase biomebase = this.d.getBiome(blockposition); + + return biomebase.getMobs(enumcreaturetype); + } + + public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockposition) { + return null; + } + + public int getLoadedChunks() { + return 0; + } + + public void recreateStructures(Chunk chunk, int i, int j) {} + + public Chunk getChunkAt(BlockPosition blockposition) { + return this.getOrCreateChunk(blockposition.getX() >> 4, blockposition.getZ() >> 4); + } + + static { + Iterator iterator = Block.REGISTRY.iterator(); + + while (iterator.hasNext()) { + Block block = (Block) iterator.next(); + + ChunkProviderDebug.a.addAll(block.P().a()); + } + + b = MathHelper.f(MathHelper.c((float) ChunkProviderDebug.a.size())); + c = MathHelper.f((float) ChunkProviderDebug.a.size() / (float) ChunkProviderDebug.b); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java new file mode 100644 index 0000000..4f2c865 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java @@ -0,0 +1,272 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class ChunkProviderTheEnd implements IChunkProvider { + + private Random h; + private NoiseGeneratorOctaves i; + private NoiseGeneratorOctaves j; + private NoiseGeneratorOctaves k; + public NoiseGeneratorOctaves a; + public NoiseGeneratorOctaves b; + private World l; + private double[] m; + private BiomeBase[] n; + double[] c; + double[] d; + double[] e; + double[] f; + double[] g; + + public ChunkProviderTheEnd(World world, long i) { + this.l = world; + this.h = new Random(i); + this.i = new NoiseGeneratorOctaves(this.h, 16); + this.j = new NoiseGeneratorOctaves(this.h, 16); + this.k = new NoiseGeneratorOctaves(this.h, 8); + this.a = new NoiseGeneratorOctaves(this.h, 10); + this.b = new NoiseGeneratorOctaves(this.h, 16); + } + + public void a(int i, int j, ChunkSnapshot chunksnapshot) { + byte b0 = 2; + int k = b0 + 1; + byte b1 = 33; + int l = b0 + 1; + + this.m = this.a(this.m, i * b0, 0, j * b0, k, b1, l); + + for (int i1 = 0; i1 < b0; ++i1) { + for (int j1 = 0; j1 < b0; ++j1) { + for (int k1 = 0; k1 < 32; ++k1) { + double d0 = 0.25D; + double d1 = this.m[((i1 + 0) * l + j1 + 0) * b1 + k1 + 0]; + double d2 = this.m[((i1 + 0) * l + j1 + 1) * b1 + k1 + 0]; + double d3 = this.m[((i1 + 1) * l + j1 + 0) * b1 + k1 + 0]; + double d4 = this.m[((i1 + 1) * l + j1 + 1) * b1 + k1 + 0]; + double d5 = (this.m[((i1 + 0) * l + j1 + 0) * b1 + k1 + 1] - d1) * d0; + double d6 = (this.m[((i1 + 0) * l + j1 + 1) * b1 + k1 + 1] - d2) * d0; + double d7 = (this.m[((i1 + 1) * l + j1 + 0) * b1 + k1 + 1] - d3) * d0; + double d8 = (this.m[((i1 + 1) * l + j1 + 1) * b1 + k1 + 1] - d4) * d0; + + for (int l1 = 0; l1 < 4; ++l1) { + double d9 = 0.125D; + double d10 = d1; + double d11 = d2; + double d12 = (d3 - d1) * d9; + double d13 = (d4 - d2) * d9; + + for (int i2 = 0; i2 < 8; ++i2) { + double d14 = 0.125D; + double d15 = d10; + double d16 = (d11 - d10) * d14; + + for (int j2 = 0; j2 < 8; ++j2) { + IBlockData iblockdata = null; + + if (d15 > 0.0D) { + iblockdata = Blocks.END_STONE.getBlockData(); + } + + int k2 = i2 + i1 * 8; + int l2 = l1 + k1 * 4; + int i3 = j2 + j1 * 8; + + chunksnapshot.a(k2, l2, i3, iblockdata); + d15 += d16; + } + + d10 += d12; + d11 += d13; + } + + d1 += d5; + d2 += d6; + d3 += d7; + d4 += d8; + } + } + } + } + + } + + public void a(ChunkSnapshot chunksnapshot) { + for (int i = 0; i < 16; ++i) { + for (int j = 0; j < 16; ++j) { + byte b0 = 1; + int k = -1; + IBlockData iblockdata = Blocks.END_STONE.getBlockData(); + IBlockData iblockdata1 = Blocks.END_STONE.getBlockData(); + + for (int l = 127; l >= 0; --l) { + IBlockData iblockdata2 = chunksnapshot.a(i, l, j); + + if (iblockdata2.getBlock().getMaterial() == Material.AIR) { + k = -1; + } else if (iblockdata2.getBlock() == Blocks.STONE) { + if (k == -1) { + if (b0 <= 0) { + iblockdata = Blocks.AIR.getBlockData(); + iblockdata1 = Blocks.END_STONE.getBlockData(); + } + + k = b0; + if (l >= 0) { + chunksnapshot.a(i, l, j, iblockdata); + } else { + chunksnapshot.a(i, l, j, iblockdata1); + } + } else if (k > 0) { + --k; + chunksnapshot.a(i, l, j, iblockdata1); + } + } + } + } + } + + } + + public Chunk getOrCreateChunk(int i, int j) { + this.h.setSeed((long) i * 341873128712L + (long) j * 132897987541L); + ChunkSnapshot chunksnapshot = new ChunkSnapshot(); + + this.n = this.l.getWorldChunkManager().getBiomeBlock(this.n, i * 16, j * 16, 16, 16); + this.a(i, j, chunksnapshot); + this.a(chunksnapshot); + Chunk chunk = new Chunk(this.l, chunksnapshot, i, j); + byte[] abyte = chunk.getBiomeIndex(); + + for (int k = 0; k < abyte.length; ++k) { + abyte[k] = (byte) this.n[k].id; + } + + chunk.initLighting(); + return chunk; + } + + private double[] a(double[] adouble, int i, int j, int k, int l, int i1, int j1) { + if (adouble == null) { + adouble = new double[l * i1 * j1]; + } + + double d0 = 684.412D; + double d1 = 684.412D; + + this.f = this.a.a(this.f, i, k, l, j1, 1.121D, 1.121D, 0.5D); + this.g = this.b.a(this.g, i, k, l, j1, 200.0D, 200.0D, 0.5D); + d0 *= 2.0D; + this.c = this.k.a(this.c, i, j, k, l, i1, j1, d0 / 80.0D, d1 / 160.0D, d0 / 80.0D); + this.d = this.i.a(this.d, i, j, k, l, i1, j1, d0, d1, d0); + this.e = this.j.a(this.e, i, j, k, l, i1, j1, d0, d1, d0); + int k1 = 0; + + for (int l1 = 0; l1 < l; ++l1) { + for (int i2 = 0; i2 < j1; ++i2) { + float f = (float) (l1 + i) / 1.0F; + float f1 = (float) (i2 + k) / 1.0F; + float f2 = 100.0F - MathHelper.c(f * f + f1 * f1) * 8.0F; + + if (f2 > 80.0F) { + f2 = 80.0F; + } + + if (f2 < -100.0F) { + f2 = -100.0F; + } + + for (int j2 = 0; j2 < i1; ++j2) { + double d2 = 0.0D; + double d3 = this.d[k1] / 512.0D; + double d4 = this.e[k1] / 512.0D; + double d5 = (this.c[k1] / 10.0D + 1.0D) / 2.0D; + + if (d5 < 0.0D) { + d2 = d3; + } else if (d5 > 1.0D) { + d2 = d4; + } else { + d2 = d3 + (d4 - d3) * d5; + } + + d2 -= 8.0D; + d2 += (double) f2; + byte b0 = 2; + double d6; + + if (j2 > i1 / 2 - b0) { + d6 = (double) ((float) (j2 - (i1 / 2 - b0)) / 64.0F); + d6 = MathHelper.a(d6, 0.0D, 1.0D); + d2 = d2 * (1.0D - d6) + -3000.0D * d6; + } + + b0 = 8; + if (j2 < b0) { + d6 = (double) ((float) (b0 - j2) / ((float) b0 - 1.0F)); + d2 = d2 * (1.0D - d6) + -30.0D * d6; + } + + adouble[k1] = d2; + ++k1; + } + } + } + + return adouble; + } + + public boolean isChunkLoaded(int i, int j) { + return true; + } + + public void getChunkAt(IChunkProvider ichunkprovider, int i, int j) { + BlockFalling.instaFall = true; + BlockPosition blockposition = new BlockPosition(i * 16, 0, j * 16); + + this.l.getBiome(blockposition.a(16, 0, 16)).a(this.l, this.l.random, blockposition); + BlockFalling.instaFall = false; + } + + public boolean a(IChunkProvider ichunkprovider, Chunk chunk, int i, int j) { + return false; + } + + public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) { + return true; + } + + public void c() {} + + public boolean unloadChunks() { + return false; + } + + public boolean canSave() { + return true; + } + + public String getName() { + return "RandomLevelSource"; + } + + public List getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition) { + return this.l.getBiome(blockposition).getMobs(enumcreaturetype); + } + + public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockposition) { + return null; + } + + public int getLoadedChunks() { + return 0; + } + + public void recreateStructures(Chunk chunk, int i, int j) {} + + public Chunk getChunkAt(BlockPosition blockposition) { + return this.getOrCreateChunk(blockposition.getX() >> 4, blockposition.getZ() >> 4); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java new file mode 100644 index 0000000..4ce9e5d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java @@ -0,0 +1,41 @@ +package net.minecraft.server; + +public class ChunkSnapshot { + + private final short[] a = new short[65536]; + private final IBlockData b; + + public ChunkSnapshot() { + this.b = Blocks.AIR.getBlockData(); + } + + public IBlockData a(int i, int j, int k) { + int l = i << 12 | k << 8 | j; + + return this.a(l); + } + + public IBlockData a(int i) { + if (i >= 0 && i < this.a.length) { + IBlockData iblockdata = (IBlockData) Block.d.a(this.a[i]); + + return iblockdata != null ? iblockdata : this.b; + } else { + throw new IndexOutOfBoundsException("The coordinate is out of range"); + } + } + + public void a(int i, int j, int k, IBlockData iblockdata) { + int l = i << 12 | k << 8 | j; + + this.a(l, iblockdata); + } + + public void a(int i, IBlockData iblockdata) { + if (i >= 0 && i < this.a.length) { + this.a[i] = (short) Block.d.b(iblockdata); + } else { + throw new IndexOutOfBoundsException("The coordinate is out of range"); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java new file mode 100644 index 0000000..a0a1d98 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public class CombatEntry { + + private final DamageSource a; + private final int b; + private final float c; + private final float d; + private final String e; + private final float f; + + public CombatEntry(DamageSource damagesource, int i, float f, float f1, String s, float f2) { + this.a = damagesource; + this.b = i; + this.c = f1; + this.d = f; + this.e = s; + this.f = f2; + } + + public DamageSource a() { + return this.a; + } + + public float c() { + return this.c; + } + + public boolean f() { + return this.a.getEntity() instanceof EntityLiving; + } + + public String g() { + return this.e; + } + + public IChatBaseComponent h() { + return this.a().getEntity() == null ? null : this.a().getEntity().getScoreboardDisplayName(); + } + + public float i() { + return this.a == DamageSource.OUT_OF_WORLD ? Float.MAX_VALUE : this.f; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java b/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java new file mode 100644 index 0000000..711632e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java @@ -0,0 +1,195 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; + +public class CombatTracker { + + private final List a = Lists.newArrayList(); + private final EntityLiving b; + private int c; + private int d; + private int e; + private boolean f; + private boolean g; + private String h; + + public CombatTracker(EntityLiving entityliving) { + this.b = entityliving; + } + + public void a() { + this.j(); + if (this.b.k_()) { + Block block = this.b.world.getType(new BlockPosition(this.b.locX, this.b.getBoundingBox().b, this.b.locZ)).getBlock(); + + if (block == Blocks.LADDER) { + this.h = "ladder"; + } else if (block == Blocks.VINE) { + this.h = "vines"; + } + } else if (this.b.V()) { + this.h = "water"; + } + + } + + public void a(DamageSource damagesource, float f, float f1) { + this.g(); + this.a(); + CombatEntry combatentry = new CombatEntry(damagesource, this.b.ticksLived, f, f1, this.h, this.b.fallDistance); + + this.a.add(combatentry); + this.c = this.b.ticksLived; + this.g = true; + if (combatentry.f() && !this.f && this.b.isAlive()) { + this.f = true; + this.d = this.b.ticksLived; + this.e = this.d; + this.b.enterCombat(); + } + + } + + public IChatBaseComponent b() { + if (this.a.size() == 0) { + return new ChatMessage("death.attack.generic", new Object[] { this.b.getScoreboardDisplayName()}); + } else { + CombatEntry combatentry = this.i(); + CombatEntry combatentry1 = (CombatEntry) this.a.get(this.a.size() - 1); + IChatBaseComponent ichatbasecomponent = combatentry1.h(); + Entity entity = combatentry1.a().getEntity(); + Object object; + + if (combatentry != null && combatentry1.a() == DamageSource.FALL) { + IChatBaseComponent ichatbasecomponent1 = combatentry.h(); + + if (combatentry.a() != DamageSource.FALL && combatentry.a() != DamageSource.OUT_OF_WORLD) { + if (ichatbasecomponent1 != null && (ichatbasecomponent == null || !ichatbasecomponent1.equals(ichatbasecomponent))) { + Entity entity1 = combatentry.a().getEntity(); + ItemStack itemstack = entity1 instanceof EntityLiving ? ((EntityLiving) entity1).bA() : null; + + if (itemstack != null && itemstack.hasName()) { + object = new ChatMessage("death.fell.assist.item", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent1, itemstack.C()}); + } else { + object = new ChatMessage("death.fell.assist", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent1}); + } + } else if (ichatbasecomponent != null) { + ItemStack itemstack1 = entity instanceof EntityLiving ? ((EntityLiving) entity).bA() : null; + + if (itemstack1 != null && itemstack1.hasName()) { + object = new ChatMessage("death.fell.finish.item", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent, itemstack1.C()}); + } else { + object = new ChatMessage("death.fell.finish", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent}); + } + } else { + object = new ChatMessage("death.fell.killer", new Object[] { this.b.getScoreboardDisplayName()}); + } + } else { + object = new ChatMessage("death.fell.accident." + this.a(combatentry), new Object[] { this.b.getScoreboardDisplayName()}); + } + } else { + object = combatentry1.a().getLocalizedDeathMessage(this.b); + } + + return (IChatBaseComponent) object; + } + } + + public EntityLiving c() { + EntityLiving entityliving = null; + EntityHuman entityhuman = null; + float f = 0.0F; + float f1 = 0.0F; + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + CombatEntry combatentry = (CombatEntry) iterator.next(); + + if (combatentry.a().getEntity() instanceof EntityHuman && (entityhuman == null || combatentry.c() > f1)) { + f1 = combatentry.c(); + entityhuman = (EntityHuman) combatentry.a().getEntity(); + } + + if (combatentry.a().getEntity() instanceof EntityLiving && (entityliving == null || combatentry.c() > f)) { + f = combatentry.c(); + entityliving = (EntityLiving) combatentry.a().getEntity(); + } + } + + if (entityhuman != null && f1 >= f / 3.0F) { + return entityhuman; + } else { + return entityliving; + } + } + + private CombatEntry i() { + CombatEntry combatentry = null; + CombatEntry combatentry1 = null; + byte b0 = 0; + float f = 0.0F; + + for (int i = 0; i < this.a.size(); ++i) { + CombatEntry combatentry2 = (CombatEntry) this.a.get(i); + CombatEntry combatentry3 = i > 0 ? (CombatEntry) this.a.get(i - 1) : null; + + if ((combatentry2.a() == DamageSource.FALL || combatentry2.a() == DamageSource.OUT_OF_WORLD) && combatentry2.i() > 0.0F && (combatentry == null || combatentry2.i() > f)) { + if (i > 0) { + combatentry = combatentry3; + } else { + combatentry = combatentry2; + } + + f = combatentry2.i(); + } + + if (combatentry2.g() != null && (combatentry1 == null || combatentry2.c() > (float) b0)) { + combatentry1 = combatentry2; + } + } + + if (f > 5.0F && combatentry != null) { + return combatentry; + } else if (b0 > 5 && combatentry1 != null) { + return combatentry1; + } else { + return null; + } + } + + private String a(CombatEntry combatentry) { + return combatentry.g() == null ? "generic" : combatentry.g(); + } + + public int f() { + return this.f ? this.b.ticksLived - this.d : this.e - this.d; + } + + private void j() { + this.h = null; + } + + public void g() { + int i = this.f ? 300 : 100; + + if (this.g && (!this.b.isAlive() || this.b.ticksLived - this.c > i)) { + boolean flag = this.f; + + this.g = false; + this.f = false; + this.e = this.b.ticksLived; + if (flag) { + this.b.exitCombat(); + } + + this.a.clear(); + } + + } + + public EntityLiving h() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java new file mode 100644 index 0000000..1121880 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java @@ -0,0 +1,552 @@ +package net.minecraft.server; + +import com.google.common.base.Functions; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.primitives.Doubles; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; + +public abstract class CommandAbstract implements ICommand { + + private static ICommandDispatcher a; + + public CommandAbstract() {} + + public int a() { + return 4; + } + + public List b() { + return Collections.emptyList(); + } + + public boolean canUse(ICommandListener icommandlistener) { + return icommandlistener.a(this.a(), this.getCommand()); + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return null; + } + + public static int a(String s) throws ExceptionInvalidNumber { + try { + return Integer.parseInt(s); + } catch (NumberFormatException numberformatexception) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s}); + } + } + + public static int a(String s, int i) throws ExceptionInvalidNumber { + return a(s, i, Integer.MAX_VALUE); + } + + public static int a(String s, int i, int j) throws ExceptionInvalidNumber { + int k = a(s); + + if (k < i) { + throw new ExceptionInvalidNumber("commands.generic.num.tooSmall", new Object[] { Integer.valueOf(k), Integer.valueOf(i)}); + } else if (k > j) { + throw new ExceptionInvalidNumber("commands.generic.num.tooBig", new Object[] { Integer.valueOf(k), Integer.valueOf(j)}); + } else { + return k; + } + } + + public static long b(String s) throws ExceptionInvalidNumber { + try { + return Long.parseLong(s); + } catch (NumberFormatException numberformatexception) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s}); + } + } + + public static long a(String s, long i, long j) throws ExceptionInvalidNumber { + long k = b(s); + + if (k < i) { + throw new ExceptionInvalidNumber("commands.generic.num.tooSmall", new Object[] { Long.valueOf(k), Long.valueOf(i)}); + } else if (k > j) { + throw new ExceptionInvalidNumber("commands.generic.num.tooBig", new Object[] { Long.valueOf(k), Long.valueOf(j)}); + } else { + return k; + } + } + + public static BlockPosition a(ICommandListener icommandlistener, String[] astring, int i, boolean flag) throws ExceptionInvalidNumber { + BlockPosition blockposition = icommandlistener.getChunkCoordinates(); + + return new BlockPosition(b((double) blockposition.getX(), astring[i], -30000000, 30000000, flag), b((double) blockposition.getY(), astring[i + 1], 0, 256, false), b((double) blockposition.getZ(), astring[i + 2], -30000000, 30000000, flag)); + } + + public static double c(String s) throws ExceptionInvalidNumber { + try { + double d0 = Double.parseDouble(s); + + if (!Doubles.isFinite(d0)) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s}); + } else { + return d0; + } + } catch (NumberFormatException numberformatexception) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s}); + } + } + + public static double a(String s, double d0) throws ExceptionInvalidNumber { + return a(s, d0, Double.MAX_VALUE); + } + + public static double a(String s, double d0, double d1) throws ExceptionInvalidNumber { + double d2 = c(s); + + if (d2 < d0) { + throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d2), Double.valueOf(d0)}); + } else if (d2 > d1) { + throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d2), Double.valueOf(d1)}); + } else { + return d2; + } + } + + public static boolean d(String s) throws CommandException { + if (!s.equals("true") && !s.equals("1")) { + if (!s.equals("false") && !s.equals("0")) { + throw new CommandException("commands.generic.boolean.invalid", new Object[] { s}); + } else { + return false; + } + } else { + return true; + } + } + + public static EntityPlayer b(ICommandListener icommandlistener) throws ExceptionPlayerNotFound { + if (icommandlistener instanceof EntityPlayer) { + return (EntityPlayer) icommandlistener; + } else { + throw new ExceptionPlayerNotFound("You must specify which player you wish to perform this action on.", new Object[0]); + } + } + + public static EntityPlayer a(ICommandListener icommandlistener, String s) throws ExceptionPlayerNotFound { + EntityPlayer entityplayer = PlayerSelector.getPlayer(icommandlistener, s); + + if (entityplayer == null) { + try { + entityplayer = MinecraftServer.getServer().getPlayerList().a(UUID.fromString(s)); + } catch (IllegalArgumentException illegalargumentexception) { + ; + } + } + + if (entityplayer == null) { + entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(s); + } + + if (entityplayer == null) { + throw new ExceptionPlayerNotFound(); + } else { + return entityplayer; + } + } + + public static Entity b(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound { + return a(icommandlistener, s, Entity.class); + } + + public static T a(ICommandListener icommandlistener, String s, Class oclass) throws ExceptionEntityNotFound { + Entity object = PlayerSelector.getEntity(icommandlistener, s, oclass); + MinecraftServer minecraftserver = MinecraftServer.getServer(); + + if (object == null) { + object = minecraftserver.getPlayerList().getPlayer(s); + } + + if (object == null) { + try { + UUID uuid = UUID.fromString(s); + + object = minecraftserver.a(uuid); + if (object == null) { + object = minecraftserver.getPlayerList().a(uuid); + } + } catch (IllegalArgumentException illegalargumentexception) { + throw new ExceptionEntityNotFound("commands.generic.entity.invalidUuid", new Object[0]); + } + } + + if (object != null && oclass.isAssignableFrom(object.getClass())) { + return (T) object; + } else { + throw new ExceptionEntityNotFound(); + } + } + + public static List c(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound { + return (List) (PlayerSelector.isPattern(s) ? PlayerSelector.getPlayers(icommandlistener, s, Entity.class) : Lists.newArrayList(new Entity[] { b(icommandlistener, s)})); + } + + public static String d(ICommandListener icommandlistener, String s) throws ExceptionPlayerNotFound { + try { + return a(icommandlistener, s).getName(); + } catch (ExceptionPlayerNotFound exceptionplayernotfound) { + if (PlayerSelector.isPattern(s)) { + throw exceptionplayernotfound; + } else { + return s; + } + } + } + + public static String e(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound { + try { + return a(icommandlistener, s).getName(); + } catch (ExceptionPlayerNotFound exceptionplayernotfound) { + try { + return b(icommandlistener, s).getUniqueID().toString(); + } catch (ExceptionEntityNotFound exceptionentitynotfound) { + if (PlayerSelector.isPattern(s)) { + throw exceptionentitynotfound; + } else { + return s; + } + } + } + } + + public static IChatBaseComponent a(ICommandListener icommandlistener, String[] astring, int i) throws ExceptionPlayerNotFound { + return b(icommandlistener, astring, i, false); + } + + public static IChatBaseComponent b(ICommandListener icommandlistener, String[] astring, int i, boolean flag) throws ExceptionPlayerNotFound { + ChatComponentText chatcomponenttext = new ChatComponentText(""); + + for (int j = i; j < astring.length; ++j) { + if (j > i) { + chatcomponenttext.a(" "); + } + + Object object = new ChatComponentText(astring[j]); + + if (flag) { + IChatBaseComponent ichatbasecomponent = PlayerSelector.getPlayerNames(icommandlistener, astring[j]); + + if (ichatbasecomponent == null) { + if (PlayerSelector.isPattern(astring[j])) { + throw new ExceptionPlayerNotFound(); + } + } else { + object = ichatbasecomponent; + } + } + + chatcomponenttext.addSibling((IChatBaseComponent) object); + } + + return chatcomponenttext; + } + + public static String a(String[] astring, int i) { + StringBuilder stringbuilder = new StringBuilder(); + + for (int j = i; j < astring.length; ++j) { + if (j > i) { + stringbuilder.append(" "); + } + + String s = astring[j]; + + stringbuilder.append(s); + } + + return stringbuilder.toString(); + } + + public static CommandAbstract.CommandNumber a(double d0, String s, boolean flag) throws ExceptionInvalidNumber { + return a(d0, s, -30000000, 30000000, flag); + } + + public static CommandAbstract.CommandNumber a(double d0, String s, int i, int j, boolean flag) throws ExceptionInvalidNumber { + boolean flag1 = s.startsWith("~"); + + if (flag1 && Double.isNaN(d0)) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { Double.valueOf(d0)}); + } else { + double d1 = 0.0D; + + if (!flag1 || s.length() > 1) { + boolean flag2 = s.contains("."); + + if (flag1) { + s = s.substring(1); + } + + d1 += c(s); + if (!flag2 && !flag1 && flag) { + d1 += 0.5D; + } + } + + if (i != 0 || j != 0) { + if (d1 < (double) i) { + throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d1), Integer.valueOf(i)}); + } + + if (d1 > (double) j) { + throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d1), Integer.valueOf(j)}); + } + } + + return new CommandAbstract.CommandNumber(d1 + (flag1 ? d0 : 0.0D), d1, flag1); + } + } + + public static double b(double d0, String s, boolean flag) throws ExceptionInvalidNumber { + return b(d0, s, -30000000, 30000000, flag); + } + + public static double b(double d0, String s, int i, int j, boolean flag) throws ExceptionInvalidNumber { + boolean flag1 = s.startsWith("~"); + + if (flag1 && Double.isNaN(d0)) { + throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { Double.valueOf(d0)}); + } else { + double d1 = flag1 ? d0 : 0.0D; + + if (!flag1 || s.length() > 1) { + boolean flag2 = s.contains("."); + + if (flag1) { + s = s.substring(1); + } + + d1 += c(s); + if (!flag2 && !flag1 && flag) { + d1 += 0.5D; + } + } + + if (i != 0 || j != 0) { + if (d1 < (double) i) { + throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d1), Integer.valueOf(i)}); + } + + if (d1 > (double) j) { + throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d1), Integer.valueOf(j)}); + } + } + + return d1; + } + } + + public static Item f(ICommandListener icommandlistener, String s) throws ExceptionInvalidNumber { + MinecraftKey minecraftkey = new MinecraftKey(s); + Item item = (Item) Item.REGISTRY.get(minecraftkey); + + if (item == null) { + throw new ExceptionInvalidNumber("commands.give.item.notFound", new Object[] { minecraftkey}); + } else { + return item; + } + } + + public static Block g(ICommandListener icommandlistener, String s) throws ExceptionInvalidNumber { + MinecraftKey minecraftkey = new MinecraftKey(s); + + if (!Block.REGISTRY.d(minecraftkey)) { + throw new ExceptionInvalidNumber("commands.give.block.notFound", new Object[] { minecraftkey}); + } else { + Block block = (Block) Block.REGISTRY.get(minecraftkey); + + if (block == null) { + throw new ExceptionInvalidNumber("commands.give.block.notFound", new Object[] { minecraftkey}); + } else { + return block; + } + } + } + + public static String a(Object[] aobject) { + StringBuilder stringbuilder = new StringBuilder(); + + for (int i = 0; i < aobject.length; ++i) { + String s = aobject[i].toString(); + + if (i > 0) { + if (i == aobject.length - 1) { + stringbuilder.append(" and "); + } else { + stringbuilder.append(", "); + } + } + + stringbuilder.append(s); + } + + return stringbuilder.toString(); + } + + public static IChatBaseComponent a(List list) { + ChatComponentText chatcomponenttext = new ChatComponentText(""); + + for (int i = 0; i < list.size(); ++i) { + if (i > 0) { + if (i == list.size() - 1) { + chatcomponenttext.a(" and "); + } else if (i > 0) { + chatcomponenttext.a(", "); + } + } + + chatcomponenttext.addSibling((IChatBaseComponent) list.get(i)); + } + + return chatcomponenttext; + } + + public static String a(Collection collection) { + return a(collection.toArray(new String[collection.size()])); + } + + public static List a(String[] astring, int i, BlockPosition blockposition) { + if (blockposition == null) { + return null; + } else { + int j = astring.length - 1; + String s; + + if (j == i) { + s = Integer.toString(blockposition.getX()); + } else if (j == i + 1) { + s = Integer.toString(blockposition.getY()); + } else { + if (j != i + 2) { + return null; + } + + s = Integer.toString(blockposition.getZ()); + } + + return Lists.newArrayList(new String[] { s}); + } + } + + public static List b(String[] astring, int i, BlockPosition blockposition) { + if (blockposition == null) { + return null; + } else { + int j = astring.length - 1; + String s; + + if (j == i) { + s = Integer.toString(blockposition.getX()); + } else { + if (j != i + 1) { + return null; + } + + s = Integer.toString(blockposition.getZ()); + } + + return Lists.newArrayList(new String[] { s}); + } + } + + public static boolean a(String s, String s1) { + return s1.regionMatches(true, 0, s, 0, s.length()); + } + + public static List a(String[] astring, String... astring1) { + return a(astring, (Collection) Arrays.asList(astring1)); + } + + public static List a(String[] astring, Collection collection) { + String s = astring[astring.length - 1]; + ArrayList arraylist = Lists.newArrayList(); + + if (!collection.isEmpty()) { + Iterator iterator = Iterables.transform(collection, Functions.toStringFunction()).iterator(); + + while (iterator.hasNext()) { + String s1 = (String) iterator.next(); + + if (a(s, s1)) { + arraylist.add(s1); + } + } + + if (arraylist.isEmpty()) { + iterator = collection.iterator(); + + while (iterator.hasNext()) { + Object object = iterator.next(); + + if (object instanceof MinecraftKey && a(s, ((MinecraftKey) object).a())) { + arraylist.add(String.valueOf(object)); + } + } + } + } + + return arraylist; + } + + public boolean isListStart(String[] astring, int i) { + return false; + } + + public static void a(ICommandListener icommandlistener, ICommand icommand, String s, Object... aobject) { + a(icommandlistener, icommand, 0, s, aobject); + } + + public static void a(ICommandListener icommandlistener, ICommand icommand, int i, String s, Object... aobject) { + if (CommandAbstract.a != null) { + CommandAbstract.a.a(icommandlistener, icommand, i, s, aobject); + } + + } + + public static void a(ICommandDispatcher icommanddispatcher) { + CommandAbstract.a = icommanddispatcher; + } + + public int a(ICommand icommand) { + return this.getCommand().compareTo(icommand.getCommand()); + } + + public int compareTo(ICommand object) { + return this.a(object); + } + + public static class CommandNumber { + + private final double a; + private final double b; + private final boolean c; + + protected CommandNumber(double d0, double d1, boolean flag) { + this.a = d0; + this.b = d1; + this.c = flag; + } + + public double a() { + return this.a; + } + + public double b() { + return this.b; + } + + public boolean c() { + return this.c; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java new file mode 100644 index 0000000..c668da5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java @@ -0,0 +1,169 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +public class CommandAchievement extends CommandAbstract { + + public CommandAchievement() {} + + public String getCommand() { + return "achievement"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.achievement.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.achievement.usage", new Object[0]); + } else { + final Statistic statistic = StatisticList.getStatistic(astring[1]); + + if (statistic == null && !astring[1].equals("*")) { + throw new CommandException("commands.achievement.unknownAchievement", new Object[] { astring[1]}); + } else { + final EntityPlayer entityplayer = astring.length >= 3 ? a(icommandlistener, astring[2]) : b(icommandlistener); + boolean flag = astring[0].equalsIgnoreCase("give"); + boolean flag1 = astring[0].equalsIgnoreCase("take"); + + if (flag || flag1) { + if (statistic == null) { + Iterator iterator; + Achievement achievement; + + if (flag) { + iterator = AchievementList.e.iterator(); + + while (iterator.hasNext()) { + achievement = (Achievement) iterator.next(); + entityplayer.b((Statistic) achievement); + } + + a(icommandlistener, this, "commands.achievement.give.success.all", new Object[] { entityplayer.getName()}); + } else if (flag1) { + iterator = Lists.reverse(AchievementList.e).iterator(); + + while (iterator.hasNext()) { + achievement = (Achievement) iterator.next(); + entityplayer.a((Statistic) achievement); + } + + a(icommandlistener, this, "commands.achievement.take.success.all", new Object[] { entityplayer.getName()}); + } + + } else { + if (statistic instanceof Achievement) { + Achievement achievement1 = (Achievement) statistic; + ArrayList arraylist; + + if (flag) { + if (entityplayer.getStatisticManager().hasAchievement(achievement1)) { + throw new CommandException("commands.achievement.alreadyHave", new Object[] { entityplayer.getName(), statistic.j()}); + } + + for (arraylist = Lists.newArrayList(); achievement1.c != null && !entityplayer.getStatisticManager().hasAchievement(achievement1.c); achievement1 = achievement1.c) { + arraylist.add(achievement1.c); + } + + Iterator iterator1 = Lists.reverse(arraylist).iterator(); + + while (iterator1.hasNext()) { + Achievement achievement2 = (Achievement) iterator1.next(); + + entityplayer.b((Statistic) achievement2); + } + } else if (flag1) { + if (!entityplayer.getStatisticManager().hasAchievement(achievement1)) { + throw new CommandException("commands.achievement.dontHave", new Object[] { entityplayer.getName(), statistic.j()}); + } + + arraylist = Lists.newArrayList(Iterators.filter(AchievementList.e.iterator(), new Predicate() { + public boolean a(Achievement achievement) { + return entityplayer.getStatisticManager().hasAchievement(achievement) && achievement != statistic; + } + + public boolean apply(Object object) { + return this.a((Achievement) object); + } + })); + ArrayList arraylist1 = Lists.newArrayList(arraylist); + Iterator iterator2 = arraylist.iterator(); + + Achievement achievement3; + + while (iterator2.hasNext()) { + achievement3 = (Achievement) iterator2.next(); + Achievement achievement4 = achievement3; + + boolean flag2; + + for (flag2 = false; achievement4 != null; achievement4 = achievement4.c) { + if (achievement4 == statistic) { + flag2 = true; + } + } + + if (!flag2) { + for (achievement4 = achievement3; achievement4 != null; achievement4 = achievement4.c) { + arraylist1.remove(achievement3); + } + } + } + + iterator2 = arraylist1.iterator(); + + while (iterator2.hasNext()) { + achievement3 = (Achievement) iterator2.next(); + entityplayer.a((Statistic) achievement3); + } + } + } + + if (flag) { + entityplayer.b(statistic); + a(icommandlistener, this, "commands.achievement.give.success.one", new Object[] { entityplayer.getName(), statistic.j()}); + } else if (flag1) { + entityplayer.a(statistic); + a(icommandlistener, this, "commands.achievement.take.success.one", new Object[] { statistic.j(), entityplayer.getName()}); + } + + } + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + if (astring.length == 1) { + return a(astring, new String[] { "give", "take"}); + } else if (astring.length != 2) { + return astring.length == 3 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } else { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = StatisticList.stats.iterator(); + + while (iterator.hasNext()) { + Statistic statistic = (Statistic) iterator.next(); + + arraylist.add(statistic.name); + } + + return a(astring, (Collection) arraylist); + } + } + + public boolean isListStart(String[] astring, int i) { + return i == 2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java new file mode 100644 index 0000000..83d1d9f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.util.Date; +import java.util.List; + +public class CommandBan extends CommandAbstract { + + public CommandBan() {} + + public String getCommand() { + return "ban"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.ban.usage"; + } + + public boolean canUse(ICommandListener icommandlistener) { + return MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled() && super.canUse(icommandlistener); + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length >= 1 && astring[0].length() > 0) { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + GameProfile gameprofile = minecraftserver.getUserCache().getProfile(astring[0]); + + if (gameprofile == null) { + throw new CommandException("commands.ban.failed", new Object[] { astring[0]}); + } else { + String s = null; + + if (astring.length >= 2) { + s = a(icommandlistener, astring, 1).c(); + } + + GameProfileBanEntry gameprofilebanentry = new GameProfileBanEntry(gameprofile, (Date) null, icommandlistener.getName(), (Date) null, s); + + minecraftserver.getPlayerList().getProfileBans().add(gameprofilebanentry); + EntityPlayer entityplayer = minecraftserver.getPlayerList().getPlayer(astring[0]); + + if (entityplayer != null) { + entityplayer.playerConnection.disconnect("You are banned from this server."); + } + + a(icommandlistener, this, "commands.ban.success", new Object[] { astring[0]}); + } + } else { + throw new ExceptionUsage("commands.ban.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java new file mode 100644 index 0000000..8042f01 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java @@ -0,0 +1,79 @@ +package net.minecraft.server; + +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CommandBanIp extends CommandAbstract { + + public static final Pattern a = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"); + + public CommandBanIp() {} + + public String getCommand() { + return "ban-ip"; + } + + public int a() { + return 3; + } + + public boolean canUse(ICommandListener icommandlistener) { + return MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() && super.canUse(icommandlistener); + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.banip.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length >= 1 && astring[0].length() > 1) { + IChatBaseComponent ichatbasecomponent = astring.length >= 2 ? a(icommandlistener, astring, 1) : null; + Matcher matcher = CommandBanIp.a.matcher(astring[0]); + + if (matcher.matches()) { + this.a(icommandlistener, astring[0], ichatbasecomponent == null ? null : ichatbasecomponent.c()); + } else { + EntityPlayer entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(astring[0]); + + if (entityplayer == null) { + throw new ExceptionPlayerNotFound("commands.banip.invalid", new Object[0]); + } + + this.a(icommandlistener, entityplayer.w(), ichatbasecomponent == null ? null : ichatbasecomponent.c()); + } + + } else { + throw new ExceptionUsage("commands.banip.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } + + protected void a(ICommandListener icommandlistener, String s, String s1) { + IpBanEntry ipbanentry = new IpBanEntry(s, (Date) null, icommandlistener.getName(), (Date) null, s1); + + MinecraftServer.getServer().getPlayerList().getIPBans().add(ipbanentry); + List list = MinecraftServer.getServer().getPlayerList().b(s); + String[] astring = new String[list.size()]; + int i = 0; + + EntityPlayer entityplayer; + + for (Iterator iterator = list.iterator(); iterator.hasNext(); astring[i++] = entityplayer.getName()) { + entityplayer = (EntityPlayer) iterator.next(); + entityplayer.playerConnection.disconnect("You have been IP banned."); + } + + if (list.isEmpty()) { + a(icommandlistener, this, "commands.banip.success", new Object[] { s}); + } else { + a(icommandlistener, this, "commands.banip.success.players", new Object[] { s, a((Object[]) astring)}); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java new file mode 100644 index 0000000..eacc3d4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandBanList extends CommandAbstract { + + public CommandBanList() {} + + public String getCommand() { + return "banlist"; + } + + public int a() { + return 3; + } + + public boolean canUse(ICommandListener icommandlistener) { + return (MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() || MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled()) && super.canUse(icommandlistener); + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.banlist.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length >= 1 && astring[0].equalsIgnoreCase("ips")) { + icommandlistener.sendMessage(new ChatMessage("commands.banlist.ips", new Object[] { Integer.valueOf(MinecraftServer.getServer().getPlayerList().getIPBans().getEntries().length)})); + icommandlistener.sendMessage(new ChatComponentText(a((Object[]) MinecraftServer.getServer().getPlayerList().getIPBans().getEntries()))); + } else { + icommandlistener.sendMessage(new ChatMessage("commands.banlist.players", new Object[] { Integer.valueOf(MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries().length)})); + icommandlistener.sendMessage(new ChatComponentText(a((Object[]) MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries()))); + } + + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "players", "ips"}) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java new file mode 100644 index 0000000..d4264b3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java @@ -0,0 +1,71 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandBlockData extends CommandAbstract { + + public CommandBlockData() {} + + public String getCommand() { + return "blockdata"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.blockdata.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 4) { + throw new ExceptionUsage("commands.blockdata.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + World world = icommandlistener.getWorld(); + + if (!world.isLoaded(blockposition)) { + throw new CommandException("commands.blockdata.outOfWorld", new Object[0]); + } else { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity == null) { + throw new CommandException("commands.blockdata.notValid", new Object[0]); + } else { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + tileentity.b(nbttagcompound); + NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttagcompound.clone(); + + NBTTagCompound nbttagcompound2; + + try { + nbttagcompound2 = MojangsonParser.parse(a(icommandlistener, astring, 3).c()); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.blockdata.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + + nbttagcompound.a(nbttagcompound2); + nbttagcompound.setInt("x", blockposition.getX()); + nbttagcompound.setInt("y", blockposition.getY()); + nbttagcompound.setInt("z", blockposition.getZ()); + if (nbttagcompound.equals(nbttagcompound1)) { + throw new CommandException("commands.blockdata.failed", new Object[] { nbttagcompound.toString()}); + } else { + tileentity.a(nbttagcompound); + tileentity.update(); + world.notify(blockposition); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1); + a(icommandlistener, this, "commands.blockdata.success", new Object[] { nbttagcompound.toString()}); + } + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : null; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java new file mode 100644 index 0000000..2bc317d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java @@ -0,0 +1,72 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandClear extends CommandAbstract { + + public CommandClear() {} + + public String getCommand() { + return "clear"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.clear.usage"; + } + + public int a() { + return 2; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + EntityPlayer entityplayer = astring.length == 0 ? b(icommandlistener) : a(icommandlistener, astring[0]); + Item item = astring.length >= 2 ? f(icommandlistener, astring[1]) : null; + int i = astring.length >= 3 ? a(astring[2], -1) : -1; + int j = astring.length >= 4 ? a(astring[3], -1) : -1; + NBTTagCompound nbttagcompound = null; + + if (astring.length >= 5) { + try { + nbttagcompound = MojangsonParser.parse(a(astring, 4)); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.clear.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + if (astring.length >= 2 && item == null) { + throw new CommandException("commands.clear.failure", new Object[] { entityplayer.getName()}); + } else { + int k = entityplayer.inventory.a(item, i, j, nbttagcompound); + + entityplayer.defaultContainer.b(); + if (!entityplayer.abilities.canInstantlyBuild) { + entityplayer.broadcastCarriedItem(); + } + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, k); + if (k == 0) { + throw new CommandException("commands.clear.failure", new Object[] { entityplayer.getName()}); + } else { + if (j == 0) { + icommandlistener.sendMessage(new ChatMessage("commands.clear.testing", new Object[] { entityplayer.getName(), Integer.valueOf(k)})); + } else { + a(icommandlistener, this, "commands.clear.success", new Object[] { entityplayer.getName(), Integer.valueOf(k)}); + } + + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Item.REGISTRY.keySet()) : null); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java new file mode 100644 index 0000000..34012e8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java @@ -0,0 +1,225 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +public class CommandClone extends CommandAbstract { + + public CommandClone() {} + + public String getCommand() { + return "clone"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.clone.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 9) { + throw new ExceptionUsage("commands.clone.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + BlockPosition blockposition1 = a(icommandlistener, astring, 3, false); + BlockPosition blockposition2 = a(icommandlistener, astring, 6, false); + StructureBoundingBox structureboundingbox = new StructureBoundingBox(blockposition, blockposition1); + StructureBoundingBox structureboundingbox1 = new StructureBoundingBox(blockposition2, blockposition2.a(structureboundingbox.b())); + int i = structureboundingbox.c() * structureboundingbox.d() * structureboundingbox.e(); + + if (i > '\u8000') { + throw new CommandException("commands.clone.tooManyBlocks", new Object[] { Integer.valueOf(i), Integer.valueOf('\u8000')}); + } else { + boolean flag = false; + Block block = null; + int j = -1; + + if ((astring.length < 11 || !astring[10].equals("force") && !astring[10].equals("move")) && structureboundingbox.a(structureboundingbox1)) { + throw new CommandException("commands.clone.noOverlap", new Object[0]); + } else { + if (astring.length >= 11 && astring[10].equals("move")) { + flag = true; + } + + if (structureboundingbox.b >= 0 && structureboundingbox.e < 256 && structureboundingbox1.b >= 0 && structureboundingbox1.e < 256) { + World world = icommandlistener.getWorld(); + + if (world.a(structureboundingbox) && world.a(structureboundingbox1)) { + boolean flag1 = false; + + if (astring.length >= 10) { + if (astring[9].equals("masked")) { + flag1 = true; + } else if (astring[9].equals("filtered")) { + if (astring.length < 12) { + throw new ExceptionUsage("commands.clone.usage", new Object[0]); + } + + block = g(icommandlistener, astring[11]); + if (astring.length >= 13) { + j = a(astring[12], 0, 15); + } + } + } + + ArrayList arraylist = Lists.newArrayList(); + ArrayList arraylist1 = Lists.newArrayList(); + ArrayList arraylist2 = Lists.newArrayList(); + LinkedList linkedlist = Lists.newLinkedList(); + BlockPosition blockposition3 = new BlockPosition(structureboundingbox1.a - structureboundingbox.a, structureboundingbox1.b - structureboundingbox.b, structureboundingbox1.c - structureboundingbox.c); + + for (int k = structureboundingbox.c; k <= structureboundingbox.f; ++k) { + for (int l = structureboundingbox.b; l <= structureboundingbox.e; ++l) { + for (int i1 = structureboundingbox.a; i1 <= structureboundingbox.d; ++i1) { + BlockPosition blockposition4 = new BlockPosition(i1, l, k); + BlockPosition blockposition5 = blockposition4.a(blockposition3); + IBlockData iblockdata = world.getType(blockposition4); + + if ((!flag1 || iblockdata.getBlock() != Blocks.AIR) && (block == null || iblockdata.getBlock() == block && (j < 0 || iblockdata.getBlock().toLegacyData(iblockdata) == j))) { + TileEntity tileentity = world.getTileEntity(blockposition4); + + if (tileentity != null) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + tileentity.b(nbttagcompound); + arraylist1.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, nbttagcompound)); + linkedlist.addLast(blockposition4); + } else if (!iblockdata.getBlock().o() && !iblockdata.getBlock().d()) { + arraylist2.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, (NBTTagCompound) null)); + linkedlist.addFirst(blockposition4); + } else { + arraylist.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, (NBTTagCompound) null)); + linkedlist.addLast(blockposition4); + } + } + } + } + } + + if (flag) { + Iterator iterator; + BlockPosition blockposition6; + + for (iterator = linkedlist.iterator(); iterator.hasNext(); world.setTypeAndData(blockposition6, Blocks.BARRIER.getBlockData(), 2)) { + blockposition6 = (BlockPosition) iterator.next(); + TileEntity tileentity1 = world.getTileEntity(blockposition6); + + if (tileentity1 instanceof IInventory) { + ((IInventory) tileentity1).l(); + } + } + + iterator = linkedlist.iterator(); + + while (iterator.hasNext()) { + blockposition6 = (BlockPosition) iterator.next(); + world.setTypeAndData(blockposition6, Blocks.AIR.getBlockData(), 3); + } + } + + ArrayList arraylist3 = Lists.newArrayList(); + + arraylist3.addAll(arraylist); + arraylist3.addAll(arraylist1); + arraylist3.addAll(arraylist2); + List list = Lists.reverse(arraylist3); + + Iterator iterator1; + CommandClone.CommandCloneStoredTileEntity commandclone_commandclonestoredtileentity; + TileEntity tileentity2; + + for (iterator1 = list.iterator(); iterator1.hasNext(); world.setTypeAndData(commandclone_commandclonestoredtileentity.a, Blocks.BARRIER.getBlockData(), 2)) { + commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next(); + tileentity2 = world.getTileEntity(commandclone_commandclonestoredtileentity.a); + if (tileentity2 instanceof IInventory) { + ((IInventory) tileentity2).l(); + } + } + + i = 0; + iterator1 = arraylist3.iterator(); + + while (iterator1.hasNext()) { + commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next(); + if (world.setTypeAndData(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b, 2)) { + ++i; + } + } + + for (iterator1 = arraylist1.iterator(); iterator1.hasNext(); world.setTypeAndData(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b, 2)) { + commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next(); + tileentity2 = world.getTileEntity(commandclone_commandclonestoredtileentity.a); + if (commandclone_commandclonestoredtileentity.c != null && tileentity2 != null) { + commandclone_commandclonestoredtileentity.c.setInt("x", commandclone_commandclonestoredtileentity.a.getX()); + commandclone_commandclonestoredtileentity.c.setInt("y", commandclone_commandclonestoredtileentity.a.getY()); + commandclone_commandclonestoredtileentity.c.setInt("z", commandclone_commandclonestoredtileentity.a.getZ()); + tileentity2.a(commandclone_commandclonestoredtileentity.c); + tileentity2.update(); + } + } + + iterator1 = list.iterator(); + + while (iterator1.hasNext()) { + commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next(); + world.update(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b.getBlock()); + } + + List list1 = world.a(structureboundingbox, false); + + if (list1 != null) { + Iterator iterator2 = list1.iterator(); + + while (iterator2.hasNext()) { + NextTickListEntry nextticklistentry = (NextTickListEntry) iterator2.next(); + + if (structureboundingbox.b((BaseBlockPosition) nextticklistentry.a)) { + BlockPosition blockposition7 = nextticklistentry.a.a(blockposition3); + + world.b(blockposition7, nextticklistentry.a(), (int) (nextticklistentry.b - world.getWorldData().getTime()), nextticklistentry.c); + } + } + } + + if (i <= 0) { + throw new CommandException("commands.clone.failed", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, i); + a(icommandlistener, this, "commands.clone.success", new Object[] { Integer.valueOf(i)}); + } + } else { + throw new CommandException("commands.clone.outOfWorld", new Object[0]); + } + } else { + throw new CommandException("commands.clone.outOfWorld", new Object[0]); + } + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length > 6 && astring.length <= 9 ? a(astring, 6, blockposition) : (astring.length == 10 ? a(astring, new String[] { "replace", "masked", "filtered"}) : (astring.length == 11 ? a(astring, new String[] { "normal", "force", "move"}) : (astring.length == 12 && "filtered".equals(astring[9]) ? a(astring, (Collection) Block.REGISTRY.keySet()) : null))))); + } + + static class CommandCloneStoredTileEntity { + + public final BlockPosition a; + public final IBlockData b; + public final NBTTagCompound c; + + public CommandCloneStoredTileEntity(BlockPosition blockposition, IBlockData iblockdata, NBTTagCompound nbttagcompound) { + this.a = blockposition; + this.b = iblockdata; + this.c = nbttagcompound; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java new file mode 100644 index 0000000..916298c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java @@ -0,0 +1,141 @@ +package net.minecraft.server; + +import java.io.File; +import java.io.FileWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class CommandDebug extends CommandAbstract { + + private static final Logger a = LogManager.getLogger(); + private long b; + private int c; + + public CommandDebug() {} + + public String getCommand() { + return "debug"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.debug.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.debug.usage", new Object[0]); + } else { + if (astring[0].equals("start")) { + if (astring.length != 1) { + throw new ExceptionUsage("commands.debug.usage", new Object[0]); + } + + a(icommandlistener, this, "commands.debug.start", new Object[0]); + MinecraftServer.getServer().au(); + this.b = MinecraftServer.az(); + this.c = MinecraftServer.getServer().at(); + } else { + if (!astring[0].equals("stop")) { + throw new ExceptionUsage("commands.debug.usage", new Object[0]); + } + + if (astring.length != 1) { + throw new ExceptionUsage("commands.debug.usage", new Object[0]); + } + + if (!MinecraftServer.getServer().methodProfiler.a) { + throw new CommandException("commands.debug.notStarted", new Object[0]); + } + + long i = MinecraftServer.az(); + int j = MinecraftServer.getServer().at(); + long k = i - this.b; + int l = j - this.c; + + this.a(k, l); + MinecraftServer.getServer().methodProfiler.a = false; + a(icommandlistener, this, "commands.debug.stop", new Object[] { Float.valueOf((float) k / 1000.0F), Integer.valueOf(l)}); + } + + } + } + + private void a(long i, int j) { + File file = new File(MinecraftServer.getServer().d("debug"), "profile-results-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + ".txt"); + + file.getParentFile().mkdirs(); + + try { + FileWriter filewriter = new FileWriter(file); + + filewriter.write(this.b(i, j)); + filewriter.close(); + } catch (Throwable throwable) { + CommandDebug.a.error("Could not save profiler results to " + file, throwable); + } + + } + + private String b(long i, int j) { + StringBuilder stringbuilder = new StringBuilder(); + + stringbuilder.append("---- Minecraft Profiler Results ----\n"); + stringbuilder.append("// "); + stringbuilder.append(d()); + stringbuilder.append("\n\n"); + stringbuilder.append("Time span: ").append(i).append(" ms\n"); + stringbuilder.append("Tick span: ").append(j).append(" ticks\n"); + stringbuilder.append("// This is approximately ").append(String.format("%.2f", new Object[] { Float.valueOf((float) j / ((float) i / 1000.0F))})).append(" ticks per second. It should be ").append(20).append(" ticks per second\n\n"); + stringbuilder.append("--- BEGIN PROFILE DUMP ---\n\n"); + this.a(0, "root", stringbuilder); + stringbuilder.append("--- END PROFILE DUMP ---\n\n"); + return stringbuilder.toString(); + } + + private void a(int i, String s, StringBuilder stringbuilder) { + List list = MinecraftServer.getServer().methodProfiler.b(s); + + if (list != null && list.size() >= 3) { + for (int j = 1; j < list.size(); ++j) { + MethodProfiler.ProfilerInfo methodprofiler_profilerinfo = (MethodProfiler.ProfilerInfo) list.get(j); + + stringbuilder.append(String.format("[%02d] ", new Object[] { Integer.valueOf(i)})); + + for (int k = 0; k < i; ++k) { + stringbuilder.append(" "); + } + + stringbuilder.append(methodprofiler_profilerinfo.c).append(" - ").append(String.format("%.2f", new Object[] { Double.valueOf(methodprofiler_profilerinfo.a)})).append("%/").append(String.format("%.2f", new Object[] { Double.valueOf(methodprofiler_profilerinfo.b)})).append("%\n"); + if (!methodprofiler_profilerinfo.c.equals("unspecified")) { + try { + this.a(i + 1, s + "." + methodprofiler_profilerinfo.c, stringbuilder); + } catch (Exception exception) { + stringbuilder.append("[[ EXCEPTION ").append(exception).append(" ]]"); + } + } + } + + } + } + + private static String d() { + String[] astring = new String[] { "Shiny numbers!", "Am I not running fast enough? :(", "I\'m working as hard as I can!", "Will I ever be good enough for you? :(", "Speedy. Zoooooom!", "Hello world", "40% better than a crash report.", "Now with extra numbers", "Now with less numbers", "Now with the same numbers", "You should add flames to things, it makes them go faster!", "Do you feel the need for... optimization?", "*cracks redstone whip*", "Maybe if you treated it better then it\'ll have more motivation to work faster! Poor server."}; + + try { + return astring[(int) (System.nanoTime() % (long) astring.length)]; + } catch (Throwable throwable) { + return "Witty comment unavailable :("; + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "start", "stop"}) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java new file mode 100644 index 0000000..34d98bb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java @@ -0,0 +1,41 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.util.List; + +public class CommandDeop extends CommandAbstract { + + public CommandDeop() {} + + public String getCommand() { + return "deop"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.deop.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length == 1 && astring[0].length() > 0) { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + GameProfile gameprofile = minecraftserver.getPlayerList().getOPs().a(astring[0]); + + if (gameprofile == null) { + throw new CommandException("commands.deop.failed", new Object[] { astring[0]}); + } else { + minecraftserver.getPlayerList().removeOp(gameprofile); + a(icommandlistener, this, "commands.deop.success", new Object[] { astring[0]}); + } + } else { + throw new ExceptionUsage("commands.deop.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().n()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java new file mode 100644 index 0000000..dd59948 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandDifficulty extends CommandAbstract { + + public CommandDifficulty() {} + + public String getCommand() { + return "difficulty"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.difficulty.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length <= 0) { + throw new ExceptionUsage("commands.difficulty.usage", new Object[0]); + } else { + EnumDifficulty enumdifficulty = this.e(astring[0]); + + MinecraftServer.getServer().a(enumdifficulty); + a(icommandlistener, this, "commands.difficulty.success", new Object[] { new ChatMessage(enumdifficulty.b(), new Object[0])}); + } + } + + protected EnumDifficulty e(String s) throws ExceptionInvalidNumber { + return !s.equalsIgnoreCase("peaceful") && !s.equalsIgnoreCase("p") ? (!s.equalsIgnoreCase("easy") && !s.equalsIgnoreCase("e") ? (!s.equalsIgnoreCase("normal") && !s.equalsIgnoreCase("n") ? (!s.equalsIgnoreCase("hard") && !s.equalsIgnoreCase("h") ? EnumDifficulty.getById(a(s, 0, 3)) : EnumDifficulty.HARD) : EnumDifficulty.NORMAL) : EnumDifficulty.EASY) : EnumDifficulty.PEACEFUL; + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "peaceful", "easy", "normal", "hard"}) : null; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java new file mode 100644 index 0000000..743d385 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java @@ -0,0 +1,107 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandEffect extends CommandAbstract { + + public CommandEffect() {} + + public String getCommand() { + return "effect"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.effect.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.effect.usage", new Object[0]); + } else { + EntityLiving entityliving = (EntityLiving) a(icommandlistener, astring[0], EntityLiving.class); + + if (astring[1].equals("clear")) { + if (entityliving.getEffects().isEmpty()) { + throw new CommandException("commands.effect.failure.notActive.all", new Object[] { entityliving.getName()}); + } else { + entityliving.removeAllEffects(); + a(icommandlistener, this, "commands.effect.success.removed.all", new Object[] { entityliving.getName()}); + } + } else { + int i; + + try { + i = a(astring[1], 1); + } catch (ExceptionInvalidNumber exceptioninvalidnumber) { + MobEffectList mobeffectlist = MobEffectList.b(astring[1]); + + if (mobeffectlist == null) { + throw exceptioninvalidnumber; + } + + i = mobeffectlist.id; + } + + int j = 600; + int k = 30; + int l = 0; + + if (i >= 0 && i < MobEffectList.byId.length && MobEffectList.byId[i] != null) { + MobEffectList mobeffectlist1 = MobEffectList.byId[i]; + + if (astring.length >= 3) { + k = a(astring[2], 0, 1000000); + if (mobeffectlist1.isInstant()) { + j = k; + } else { + j = k * 20; + } + } else if (mobeffectlist1.isInstant()) { + j = 1; + } + + if (astring.length >= 4) { + l = a(astring[3], 0, 255); + } + + boolean flag = true; + + if (astring.length >= 5 && "true".equalsIgnoreCase(astring[4])) { + flag = false; + } + + if (k > 0) { + MobEffect mobeffect = new MobEffect(i, j, l, false, flag); + + entityliving.addEffect(mobeffect); + a(icommandlistener, this, "commands.effect.success", new Object[] { new ChatMessage(mobeffect.g(), new Object[0]), Integer.valueOf(i), Integer.valueOf(l), entityliving.getName(), Integer.valueOf(k)}); + } else if (entityliving.hasEffect(i)) { + entityliving.removeEffect(i); + a(icommandlistener, this, "commands.effect.success.removed", new Object[] { new ChatMessage(mobeffectlist1.a(), new Object[0]), entityliving.getName()}); + } else { + throw new CommandException("commands.effect.failure.notActive", new Object[] { new ChatMessage(mobeffectlist1.a(), new Object[0]), entityliving.getName()}); + } + } else { + throw new ExceptionInvalidNumber("commands.effect.notFound", new Object[] { Integer.valueOf(i)}); + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) MobEffectList.c()) : (astring.length == 5 ? a(astring, new String[] { "true", "false"}) : null)); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java new file mode 100644 index 0000000..500a6a9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java @@ -0,0 +1,98 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandEnchant extends CommandAbstract { + + public CommandEnchant() {} + + public String getCommand() { + return "enchant"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.enchant.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.enchant.usage", new Object[0]); + } else { + EntityPlayer entityplayer = a(icommandlistener, astring[0]); + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0); + + int i; + + try { + i = a(astring[1], 0); + } catch (ExceptionInvalidNumber exceptioninvalidnumber) { + Enchantment enchantment = Enchantment.getByName(astring[1]); + + if (enchantment == null) { + throw exceptioninvalidnumber; + } + + i = enchantment.id; + } + + int j = 1; + ItemStack itemstack = entityplayer.bZ(); + + if (itemstack == null) { + throw new CommandException("commands.enchant.noItem", new Object[0]); + } else { + Enchantment enchantment1 = Enchantment.getById(i); + + if (enchantment1 == null) { + throw new ExceptionInvalidNumber("commands.enchant.notFound", new Object[] { Integer.valueOf(i)}); + } else if (!enchantment1.canEnchant(itemstack)) { + throw new CommandException("commands.enchant.cantEnchant", new Object[0]); + } else { + if (astring.length >= 3) { + j = a(astring[2], enchantment1.getStartLevel(), enchantment1.getMaxLevel()); + } + + if (itemstack.hasTag()) { + NBTTagList nbttaglist = itemstack.getEnchantments(); + + if (nbttaglist != null) { + for (int k = 0; k < nbttaglist.size(); ++k) { + short short0 = nbttaglist.get(k).getShort("id"); + + if (Enchantment.getById(short0) != null) { + Enchantment enchantment2 = Enchantment.getById(short0); + + if (!enchantment2.a(enchantment1)) { + throw new CommandException("commands.enchant.cantCombine", new Object[] { enchantment1.d(j), enchantment2.d(nbttaglist.get(k).getShort("lvl"))}); + } + } + } + } + } + + itemstack.addEnchantment(enchantment1, j); + a(icommandlistener, this, "commands.enchant.success", new Object[0]); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 1); + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Enchantment.getEffects()) : null); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java new file mode 100644 index 0000000..464c1d3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java @@ -0,0 +1,57 @@ +package net.minecraft.server; + +public class CommandEntityData extends CommandAbstract { + + public CommandEntityData() {} + + public String getCommand() { + return "entitydata"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.entitydata.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.entitydata.usage", new Object[0]); + } else { + Entity entity = b(icommandlistener, astring[0]); + + if (entity instanceof EntityHuman) { + throw new CommandException("commands.entitydata.noPlayers", new Object[] { entity.getScoreboardDisplayName()}); + } else { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + entity.e(nbttagcompound); + NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttagcompound.clone(); + + NBTTagCompound nbttagcompound2; + + try { + nbttagcompound2 = MojangsonParser.parse(a(icommandlistener, astring, 1).c()); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.entitydata.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + + nbttagcompound2.remove("UUIDMost"); + nbttagcompound2.remove("UUIDLeast"); + nbttagcompound.a(nbttagcompound2); + if (nbttagcompound.equals(nbttagcompound1)) { + throw new CommandException("commands.entitydata.failed", new Object[] { nbttagcompound.toString()}); + } else { + entity.f(nbttagcompound); + a(icommandlistener, this, "commands.entitydata.success", new Object[] { nbttagcompound.toString()}); + } + } + } + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java new file mode 100644 index 0000000..abe7b7b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class CommandException extends Exception { + + private final Object[] a; + + public CommandException(String s, Object... aobject) { + super(s); + this.a = aobject; + } + + public Object[] getArgs() { + return this.a; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java new file mode 100644 index 0000000..aab43b1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java @@ -0,0 +1,168 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +public class CommandFill extends CommandAbstract { + + public CommandFill() {} + + public String getCommand() { + return "fill"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.fill.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 7) { + throw new ExceptionUsage("commands.fill.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + BlockPosition blockposition1 = a(icommandlistener, astring, 3, false); + Block block = CommandAbstract.g(icommandlistener, astring[6]); + int i = 0; + + if (astring.length >= 8) { + i = a(astring[7], 0, 15); + } + + BlockPosition blockposition2 = new BlockPosition(Math.min(blockposition.getX(), blockposition1.getX()), Math.min(blockposition.getY(), blockposition1.getY()), Math.min(blockposition.getZ(), blockposition1.getZ())); + BlockPosition blockposition3 = new BlockPosition(Math.max(blockposition.getX(), blockposition1.getX()), Math.max(blockposition.getY(), blockposition1.getY()), Math.max(blockposition.getZ(), blockposition1.getZ())); + int j = (blockposition3.getX() - blockposition2.getX() + 1) * (blockposition3.getY() - blockposition2.getY() + 1) * (blockposition3.getZ() - blockposition2.getZ() + 1); + + if (j > '\u8000') { + throw new CommandException("commands.fill.tooManyBlocks", new Object[] { Integer.valueOf(j), Integer.valueOf('\u8000')}); + } else if (blockposition2.getY() >= 0 && blockposition3.getY() < 256) { + World world = icommandlistener.getWorld(); + + for (int k = blockposition2.getZ(); k < blockposition3.getZ() + 16; k += 16) { + for (int l = blockposition2.getX(); l < blockposition3.getX() + 16; l += 16) { + if (!world.isLoaded(new BlockPosition(l, blockposition3.getY() - blockposition2.getY(), k))) { + throw new CommandException("commands.fill.outOfWorld", new Object[0]); + } + } + } + + NBTTagCompound nbttagcompound = new NBTTagCompound(); + boolean flag = false; + + if (astring.length >= 10 && block.isTileEntity()) { + String s = a(icommandlistener, astring, 9).c(); + + try { + nbttagcompound = MojangsonParser.parse(s); + flag = true; + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.fill.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + ArrayList arraylist = Lists.newArrayList(); + + j = 0; + + for (int i1 = blockposition2.getZ(); i1 <= blockposition3.getZ(); ++i1) { + for (int j1 = blockposition2.getY(); j1 <= blockposition3.getY(); ++j1) { + for (int k1 = blockposition2.getX(); k1 <= blockposition3.getX(); ++k1) { + BlockPosition blockposition4 = new BlockPosition(k1, j1, i1); + IBlockData iblockdata; + + if (astring.length >= 9) { + if (!astring[8].equals("outline") && !astring[8].equals("hollow")) { + if (astring[8].equals("destroy")) { + world.setAir(blockposition4, true); + } else if (astring[8].equals("keep")) { + if (!world.isEmpty(blockposition4)) { + continue; + } + } else if (astring[8].equals("replace") && !block.isTileEntity()) { + if (astring.length > 9) { + Block block1 = CommandAbstract.g(icommandlistener, astring[9]); + + if (world.getType(blockposition4).getBlock() != block1) { + continue; + } + } + + if (astring.length > 10) { + int l1 = CommandAbstract.a(astring[10]); + + iblockdata = world.getType(blockposition4); + if (iblockdata.getBlock().toLegacyData(iblockdata) != l1) { + continue; + } + } + } + } else if (k1 != blockposition2.getX() && k1 != blockposition3.getX() && j1 != blockposition2.getY() && j1 != blockposition3.getY() && i1 != blockposition2.getZ() && i1 != blockposition3.getZ()) { + if (astring[8].equals("hollow")) { + world.setTypeAndData(blockposition4, Blocks.AIR.getBlockData(), 2); + arraylist.add(blockposition4); + } + continue; + } + } + + TileEntity tileentity = world.getTileEntity(blockposition4); + + if (tileentity != null) { + if (tileentity instanceof IInventory) { + ((IInventory) tileentity).l(); + } + + world.setTypeAndData(blockposition4, Blocks.BARRIER.getBlockData(), block == Blocks.BARRIER ? 2 : 4); + } + + iblockdata = block.fromLegacyData(i); + if (world.setTypeAndData(blockposition4, iblockdata, 2)) { + arraylist.add(blockposition4); + ++j; + if (flag) { + TileEntity tileentity1 = world.getTileEntity(blockposition4); + + if (tileentity1 != null) { + nbttagcompound.setInt("x", blockposition4.getX()); + nbttagcompound.setInt("y", blockposition4.getY()); + nbttagcompound.setInt("z", blockposition4.getZ()); + tileentity1.a(nbttagcompound); + } + } + } + } + } + } + + Iterator iterator = arraylist.iterator(); + + while (iterator.hasNext()) { + BlockPosition blockposition5 = (BlockPosition) iterator.next(); + Block block2 = world.getType(blockposition5).getBlock(); + + world.update(blockposition5, block2); + } + + if (j <= 0) { + throw new CommandException("commands.fill.failed", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, j); + a(icommandlistener, this, "commands.fill.success", new Object[] { Integer.valueOf(j)}); + } + } else { + throw new CommandException("commands.fill.outOfWorld", new Object[0]); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length == 7 ? a(astring, (Collection) Block.REGISTRY.keySet()) : (astring.length == 9 ? a(astring, new String[] { "replace", "destroy", "keep", "hollow", "outline"}) : (astring.length == 10 && "replace".equals(astring[8]) ? a(astring, (Collection) Block.REGISTRY.keySet()) : null)))); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java new file mode 100644 index 0000000..cfeaf32 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.util.Iterator; + +public class CommandGamemodeDefault extends CommandGamemode { + + public CommandGamemodeDefault() {} + + public String getCommand() { + return "defaultgamemode"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.defaultgamemode.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length <= 0) { + throw new ExceptionUsage("commands.defaultgamemode.usage", new Object[0]); + } else { + WorldSettings.EnumGamemode worldsettings_enumgamemode = this.h(icommandlistener, astring[0]); + + this.a(worldsettings_enumgamemode); + a(icommandlistener, this, "commands.defaultgamemode.success", new Object[] { new ChatMessage("gameMode." + worldsettings_enumgamemode.b(), new Object[0])}); + } + } + + protected void a(WorldSettings.EnumGamemode worldsettings_enumgamemode) { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + + minecraftserver.setGamemode(worldsettings_enumgamemode); + EntityPlayer entityplayer; + + if (minecraftserver.getForceGamemode()) { + for (Iterator iterator = MinecraftServer.getServer().getPlayerList().v().iterator(); iterator.hasNext(); entityplayer.fallDistance = 0.0F) { + entityplayer = (EntityPlayer) iterator.next(); + entityplayer.a(worldsettings_enumgamemode); + } + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java new file mode 100644 index 0000000..2449723 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java @@ -0,0 +1,82 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandGive extends CommandAbstract { + + public CommandGive() {} + + public String getCommand() { + return "give"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.give.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.give.usage", new Object[0]); + } else { + EntityPlayer entityplayer = a(icommandlistener, astring[0]); + Item item = f(icommandlistener, astring[1]); + int i = astring.length >= 3 ? a(astring[2], 1, 64) : 1; + int j = astring.length >= 4 ? a(astring[3]) : 0; + ItemStack itemstack = new ItemStack(item, i, j); + + if (astring.length >= 5) { + String s = a(icommandlistener, astring, 4).c(); + + try { + itemstack.setTag(MojangsonParser.parse(s)); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.give.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + boolean flag = entityplayer.inventory.pickup(itemstack); + + if (flag) { + entityplayer.world.makeSound(entityplayer, "random.pop", 0.2F, ((entityplayer.bc().nextFloat() - entityplayer.bc().nextFloat()) * 0.7F + 1.0F) * 2.0F); + entityplayer.defaultContainer.b(); + } + + EntityItem entityitem; + + if (flag && itemstack.count <= 0) { + itemstack.count = 1; + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, i); + entityitem = entityplayer.drop(itemstack, false); + if (entityitem != null) { + entityitem.v(); + } + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, i - itemstack.count); + entityitem = entityplayer.drop(itemstack, false); + if (entityitem != null) { + entityitem.q(); + entityitem.b(entityplayer.getName()); + } + } + + a(icommandlistener, this, "commands.give.success", new Object[] { itemstack.C(), Integer.valueOf(i), entityplayer.getName()}); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Item.REGISTRY.keySet()) : null); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java new file mode 100644 index 0000000..f0c7e1f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java @@ -0,0 +1,186 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class CommandHandler implements ICommandHandler { + + private static final Logger a = LogManager.getLogger(); + private final Map b = Maps.newHashMap(); + private final Set c = Sets.newHashSet(); + + public CommandHandler() {} + + public int a(ICommandListener icommandlistener, String s) { + s = s.trim(); + if (s.startsWith("/")) { + s = s.substring(1); + } + + String[] astring = s.split(" "); + String s1 = astring[0]; + + astring = a(astring); + ICommand icommand = (ICommand) this.b.get(s1); + int i = this.a(icommand, astring); + int j = 0; + ChatMessage chatmessage; + + if (icommand == null) { + chatmessage = new ChatMessage("commands.generic.notFound", new Object[0]); + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + } else if (icommand.canUse(icommandlistener)) { + if (i > -1) { + List list = PlayerSelector.getPlayers(icommandlistener, astring[i], Entity.class); + String s2 = astring[i]; + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ENTITIES, list.size()); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + Entity entity = (Entity) iterator.next(); + + astring[i] = entity.getUniqueID().toString(); + if (this.a(icommandlistener, astring, icommand, s)) { + ++j; + } + } + + astring[i] = s2; + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ENTITIES, 1); + if (this.a(icommandlistener, astring, icommand, s)) { + ++j; + } + } + } else { + chatmessage = new ChatMessage("commands.generic.permission", new Object[0]); + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + } + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.SUCCESS_COUNT, j); + return j; + } + + protected boolean a(ICommandListener icommandlistener, String[] astring, ICommand icommand, String s) { + ChatMessage chatmessage; + + try { + icommand.execute(icommandlistener, astring); + return true; + } catch (ExceptionUsage exceptionusage) { + chatmessage = new ChatMessage("commands.generic.usage", new Object[] { new ChatMessage(exceptionusage.getMessage(), exceptionusage.getArgs())}); + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + } catch (CommandException commandexception) { + chatmessage = new ChatMessage(commandexception.getMessage(), commandexception.getArgs()); + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + } catch (Throwable throwable) { + chatmessage = new ChatMessage("commands.generic.exception", new Object[0]); + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + CommandHandler.a.warn("Couldn\'t process command: \'" + s + "\'"); + } + + return false; + } + + public ICommand a(ICommand icommand) { + this.b.put(icommand.getCommand(), icommand); + this.c.add(icommand); + Iterator iterator = icommand.b().iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + ICommand icommand1 = (ICommand) this.b.get(s); + + if (icommand1 == null || !icommand1.getCommand().equals(s)) { + this.b.put(s, icommand); + } + } + + return icommand; + } + + private static String[] a(String[] astring) { + String[] astring1 = new String[astring.length - 1]; + + System.arraycopy(astring, 1, astring1, 0, astring.length - 1); + return astring1; + } + + public List a(ICommandListener icommandlistener, String s, BlockPosition blockposition) { + String[] astring = s.split(" ", -1); + String s1 = astring[0]; + + if (astring.length == 1) { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = this.b.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (CommandAbstract.a(s1, (String) entry.getKey()) && ((ICommand) entry.getValue()).canUse(icommandlistener)) { + arraylist.add(entry.getKey()); + } + } + + return arraylist; + } else { + if (astring.length > 1) { + ICommand icommand = (ICommand) this.b.get(s1); + + if (icommand != null && icommand.canUse(icommandlistener)) { + return icommand.tabComplete(icommandlistener, a(astring), blockposition); + } + } + + return null; + } + } + + public List a(ICommandListener icommandlistener) { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = this.c.iterator(); + + while (iterator.hasNext()) { + ICommand icommand = (ICommand) iterator.next(); + + if (icommand.canUse(icommandlistener)) { + arraylist.add(icommand); + } + } + + return arraylist; + } + + public Map getCommands() { + return this.b; + } + + private int a(ICommand icommand, String[] astring) { + if (icommand == null) { + return -1; + } else { + for (int i = 0; i < astring.length; ++i) { + if (icommand.isListStart(astring, i) && PlayerSelector.isList(astring[i])) { + return i; + } + } + + return -1; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java new file mode 100644 index 0000000..b490b13 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java @@ -0,0 +1,97 @@ +package net.minecraft.server; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class CommandHelp extends CommandAbstract { + + public CommandHelp() {} + + public String getCommand() { + return "help"; + } + + public int a() { + return 0; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.help.usage"; + } + + public List b() { + return Arrays.asList(new String[] { "?"}); + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + List list = this.d(icommandlistener); + boolean flag = true; + int i = (list.size() - 1) / 7; + boolean flag1 = false; + + int j; + + try { + j = astring.length == 0 ? 0 : a(astring[0], 1, i + 1) - 1; + } catch (ExceptionInvalidNumber exceptioninvalidnumber) { + Map map = this.d(); + ICommand icommand = (ICommand) map.get(astring[0]); + + if (icommand != null) { + throw new ExceptionUsage(icommand.getUsage(icommandlistener), new Object[0]); + } + + if (MathHelper.a(astring[0], -1) != -1) { + throw exceptioninvalidnumber; + } + + throw new ExceptionUnknownCommand(); + } + + int k = Math.min((j + 1) * 7, list.size()); + ChatMessage chatmessage = new ChatMessage("commands.help.header", new Object[] { Integer.valueOf(j + 1), Integer.valueOf(i + 1)}); + + chatmessage.getChatModifier().setColor(EnumChatFormat.DARK_GREEN); + icommandlistener.sendMessage(chatmessage); + + for (int l = j * 7; l < k; ++l) { + ICommand icommand1 = (ICommand) list.get(l); + ChatMessage chatmessage1 = new ChatMessage(icommand1.getUsage(icommandlistener), new Object[0]); + + chatmessage1.getChatModifier().setChatClickable(new ChatClickable(ChatClickable.EnumClickAction.SUGGEST_COMMAND, "/" + icommand1.getCommand() + " ")); + icommandlistener.sendMessage(chatmessage1); + } + + if (j == 0 && icommandlistener instanceof EntityHuman) { + ChatMessage chatmessage2 = new ChatMessage("commands.help.footer", new Object[0]); + + chatmessage2.getChatModifier().setColor(EnumChatFormat.GREEN); + icommandlistener.sendMessage(chatmessage2); + } + + } + + protected List d(ICommandListener icommandlistener) { + List list = MinecraftServer.getServer().getCommandHandler().a(icommandlistener); + + Collections.sort(list); + return list; + } + + protected Map d() { + return MinecraftServer.getServer().getCommandHandler().getCommands(); + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + if (astring.length == 1) { + Set set = this.d().keySet(); + + return a(astring, (String[]) set.toArray(new String[set.size()])); + } else { + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java new file mode 100644 index 0000000..2d11e2e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +public class CommandIdleTimeout extends CommandAbstract { + + public CommandIdleTimeout() {} + + public String getCommand() { + return "setidletimeout"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.setidletimeout.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length != 1) { + throw new ExceptionUsage("commands.setidletimeout.usage", new Object[0]); + } else { + int i = a(astring[0], 0); + + MinecraftServer.getServer().setIdleTimeout(i); + a(icommandlistener, this, "commands.setidletimeout.success", new Object[] { Integer.valueOf(i)}); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java new file mode 100644 index 0000000..909087d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandKick extends CommandAbstract { + + public CommandKick() {} + + public String getCommand() { + return "kick"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.kick.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length > 0 && astring[0].length() > 1) { + EntityPlayer entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(astring[0]); + String s = "Kicked by an operator."; + boolean flag = false; + + if (entityplayer == null) { + throw new ExceptionPlayerNotFound(); + } else { + if (astring.length >= 2) { + s = a(icommandlistener, astring, 1).c(); + flag = true; + } + + entityplayer.playerConnection.disconnect(s); + if (flag) { + a(icommandlistener, this, "commands.kick.success.reason", new Object[] { entityplayer.getName(), s}); + } else { + a(icommandlistener, this, "commands.kick.success", new Object[] { entityplayer.getName()}); + } + + } + } else { + throw new ExceptionUsage("commands.kick.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java new file mode 100644 index 0000000..682909b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandKill extends CommandAbstract { + + public CommandKill() {} + + public String getCommand() { + return "kill"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.kill.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length == 0) { + EntityPlayer entityplayer = b(icommandlistener); + + entityplayer.G(); + a(icommandlistener, this, "commands.kill.successful", new Object[] { entityplayer.getScoreboardDisplayName()}); + } else { + Entity entity = b(icommandlistener, astring[0]); + + entity.G(); + a(icommandlistener, this, "commands.kill.successful", new Object[] { entity.getScoreboardDisplayName()}); + } + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java new file mode 100644 index 0000000..f72f4bc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public class CommandList extends CommandAbstract { + + public CommandList() {} + + public String getCommand() { + return "list"; + } + + public int a() { + return 0; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.players.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + int i = MinecraftServer.getServer().I(); + + icommandlistener.sendMessage(new ChatMessage("commands.players.list", new Object[] { Integer.valueOf(i), Integer.valueOf(MinecraftServer.getServer().J())})); + icommandlistener.sendMessage(new ChatComponentText(MinecraftServer.getServer().getPlayerList().b(astring.length > 0 && "uuids".equalsIgnoreCase(astring[0])))); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java new file mode 100644 index 0000000..a1bb5a4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandMe extends CommandAbstract { + + public CommandMe() {} + + public String getCommand() { + return "me"; + } + + public int a() { + return 0; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.me.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length <= 0) { + throw new ExceptionUsage("commands.me.usage", new Object[0]); + } else { + IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 0, !(icommandlistener instanceof EntityHuman)); + + MinecraftServer.getServer().getPlayerList().sendMessage(new ChatMessage("chat.type.emote", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent})); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return a(astring, MinecraftServer.getServer().getPlayers()); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java new file mode 100644 index 0000000..53bf236 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java @@ -0,0 +1,231 @@ +package net.minecraft.server; + +public class CommandObjectiveExecutor { + + private static final int a = CommandObjectiveExecutor.EnumCommandResult.values().length; + private static final String[] b = new String[CommandObjectiveExecutor.a]; + private String[] c; + private String[] d; + + public CommandObjectiveExecutor() { + this.c = CommandObjectiveExecutor.b; + this.d = CommandObjectiveExecutor.b; + } + + public void a(final ICommandListener icommandlistener, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, int i) { + String s = this.c[commandobjectiveexecutor_enumcommandresult.a()]; + + if (s != null) { + ICommandListener icommandlistener1 = new ICommandListener() { + public String getName() { + return icommandlistener.getName(); + } + + public IChatBaseComponent getScoreboardDisplayName() { + return icommandlistener.getScoreboardDisplayName(); + } + + public void sendMessage(IChatBaseComponent ichatbasecomponent) { + icommandlistener.sendMessage(ichatbasecomponent); + } + + public boolean a(int i, String s) { + return true; + } + + public BlockPosition getChunkCoordinates() { + return icommandlistener.getChunkCoordinates(); + } + + public Vec3D d() { + return icommandlistener.d(); + } + + public World getWorld() { + return icommandlistener.getWorld(); + } + + public Entity f() { + return icommandlistener.f(); + } + + public boolean getSendCommandFeedback() { + return icommandlistener.getSendCommandFeedback(); + } + + public void a(CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, int i) { + icommandlistener.a(commandobjectiveexecutor_enumcommandresult, i); + } + }; + + String s1; + + try { + s1 = CommandAbstract.e(icommandlistener1, s); + } catch (ExceptionEntityNotFound exceptionentitynotfound) { + return; + } + + String s2 = this.d[commandobjectiveexecutor_enumcommandresult.a()]; + + if (s2 != null) { + Scoreboard scoreboard = icommandlistener.getWorld().getScoreboard(); + ScoreboardObjective scoreboardobjective = scoreboard.getObjective(s2); + + if (scoreboardobjective != null) { + if (scoreboard.b(s1, scoreboardobjective)) { + ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(s1, scoreboardobjective); + + scoreboardscore.setScore(i); + } + } + } + } + } + + public void a(NBTTagCompound nbttagcompound) { + if (nbttagcompound.hasKeyOfType("CommandStats", 10)) { + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("CommandStats"); + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values(); + int i = acommandobjectiveexecutor_enumcommandresult.length; + + for (int j = 0; j < i; ++j) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j]; + String s = commandobjectiveexecutor_enumcommandresult.b() + "Name"; + String s1 = commandobjectiveexecutor_enumcommandresult.b() + "Objective"; + + if (nbttagcompound1.hasKeyOfType(s, 8) && nbttagcompound1.hasKeyOfType(s1, 8)) { + String s2 = nbttagcompound1.getString(s); + String s3 = nbttagcompound1.getString(s1); + + a(this, commandobjectiveexecutor_enumcommandresult, s2, s3); + } + } + + } + } + + public void b(NBTTagCompound nbttagcompound) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values(); + int i = acommandobjectiveexecutor_enumcommandresult.length; + + for (int j = 0; j < i; ++j) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j]; + String s = this.c[commandobjectiveexecutor_enumcommandresult.a()]; + String s1 = this.d[commandobjectiveexecutor_enumcommandresult.a()]; + + if (s != null && s1 != null) { + nbttagcompound1.setString(commandobjectiveexecutor_enumcommandresult.b() + "Name", s); + nbttagcompound1.setString(commandobjectiveexecutor_enumcommandresult.b() + "Objective", s1); + } + } + + if (!nbttagcompound1.isEmpty()) { + nbttagcompound.set("CommandStats", nbttagcompound1); + } + + } + + public static void a(CommandObjectiveExecutor commandobjectiveexecutor, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, String s, String s1) { + if (s != null && s.length() != 0 && s1 != null && s1.length() != 0) { + if (commandobjectiveexecutor.c == CommandObjectiveExecutor.b || commandobjectiveexecutor.d == CommandObjectiveExecutor.b) { + commandobjectiveexecutor.c = new String[CommandObjectiveExecutor.a]; + commandobjectiveexecutor.d = new String[CommandObjectiveExecutor.a]; + } + + commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()] = s; + commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()] = s1; + } else { + a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult); + } + } + + private static void a(CommandObjectiveExecutor commandobjectiveexecutor, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult) { + if (commandobjectiveexecutor.c != CommandObjectiveExecutor.b && commandobjectiveexecutor.d != CommandObjectiveExecutor.b) { + commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()] = null; + commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()] = null; + boolean flag = true; + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values(); + int i = acommandobjectiveexecutor_enumcommandresult.length; + + for (int j = 0; j < i; ++j) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult1 = acommandobjectiveexecutor_enumcommandresult[j]; + + if (commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult1.a()] != null && commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult1.a()] != null) { + flag = false; + break; + } + } + + if (flag) { + commandobjectiveexecutor.c = CommandObjectiveExecutor.b; + commandobjectiveexecutor.d = CommandObjectiveExecutor.b; + } + + } + } + + public void a(CommandObjectiveExecutor commandobjectiveexecutor) { + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values(); + int i = acommandobjectiveexecutor_enumcommandresult.length; + + for (int j = 0; j < i; ++j) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j]; + + a(this, commandobjectiveexecutor_enumcommandresult, commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()], commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()]); + } + + } + + public static enum EnumCommandResult { + + SUCCESS_COUNT(0, "SuccessCount"), AFFECTED_BLOCKS(1, "AffectedBlocks"), AFFECTED_ENTITIES(2, "AffectedEntities"), AFFECTED_ITEMS(3, "AffectedItems"), QUERY_RESULT(4, "QueryResult"); + + final int f; + final String g; + + private EnumCommandResult(int i, String s) { + this.f = i; + this.g = s; + } + + public int a() { + return this.f; + } + + public String b() { + return this.g; + } + + public static String[] c() { + String[] astring = new String[values().length]; + int i = 0; + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = values(); + int j = acommandobjectiveexecutor_enumcommandresult.length; + + for (int k = 0; k < j; ++k) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[k]; + + astring[i++] = commandobjectiveexecutor_enumcommandresult.b(); + } + + return astring; + } + + public static CommandObjectiveExecutor.EnumCommandResult a(String s) { + CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = values(); + int i = acommandobjectiveexecutor_enumcommandresult.length; + + for (int j = 0; j < i; ++j) { + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j]; + + if (commandobjectiveexecutor_enumcommandresult.b().equals(s)) { + return commandobjectiveexecutor_enumcommandresult; + } + } + + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java new file mode 100644 index 0000000..dedac55 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.mojang.authlib.GameProfile; +import java.util.ArrayList; +import java.util.List; + +public class CommandOp extends CommandAbstract { + + public CommandOp() {} + + public String getCommand() { + return "op"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.op.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length == 1 && astring[0].length() > 0) { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + GameProfile gameprofile = minecraftserver.getUserCache().getProfile(astring[0]); + + if (gameprofile == null) { + throw new CommandException("commands.op.failed", new Object[] { astring[0]}); + } else { + minecraftserver.getPlayerList().addOp(gameprofile); + a(icommandlistener, this, "commands.op.success", new Object[] { astring[0]}); + } + } else { + throw new ExceptionUsage("commands.op.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + if (astring.length == 1) { + String s = astring[astring.length - 1]; + ArrayList arraylist = Lists.newArrayList(); + GameProfile[] agameprofile = MinecraftServer.getServer().L(); + int i = agameprofile.length; + + for (int j = 0; j < i; ++j) { + GameProfile gameprofile = agameprofile[j]; + + if (!MinecraftServer.getServer().getPlayerList().isOp(gameprofile) && a(s, gameprofile.getName())) { + arraylist.add(gameprofile.getName()); + } + } + + return arraylist; + } else { + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java new file mode 100644 index 0000000..dd507b2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java @@ -0,0 +1,45 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.util.List; + +public class CommandPardon extends CommandAbstract { + + public CommandPardon() {} + + public String getCommand() { + return "pardon"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.unban.usage"; + } + + public boolean canUse(ICommandListener icommandlistener) { + return MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled() && super.canUse(icommandlistener); + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length == 1 && astring[0].length() > 0) { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + GameProfile gameprofile = minecraftserver.getPlayerList().getProfileBans().a(astring[0]); + + if (gameprofile == null) { + throw new CommandException("commands.unban.failed", new Object[] { astring[0]}); + } else { + minecraftserver.getPlayerList().getProfileBans().remove(gameprofile); + a(icommandlistener, this, "commands.unban.success", new Object[] { astring[0]}); + } + } else { + throw new ExceptionUsage("commands.unban.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java new file mode 100644 index 0000000..843513c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.regex.Matcher; + +public class CommandPardonIP extends CommandAbstract { + + public CommandPardonIP() {} + + public String getCommand() { + return "pardon-ip"; + } + + public int a() { + return 3; + } + + public boolean canUse(ICommandListener icommandlistener) { + return MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() && super.canUse(icommandlistener); + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.unbanip.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length == 1 && astring[0].length() > 1) { + Matcher matcher = CommandBanIp.a.matcher(astring[0]); + + if (matcher.matches()) { + MinecraftServer.getServer().getPlayerList().getIPBans().remove(astring[0]); + a(icommandlistener, this, "commands.unbanip.success", new Object[] { astring[0]}); + } else { + throw new ExceptionInvalidSyntax("commands.unbanip.invalid", new Object[0]); + } + } else { + throw new ExceptionUsage("commands.unbanip.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().getIPBans().getEntries()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java new file mode 100644 index 0000000..4fd20bb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java @@ -0,0 +1,99 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandParticle extends CommandAbstract { + + public CommandParticle() {} + + public String getCommand() { + return "particle"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.particle.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 8) { + throw new ExceptionUsage("commands.particle.usage", new Object[0]); + } else { + boolean flag = false; + EnumParticle enumparticle = null; + EnumParticle[] aenumparticle = EnumParticle.values(); + int i = aenumparticle.length; + + for (int j = 0; j < i; ++j) { + EnumParticle enumparticle1 = aenumparticle[j]; + + if (enumparticle1.f()) { + if (astring[0].startsWith(enumparticle1.b())) { + flag = true; + enumparticle = enumparticle1; + break; + } + } else if (astring[0].equals(enumparticle1.b())) { + flag = true; + enumparticle = enumparticle1; + break; + } + } + + if (!flag) { + throw new CommandException("commands.particle.notFound", new Object[] { astring[0]}); + } else { + String s = astring[0]; + Vec3D vec3d = icommandlistener.d(); + double d0 = (double) ((float) b(vec3d.a, astring[1], true)); + double d1 = (double) ((float) b(vec3d.b, astring[2], true)); + double d2 = (double) ((float) b(vec3d.c, astring[3], true)); + double d3 = (double) ((float) c(astring[4])); + double d4 = (double) ((float) c(astring[5])); + double d5 = (double) ((float) c(astring[6])); + double d6 = (double) ((float) c(astring[7])); + int k = 0; + + if (astring.length > 8) { + k = a(astring[8], 0); + } + + boolean flag1 = false; + + if (astring.length > 9 && "force".equals(astring[9])) { + flag1 = true; + } + + World world = icommandlistener.getWorld(); + + if (world instanceof WorldServer) { + WorldServer worldserver = (WorldServer) world; + int[] aint = new int[enumparticle.d()]; + + if (enumparticle.f()) { + String[] astring1 = astring[0].split("_", 3); + + for (int l = 1; l < astring1.length; ++l) { + try { + aint[l - 1] = Integer.parseInt(astring1[l]); + } catch (NumberFormatException numberformatexception) { + throw new CommandException("commands.particle.notFound", new Object[] { astring[0]}); + } + } + } + + worldserver.a(enumparticle, flag1, d0, d1, d2, k, d3, d4, d5, d6, aint); + a(icommandlistener, this, "commands.particle.success", new Object[] { s, Integer.valueOf(Math.max(k, 1))}); + } + + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, EnumParticle.a()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : (astring.length == 10 ? a(astring, new String[] { "normal", "force"}) : null)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java new file mode 100644 index 0000000..5d051ff --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java @@ -0,0 +1,100 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandPlaySound extends CommandAbstract { + + public CommandPlaySound() {} + + public String getCommand() { + return "playsound"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.playsound.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage(this.getUsage(icommandlistener), new Object[0]); + } else { + byte b0 = 0; + int i = b0 + 1; + String s = astring[b0]; + EntityPlayer entityplayer = a(icommandlistener, astring[i++]); + Vec3D vec3d = icommandlistener.d(); + double d0 = vec3d.a; + + if (astring.length > i) { + d0 = b(d0, astring[i++], true); + } + + double d1 = vec3d.b; + + if (astring.length > i) { + d1 = b(d1, astring[i++], 0, 0, false); + } + + double d2 = vec3d.c; + + if (astring.length > i) { + d2 = b(d2, astring[i++], true); + } + + double d3 = 1.0D; + + if (astring.length > i) { + d3 = a(astring[i++], 0.0D, 3.4028234663852886E38D); + } + + double d4 = 1.0D; + + if (astring.length > i) { + d4 = a(astring[i++], 0.0D, 2.0D); + } + + double d5 = 0.0D; + + if (astring.length > i) { + d5 = a(astring[i], 0.0D, 1.0D); + } + + double d6 = d3 > 1.0D ? d3 * 16.0D : 16.0D; + double d7 = entityplayer.f(d0, d1, d2); + + if (d7 > d6) { + if (d5 <= 0.0D) { + throw new CommandException("commands.playsound.playerTooFar", new Object[] { entityplayer.getName()}); + } + + double d8 = d0 - entityplayer.locX; + double d9 = d1 - entityplayer.locY; + double d10 = d2 - entityplayer.locZ; + double d11 = Math.sqrt(d8 * d8 + d9 * d9 + d10 * d10); + + if (d11 > 0.0D) { + d0 = entityplayer.locX + d8 / d11 * 2.0D; + d1 = entityplayer.locY + d9 / d11 * 2.0D; + d2 = entityplayer.locZ + d10 / d11 * 2.0D; + } + + d3 = d5; + } + + entityplayer.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(s, d0, d1, d2, (float) d3, (float) d4)); + a(icommandlistener, this, "commands.playsound.success", new Object[] { s, entityplayer.getName()}); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 2 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length > 2 && astring.length <= 5 ? a(astring, 2, blockposition) : null); + } + + public boolean isListStart(String[] astring, int i) { + return i == 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java new file mode 100644 index 0000000..0800672 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +public class CommandPublish extends CommandAbstract { + + public CommandPublish() {} + + public String getCommand() { + return "publish"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.publish.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + String s = MinecraftServer.getServer().a(WorldSettings.EnumGamemode.SURVIVAL, false); + + if (s != null) { + a(icommandlistener, this, "commands.publish.started", new Object[] { s}); + } else { + a(icommandlistener, this, "commands.publish.failed", new Object[0]); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java new file mode 100644 index 0000000..4f6b19b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java @@ -0,0 +1,185 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +public class CommandReplaceItem extends CommandAbstract { + + private static final Map a = Maps.newHashMap(); + + public CommandReplaceItem() {} + + public String getCommand() { + return "replaceitem"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.replaceitem.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.replaceitem.usage", new Object[0]); + } else { + boolean flag; + + if (astring[0].equals("entity")) { + flag = false; + } else { + if (!astring[0].equals("block")) { + throw new ExceptionUsage("commands.replaceitem.usage", new Object[0]); + } + + flag = true; + } + + byte b0; + + if (flag) { + if (astring.length < 6) { + throw new ExceptionUsage("commands.replaceitem.block.usage", new Object[0]); + } + + b0 = 4; + } else { + if (astring.length < 4) { + throw new ExceptionUsage("commands.replaceitem.entity.usage", new Object[0]); + } + + b0 = 2; + } + + int i = b0 + 1; + int j = this.e(astring[b0]); + + Item item; + + try { + item = f(icommandlistener, astring[i]); + } catch (ExceptionInvalidNumber exceptioninvalidnumber) { + if (Block.getByName(astring[i]) != Blocks.AIR) { + throw exceptioninvalidnumber; + } + + item = null; + } + + ++i; + int k = astring.length > i ? a(astring[i++], 1, 64) : 1; + int l = astring.length > i ? a(astring[i++]) : 0; + ItemStack itemstack = new ItemStack(item, k, l); + + if (astring.length > i) { + String s = a(icommandlistener, astring, i).c(); + + try { + itemstack.setTag(MojangsonParser.parse(s)); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.replaceitem.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + if (itemstack.getItem() == null) { + itemstack = null; + } + + if (flag) { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 1, false); + World world = icommandlistener.getWorld(); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity == null || !(tileentity instanceof IInventory)) { + throw new CommandException("commands.replaceitem.noContainer", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + IInventory iinventory = (IInventory) tileentity; + + if (j >= 0 && j < iinventory.getSize()) { + iinventory.setItem(j, itemstack); + } + } else { + Entity entity = b(icommandlistener, astring[1]); + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0); + if (entity instanceof EntityHuman) { + ((EntityHuman) entity).defaultContainer.b(); + } + + if (!entity.d(j, itemstack)) { + throw new CommandException("commands.replaceitem.failed", new Object[] { Integer.valueOf(j), Integer.valueOf(k), itemstack == null ? "Air" : itemstack.C()}); + } + + if (entity instanceof EntityHuman) { + ((EntityHuman) entity).defaultContainer.b(); + } + } + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, k); + a(icommandlistener, this, "commands.replaceitem.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k), itemstack == null ? "Air" : itemstack.C()}); + } + } + + private int e(String s) throws CommandException { + if (!CommandReplaceItem.a.containsKey(s)) { + throw new CommandException("commands.generic.parameter.invalid", new Object[] { s}); + } else { + return ((Integer) CommandReplaceItem.a.get(s)).intValue(); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "entity", "block"}) : (astring.length == 2 && astring[0].equals("entity") ? a(astring, this.d()) : (astring.length >= 2 && astring.length <= 4 && astring[0].equals("block") ? a(astring, 1, blockposition) : ((astring.length != 3 || !astring[0].equals("entity")) && (astring.length != 5 || !astring[0].equals("block")) ? ((astring.length != 4 || !astring[0].equals("entity")) && (astring.length != 6 || !astring[0].equals("block")) ? null : a(astring, (Collection) Item.REGISTRY.keySet())) : a(astring, (Collection) CommandReplaceItem.a.keySet())))); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return astring.length > 0 && astring[0].equals("entity") && i == 1; + } + + static { + int i; + + for (i = 0; i < 54; ++i) { + CommandReplaceItem.a.put("slot.container." + i, Integer.valueOf(i)); + } + + for (i = 0; i < 9; ++i) { + CommandReplaceItem.a.put("slot.hotbar." + i, Integer.valueOf(i)); + } + + for (i = 0; i < 27; ++i) { + CommandReplaceItem.a.put("slot.inventory." + i, Integer.valueOf(9 + i)); + } + + for (i = 0; i < 27; ++i) { + CommandReplaceItem.a.put("slot.enderchest." + i, Integer.valueOf(200 + i)); + } + + for (i = 0; i < 8; ++i) { + CommandReplaceItem.a.put("slot.villager." + i, Integer.valueOf(300 + i)); + } + + for (i = 0; i < 15; ++i) { + CommandReplaceItem.a.put("slot.horse." + i, Integer.valueOf(500 + i)); + } + + CommandReplaceItem.a.put("slot.weapon", Integer.valueOf(99)); + CommandReplaceItem.a.put("slot.armor.head", Integer.valueOf(103)); + CommandReplaceItem.a.put("slot.armor.chest", Integer.valueOf(102)); + CommandReplaceItem.a.put("slot.armor.legs", Integer.valueOf(101)); + CommandReplaceItem.a.put("slot.armor.feet", Integer.valueOf(100)); + CommandReplaceItem.a.put("slot.horse.saddle", Integer.valueOf(400)); + CommandReplaceItem.a.put("slot.horse.armor", Integer.valueOf(401)); + CommandReplaceItem.a.put("slot.horse.chest", Integer.valueOf(499)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java new file mode 100644 index 0000000..62b2e0f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +public class CommandSaveAll extends CommandAbstract { + + public CommandSaveAll() {} + + public String getCommand() { + return "save-all"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.save.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + + icommandlistener.sendMessage(new ChatMessage("commands.save.start", new Object[0])); + if (minecraftserver.getPlayerList() != null) { + minecraftserver.getPlayerList().savePlayers(); + } + + try { + int i; + WorldServer worldserver; + boolean flag; + + for (i = 0; i < minecraftserver.worldServer.length; ++i) { + if (minecraftserver.worldServer[i] != null) { + worldserver = minecraftserver.worldServer[i]; + flag = worldserver.savingDisabled; + worldserver.savingDisabled = false; + worldserver.save(true, (IProgressUpdate) null); + worldserver.savingDisabled = flag; + } + } + + if (astring.length > 0 && "flush".equals(astring[0])) { + icommandlistener.sendMessage(new ChatMessage("commands.save.flushStart", new Object[0])); + + for (i = 0; i < minecraftserver.worldServer.length; ++i) { + if (minecraftserver.worldServer[i] != null) { + worldserver = minecraftserver.worldServer[i]; + flag = worldserver.savingDisabled; + worldserver.savingDisabled = false; + worldserver.flushSave(); + worldserver.savingDisabled = flag; + } + } + + icommandlistener.sendMessage(new ChatMessage("commands.save.flushEnd", new Object[0])); + } + } catch (ExceptionWorldConflict exceptionworldconflict) { + a(icommandlistener, this, "commands.save.failed", new Object[] { exceptionworldconflict.getMessage()}); + return; + } + + a(icommandlistener, this, "commands.save.success", new Object[0]); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java new file mode 100644 index 0000000..0b490e9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +public class CommandSaveOff extends CommandAbstract { + + public CommandSaveOff() {} + + public String getCommand() { + return "save-off"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.save-off.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + boolean flag = false; + + for (int i = 0; i < minecraftserver.worldServer.length; ++i) { + if (minecraftserver.worldServer[i] != null) { + WorldServer worldserver = minecraftserver.worldServer[i]; + + if (!worldserver.savingDisabled) { + worldserver.savingDisabled = true; + flag = true; + } + } + } + + if (flag) { + a(icommandlistener, this, "commands.save.disabled", new Object[0]); + } else { + throw new CommandException("commands.save-off.alreadyOff", new Object[0]); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java new file mode 100644 index 0000000..205c5c7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +public class CommandSaveOn extends CommandAbstract { + + public CommandSaveOn() {} + + public String getCommand() { + return "save-on"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.save-on.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + boolean flag = false; + + for (int i = 0; i < minecraftserver.worldServer.length; ++i) { + if (minecraftserver.worldServer[i] != null) { + WorldServer worldserver = minecraftserver.worldServer[i]; + + if (worldserver.savingDisabled) { + worldserver.savingDisabled = false; + flag = true; + } + } + } + + if (flag) { + a(icommandlistener, this, "commands.save.enabled", new Object[0]); + } else { + throw new CommandException("commands.save-on.alreadyOn", new Object[0]); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java new file mode 100644 index 0000000..501075c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandSay extends CommandAbstract { + + public CommandSay() {} + + public String getCommand() { + return "say"; + } + + public int a() { + return 1; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.say.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length > 0 && astring[0].length() > 0) { + IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 0, true); + + MinecraftServer.getServer().getPlayerList().sendMessage(new ChatMessage("chat.type.announcement", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent})); + } else { + throw new ExceptionUsage("commands.say.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java new file mode 100644 index 0000000..1545eb7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java @@ -0,0 +1,28 @@ +package net.minecraft.server; + +public class CommandSeed extends CommandAbstract { + + public CommandSeed() {} + + public boolean canUse(ICommandListener icommandlistener) { + return MinecraftServer.getServer().T() || super.canUse(icommandlistener); + } + + public String getCommand() { + return "seed"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.seed.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + Object object = icommandlistener instanceof EntityHuman ? ((EntityHuman) icommandlistener).world : MinecraftServer.getServer().getWorldServer(0); + + icommandlistener.sendMessage(new ChatMessage("commands.seed.success", new Object[] { Long.valueOf(((World) object).getSeed())})); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java new file mode 100644 index 0000000..0e4e11f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java @@ -0,0 +1,103 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandSetBlock extends CommandAbstract { + + public CommandSetBlock() {} + + public String getCommand() { + return "setblock"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.setblock.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 4) { + throw new ExceptionUsage("commands.setblock.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + Block block = CommandAbstract.g(icommandlistener, astring[3]); + int i = 0; + + if (astring.length >= 5) { + i = a(astring[4], 0, 15); + } + + World world = icommandlistener.getWorld(); + + if (!world.isLoaded(blockposition)) { + throw new CommandException("commands.setblock.outOfWorld", new Object[0]); + } else { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + boolean flag = false; + + if (astring.length >= 7 && block.isTileEntity()) { + String s = a(icommandlistener, astring, 6).c(); + + try { + nbttagcompound = MojangsonParser.parse(s); + flag = true; + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.setblock.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + if (astring.length >= 6) { + if (astring[5].equals("destroy")) { + world.setAir(blockposition, true); + if (block == Blocks.AIR) { + a(icommandlistener, this, "commands.setblock.success", new Object[0]); + return; + } + } else if (astring[5].equals("keep") && !world.isEmpty(blockposition)) { + throw new CommandException("commands.setblock.noChange", new Object[0]); + } + } + + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity != null) { + if (tileentity instanceof IInventory) { + ((IInventory) tileentity).l(); + } + + world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), block == Blocks.AIR ? 2 : 4); + } + + IBlockData iblockdata = block.fromLegacyData(i); + + if (!world.setTypeAndData(blockposition, iblockdata, 2)) { + throw new CommandException("commands.setblock.noChange", new Object[0]); + } else { + if (flag) { + TileEntity tileentity1 = world.getTileEntity(blockposition); + + if (tileentity1 != null) { + nbttagcompound.setInt("x", blockposition.getX()); + nbttagcompound.setInt("y", blockposition.getY()); + nbttagcompound.setInt("z", blockposition.getZ()); + tileentity1.a(nbttagcompound); + } + } + + world.update(blockposition, iblockdata.getBlock()); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1); + a(icommandlistener, this, "commands.setblock.success", new Object[0]); + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length == 4 ? a(astring, (Collection) Block.REGISTRY.keySet()) : (astring.length == 6 ? a(astring, new String[] { "replace", "destroy", "keep"}) : null)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java new file mode 100644 index 0000000..209d503 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandSetWorldSpawn extends CommandAbstract { + + public CommandSetWorldSpawn() {} + + public String getCommand() { + return "setworldspawn"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.setworldspawn.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + BlockPosition blockposition; + + if (astring.length == 0) { + blockposition = b(icommandlistener).getChunkCoordinates(); + } else { + if (astring.length != 3 || icommandlistener.getWorld() == null) { + throw new ExceptionUsage("commands.setworldspawn.usage", new Object[0]); + } + + blockposition = a(icommandlistener, astring, 0, true); + } + + icommandlistener.getWorld().B(blockposition); + MinecraftServer.getServer().getPlayerList().sendAll(new PacketPlayOutSpawnPosition(blockposition)); + a(icommandlistener, this, "commands.setworldspawn.success", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java new file mode 100644 index 0000000..aa9434b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandSpawnpoint extends CommandAbstract { + + public CommandSpawnpoint() {} + + public String getCommand() { + return "spawnpoint"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.spawnpoint.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length > 1 && astring.length < 4) { + throw new ExceptionUsage("commands.spawnpoint.usage", new Object[0]); + } else { + EntityPlayer entityplayer = astring.length > 0 ? a(icommandlistener, astring[0]) : b(icommandlistener); + BlockPosition blockposition = astring.length > 3 ? a(icommandlistener, astring, 1, true) : entityplayer.getChunkCoordinates(); + + if (entityplayer.world != null) { + entityplayer.setRespawnPosition(blockposition, true); + a(icommandlistener, this, "commands.spawnpoint.success", new Object[] { entityplayer.getName(), Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : null); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java new file mode 100644 index 0000000..7d58f6f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java @@ -0,0 +1,166 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +public class CommandStats extends CommandAbstract { + + public CommandStats() {} + + public String getCommand() { + return "stats"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.stats.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.stats.usage", new Object[0]); + } else { + boolean flag; + + if (astring[0].equals("entity")) { + flag = false; + } else { + if (!astring[0].equals("block")) { + throw new ExceptionUsage("commands.stats.usage", new Object[0]); + } + + flag = true; + } + + byte b0; + + if (flag) { + if (astring.length < 5) { + throw new ExceptionUsage("commands.stats.block.usage", new Object[0]); + } + + b0 = 4; + } else { + if (astring.length < 3) { + throw new ExceptionUsage("commands.stats.entity.usage", new Object[0]); + } + + b0 = 2; + } + + int i = b0 + 1; + String s = astring[b0]; + + if ("set".equals(s)) { + if (astring.length < i + 3) { + if (i == 5) { + throw new ExceptionUsage("commands.stats.block.set.usage", new Object[0]); + } + + throw new ExceptionUsage("commands.stats.entity.set.usage", new Object[0]); + } + } else { + if (!"clear".equals(s)) { + throw new ExceptionUsage("commands.stats.usage", new Object[0]); + } + + if (astring.length < i + 1) { + if (i == 5) { + throw new ExceptionUsage("commands.stats.block.clear.usage", new Object[0]); + } + + throw new ExceptionUsage("commands.stats.entity.clear.usage", new Object[0]); + } + } + + CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.a(astring[i++]); + + if (commandobjectiveexecutor_enumcommandresult == null) { + throw new CommandException("commands.stats.failed", new Object[0]); + } else { + World world = icommandlistener.getWorld(); + CommandObjectiveExecutor commandobjectiveexecutor; + BlockPosition blockposition; + TileEntity tileentity; + + if (flag) { + blockposition = a(icommandlistener, astring, 1, false); + tileentity = world.getTileEntity(blockposition); + if (tileentity == null) { + throw new CommandException("commands.stats.noCompatibleBlock", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + if (tileentity instanceof TileEntityCommand) { + commandobjectiveexecutor = ((TileEntityCommand) tileentity).c(); + } else { + if (!(tileentity instanceof TileEntitySign)) { + throw new CommandException("commands.stats.noCompatibleBlock", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + commandobjectiveexecutor = ((TileEntitySign) tileentity).d(); + } + } else { + Entity entity = b(icommandlistener, astring[1]); + + commandobjectiveexecutor = entity.aU(); + } + + if ("set".equals(s)) { + String s1 = astring[i++]; + String s2 = astring[i]; + + if (s1.length() == 0 || s2.length() == 0) { + throw new CommandException("commands.stats.failed", new Object[0]); + } + + CommandObjectiveExecutor.a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult, s1, s2); + a(icommandlistener, this, "commands.stats.success", new Object[] { commandobjectiveexecutor_enumcommandresult.b(), s2, s1}); + } else if ("clear".equals(s)) { + CommandObjectiveExecutor.a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult, (String) null, (String) null); + a(icommandlistener, this, "commands.stats.cleared", new Object[] { commandobjectiveexecutor_enumcommandresult.b()}); + } + + if (flag) { + blockposition = a(icommandlistener, astring, 1, false); + tileentity = world.getTileEntity(blockposition); + tileentity.update(); + } + + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "entity", "block"}) : (astring.length == 2 && astring[0].equals("entity") ? a(astring, this.d()) : (astring.length >= 2 && astring.length <= 4 && astring[0].equals("block") ? a(astring, 1, blockposition) : ((astring.length != 3 || !astring[0].equals("entity")) && (astring.length != 5 || !astring[0].equals("block")) ? ((astring.length != 4 || !astring[0].equals("entity")) && (astring.length != 6 || !astring[0].equals("block")) ? ((astring.length != 6 || !astring[0].equals("entity")) && (astring.length != 8 || !astring[0].equals("block")) ? null : a(astring, (Collection) this.e())) : a(astring, CommandObjectiveExecutor.EnumCommandResult.c())) : a(astring, new String[] { "set", "clear"})))); + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + protected List e() { + Collection collection = MinecraftServer.getServer().getWorldServer(0).getScoreboard().getObjectives(); + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); + + if (!scoreboardobjective.getCriteria().isReadOnly()) { + arraylist.add(scoreboardobjective.getName()); + } + } + + return arraylist; + } + + public boolean isListStart(String[] astring, int i) { + return astring.length > 0 && astring[0].equals("entity") && i == 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java new file mode 100644 index 0000000..40b8a57 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class CommandStop extends CommandAbstract { + + public CommandStop() {} + + public String getCommand() { + return "stop"; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.stop.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (MinecraftServer.getServer().worldServer != null) { + a(icommandlistener, this, "commands.stop.start", new Object[0]); + } + + MinecraftServer.getServer().safeShutdown(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java new file mode 100644 index 0000000..0581ec1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java @@ -0,0 +1,104 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandSummon extends CommandAbstract { + + public CommandSummon() {} + + public String getCommand() { + return "summon"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.summon.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.summon.usage", new Object[0]); + } else { + String s = astring[0]; + BlockPosition blockposition = icommandlistener.getChunkCoordinates(); + Vec3D vec3d = icommandlistener.d(); + double d0 = vec3d.a; + double d1 = vec3d.b; + double d2 = vec3d.c; + + if (astring.length >= 4) { + d0 = b(d0, astring[1], true); + d1 = b(d1, astring[2], false); + d2 = b(d2, astring[3], true); + blockposition = new BlockPosition(d0, d1, d2); + } + + World world = icommandlistener.getWorld(); + + if (!world.isLoaded(blockposition)) { + throw new CommandException("commands.summon.outOfWorld", new Object[0]); + } else if ("LightningBolt".equals(s)) { + world.strikeLightning(new EntityLightning(world, d0, d1, d2)); + a(icommandlistener, this, "commands.summon.success", new Object[0]); + } else { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + boolean flag = false; + + if (astring.length >= 5) { + IChatBaseComponent ichatbasecomponent = a(icommandlistener, astring, 4); + + try { + nbttagcompound = MojangsonParser.parse(ichatbasecomponent.c()); + flag = true; + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.summon.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + nbttagcompound.setString("id", s); + + Entity entity; + + try { + entity = EntityTypes.a(nbttagcompound, world); + } catch (RuntimeException runtimeexception) { + throw new CommandException("commands.summon.failed", new Object[0]); + } + + if (entity == null) { + throw new CommandException("commands.summon.failed", new Object[0]); + } else { + entity.setPositionRotation(d0, d1, d2, entity.yaw, entity.pitch); + if (!flag && entity instanceof EntityInsentient) { + ((EntityInsentient) entity).prepare(world.E(new BlockPosition(entity)), (GroupDataEntity) null); + } + + world.addEntity(entity); + Entity entity1 = entity; + + for (NBTTagCompound nbttagcompound1 = nbttagcompound; entity1 != null && nbttagcompound1.hasKeyOfType("Riding", 10); nbttagcompound1 = nbttagcompound1.getCompound("Riding")) { + Entity entity2 = EntityTypes.a(nbttagcompound1.getCompound("Riding"), world); + + if (entity2 != null) { + entity2.setPositionRotation(d0, d1, d2, entity2.yaw, entity2.pitch); + world.addEntity(entity2); + entity1.mount(entity2); + } + + entity1 = entity2; + } + + a(icommandlistener, this, "commands.summon.success", new Object[0]); + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, (Collection) EntityTypes.b()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : null); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java new file mode 100644 index 0000000..2739214 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import java.util.Arrays; +import java.util.List; + +public class CommandTell extends CommandAbstract { + + public CommandTell() {} + + public List b() { + return Arrays.asList(new String[] { "w", "msg"}); + } + + public String getCommand() { + return "tell"; + } + + public int a() { + return 0; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.message.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.message.usage", new Object[0]); + } else { + EntityPlayer entityplayer = a(icommandlistener, astring[0]); + + if (entityplayer == icommandlistener) { + throw new ExceptionPlayerNotFound("commands.message.sameTarget", new Object[0]); + } else { + IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 1, !(icommandlistener instanceof EntityHuman)); + ChatMessage chatmessage = new ChatMessage("commands.message.display.incoming", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent.f()}); + ChatMessage chatmessage1 = new ChatMessage("commands.message.display.outgoing", new Object[] { entityplayer.getScoreboardDisplayName(), ichatbasecomponent.f()}); + + chatmessage.getChatModifier().setColor(EnumChatFormat.GRAY).setItalic(Boolean.valueOf(true)); + chatmessage1.getChatModifier().setColor(EnumChatFormat.GRAY).setItalic(Boolean.valueOf(true)); + entityplayer.sendMessage(chatmessage); + icommandlistener.sendMessage(chatmessage1); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return a(astring, MinecraftServer.getServer().getPlayers()); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java new file mode 100644 index 0000000..f7975a7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +import com.google.gson.JsonParseException; +import java.util.List; +import org.apache.commons.lang3.exception.ExceptionUtils; + +public class CommandTellRaw extends CommandAbstract { + + public CommandTellRaw() {} + + public String getCommand() { + return "tellraw"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.tellraw.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.tellraw.usage", new Object[0]); + } else { + EntityPlayer entityplayer = a(icommandlistener, astring[0]); + String s = a(astring, 1); + + try { + IChatBaseComponent ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s); + + entityplayer.sendMessage(ChatComponentUtils.filterForDisplay(icommandlistener, ichatbasecomponent, entityplayer)); + } catch (JsonParseException jsonparseexception) { + Throwable throwable = ExceptionUtils.getRootCause(jsonparseexception); + + throw new ExceptionInvalidSyntax("commands.tellraw.jsonException", new Object[] { throwable == null ? "" : throwable.getMessage()}); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java new file mode 100644 index 0000000..07dbdc1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandTestFor extends CommandAbstract { + + public CommandTestFor() {} + + public String getCommand() { + return "testfor"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.testfor.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.testfor.usage", new Object[0]); + } else { + Entity entity = b(icommandlistener, astring[0]); + NBTTagCompound nbttagcompound = null; + + if (astring.length >= 2) { + try { + nbttagcompound = MojangsonParser.parse(a(astring, 1)); + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.testfor.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + if (nbttagcompound != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + entity.e(nbttagcompound1); + if (!GameProfileSerializer.a(nbttagcompound, nbttagcompound1, true)) { + throw new CommandException("commands.testfor.failure", new Object[] { entity.getName()}); + } + } + + a(icommandlistener, this, "commands.testfor.success", new Object[] { entity.getName()}); + } + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java new file mode 100644 index 0000000..6362d75 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java @@ -0,0 +1,98 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.List; + +public class CommandTestForBlock extends CommandAbstract { + + public CommandTestForBlock() {} + + public String getCommand() { + return "testforblock"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.testforblock.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 4) { + throw new ExceptionUsage("commands.testforblock.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + Block block = Block.getByName(astring[3]); + + if (block == null) { + throw new ExceptionInvalidNumber("commands.setblock.notFound", new Object[] { astring[3]}); + } else { + int i = -1; + + if (astring.length >= 5) { + i = a(astring[4], -1, 15); + } + + World world = icommandlistener.getWorld(); + + if (!world.isLoaded(blockposition)) { + throw new CommandException("commands.testforblock.outOfWorld", new Object[0]); + } else { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + boolean flag = false; + + if (astring.length >= 6 && block.isTileEntity()) { + String s = a(icommandlistener, astring, 5).c(); + + try { + nbttagcompound = MojangsonParser.parse(s); + flag = true; + } catch (MojangsonParseException mojangsonparseexception) { + throw new CommandException("commands.setblock.tagError", new Object[] { mojangsonparseexception.getMessage()}); + } + } + + IBlockData iblockdata = world.getType(blockposition); + Block block1 = iblockdata.getBlock(); + + if (block1 != block) { + throw new CommandException("commands.testforblock.failed.tile", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ()), block1.getName(), block.getName()}); + } else { + if (i > -1) { + int j = iblockdata.getBlock().toLegacyData(iblockdata); + + if (j != i) { + throw new CommandException("commands.testforblock.failed.data", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ()), Integer.valueOf(j), Integer.valueOf(i)}); + } + } + + if (flag) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity == null) { + throw new CommandException("commands.testforblock.failed.tileEntity", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + tileentity.b(nbttagcompound1); + if (!GameProfileSerializer.a(nbttagcompound, nbttagcompound1, true)) { + throw new CommandException("commands.testforblock.failed.nbt", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + } + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1); + a(icommandlistener, this, "commands.testforblock.success", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())}); + } + } + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length == 4 ? a(astring, (Collection) Block.REGISTRY.keySet()) : null); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java new file mode 100644 index 0000000..05d95ea --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java @@ -0,0 +1,109 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandTestForBlocks extends CommandAbstract { + + public CommandTestForBlocks() {} + + public String getCommand() { + return "testforblocks"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.compare.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 9) { + throw new ExceptionUsage("commands.compare.usage", new Object[0]); + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0); + BlockPosition blockposition = a(icommandlistener, astring, 0, false); + BlockPosition blockposition1 = a(icommandlistener, astring, 3, false); + BlockPosition blockposition2 = a(icommandlistener, astring, 6, false); + StructureBoundingBox structureboundingbox = new StructureBoundingBox(blockposition, blockposition1); + StructureBoundingBox structureboundingbox1 = new StructureBoundingBox(blockposition2, blockposition2.a(structureboundingbox.b())); + int i = structureboundingbox.c() * structureboundingbox.d() * structureboundingbox.e(); + + if (i > 524288) { + throw new CommandException("commands.compare.tooManyBlocks", new Object[] { Integer.valueOf(i), Integer.valueOf(524288)}); + } else if (structureboundingbox.b >= 0 && structureboundingbox.e < 256 && structureboundingbox1.b >= 0 && structureboundingbox1.e < 256) { + World world = icommandlistener.getWorld(); + + if (world.a(structureboundingbox) && world.a(structureboundingbox1)) { + boolean flag = false; + + if (astring.length > 9 && astring[9].equals("masked")) { + flag = true; + } + + i = 0; + BlockPosition blockposition3 = new BlockPosition(structureboundingbox1.a - structureboundingbox.a, structureboundingbox1.b - structureboundingbox.b, structureboundingbox1.c - structureboundingbox.c); + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + BlockPosition.MutableBlockPosition blockposition_mutableblockposition1 = new BlockPosition.MutableBlockPosition(); + + for (int j = structureboundingbox.c; j <= structureboundingbox.f; ++j) { + for (int k = structureboundingbox.b; k <= structureboundingbox.e; ++k) { + for (int l = structureboundingbox.a; l <= structureboundingbox.d; ++l) { + blockposition_mutableblockposition.c(l, k, j); + blockposition_mutableblockposition1.c(l + blockposition3.getX(), k + blockposition3.getY(), j + blockposition3.getZ()); + boolean flag1 = false; + IBlockData iblockdata = world.getType(blockposition_mutableblockposition); + + if (!flag || iblockdata.getBlock() != Blocks.AIR) { + if (iblockdata == world.getType(blockposition_mutableblockposition1)) { + TileEntity tileentity = world.getTileEntity(blockposition_mutableblockposition); + TileEntity tileentity1 = world.getTileEntity(blockposition_mutableblockposition1); + + if (tileentity != null && tileentity1 != null) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + tileentity.b(nbttagcompound); + nbttagcompound.remove("x"); + nbttagcompound.remove("y"); + nbttagcompound.remove("z"); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + tileentity1.b(nbttagcompound1); + nbttagcompound1.remove("x"); + nbttagcompound1.remove("y"); + nbttagcompound1.remove("z"); + if (!nbttagcompound.equals(nbttagcompound1)) { + flag1 = true; + } + } else if (tileentity != null) { + flag1 = true; + } + } else { + flag1 = true; + } + + ++i; + if (flag1) { + throw new CommandException("commands.compare.failed", new Object[0]); + } + } + } + } + } + + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, i); + a(icommandlistener, this, "commands.compare.success", new Object[] { Integer.valueOf(i)}); + } else { + throw new CommandException("commands.compare.outOfWorld", new Object[0]); + } + } else { + throw new CommandException("commands.compare.outOfWorld", new Object[0]); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length > 6 && astring.length <= 9 ? a(astring, 6, blockposition) : (astring.length == 10 ? a(astring, new String[] { "masked", "all"}) : null))); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java new file mode 100644 index 0000000..ec835de --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java @@ -0,0 +1,85 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandTime extends CommandAbstract { + + public CommandTime() {} + + public String getCommand() { + return "time"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.time.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length > 1) { + int i; + + if (astring[0].equals("set")) { + if (astring[1].equals("day")) { + i = 1000; + } else if (astring[1].equals("night")) { + i = 13000; + } else { + i = a(astring[1], 0); + } + + this.a(icommandlistener, i); + a(icommandlistener, this, "commands.time.set", new Object[] { Integer.valueOf(i)}); + return; + } + + if (astring[0].equals("add")) { + i = a(astring[1], 0); + this.b(icommandlistener, i); + a(icommandlistener, this, "commands.time.added", new Object[] { Integer.valueOf(i)}); + return; + } + + if (astring[0].equals("query")) { + if (astring[1].equals("daytime")) { + i = (int) (icommandlistener.getWorld().getDayTime() % 2147483647L); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i); + a(icommandlistener, this, "commands.time.query", new Object[] { Integer.valueOf(i)}); + return; + } + + if (astring[1].equals("gametime")) { + i = (int) (icommandlistener.getWorld().getTime() % 2147483647L); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i); + a(icommandlistener, this, "commands.time.query", new Object[] { Integer.valueOf(i)}); + return; + } + } + } + + throw new ExceptionUsage("commands.time.usage", new Object[0]); + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "set", "add", "query"}) : (astring.length == 2 && astring[0].equals("set") ? a(astring, new String[] { "day", "night"}) : (astring.length == 2 && astring[0].equals("query") ? a(astring, new String[] { "daytime", "gametime"}) : null)); + } + + protected void a(ICommandListener icommandlistener, int i) { + for (int j = 0; j < MinecraftServer.getServer().worldServer.length; ++j) { + MinecraftServer.getServer().worldServer[j].setDayTime((long) i); + } + + } + + protected void b(ICommandListener icommandlistener, int i) { + for (int j = 0; j < MinecraftServer.getServer().worldServer.length; ++j) { + WorldServer worldserver = MinecraftServer.getServer().worldServer[j]; + + worldserver.setDayTime(worldserver.getDayTime() + (long) i); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java new file mode 100644 index 0000000..74c40d8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java @@ -0,0 +1,95 @@ +package net.minecraft.server; + +import com.google.gson.JsonParseException; +import java.util.List; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class CommandTitle extends CommandAbstract { + + private static final Logger a = LogManager.getLogger(); + + public CommandTitle() {} + + public String getCommand() { + return "title"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.title.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 2) { + throw new ExceptionUsage("commands.title.usage", new Object[0]); + } else { + if (astring.length < 3) { + if ("title".equals(astring[1]) || "subtitle".equals(astring[1])) { + throw new ExceptionUsage("commands.title.usage.title", new Object[0]); + } + + if ("times".equals(astring[1])) { + throw new ExceptionUsage("commands.title.usage.times", new Object[0]); + } + } + + EntityPlayer entityplayer = a(icommandlistener, astring[0]); + PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = PacketPlayOutTitle.EnumTitleAction.a(astring[1]); + + if (packetplayouttitle_enumtitleaction != PacketPlayOutTitle.EnumTitleAction.CLEAR && packetplayouttitle_enumtitleaction != PacketPlayOutTitle.EnumTitleAction.RESET) { + if (packetplayouttitle_enumtitleaction == PacketPlayOutTitle.EnumTitleAction.TIMES) { + if (astring.length != 5) { + throw new ExceptionUsage("commands.title.usage", new Object[0]); + } else { + int i = a(astring[2]); + int j = a(astring[3]); + int k = a(astring[4]); + PacketPlayOutTitle packetplayouttitle = new PacketPlayOutTitle(i, j, k); + + entityplayer.playerConnection.sendPacket(packetplayouttitle); + a(icommandlistener, this, "commands.title.success", new Object[0]); + } + } else if (astring.length < 3) { + throw new ExceptionUsage("commands.title.usage", new Object[0]); + } else { + String s = a(astring, 2); + + IChatBaseComponent ichatbasecomponent; + + try { + ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s); + } catch (JsonParseException jsonparseexception) { + Throwable throwable = ExceptionUtils.getRootCause(jsonparseexception); + + throw new ExceptionInvalidSyntax("commands.tellraw.jsonException", new Object[] { throwable == null ? "" : throwable.getMessage()}); + } + + PacketPlayOutTitle packetplayouttitle1 = new PacketPlayOutTitle(packetplayouttitle_enumtitleaction, ChatComponentUtils.filterForDisplay(icommandlistener, ichatbasecomponent, entityplayer)); + + entityplayer.playerConnection.sendPacket(packetplayouttitle1); + a(icommandlistener, this, "commands.title.success", new Object[0]); + } + } else if (astring.length != 2) { + throw new ExceptionUsage("commands.title.usage", new Object[0]); + } else { + PacketPlayOutTitle packetplayouttitle2 = new PacketPlayOutTitle(packetplayouttitle_enumtitleaction, (IChatBaseComponent) null); + + entityplayer.playerConnection.sendPacket(packetplayouttitle2); + a(icommandlistener, this, "commands.title.success", new Object[0]); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length == 2 ? a(astring, PacketPlayOutTitle.EnumTitleAction.a()) : null); + } + + public boolean isListStart(String[] astring, int i) { + return i == 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java new file mode 100644 index 0000000..54f2060 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +public class CommandToggleDownfall extends CommandAbstract { + + public CommandToggleDownfall() {} + + public String getCommand() { + return "toggledownfall"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.downfall.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + this.d(); + a(icommandlistener, this, "commands.downfall.success", new Object[0]); + } + + protected void d() { + WorldData worlddata = MinecraftServer.getServer().worldServer[0].getWorldData(); + + worlddata.setStorm(!worlddata.hasStorm()); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java new file mode 100644 index 0000000..3b0d304 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java @@ -0,0 +1,98 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class CommandTrigger extends CommandAbstract { + + public CommandTrigger() {} + + public String getCommand() { + return "trigger"; + } + + public int a() { + return 0; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.trigger.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 3) { + throw new ExceptionUsage("commands.trigger.usage", new Object[0]); + } else { + EntityPlayer entityplayer; + + if (icommandlistener instanceof EntityPlayer) { + entityplayer = (EntityPlayer) icommandlistener; + } else { + Entity entity = icommandlistener.f(); + + if (!(entity instanceof EntityPlayer)) { + throw new CommandException("commands.trigger.invalidPlayer", new Object[0]); + } + + entityplayer = (EntityPlayer) entity; + } + + Scoreboard scoreboard = MinecraftServer.getServer().getWorldServer(0).getScoreboard(); + ScoreboardObjective scoreboardobjective = scoreboard.getObjective(astring[0]); + + if (scoreboardobjective != null && scoreboardobjective.getCriteria() == IScoreboardCriteria.c) { + int i = a(astring[2]); + + if (!scoreboard.b(entityplayer.getName(), scoreboardobjective)) { + throw new CommandException("commands.trigger.invalidObjective", new Object[] { astring[0]}); + } else { + ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(entityplayer.getName(), scoreboardobjective); + + if (scoreboardscore.g()) { + throw new CommandException("commands.trigger.disabled", new Object[] { astring[0]}); + } else { + if ("set".equals(astring[1])) { + scoreboardscore.setScore(i); + } else { + if (!"add".equals(astring[1])) { + throw new CommandException("commands.trigger.invalidMode", new Object[] { astring[1]}); + } + + scoreboardscore.addScore(i); + } + + scoreboardscore.a(true); + if (entityplayer.playerInteractManager.isCreative()) { + a(icommandlistener, this, "commands.trigger.success", new Object[] { astring[0], astring[1], astring[2]}); + } + + } + } + } else { + throw new CommandException("commands.trigger.invalidObjective", new Object[] { astring[0]}); + } + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + if (astring.length == 1) { + Scoreboard scoreboard = MinecraftServer.getServer().getWorldServer(0).getScoreboard(); + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = scoreboard.getObjectives().iterator(); + + while (iterator.hasNext()) { + ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); + + if (scoreboardobjective.getCriteria() == IScoreboardCriteria.c) { + arraylist.add(scoreboardobjective.getName()); + } + } + + return a(astring, (String[]) arraylist.toArray(new String[arraylist.size()])); + } else { + return astring.length == 2 ? a(astring, new String[] { "add", "set"}) : null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java new file mode 100644 index 0000000..2a8861f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java @@ -0,0 +1,68 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class CommandWeather extends CommandAbstract { + + public CommandWeather() {} + + public String getCommand() { + return "weather"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.weather.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length >= 1 && astring.length <= 2) { + int i = (300 + (new Random()).nextInt(600)) * 20; + + if (astring.length >= 2) { + i = a(astring[1], 1, 1000000) * 20; + } + + WorldServer worldserver = MinecraftServer.getServer().worldServer[0]; + WorldData worlddata = worldserver.getWorldData(); + + if ("clear".equalsIgnoreCase(astring[0])) { + worlddata.i(i); + worlddata.setWeatherDuration(0); + worlddata.setThunderDuration(0); + worlddata.setStorm(false); + worlddata.setThundering(false); + a(icommandlistener, this, "commands.weather.clear", new Object[0]); + } else if ("rain".equalsIgnoreCase(astring[0])) { + worlddata.i(0); + worlddata.setWeatherDuration(i); + worlddata.setThunderDuration(i); + worlddata.setStorm(true); + worlddata.setThundering(false); + a(icommandlistener, this, "commands.weather.rain", new Object[0]); + } else { + if (!"thunder".equalsIgnoreCase(astring[0])) { + throw new ExceptionUsage("commands.weather.usage", new Object[0]); + } + + worlddata.i(0); + worlddata.setWeatherDuration(i); + worlddata.setThunderDuration(i); + worlddata.setStorm(true); + worlddata.setThundering(true); + a(icommandlistener, this, "commands.weather.thunder", new Object[0]); + } + + } else { + throw new ExceptionUsage("commands.weather.usage", new Object[0]); + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "clear", "rain", "thunder"}) : null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java new file mode 100644 index 0000000..7c29357 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java @@ -0,0 +1,92 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.util.List; + +public class CommandWhitelist extends CommandAbstract { + + public CommandWhitelist() {} + + public String getCommand() { + return "whitelist"; + } + + public int a() { + return 3; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.whitelist.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.whitelist.usage", new Object[0]); + } else { + MinecraftServer minecraftserver = MinecraftServer.getServer(); + + if (astring[0].equals("on")) { + minecraftserver.getPlayerList().setHasWhitelist(true); + a(icommandlistener, this, "commands.whitelist.enabled", new Object[0]); + } else if (astring[0].equals("off")) { + minecraftserver.getPlayerList().setHasWhitelist(false); + a(icommandlistener, this, "commands.whitelist.disabled", new Object[0]); + } else if (astring[0].equals("list")) { + icommandlistener.sendMessage(new ChatMessage("commands.whitelist.list", new Object[] { Integer.valueOf(minecraftserver.getPlayerList().getWhitelisted().length), Integer.valueOf(minecraftserver.getPlayerList().getSeenPlayers().length)})); + String[] astring1 = minecraftserver.getPlayerList().getWhitelisted(); + + icommandlistener.sendMessage(new ChatComponentText(a((Object[]) astring1))); + } else { + GameProfile gameprofile; + + if (astring[0].equals("add")) { + if (astring.length < 2) { + throw new ExceptionUsage("commands.whitelist.add.usage", new Object[0]); + } + + gameprofile = minecraftserver.getUserCache().getProfile(astring[1]); + if (gameprofile == null) { + throw new CommandException("commands.whitelist.add.failed", new Object[] { astring[1]}); + } + + minecraftserver.getPlayerList().addWhitelist(gameprofile); + a(icommandlistener, this, "commands.whitelist.add.success", new Object[] { astring[1]}); + } else if (astring[0].equals("remove")) { + if (astring.length < 2) { + throw new ExceptionUsage("commands.whitelist.remove.usage", new Object[0]); + } + + gameprofile = minecraftserver.getPlayerList().getWhitelist().a(astring[1]); + if (gameprofile == null) { + throw new CommandException("commands.whitelist.remove.failed", new Object[] { astring[1]}); + } + + minecraftserver.getPlayerList().removeWhitelist(gameprofile); + a(icommandlistener, this, "commands.whitelist.remove.success", new Object[] { astring[1]}); + } else if (astring[0].equals("reload")) { + minecraftserver.getPlayerList().reloadWhitelist(); + a(icommandlistener, this, "commands.whitelist.reloaded", new Object[0]); + } + } + + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + if (astring.length == 1) { + return a(astring, new String[] { "on", "off", "list", "add", "remove", "reload"}); + } else { + if (astring.length == 2) { + if (astring[0].equals("remove")) { + return a(astring, MinecraftServer.getServer().getPlayerList().getWhitelisted()); + } + + if (astring[0].equals("add")) { + return a(astring, MinecraftServer.getServer().getUserCache().a()); + } + } + + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java new file mode 100644 index 0000000..fb24117 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java @@ -0,0 +1,148 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandWorldBorder extends CommandAbstract { + + public CommandWorldBorder() {} + + public String getCommand() { + return "worldborder"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.worldborder.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length < 1) { + throw new ExceptionUsage("commands.worldborder.usage", new Object[0]); + } else { + WorldBorder worldborder = this.d(); + double d0; + double d1; + long i; + + if (astring[0].equals("set")) { + if (astring.length != 2 && astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.set.usage", new Object[0]); + } + + d0 = worldborder.j(); + d1 = a(astring[1], 1.0D, 6.0E7D); + i = astring.length > 2 ? a(astring[2], 0L, 9223372036854775L) * 1000L : 0L; + if (i > 0L) { + worldborder.transitionSizeBetween(d0, d1, i); + if (d0 > d1) { + a(icommandlistener, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)}); + } else { + a(icommandlistener, this, "commands.worldborder.setSlowly.grow.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)}); + } + } else { + worldborder.setSize(d1); + a(icommandlistener, this, "commands.worldborder.set.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)})}); + } + } else if (astring[0].equals("add")) { + if (astring.length != 2 && astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.add.usage", new Object[0]); + } + + d0 = worldborder.getSize(); + d1 = d0 + a(astring[1], -d0, 6.0E7D - d0); + i = worldborder.i() + (astring.length > 2 ? a(astring[2], 0L, 9223372036854775L) * 1000L : 0L); + if (i > 0L) { + worldborder.transitionSizeBetween(d0, d1, i); + if (d0 > d1) { + a(icommandlistener, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)}); + } else { + a(icommandlistener, this, "commands.worldborder.setSlowly.grow.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)}); + } + } else { + worldborder.setSize(d1); + a(icommandlistener, this, "commands.worldborder.set.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)})}); + } + } else if (astring[0].equals("center")) { + if (astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.center.usage", new Object[0]); + } + + BlockPosition blockposition = icommandlistener.getChunkCoordinates(); + double d2 = b((double) blockposition.getX() + 0.5D, astring[1], true); + double d3 = b((double) blockposition.getZ() + 0.5D, astring[2], true); + + worldborder.setCenter(d2, d3); + a(icommandlistener, this, "commands.worldborder.center.success", new Object[] { Double.valueOf(d2), Double.valueOf(d3)}); + } else if (astring[0].equals("damage")) { + if (astring.length < 2) { + throw new ExceptionUsage("commands.worldborder.damage.usage", new Object[0]); + } + + if (astring[1].equals("buffer")) { + if (astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.damage.buffer.usage", new Object[0]); + } + + d0 = a(astring[2], 0.0D); + d1 = worldborder.getDamageBuffer(); + worldborder.setDamageBuffer(d0); + a(icommandlistener, this, "commands.worldborder.damage.buffer.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d0)}), String.format("%.1f", new Object[] { Double.valueOf(d1)})}); + } else if (astring[1].equals("amount")) { + if (astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.damage.amount.usage", new Object[0]); + } + + d0 = a(astring[2], 0.0D); + d1 = worldborder.getDamageAmount(); + worldborder.setDamageAmount(d0); + a(icommandlistener, this, "commands.worldborder.damage.amount.success", new Object[] { String.format("%.2f", new Object[] { Double.valueOf(d0)}), String.format("%.2f", new Object[] { Double.valueOf(d1)})}); + } + } else if (astring[0].equals("warning")) { + if (astring.length < 2) { + throw new ExceptionUsage("commands.worldborder.warning.usage", new Object[0]); + } + + int j = a(astring[2], 0); + int k; + + if (astring[1].equals("time")) { + if (astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.warning.time.usage", new Object[0]); + } + + k = worldborder.getWarningTime(); + worldborder.setWarningTime(j); + a(icommandlistener, this, "commands.worldborder.warning.time.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k)}); + } else if (astring[1].equals("distance")) { + if (astring.length != 3) { + throw new ExceptionUsage("commands.worldborder.warning.distance.usage", new Object[0]); + } + + k = worldborder.getWarningDistance(); + worldborder.setWarningDistance(j); + a(icommandlistener, this, "commands.worldborder.warning.distance.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k)}); + } + } else { + if (!astring[0].equals("get")) { + throw new ExceptionUsage("commands.worldborder.usage", new Object[0]); + } + + d0 = worldborder.getSize(); + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, MathHelper.floor(d0 + 0.5D)); + icommandlistener.sendMessage(new ChatMessage("commands.worldborder.get.success", new Object[] { String.format("%.0f", new Object[] { Double.valueOf(d0)})})); + } + + } + } + + protected WorldBorder d() { + return MinecraftServer.getServer().worldServer[0].getWorldBorder(); + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 1 ? a(astring, new String[] { "set", "center", "damage", "warning", "add", "get"}) : (astring.length == 2 && astring[0].equals("damage") ? a(astring, new String[] { "buffer", "amount"}) : (astring.length >= 2 && astring.length <= 3 && astring[0].equals("center") ? b(astring, 1, blockposition) : (astring.length == 2 && astring[0].equals("warning") ? a(astring, new String[] { "time", "distance"}) : null))); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java new file mode 100644 index 0000000..0f391b6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java @@ -0,0 +1,74 @@ +package net.minecraft.server; + +import java.util.List; + +public class CommandXp extends CommandAbstract { + + public CommandXp() {} + + public String getCommand() { + return "xp"; + } + + public int a() { + return 2; + } + + public String getUsage(ICommandListener icommandlistener) { + return "commands.xp.usage"; + } + + public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException { + if (astring.length <= 0) { + throw new ExceptionUsage("commands.xp.usage", new Object[0]); + } else { + String s = astring[0]; + boolean flag = s.endsWith("l") || s.endsWith("L"); + + if (flag && s.length() > 1) { + s = s.substring(0, s.length() - 1); + } + + int i = a(s); + boolean flag1 = i < 0; + + if (flag1) { + i *= -1; + } + + EntityPlayer entityplayer = astring.length > 1 ? a(icommandlistener, astring[1]) : b(icommandlistener); + + if (flag) { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, entityplayer.expLevel); + if (flag1) { + entityplayer.levelDown(-i); + a(icommandlistener, this, "commands.xp.success.negative.levels", new Object[] { Integer.valueOf(i), entityplayer.getName()}); + } else { + entityplayer.levelDown(i); + a(icommandlistener, this, "commands.xp.success.levels", new Object[] { Integer.valueOf(i), entityplayer.getName()}); + } + } else { + icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, entityplayer.expTotal); + if (flag1) { + throw new CommandException("commands.xp.failure.widthdrawXp", new Object[0]); + } + + entityplayer.giveExp(i); + a(icommandlistener, this, "commands.xp.success", new Object[] { Integer.valueOf(i), entityplayer.getName()}); + } + + } + } + + public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) { + return astring.length == 2 ? a(astring, this.d()) : null; + } + + protected String[] d() { + return MinecraftServer.getServer().getPlayers(); + } + + public boolean isListStart(String[] astring, int i) { + return i == 1; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Container.java b/eSpigot-Server/src/main/java/net/minecraft/server/Container.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Container.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Container.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java new file mode 100644 index 0000000..d447f9f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class ControllerJump { + + private EntityInsentient b; + protected boolean a; + + public ControllerJump(EntityInsentient entityinsentient) { + this.b = entityinsentient; + } + + public void a() { + this.a = true; + } + + public void b() { + this.b.i(this.a); + this.a = false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java new file mode 100644 index 0000000..4f573ee --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java @@ -0,0 +1,100 @@ +package net.minecraft.server; + +public class ControllerLook { + + private EntityInsentient a; + private float b; + private float c; + private boolean d; + private double e; + private double f; + private double g; + + public ControllerLook(EntityInsentient entityinsentient) { + this.a = entityinsentient; + } + + public void a(Entity entity, float f, float f1) { + this.e = entity.locX; + if (entity instanceof EntityLiving) { + this.f = entity.locY + (double) entity.getHeadHeight(); + } else { + this.f = (entity.getBoundingBox().b + entity.getBoundingBox().e) / 2.0D; + } + + this.g = entity.locZ; + this.b = f; + this.c = f1; + this.d = true; + } + + public void a(double d0, double d1, double d2, float f, float f1) { + this.e = d0; + this.f = d1; + this.g = d2; + this.b = f; + this.c = f1; + this.d = true; + } + + public void a() { + this.a.pitch = 0.0F; + if (this.d) { + this.d = false; + double d0 = this.e - this.a.locX; + double d1 = this.f - (this.a.locY + (double) this.a.getHeadHeight()); + double d2 = this.g - this.a.locZ; + double d3 = (double) MathHelper.sqrt(d0 * d0 + d2 * d2); + float f = (float) (MathHelper.b(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F; + float f1 = (float) (-(MathHelper.b(d1, d3) * 180.0D / 3.1415927410125732D)); + + this.a.pitch = this.a(this.a.pitch, f1, this.c); + this.a.aK = this.a(this.a.aK, f, this.b); + } else { + this.a.aK = this.a(this.a.aK, this.a.aI, 10.0F); + } + + float f2 = MathHelper.g(this.a.aK - this.a.aI); + + if (!this.a.getNavigation().m()) { + if (f2 < -75.0F) { + this.a.aK = this.a.aI - 75.0F; + } + + if (f2 > 75.0F) { + this.a.aK = this.a.aI + 75.0F; + } + } + + } + + private float a(float f, float f1, float f2) { + float f3 = MathHelper.g(f1 - f); + + if (f3 > f2) { + f3 = f2; + } + + if (f3 < -f2) { + f3 = -f2; + } + + return f + f3; + } + + public boolean b() { + return this.d; + } + + public double e() { + return this.e; + } + + public double f() { + return this.f; + } + + public double g() { + return this.g; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java new file mode 100644 index 0000000..6fee887 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java @@ -0,0 +1,91 @@ +package net.minecraft.server; + +public class ControllerMove { + + protected EntityInsentient a; + protected double b; + protected double c; + protected double d; + protected double e; + protected boolean f; + + public ControllerMove(EntityInsentient entityinsentient) { + this.a = entityinsentient; + this.b = entityinsentient.locX; + this.c = entityinsentient.locY; + this.d = entityinsentient.locZ; + } + + public boolean a() { + return this.f; + } + + public double b() { + return this.e; + } + + public void a(double d0, double d1, double d2, double d3) { + this.b = d0; + this.c = d1; + this.d = d2; + this.e = d3; + this.f = true; + } + + public void c() { + this.a.n(0.0F); + if (this.f) { + this.f = false; + int i = MathHelper.floor(this.a.getBoundingBox().b + 0.5D); + double d0 = this.b - this.a.locX; + double d1 = this.d - this.a.locZ; + double d2 = this.c - (double) i; + double d3 = d0 * d0 + d2 * d2 + d1 * d1; + + if (d3 >= 2.500000277905201E-7D) { + float f = (float) (MathHelper.b(d1, d0) * 180.0D / 3.1415927410125732D) - 90.0F; + + this.a.yaw = this.a(this.a.yaw, f, 30.0F); + this.a.k((float) (this.e * this.a.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue())); + if (d2 > 0.0D && d0 * d0 + d1 * d1 < 1.0D) { + this.a.getControllerJump().a(); + } + + } + } + } + + protected float a(float f, float f1, float f2) { + float f3 = MathHelper.g(f1 - f); + + if (f3 > f2) { + f3 = f2; + } + + if (f3 < -f2) { + f3 = -f2; + } + + float f4 = f + f3; + + if (f4 < 0.0F) { + f4 += 360.0F; + } else if (f4 > 360.0F) { + f4 -= 360.0F; + } + + return f4; + } + + public double d() { + return this.b; + } + + public double e() { + return this.c; + } + + public double f() { + return this.d; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java b/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java new file mode 100644 index 0000000..92bfb05 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public interface Convertable { + + IDataManager a(String s, boolean flag); + + void d(); + + boolean e(String s); + + boolean isConvertable(String s); + + boolean convert(String s, IProgressUpdate iprogressupdate); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java b/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java new file mode 100644 index 0000000..cbfe88b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface Counter {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java new file mode 100644 index 0000000..a466533 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java @@ -0,0 +1,18 @@ +package net.minecraft.server; + +public class CounterStatistic extends Statistic { + + public CounterStatistic(String s, IChatBaseComponent ichatbasecomponent, Counter counter) { + super(s, ichatbasecomponent, counter); + } + + public CounterStatistic(String s, IChatBaseComponent ichatbasecomponent) { + super(s, ichatbasecomponent); + } + + public Statistic h() { + super.h(); + StatisticList.c.add(this); + return this; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java new file mode 100644 index 0000000..9f11859 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java @@ -0,0 +1,17 @@ +package net.minecraft.server; + +public class CraftingStatistic extends Statistic { + + private final Item a; + + public CraftingStatistic(String s, String s1, IChatBaseComponent ichatbasecomponent, Item item) { + super(s + s1, ichatbasecomponent); + this.a = item; + int i = Item.getId(item); + + if (i != 0) { + IScoreboardCriteria.criteria.put(s + i, this.k()); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java rename to eSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java new file mode 100644 index 0000000..cd972eb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java @@ -0,0 +1,265 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.Callable; + +public class CrashReportSystemDetails { + + private final CrashReport a; + private final String b; + private final List c = Lists.newArrayList(); + private StackTraceElement[] d = new StackTraceElement[0]; + + public CrashReportSystemDetails(CrashReport crashreport, String s) { + this.a = crashreport; + this.b = s; + } + + public static String a(double d0, double d1, double d2) { + return String.format("%.2f,%.2f,%.2f - %s", new Object[] { Double.valueOf(d0), Double.valueOf(d1), Double.valueOf(d2), a(new BlockPosition(d0, d1, d2))}); + } + + public static String a(BlockPosition blockposition) { + int i = blockposition.getX(); + int j = blockposition.getY(); + int k = blockposition.getZ(); + StringBuilder stringbuilder = new StringBuilder(); + + try { + stringbuilder.append(String.format("World: (%d,%d,%d)", new Object[] { Integer.valueOf(i), Integer.valueOf(j), Integer.valueOf(k)})); + } catch (Throwable throwable) { + stringbuilder.append("(Error finding world loc)"); + } + + stringbuilder.append(", "); + + int l; + int i1; + int j1; + int k1; + int l1; + int i2; + int j2; + int k2; + int l2; + + try { + l = i >> 4; + i1 = k >> 4; + j1 = i & 15; + k1 = j >> 4; + l1 = k & 15; + i2 = l << 4; + j2 = i1 << 4; + k2 = (l + 1 << 4) - 1; + l2 = (i1 + 1 << 4) - 1; + stringbuilder.append(String.format("Chunk: (at %d,%d,%d in %d,%d; contains blocks %d,0,%d to %d,255,%d)", new Object[] { Integer.valueOf(j1), Integer.valueOf(k1), Integer.valueOf(l1), Integer.valueOf(l), Integer.valueOf(i1), Integer.valueOf(i2), Integer.valueOf(j2), Integer.valueOf(k2), Integer.valueOf(l2)})); + } catch (Throwable throwable1) { + stringbuilder.append("(Error finding chunk loc)"); + } + + stringbuilder.append(", "); + + try { + l = i >> 9; + i1 = k >> 9; + j1 = l << 5; + k1 = i1 << 5; + l1 = (l + 1 << 5) - 1; + i2 = (i1 + 1 << 5) - 1; + j2 = l << 9; + k2 = i1 << 9; + l2 = (l + 1 << 9) - 1; + int i3 = (i1 + 1 << 9) - 1; + + stringbuilder.append(String.format("Region: (%d,%d; contains chunks %d,%d to %d,%d, blocks %d,0,%d to %d,255,%d)", new Object[] { Integer.valueOf(l), Integer.valueOf(i1), Integer.valueOf(j1), Integer.valueOf(k1), Integer.valueOf(l1), Integer.valueOf(i2), Integer.valueOf(j2), Integer.valueOf(k2), Integer.valueOf(l2), Integer.valueOf(i3)})); + } catch (Throwable throwable2) { + stringbuilder.append("(Error finding world loc)"); + } + + return stringbuilder.toString(); + } + + public void a(String s, Callable callable) { + try { + this.a(s, callable.call()); + } catch (Throwable throwable) { + this.a(s, throwable); + } + + } + + public void a(String s, Object object) { + this.c.add(new CrashReportSystemDetails.CrashReportDetail(s, object)); + } + + public void a(String s, Throwable throwable) { + this.a(s, (Object) throwable); + } + + public int a(int i) { + StackTraceElement[] astacktraceelement = Thread.currentThread().getStackTrace(); + + if (astacktraceelement.length <= 0) { + return 0; + } else { + this.d = new StackTraceElement[astacktraceelement.length - 3 - i]; + System.arraycopy(astacktraceelement, 3 + i, this.d, 0, this.d.length); + return this.d.length; + } + } + + public boolean a(StackTraceElement stacktraceelement, StackTraceElement stacktraceelement1) { + if (this.d.length != 0 && stacktraceelement != null) { + StackTraceElement stacktraceelement2 = this.d[0]; + + if (stacktraceelement2.isNativeMethod() == stacktraceelement.isNativeMethod() && stacktraceelement2.getClassName().equals(stacktraceelement.getClassName()) && stacktraceelement2.getFileName().equals(stacktraceelement.getFileName()) && stacktraceelement2.getMethodName().equals(stacktraceelement.getMethodName())) { + if (stacktraceelement1 != null != this.d.length > 1) { + return false; + } else if (stacktraceelement1 != null && !this.d[1].equals(stacktraceelement1)) { + return false; + } else { + this.d[0] = stacktraceelement; + return true; + } + } else { + return false; + } + } else { + return false; + } + } + + public void b(int i) { + StackTraceElement[] astacktraceelement = new StackTraceElement[this.d.length - i]; + + System.arraycopy(this.d, 0, astacktraceelement, 0, astacktraceelement.length); + this.d = astacktraceelement; + } + + public void a(StringBuilder stringbuilder) { + stringbuilder.append("-- ").append(this.b).append(" --\n"); + stringbuilder.append("Details:"); + Iterator iterator = this.c.iterator(); + + while (iterator.hasNext()) { + CrashReportSystemDetails.CrashReportDetail crashreportsystemdetails_crashreportdetail = (CrashReportSystemDetails.CrashReportDetail) iterator.next(); + + stringbuilder.append("\n\t"); + stringbuilder.append(crashreportsystemdetails_crashreportdetail.a()); + stringbuilder.append(": "); + stringbuilder.append(crashreportsystemdetails_crashreportdetail.b()); + } + + if (this.d != null && this.d.length > 0) { + stringbuilder.append("\nStacktrace:"); + StackTraceElement[] astacktraceelement = this.d; + int i = astacktraceelement.length; + + for (int j = 0; j < i; ++j) { + StackTraceElement stacktraceelement = astacktraceelement[j]; + + stringbuilder.append("\n\tat "); + stringbuilder.append(stacktraceelement.toString()); + } + } + + } + + public StackTraceElement[] a() { + return this.d; + } + + public static void a(CrashReportSystemDetails crashreportsystemdetails, final BlockPosition blockposition, final Block block, final int i) { + final int j = Block.getId(block); + + crashreportsystemdetails.a("Block type", new Callable() { + public String a() throws Exception { + try { + return String.format("ID #%d (%s // %s)", new Object[] { Integer.valueOf(i), block.a(), block.getClass().getCanonicalName()}); + } catch (Throwable throwable) { + return "ID #" + i; + } + } + + public Object call() throws Exception { + return this.a(); + } + }); + crashreportsystemdetails.a("Block data value", new Callable() { + public String a() throws Exception { + if (i < 0) { + return "Unknown? (Got " + i + ")"; + } else { + String s = String.format("%4s", new Object[] { Integer.toBinaryString(i)}).replace(" ", "0"); + + return String.format("%1$d / 0x%1$X / 0b%2$s", new Object[] { Integer.valueOf(i), s}); + } + } + + public Object call() throws Exception { + return this.a(); + } + }); + crashreportsystemdetails.a("Block location", new Callable() { + public String a() throws Exception { + return CrashReportSystemDetails.a(blockposition); + } + + public Object call() throws Exception { + return this.a(); + } + }); + } + + public static void a(CrashReportSystemDetails crashreportsystemdetails, final BlockPosition blockposition, final IBlockData iblockdata) { + crashreportsystemdetails.a("Block", new Callable() { + public String a() throws Exception { + return iblockdata.toString(); + } + + public Object call() throws Exception { + return this.a(); + } + }); + crashreportsystemdetails.a("Block location", new Callable() { + public String a() throws Exception { + return CrashReportSystemDetails.a(blockposition); + } + + public Object call() throws Exception { + return this.a(); + } + }); + } + + static class CrashReportDetail { + + private final String a; + private final String b; + + public CrashReportDetail(String s, Object object) { + this.a = s; + if (object == null) { + this.b = "~~NULL~~"; + } else if (object instanceof Throwable) { + Throwable throwable = (Throwable) object; + + this.b = "~~ERROR~~ " + throwable.getClass().getSimpleName() + ": " + throwable.getMessage(); + } else { + this.b = object.toString(); + } + + } + + public String a() { + return this.a; + } + + public String b() { + return this.b; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java b/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java new file mode 100644 index 0000000..f726a40 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +public abstract class CreativeModeTab { + + public static final CreativeModeTab[] a = new CreativeModeTab[12]; + public static final CreativeModeTab b = new CreativeModeTab(0, "buildingBlocks") { + }; + public static final CreativeModeTab c = new CreativeModeTab(1, "decorations") { + }; + public static final CreativeModeTab d = new CreativeModeTab(2, "redstone") { + }; + public static final CreativeModeTab e = new CreativeModeTab(3, "transportation") { + }; + public static final CreativeModeTab f = (new CreativeModeTab(4, "misc") { + }).a(new EnchantmentSlotType[] { EnchantmentSlotType.ALL}); + public static final CreativeModeTab g = (new CreativeModeTab(5, "search") { + }).a("item_search.png"); + public static final CreativeModeTab h = new CreativeModeTab(6, "food") { + }; + public static final CreativeModeTab i = (new CreativeModeTab(7, "tools") { + }).a(new EnchantmentSlotType[] { EnchantmentSlotType.DIGGER, EnchantmentSlotType.FISHING_ROD, EnchantmentSlotType.BREAKABLE}); + public static final CreativeModeTab j = (new CreativeModeTab(8, "combat") { + }).a(new EnchantmentSlotType[] { EnchantmentSlotType.ARMOR, EnchantmentSlotType.ARMOR_FEET, EnchantmentSlotType.ARMOR_HEAD, EnchantmentSlotType.ARMOR_LEGS, EnchantmentSlotType.ARMOR_TORSO, EnchantmentSlotType.BOW, EnchantmentSlotType.WEAPON}); + public static final CreativeModeTab k = new CreativeModeTab(9, "brewing") { + }; + public static final CreativeModeTab l = new CreativeModeTab(10, "materials") { + }; + public static final CreativeModeTab m = (new CreativeModeTab(11, "inventory") { + }).a("inventory.png").k().i(); + private final int n; + private final String o; + private String p = "items.png"; + private boolean q = true; + private boolean r = true; + private EnchantmentSlotType[] s; + + public CreativeModeTab(int i, String s) { + this.n = i; + this.o = s; + CreativeModeTab.a[i] = this; + } + + public CreativeModeTab a(String s) { + this.p = s; + return this; + } + + public CreativeModeTab i() { + this.r = false; + return this; + } + + public CreativeModeTab k() { + this.q = false; + return this; + } + + public CreativeModeTab a(EnchantmentSlotType... aenchantmentslottype) { + this.s = aenchantmentslottype; + return this; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java b/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java new file mode 100644 index 0000000..0b57856 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java @@ -0,0 +1,659 @@ +package net.minecraft.server; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import java.lang.reflect.Type; + +public class CustomWorldSettingsFinal { + + public final float a; + public final float b; + public final float c; + public final float d; + public final float e; + public final float f; + public final float g; + public final float h; + public final float i; + public final float j; + public final float k; + public final float l; + public final float m; + public final float n; + public final float o; + public final float p; + public final int q; + public final boolean r; + public final boolean s; + public final int t; + public final boolean u; + public final boolean v; + public final boolean w; + public final boolean x; + public final boolean y; + public final boolean z; + public final boolean A; + public final int B; + public final boolean C; + public final int D; + public final boolean E; + public final int F; + public final int G; + public final int H; + public final int I; + public final int J; + public final int K; + public final int L; + public final int M; + public final int N; + public final int O; + public final int P; + public final int Q; + public final int R; + public final int S; + public final int T; + public final int U; + public final int V; + public final int W; + public final int X; + public final int Y; + public final int Z; + public final int aa; + public final int ab; + public final int ac; + public final int ad; + public final int ae; + public final int af; + public final int ag; + public final int ah; + public final int ai; + public final int aj; + public final int ak; + public final int al; + public final int am; + public final int an; + public final int ao; + public final int ap; + public final int aq; + public final int ar; + public final int as; + public final int at; + public final int au; + public final int av; + public final int aw; + public final int ax; + public final int ay; + public final int az; + + private CustomWorldSettingsFinal(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings) { + this.a = customworldsettingsfinal_customworldsettings.b; + this.b = customworldsettingsfinal_customworldsettings.c; + this.c = customworldsettingsfinal_customworldsettings.d; + this.d = customworldsettingsfinal_customworldsettings.e; + this.e = customworldsettingsfinal_customworldsettings.f; + this.f = customworldsettingsfinal_customworldsettings.g; + this.g = customworldsettingsfinal_customworldsettings.h; + this.h = customworldsettingsfinal_customworldsettings.i; + this.i = customworldsettingsfinal_customworldsettings.j; + this.j = customworldsettingsfinal_customworldsettings.k; + this.k = customworldsettingsfinal_customworldsettings.l; + this.l = customworldsettingsfinal_customworldsettings.m; + this.m = customworldsettingsfinal_customworldsettings.n; + this.n = customworldsettingsfinal_customworldsettings.o; + this.o = customworldsettingsfinal_customworldsettings.p; + this.p = customworldsettingsfinal_customworldsettings.q; + this.q = customworldsettingsfinal_customworldsettings.r; + this.r = customworldsettingsfinal_customworldsettings.s; + this.s = customworldsettingsfinal_customworldsettings.t; + this.t = customworldsettingsfinal_customworldsettings.u; + this.u = customworldsettingsfinal_customworldsettings.v; + this.v = customworldsettingsfinal_customworldsettings.w; + this.w = customworldsettingsfinal_customworldsettings.x; + this.x = customworldsettingsfinal_customworldsettings.y; + this.y = customworldsettingsfinal_customworldsettings.z; + this.z = customworldsettingsfinal_customworldsettings.A; + this.A = customworldsettingsfinal_customworldsettings.B; + this.B = customworldsettingsfinal_customworldsettings.C; + this.C = customworldsettingsfinal_customworldsettings.D; + this.D = customworldsettingsfinal_customworldsettings.E; + this.E = customworldsettingsfinal_customworldsettings.F; + this.F = customworldsettingsfinal_customworldsettings.G; + this.G = customworldsettingsfinal_customworldsettings.H; + this.H = customworldsettingsfinal_customworldsettings.I; + this.I = customworldsettingsfinal_customworldsettings.J; + this.J = customworldsettingsfinal_customworldsettings.K; + this.K = customworldsettingsfinal_customworldsettings.L; + this.L = customworldsettingsfinal_customworldsettings.M; + this.M = customworldsettingsfinal_customworldsettings.N; + this.N = customworldsettingsfinal_customworldsettings.O; + this.O = customworldsettingsfinal_customworldsettings.P; + this.P = customworldsettingsfinal_customworldsettings.Q; + this.Q = customworldsettingsfinal_customworldsettings.R; + this.R = customworldsettingsfinal_customworldsettings.S; + this.S = customworldsettingsfinal_customworldsettings.T; + this.T = customworldsettingsfinal_customworldsettings.U; + this.U = customworldsettingsfinal_customworldsettings.V; + this.V = customworldsettingsfinal_customworldsettings.W; + this.W = customworldsettingsfinal_customworldsettings.X; + this.X = customworldsettingsfinal_customworldsettings.Y; + this.Y = customworldsettingsfinal_customworldsettings.Z; + this.Z = customworldsettingsfinal_customworldsettings.aa; + this.aa = customworldsettingsfinal_customworldsettings.ab; + this.ab = customworldsettingsfinal_customworldsettings.ac; + this.ac = customworldsettingsfinal_customworldsettings.ad; + this.ad = customworldsettingsfinal_customworldsettings.ae; + this.ae = customworldsettingsfinal_customworldsettings.af; + this.af = customworldsettingsfinal_customworldsettings.ag; + this.ag = customworldsettingsfinal_customworldsettings.ah; + this.ah = customworldsettingsfinal_customworldsettings.ai; + this.ai = customworldsettingsfinal_customworldsettings.aj; + this.aj = customworldsettingsfinal_customworldsettings.ak; + this.ak = customworldsettingsfinal_customworldsettings.al; + this.al = customworldsettingsfinal_customworldsettings.am; + this.am = customworldsettingsfinal_customworldsettings.an; + this.an = customworldsettingsfinal_customworldsettings.ao; + this.ao = customworldsettingsfinal_customworldsettings.ap; + this.ap = customworldsettingsfinal_customworldsettings.aq; + this.aq = customworldsettingsfinal_customworldsettings.ar; + this.ar = customworldsettingsfinal_customworldsettings.as; + this.as = customworldsettingsfinal_customworldsettings.at; + this.at = customworldsettingsfinal_customworldsettings.au; + this.au = customworldsettingsfinal_customworldsettings.av; + this.av = customworldsettingsfinal_customworldsettings.aw; + this.aw = customworldsettingsfinal_customworldsettings.ax; + this.ax = customworldsettingsfinal_customworldsettings.ay; + this.ay = customworldsettingsfinal_customworldsettings.az; + this.az = customworldsettingsfinal_customworldsettings.aA; + } + + CustomWorldSettingsFinal(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings, CustomWorldSettingsFinal.SyntheticClass_1 customworldsettingsfinal_syntheticclass_1) { + this(customworldsettingsfinal_customworldsettings); + } + + static class SyntheticClass_1 { } + + public static class CustomWorldSettingsSerializer implements JsonDeserializer, JsonSerializer { + + public CustomWorldSettingsSerializer() {} + + public CustomWorldSettingsFinal.CustomWorldSettings a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + JsonObject jsonobject = jsonelement.getAsJsonObject(); + CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings = new CustomWorldSettingsFinal.CustomWorldSettings(); + + try { + customworldsettingsfinal_customworldsettings.b = ChatDeserializer.a(jsonobject, "coordinateScale", customworldsettingsfinal_customworldsettings.b); + customworldsettingsfinal_customworldsettings.c = ChatDeserializer.a(jsonobject, "heightScale", customworldsettingsfinal_customworldsettings.c); + customworldsettingsfinal_customworldsettings.e = ChatDeserializer.a(jsonobject, "lowerLimitScale", customworldsettingsfinal_customworldsettings.e); + customworldsettingsfinal_customworldsettings.d = ChatDeserializer.a(jsonobject, "upperLimitScale", customworldsettingsfinal_customworldsettings.d); + customworldsettingsfinal_customworldsettings.f = ChatDeserializer.a(jsonobject, "depthNoiseScaleX", customworldsettingsfinal_customworldsettings.f); + customworldsettingsfinal_customworldsettings.g = ChatDeserializer.a(jsonobject, "depthNoiseScaleZ", customworldsettingsfinal_customworldsettings.g); + customworldsettingsfinal_customworldsettings.h = ChatDeserializer.a(jsonobject, "depthNoiseScaleExponent", customworldsettingsfinal_customworldsettings.h); + customworldsettingsfinal_customworldsettings.i = ChatDeserializer.a(jsonobject, "mainNoiseScaleX", customworldsettingsfinal_customworldsettings.i); + customworldsettingsfinal_customworldsettings.j = ChatDeserializer.a(jsonobject, "mainNoiseScaleY", customworldsettingsfinal_customworldsettings.j); + customworldsettingsfinal_customworldsettings.k = ChatDeserializer.a(jsonobject, "mainNoiseScaleZ", customworldsettingsfinal_customworldsettings.k); + customworldsettingsfinal_customworldsettings.l = ChatDeserializer.a(jsonobject, "baseSize", customworldsettingsfinal_customworldsettings.l); + customworldsettingsfinal_customworldsettings.m = ChatDeserializer.a(jsonobject, "stretchY", customworldsettingsfinal_customworldsettings.m); + customworldsettingsfinal_customworldsettings.n = ChatDeserializer.a(jsonobject, "biomeDepthWeight", customworldsettingsfinal_customworldsettings.n); + customworldsettingsfinal_customworldsettings.o = ChatDeserializer.a(jsonobject, "biomeDepthOffset", customworldsettingsfinal_customworldsettings.o); + customworldsettingsfinal_customworldsettings.p = ChatDeserializer.a(jsonobject, "biomeScaleWeight", customworldsettingsfinal_customworldsettings.p); + customworldsettingsfinal_customworldsettings.q = ChatDeserializer.a(jsonobject, "biomeScaleOffset", customworldsettingsfinal_customworldsettings.q); + customworldsettingsfinal_customworldsettings.r = ChatDeserializer.a(jsonobject, "seaLevel", customworldsettingsfinal_customworldsettings.r); + customworldsettingsfinal_customworldsettings.s = ChatDeserializer.a(jsonobject, "useCaves", customworldsettingsfinal_customworldsettings.s); + customworldsettingsfinal_customworldsettings.t = ChatDeserializer.a(jsonobject, "useDungeons", customworldsettingsfinal_customworldsettings.t); + customworldsettingsfinal_customworldsettings.u = ChatDeserializer.a(jsonobject, "dungeonChance", customworldsettingsfinal_customworldsettings.u); + customworldsettingsfinal_customworldsettings.v = ChatDeserializer.a(jsonobject, "useStrongholds", customworldsettingsfinal_customworldsettings.v); + customworldsettingsfinal_customworldsettings.w = ChatDeserializer.a(jsonobject, "useVillages", customworldsettingsfinal_customworldsettings.w); + customworldsettingsfinal_customworldsettings.x = ChatDeserializer.a(jsonobject, "useMineShafts", customworldsettingsfinal_customworldsettings.x); + customworldsettingsfinal_customworldsettings.y = ChatDeserializer.a(jsonobject, "useTemples", customworldsettingsfinal_customworldsettings.y); + customworldsettingsfinal_customworldsettings.z = ChatDeserializer.a(jsonobject, "useMonuments", customworldsettingsfinal_customworldsettings.z); + customworldsettingsfinal_customworldsettings.A = ChatDeserializer.a(jsonobject, "useRavines", customworldsettingsfinal_customworldsettings.A); + customworldsettingsfinal_customworldsettings.B = ChatDeserializer.a(jsonobject, "useWaterLakes", customworldsettingsfinal_customworldsettings.B); + customworldsettingsfinal_customworldsettings.C = ChatDeserializer.a(jsonobject, "waterLakeChance", customworldsettingsfinal_customworldsettings.C); + customworldsettingsfinal_customworldsettings.D = ChatDeserializer.a(jsonobject, "useLavaLakes", customworldsettingsfinal_customworldsettings.D); + customworldsettingsfinal_customworldsettings.E = ChatDeserializer.a(jsonobject, "lavaLakeChance", customworldsettingsfinal_customworldsettings.E); + customworldsettingsfinal_customworldsettings.F = ChatDeserializer.a(jsonobject, "useLavaOceans", customworldsettingsfinal_customworldsettings.F); + customworldsettingsfinal_customworldsettings.G = ChatDeserializer.a(jsonobject, "fixedBiome", customworldsettingsfinal_customworldsettings.G); + if (customworldsettingsfinal_customworldsettings.G < 38 && customworldsettingsfinal_customworldsettings.G >= -1) { + if (customworldsettingsfinal_customworldsettings.G >= BiomeBase.HELL.id) { + customworldsettingsfinal_customworldsettings.G += 2; + } + } else { + customworldsettingsfinal_customworldsettings.G = -1; + } + + customworldsettingsfinal_customworldsettings.H = ChatDeserializer.a(jsonobject, "biomeSize", customworldsettingsfinal_customworldsettings.H); + customworldsettingsfinal_customworldsettings.I = ChatDeserializer.a(jsonobject, "riverSize", customworldsettingsfinal_customworldsettings.I); + customworldsettingsfinal_customworldsettings.J = ChatDeserializer.a(jsonobject, "dirtSize", customworldsettingsfinal_customworldsettings.J); + customworldsettingsfinal_customworldsettings.K = ChatDeserializer.a(jsonobject, "dirtCount", customworldsettingsfinal_customworldsettings.K); + customworldsettingsfinal_customworldsettings.L = ChatDeserializer.a(jsonobject, "dirtMinHeight", customworldsettingsfinal_customworldsettings.L); + customworldsettingsfinal_customworldsettings.M = ChatDeserializer.a(jsonobject, "dirtMaxHeight", customworldsettingsfinal_customworldsettings.M); + customworldsettingsfinal_customworldsettings.N = ChatDeserializer.a(jsonobject, "gravelSize", customworldsettingsfinal_customworldsettings.N); + customworldsettingsfinal_customworldsettings.O = ChatDeserializer.a(jsonobject, "gravelCount", customworldsettingsfinal_customworldsettings.O); + customworldsettingsfinal_customworldsettings.P = ChatDeserializer.a(jsonobject, "gravelMinHeight", customworldsettingsfinal_customworldsettings.P); + customworldsettingsfinal_customworldsettings.Q = ChatDeserializer.a(jsonobject, "gravelMaxHeight", customworldsettingsfinal_customworldsettings.Q); + customworldsettingsfinal_customworldsettings.R = ChatDeserializer.a(jsonobject, "graniteSize", customworldsettingsfinal_customworldsettings.R); + customworldsettingsfinal_customworldsettings.S = ChatDeserializer.a(jsonobject, "graniteCount", customworldsettingsfinal_customworldsettings.S); + customworldsettingsfinal_customworldsettings.T = ChatDeserializer.a(jsonobject, "graniteMinHeight", customworldsettingsfinal_customworldsettings.T); + customworldsettingsfinal_customworldsettings.U = ChatDeserializer.a(jsonobject, "graniteMaxHeight", customworldsettingsfinal_customworldsettings.U); + customworldsettingsfinal_customworldsettings.V = ChatDeserializer.a(jsonobject, "dioriteSize", customworldsettingsfinal_customworldsettings.V); + customworldsettingsfinal_customworldsettings.W = ChatDeserializer.a(jsonobject, "dioriteCount", customworldsettingsfinal_customworldsettings.W); + customworldsettingsfinal_customworldsettings.X = ChatDeserializer.a(jsonobject, "dioriteMinHeight", customworldsettingsfinal_customworldsettings.X); + customworldsettingsfinal_customworldsettings.Y = ChatDeserializer.a(jsonobject, "dioriteMaxHeight", customworldsettingsfinal_customworldsettings.Y); + customworldsettingsfinal_customworldsettings.Z = ChatDeserializer.a(jsonobject, "andesiteSize", customworldsettingsfinal_customworldsettings.Z); + customworldsettingsfinal_customworldsettings.aa = ChatDeserializer.a(jsonobject, "andesiteCount", customworldsettingsfinal_customworldsettings.aa); + customworldsettingsfinal_customworldsettings.ab = ChatDeserializer.a(jsonobject, "andesiteMinHeight", customworldsettingsfinal_customworldsettings.ab); + customworldsettingsfinal_customworldsettings.ac = ChatDeserializer.a(jsonobject, "andesiteMaxHeight", customworldsettingsfinal_customworldsettings.ac); + customworldsettingsfinal_customworldsettings.ad = ChatDeserializer.a(jsonobject, "coalSize", customworldsettingsfinal_customworldsettings.ad); + customworldsettingsfinal_customworldsettings.ae = ChatDeserializer.a(jsonobject, "coalCount", customworldsettingsfinal_customworldsettings.ae); + customworldsettingsfinal_customworldsettings.af = ChatDeserializer.a(jsonobject, "coalMinHeight", customworldsettingsfinal_customworldsettings.af); + customworldsettingsfinal_customworldsettings.ag = ChatDeserializer.a(jsonobject, "coalMaxHeight", customworldsettingsfinal_customworldsettings.ag); + customworldsettingsfinal_customworldsettings.ah = ChatDeserializer.a(jsonobject, "ironSize", customworldsettingsfinal_customworldsettings.ah); + customworldsettingsfinal_customworldsettings.ai = ChatDeserializer.a(jsonobject, "ironCount", customworldsettingsfinal_customworldsettings.ai); + customworldsettingsfinal_customworldsettings.aj = ChatDeserializer.a(jsonobject, "ironMinHeight", customworldsettingsfinal_customworldsettings.aj); + customworldsettingsfinal_customworldsettings.ak = ChatDeserializer.a(jsonobject, "ironMaxHeight", customworldsettingsfinal_customworldsettings.ak); + customworldsettingsfinal_customworldsettings.al = ChatDeserializer.a(jsonobject, "goldSize", customworldsettingsfinal_customworldsettings.al); + customworldsettingsfinal_customworldsettings.am = ChatDeserializer.a(jsonobject, "goldCount", customworldsettingsfinal_customworldsettings.am); + customworldsettingsfinal_customworldsettings.an = ChatDeserializer.a(jsonobject, "goldMinHeight", customworldsettingsfinal_customworldsettings.an); + customworldsettingsfinal_customworldsettings.ao = ChatDeserializer.a(jsonobject, "goldMaxHeight", customworldsettingsfinal_customworldsettings.ao); + customworldsettingsfinal_customworldsettings.ap = ChatDeserializer.a(jsonobject, "redstoneSize", customworldsettingsfinal_customworldsettings.ap); + customworldsettingsfinal_customworldsettings.aq = ChatDeserializer.a(jsonobject, "redstoneCount", customworldsettingsfinal_customworldsettings.aq); + customworldsettingsfinal_customworldsettings.ar = ChatDeserializer.a(jsonobject, "redstoneMinHeight", customworldsettingsfinal_customworldsettings.ar); + customworldsettingsfinal_customworldsettings.as = ChatDeserializer.a(jsonobject, "redstoneMaxHeight", customworldsettingsfinal_customworldsettings.as); + customworldsettingsfinal_customworldsettings.at = ChatDeserializer.a(jsonobject, "diamondSize", customworldsettingsfinal_customworldsettings.at); + customworldsettingsfinal_customworldsettings.au = ChatDeserializer.a(jsonobject, "diamondCount", customworldsettingsfinal_customworldsettings.au); + customworldsettingsfinal_customworldsettings.av = ChatDeserializer.a(jsonobject, "diamondMinHeight", customworldsettingsfinal_customworldsettings.av); + customworldsettingsfinal_customworldsettings.aw = ChatDeserializer.a(jsonobject, "diamondMaxHeight", customworldsettingsfinal_customworldsettings.aw); + customworldsettingsfinal_customworldsettings.ax = ChatDeserializer.a(jsonobject, "lapisSize", customworldsettingsfinal_customworldsettings.ax); + customworldsettingsfinal_customworldsettings.ay = ChatDeserializer.a(jsonobject, "lapisCount", customworldsettingsfinal_customworldsettings.ay); + customworldsettingsfinal_customworldsettings.az = ChatDeserializer.a(jsonobject, "lapisCenterHeight", customworldsettingsfinal_customworldsettings.az); + customworldsettingsfinal_customworldsettings.aA = ChatDeserializer.a(jsonobject, "lapisSpread", customworldsettingsfinal_customworldsettings.aA); + } catch (Exception exception) { + ; + } + + return customworldsettingsfinal_customworldsettings; + } + + public JsonElement a(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings, Type type, JsonSerializationContext jsonserializationcontext) { + JsonObject jsonobject = new JsonObject(); + + jsonobject.addProperty("coordinateScale", customworldsettingsfinal_customworldsettings.b); + jsonobject.addProperty("heightScale", customworldsettingsfinal_customworldsettings.c); + jsonobject.addProperty("lowerLimitScale", customworldsettingsfinal_customworldsettings.e); + jsonobject.addProperty("upperLimitScale", customworldsettingsfinal_customworldsettings.d); + jsonobject.addProperty("depthNoiseScaleX", customworldsettingsfinal_customworldsettings.f); + jsonobject.addProperty("depthNoiseScaleZ", customworldsettingsfinal_customworldsettings.g); + jsonobject.addProperty("depthNoiseScaleExponent", customworldsettingsfinal_customworldsettings.h); + jsonobject.addProperty("mainNoiseScaleX", customworldsettingsfinal_customworldsettings.i); + jsonobject.addProperty("mainNoiseScaleY", customworldsettingsfinal_customworldsettings.j); + jsonobject.addProperty("mainNoiseScaleZ", customworldsettingsfinal_customworldsettings.k); + jsonobject.addProperty("baseSize", customworldsettingsfinal_customworldsettings.l); + jsonobject.addProperty("stretchY", customworldsettingsfinal_customworldsettings.m); + jsonobject.addProperty("biomeDepthWeight", customworldsettingsfinal_customworldsettings.n); + jsonobject.addProperty("biomeDepthOffset", customworldsettingsfinal_customworldsettings.o); + jsonobject.addProperty("biomeScaleWeight", customworldsettingsfinal_customworldsettings.p); + jsonobject.addProperty("biomeScaleOffset", customworldsettingsfinal_customworldsettings.q); + jsonobject.addProperty("seaLevel", customworldsettingsfinal_customworldsettings.r); + jsonobject.addProperty("useCaves", customworldsettingsfinal_customworldsettings.s); + jsonobject.addProperty("useDungeons", customworldsettingsfinal_customworldsettings.t); + jsonobject.addProperty("dungeonChance", customworldsettingsfinal_customworldsettings.u); + jsonobject.addProperty("useStrongholds", customworldsettingsfinal_customworldsettings.v); + jsonobject.addProperty("useVillages", customworldsettingsfinal_customworldsettings.w); + jsonobject.addProperty("useMineShafts", customworldsettingsfinal_customworldsettings.x); + jsonobject.addProperty("useTemples", customworldsettingsfinal_customworldsettings.y); + jsonobject.addProperty("useMonuments", customworldsettingsfinal_customworldsettings.z); + jsonobject.addProperty("useRavines", customworldsettingsfinal_customworldsettings.A); + jsonobject.addProperty("useWaterLakes", customworldsettingsfinal_customworldsettings.B); + jsonobject.addProperty("waterLakeChance", customworldsettingsfinal_customworldsettings.C); + jsonobject.addProperty("useLavaLakes", customworldsettingsfinal_customworldsettings.D); + jsonobject.addProperty("lavaLakeChance", customworldsettingsfinal_customworldsettings.E); + jsonobject.addProperty("useLavaOceans", customworldsettingsfinal_customworldsettings.F); + jsonobject.addProperty("fixedBiome", customworldsettingsfinal_customworldsettings.G); + jsonobject.addProperty("biomeSize", customworldsettingsfinal_customworldsettings.H); + jsonobject.addProperty("riverSize", customworldsettingsfinal_customworldsettings.I); + jsonobject.addProperty("dirtSize", customworldsettingsfinal_customworldsettings.J); + jsonobject.addProperty("dirtCount", customworldsettingsfinal_customworldsettings.K); + jsonobject.addProperty("dirtMinHeight", customworldsettingsfinal_customworldsettings.L); + jsonobject.addProperty("dirtMaxHeight", customworldsettingsfinal_customworldsettings.M); + jsonobject.addProperty("gravelSize", customworldsettingsfinal_customworldsettings.N); + jsonobject.addProperty("gravelCount", customworldsettingsfinal_customworldsettings.O); + jsonobject.addProperty("gravelMinHeight", customworldsettingsfinal_customworldsettings.P); + jsonobject.addProperty("gravelMaxHeight", customworldsettingsfinal_customworldsettings.Q); + jsonobject.addProperty("graniteSize", customworldsettingsfinal_customworldsettings.R); + jsonobject.addProperty("graniteCount", customworldsettingsfinal_customworldsettings.S); + jsonobject.addProperty("graniteMinHeight", customworldsettingsfinal_customworldsettings.T); + jsonobject.addProperty("graniteMaxHeight", customworldsettingsfinal_customworldsettings.U); + jsonobject.addProperty("dioriteSize", customworldsettingsfinal_customworldsettings.V); + jsonobject.addProperty("dioriteCount", customworldsettingsfinal_customworldsettings.W); + jsonobject.addProperty("dioriteMinHeight", customworldsettingsfinal_customworldsettings.X); + jsonobject.addProperty("dioriteMaxHeight", customworldsettingsfinal_customworldsettings.Y); + jsonobject.addProperty("andesiteSize", customworldsettingsfinal_customworldsettings.Z); + jsonobject.addProperty("andesiteCount", customworldsettingsfinal_customworldsettings.aa); + jsonobject.addProperty("andesiteMinHeight", customworldsettingsfinal_customworldsettings.ab); + jsonobject.addProperty("andesiteMaxHeight", customworldsettingsfinal_customworldsettings.ac); + jsonobject.addProperty("coalSize", customworldsettingsfinal_customworldsettings.ad); + jsonobject.addProperty("coalCount", customworldsettingsfinal_customworldsettings.ae); + jsonobject.addProperty("coalMinHeight", customworldsettingsfinal_customworldsettings.af); + jsonobject.addProperty("coalMaxHeight", customworldsettingsfinal_customworldsettings.ag); + jsonobject.addProperty("ironSize", customworldsettingsfinal_customworldsettings.ah); + jsonobject.addProperty("ironCount", customworldsettingsfinal_customworldsettings.ai); + jsonobject.addProperty("ironMinHeight", customworldsettingsfinal_customworldsettings.aj); + jsonobject.addProperty("ironMaxHeight", customworldsettingsfinal_customworldsettings.ak); + jsonobject.addProperty("goldSize", customworldsettingsfinal_customworldsettings.al); + jsonobject.addProperty("goldCount", customworldsettingsfinal_customworldsettings.am); + jsonobject.addProperty("goldMinHeight", customworldsettingsfinal_customworldsettings.an); + jsonobject.addProperty("goldMaxHeight", customworldsettingsfinal_customworldsettings.ao); + jsonobject.addProperty("redstoneSize", customworldsettingsfinal_customworldsettings.ap); + jsonobject.addProperty("redstoneCount", customworldsettingsfinal_customworldsettings.aq); + jsonobject.addProperty("redstoneMinHeight", customworldsettingsfinal_customworldsettings.ar); + jsonobject.addProperty("redstoneMaxHeight", customworldsettingsfinal_customworldsettings.as); + jsonobject.addProperty("diamondSize", customworldsettingsfinal_customworldsettings.at); + jsonobject.addProperty("diamondCount", customworldsettingsfinal_customworldsettings.au); + jsonobject.addProperty("diamondMinHeight", customworldsettingsfinal_customworldsettings.av); + jsonobject.addProperty("diamondMaxHeight", customworldsettingsfinal_customworldsettings.aw); + jsonobject.addProperty("lapisSize", customworldsettingsfinal_customworldsettings.ax); + jsonobject.addProperty("lapisCount", customworldsettingsfinal_customworldsettings.ay); + jsonobject.addProperty("lapisCenterHeight", customworldsettingsfinal_customworldsettings.az); + jsonobject.addProperty("lapisSpread", customworldsettingsfinal_customworldsettings.aA); + return jsonobject; + } + + public CustomWorldSettingsFinal.CustomWorldSettings deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + + public JsonElement serialize(CustomWorldSettingsFinal.CustomWorldSettings object, Type type, JsonSerializationContext jsonserializationcontext) { + return this.a((CustomWorldSettingsFinal.CustomWorldSettings) object, type, jsonserializationcontext); + } + } + + public static class CustomWorldSettings { + + static final Gson a = (new GsonBuilder()).registerTypeAdapter(CustomWorldSettingsFinal.CustomWorldSettings.class, new CustomWorldSettingsFinal.CustomWorldSettingsSerializer()).create(); + public float b = 684.412F; + public float c = 684.412F; + public float d = 512.0F; + public float e = 512.0F; + public float f = 200.0F; + public float g = 200.0F; + public float h = 0.5F; + public float i = 80.0F; + public float j = 160.0F; + public float k = 80.0F; + public float l = 8.5F; + public float m = 12.0F; + public float n = 1.0F; + public float o = 0.0F; + public float p = 1.0F; + public float q = 0.0F; + public int r = 63; + public boolean s = true; + public boolean t = true; + public int u = 8; + public boolean v = true; + public boolean w = true; + public boolean x = true; + public boolean y = true; + public boolean z = true; + public boolean A = true; + public boolean B = true; + public int C = 4; + public boolean D = true; + public int E = 80; + public boolean F = false; + public int G = -1; + public int H = 4; + public int I = 4; + public int J = 33; + public int K = 10; + public int L = 0; + public int M = 256; + public int N = 33; + public int O = 8; + public int P = 0; + public int Q = 256; + public int R = 33; + public int S = 10; + public int T = 0; + public int U = 80; + public int V = 33; + public int W = 10; + public int X = 0; + public int Y = 80; + public int Z = 33; + public int aa = 10; + public int ab = 0; + public int ac = 80; + public int ad = 17; + public int ae = 20; + public int af = 0; + public int ag = 128; + public int ah = 9; + public int ai = 20; + public int aj = 0; + public int ak = 64; + public int al = 9; + public int am = 2; + public int an = 0; + public int ao = 32; + public int ap = 8; + public int aq = 8; + public int ar = 0; + public int as = 16; + public int at = 8; + public int au = 1; + public int av = 0; + public int aw = 16; + public int ax = 7; + public int ay = 1; + public int az = 16; + public int aA = 16; + + public static CustomWorldSettingsFinal.CustomWorldSettings a(String s) { + if (s.length() == 0) { + return new CustomWorldSettingsFinal.CustomWorldSettings(); + } else { + try { + return (CustomWorldSettingsFinal.CustomWorldSettings) CustomWorldSettingsFinal.CustomWorldSettings.a.fromJson(s, CustomWorldSettingsFinal.CustomWorldSettings.class); + } catch (Exception exception) { + return new CustomWorldSettingsFinal.CustomWorldSettings(); + } + } + } + + public String toString() { + return CustomWorldSettingsFinal.CustomWorldSettings.a.toJson(this); + } + + public CustomWorldSettings() { + this.a(); + } + + public void a() { + this.b = 684.412F; + this.c = 684.412F; + this.d = 512.0F; + this.e = 512.0F; + this.f = 200.0F; + this.g = 200.0F; + this.h = 0.5F; + this.i = 80.0F; + this.j = 160.0F; + this.k = 80.0F; + this.l = 8.5F; + this.m = 12.0F; + this.n = 1.0F; + this.o = 0.0F; + this.p = 1.0F; + this.q = 0.0F; + this.r = 63; + this.s = true; + this.t = true; + this.u = 8; + this.v = true; + this.w = true; + this.x = true; + this.y = true; + this.z = true; + this.A = true; + this.B = true; + this.C = 4; + this.D = true; + this.E = 80; + this.F = false; + this.G = -1; + this.H = 4; + this.I = 4; + this.J = 33; + this.K = 10; + this.L = 0; + this.M = 256; + this.N = 33; + this.O = 8; + this.P = 0; + this.Q = 256; + this.R = 33; + this.S = 10; + this.T = 0; + this.U = 80; + this.V = 33; + this.W = 10; + this.X = 0; + this.Y = 80; + this.Z = 33; + this.aa = 10; + this.ab = 0; + this.ac = 80; + this.ad = 17; + this.ae = 20; + this.af = 0; + this.ag = 128; + this.ah = 9; + this.ai = 20; + this.aj = 0; + this.ak = 64; + this.al = 9; + this.am = 2; + this.an = 0; + this.ao = 32; + this.ap = 8; + this.aq = 8; + this.ar = 0; + this.as = 16; + this.at = 8; + this.au = 1; + this.av = 0; + this.aw = 16; + this.ax = 7; + this.ay = 1; + this.az = 16; + this.aA = 16; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (object != null && this.getClass() == object.getClass()) { + CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings = (CustomWorldSettingsFinal.CustomWorldSettings) object; + + return this.aa != customworldsettingsfinal_customworldsettings.aa ? false : (this.ac != customworldsettingsfinal_customworldsettings.ac ? false : (this.ab != customworldsettingsfinal_customworldsettings.ab ? false : (this.Z != customworldsettingsfinal_customworldsettings.Z ? false : (Float.compare(customworldsettingsfinal_customworldsettings.l, this.l) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.o, this.o) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.n, this.n) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.q, this.q) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.p, this.p) != 0 ? false : (this.H != customworldsettingsfinal_customworldsettings.H ? false : (this.ae != customworldsettingsfinal_customworldsettings.ae ? false : (this.ag != customworldsettingsfinal_customworldsettings.ag ? false : (this.af != customworldsettingsfinal_customworldsettings.af ? false : (this.ad != customworldsettingsfinal_customworldsettings.ad ? false : (Float.compare(customworldsettingsfinal_customworldsettings.b, this.b) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.h, this.h) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.f, this.f) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.g, this.g) != 0 ? false : (this.au != customworldsettingsfinal_customworldsettings.au ? false : (this.aw != customworldsettingsfinal_customworldsettings.aw ? false : (this.av != customworldsettingsfinal_customworldsettings.av ? false : (this.at != customworldsettingsfinal_customworldsettings.at ? false : (this.W != customworldsettingsfinal_customworldsettings.W ? false : (this.Y != customworldsettingsfinal_customworldsettings.Y ? false : (this.X != customworldsettingsfinal_customworldsettings.X ? false : (this.V != customworldsettingsfinal_customworldsettings.V ? false : (this.K != customworldsettingsfinal_customworldsettings.K ? false : (this.M != customworldsettingsfinal_customworldsettings.M ? false : (this.L != customworldsettingsfinal_customworldsettings.L ? false : (this.J != customworldsettingsfinal_customworldsettings.J ? false : (this.u != customworldsettingsfinal_customworldsettings.u ? false : (this.G != customworldsettingsfinal_customworldsettings.G ? false : (this.am != customworldsettingsfinal_customworldsettings.am ? false : (this.ao != customworldsettingsfinal_customworldsettings.ao ? false : (this.an != customworldsettingsfinal_customworldsettings.an ? false : (this.al != customworldsettingsfinal_customworldsettings.al ? false : (this.S != customworldsettingsfinal_customworldsettings.S ? false : (this.U != customworldsettingsfinal_customworldsettings.U ? false : (this.T != customworldsettingsfinal_customworldsettings.T ? false : (this.R != customworldsettingsfinal_customworldsettings.R ? false : (this.O != customworldsettingsfinal_customworldsettings.O ? false : (this.Q != customworldsettingsfinal_customworldsettings.Q ? false : (this.P != customworldsettingsfinal_customworldsettings.P ? false : (this.N != customworldsettingsfinal_customworldsettings.N ? false : (Float.compare(customworldsettingsfinal_customworldsettings.c, this.c) != 0 ? false : (this.ai != customworldsettingsfinal_customworldsettings.ai ? false : (this.ak != customworldsettingsfinal_customworldsettings.ak ? false : (this.aj != customworldsettingsfinal_customworldsettings.aj ? false : (this.ah != customworldsettingsfinal_customworldsettings.ah ? false : (this.az != customworldsettingsfinal_customworldsettings.az ? false : (this.ay != customworldsettingsfinal_customworldsettings.ay ? false : (this.ax != customworldsettingsfinal_customworldsettings.ax ? false : (this.aA != customworldsettingsfinal_customworldsettings.aA ? false : (this.E != customworldsettingsfinal_customworldsettings.E ? false : (Float.compare(customworldsettingsfinal_customworldsettings.e, this.e) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.i, this.i) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.j, this.j) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.k, this.k) != 0 ? false : (this.aq != customworldsettingsfinal_customworldsettings.aq ? false : (this.as != customworldsettingsfinal_customworldsettings.as ? false : (this.ar != customworldsettingsfinal_customworldsettings.ar ? false : (this.ap != customworldsettingsfinal_customworldsettings.ap ? false : (this.I != customworldsettingsfinal_customworldsettings.I ? false : (this.r != customworldsettingsfinal_customworldsettings.r ? false : (Float.compare(customworldsettingsfinal_customworldsettings.m, this.m) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.d, this.d) != 0 ? false : (this.s != customworldsettingsfinal_customworldsettings.s ? false : (this.t != customworldsettingsfinal_customworldsettings.t ? false : (this.D != customworldsettingsfinal_customworldsettings.D ? false : (this.F != customworldsettingsfinal_customworldsettings.F ? false : (this.x != customworldsettingsfinal_customworldsettings.x ? false : (this.A != customworldsettingsfinal_customworldsettings.A ? false : (this.v != customworldsettingsfinal_customworldsettings.v ? false : (this.y != customworldsettingsfinal_customworldsettings.y ? false : (this.z != customworldsettingsfinal_customworldsettings.z ? false : (this.w != customworldsettingsfinal_customworldsettings.w ? false : (this.B != customworldsettingsfinal_customworldsettings.B ? false : this.C == customworldsettingsfinal_customworldsettings.C)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); + } else { + return false; + } + } + + public int hashCode() { + int i = this.b != 0.0F ? Float.floatToIntBits(this.b) : 0; + + i = 31 * i + (this.c != 0.0F ? Float.floatToIntBits(this.c) : 0); + i = 31 * i + (this.d != 0.0F ? Float.floatToIntBits(this.d) : 0); + i = 31 * i + (this.e != 0.0F ? Float.floatToIntBits(this.e) : 0); + i = 31 * i + (this.f != 0.0F ? Float.floatToIntBits(this.f) : 0); + i = 31 * i + (this.g != 0.0F ? Float.floatToIntBits(this.g) : 0); + i = 31 * i + (this.h != 0.0F ? Float.floatToIntBits(this.h) : 0); + i = 31 * i + (this.i != 0.0F ? Float.floatToIntBits(this.i) : 0); + i = 31 * i + (this.j != 0.0F ? Float.floatToIntBits(this.j) : 0); + i = 31 * i + (this.k != 0.0F ? Float.floatToIntBits(this.k) : 0); + i = 31 * i + (this.l != 0.0F ? Float.floatToIntBits(this.l) : 0); + i = 31 * i + (this.m != 0.0F ? Float.floatToIntBits(this.m) : 0); + i = 31 * i + (this.n != 0.0F ? Float.floatToIntBits(this.n) : 0); + i = 31 * i + (this.o != 0.0F ? Float.floatToIntBits(this.o) : 0); + i = 31 * i + (this.p != 0.0F ? Float.floatToIntBits(this.p) : 0); + i = 31 * i + (this.q != 0.0F ? Float.floatToIntBits(this.q) : 0); + i = 31 * i + this.r; + i = 31 * i + (this.s ? 1 : 0); + i = 31 * i + (this.t ? 1 : 0); + i = 31 * i + this.u; + i = 31 * i + (this.v ? 1 : 0); + i = 31 * i + (this.w ? 1 : 0); + i = 31 * i + (this.x ? 1 : 0); + i = 31 * i + (this.y ? 1 : 0); + i = 31 * i + (this.z ? 1 : 0); + i = 31 * i + (this.A ? 1 : 0); + i = 31 * i + (this.B ? 1 : 0); + i = 31 * i + this.C; + i = 31 * i + (this.D ? 1 : 0); + i = 31 * i + this.E; + i = 31 * i + (this.F ? 1 : 0); + i = 31 * i + this.G; + i = 31 * i + this.H; + i = 31 * i + this.I; + i = 31 * i + this.J; + i = 31 * i + this.K; + i = 31 * i + this.L; + i = 31 * i + this.M; + i = 31 * i + this.N; + i = 31 * i + this.O; + i = 31 * i + this.P; + i = 31 * i + this.Q; + i = 31 * i + this.R; + i = 31 * i + this.S; + i = 31 * i + this.T; + i = 31 * i + this.U; + i = 31 * i + this.V; + i = 31 * i + this.W; + i = 31 * i + this.X; + i = 31 * i + this.Y; + i = 31 * i + this.Z; + i = 31 * i + this.aa; + i = 31 * i + this.ab; + i = 31 * i + this.ac; + i = 31 * i + this.ad; + i = 31 * i + this.ae; + i = 31 * i + this.af; + i = 31 * i + this.ag; + i = 31 * i + this.ah; + i = 31 * i + this.ai; + i = 31 * i + this.aj; + i = 31 * i + this.ak; + i = 31 * i + this.al; + i = 31 * i + this.am; + i = 31 * i + this.an; + i = 31 * i + this.ao; + i = 31 * i + this.ap; + i = 31 * i + this.aq; + i = 31 * i + this.ar; + i = 31 * i + this.as; + i = 31 * i + this.at; + i = 31 * i + this.au; + i = 31 * i + this.av; + i = 31 * i + this.aw; + i = 31 * i + this.ax; + i = 31 * i + this.ay; + i = 31 * i + this.az; + i = 31 * i + this.aA; + return i; + } + + public CustomWorldSettingsFinal b() { + return new CustomWorldSettingsFinal(this, (CustomWorldSettingsFinal.SyntheticClass_1) null); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java b/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java new file mode 100644 index 0000000..bc02417 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java @@ -0,0 +1,170 @@ +package net.minecraft.server; + +public class DamageSource { + + public static DamageSource FIRE = (new DamageSource("inFire")).setExplosion(); + public static DamageSource LIGHTNING = new DamageSource("lightningBolt"); + public static DamageSource BURN = (new DamageSource("onFire")).setIgnoreArmor().setExplosion(); + public static DamageSource LAVA = (new DamageSource("lava")).setExplosion(); + public static DamageSource STUCK = (new DamageSource("inWall")).setIgnoreArmor(); + public static DamageSource DROWN = (new DamageSource("drown")).setIgnoreArmor(); + public static DamageSource STARVE = (new DamageSource("starve")).setIgnoreArmor().m(); + public static DamageSource CACTUS = new DamageSource("cactus"); + public static DamageSource FALL = (new DamageSource("fall")).setIgnoreArmor(); + public static DamageSource OUT_OF_WORLD = (new DamageSource("outOfWorld")).setIgnoreArmor().l(); + public static DamageSource GENERIC = (new DamageSource("generic")).setIgnoreArmor(); + public static DamageSource MAGIC = (new DamageSource("magic")).setIgnoreArmor().setMagic(); + public static DamageSource WITHER = (new DamageSource("wither")).setIgnoreArmor(); + public static DamageSource ANVIL = new DamageSource("anvil"); + public static DamageSource FALLING_BLOCK = new DamageSource("fallingBlock"); + private boolean q; + private boolean r; + private boolean s; + private float t = 0.3F; + private boolean u; + private boolean v; + private boolean w; + private boolean x; + private boolean y; + public String translationIndex; + + public static DamageSource mobAttack(EntityLiving entityliving) { + return new EntityDamageSource("mob", entityliving); + } + + public static DamageSource playerAttack(EntityHuman entityhuman) { + return new EntityDamageSource("player", entityhuman); + } + + public static DamageSource arrow(EntityArrow entityarrow, Entity entity) { + return (new EntityDamageSourceIndirect("arrow", entityarrow, entity)).b(); + } + + public static DamageSource fireball(EntityFireball entityfireball, Entity entity) { + return entity == null ? (new EntityDamageSourceIndirect("onFire", entityfireball, entityfireball)).setExplosion().b() : (new EntityDamageSourceIndirect("fireball", entityfireball, entity)).setExplosion().b(); + } + + public static DamageSource projectile(Entity entity, Entity entity1) { + return (new EntityDamageSourceIndirect("thrown", entity, entity1)).b(); + } + + public static DamageSource b(Entity entity, Entity entity1) { + return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic(); + } + + public static DamageSource a(Entity entity) { + return (new EntityDamageSource("thorns", entity)).v().setMagic(); + } + + public static DamageSource explosion(Explosion explosion) { + return explosion != null && explosion.getSource() != null ? (new EntityDamageSource("explosion.player", explosion.getSource())).q().d() : (new DamageSource("explosion")).q().d(); + } + + public boolean a() { + return this.v; + } + + public DamageSource b() { + this.v = true; + return this; + } + + public boolean isExplosion() { + return this.y; + } + + public DamageSource d() { + this.y = true; + return this; + } + + public boolean ignoresArmor() { + return this.q; + } + + public float getExhaustionCost() { + return this.t; + } + + public boolean ignoresInvulnerability() { + return this.r; + } + + public boolean isStarvation() { + return this.s; + } + + protected DamageSource(String s) { + this.translationIndex = s; + } + + public Entity i() { + return this.getEntity(); + } + + public Entity getEntity() { + return null; + } + + protected DamageSource setIgnoreArmor() { + this.q = true; + this.t = 0.0F; + return this; + } + + protected DamageSource l() { + this.r = true; + return this; + } + + protected DamageSource m() { + this.s = true; + this.t = 0.0F; + return this; + } + + protected DamageSource setExplosion() { + this.u = true; + return this; + } + + public IChatBaseComponent getLocalizedDeathMessage(EntityLiving entityliving) { + EntityLiving entityliving1 = entityliving.bt(); + String s = "death.attack." + this.translationIndex; + String s1 = s + ".player"; + + return entityliving1 != null && LocaleI18n.c(s1) ? new ChatMessage(s1, new Object[] { entityliving.getScoreboardDisplayName(), entityliving1.getScoreboardDisplayName()}) : new ChatMessage(s, new Object[] { entityliving.getScoreboardDisplayName()}); + } + + public boolean o() { + return this.u; + } + + public String p() { + return this.translationIndex; + } + + public DamageSource q() { + this.w = true; + return this; + } + + public boolean r() { + return this.w; + } + + public boolean isMagic() { + return this.x; + } + + public DamageSource setMagic() { + this.x = true; + return this; + } + + public boolean u() { + Entity entity = this.getEntity(); + + return entity instanceof EntityHuman && ((EntityHuman) entity).abilities.canInstantlyBuild; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java b/eSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java rename to eSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java new file mode 100644 index 0000000..75dc45f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java @@ -0,0 +1,148 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.io.IOException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DedicatedPlayerList extends PlayerList { + + private static final Logger f = LogManager.getLogger(); + + public DedicatedPlayerList(DedicatedServer dedicatedserver) { + super(dedicatedserver); + this.a(dedicatedserver.a("view-distance", 10)); + this.maxPlayers = dedicatedserver.a("max-players", 20); + this.setHasWhitelist(dedicatedserver.a("white-list", false)); + if (!dedicatedserver.T()) { + this.getProfileBans().a(true); + this.getIPBans().a(true); + } + + this.z(); + this.x(); + this.y(); + this.w(); + this.A(); + this.C(); + this.B(); + if (!this.getWhitelist().c().exists()) { + this.D(); + } + + } + + public void setHasWhitelist(boolean flag) { + super.setHasWhitelist(flag); + this.getServer().a("white-list", (Object) Boolean.valueOf(flag)); + this.getServer().a(); + } + + public void addOp(GameProfile gameprofile) { + super.addOp(gameprofile); + this.B(); + } + + public void removeOp(GameProfile gameprofile) { + super.removeOp(gameprofile); + this.B(); + } + + public void removeWhitelist(GameProfile gameprofile) { + super.removeWhitelist(gameprofile); + this.D(); + } + + public void addWhitelist(GameProfile gameprofile) { + super.addWhitelist(gameprofile); + this.D(); + } + + public void reloadWhitelist() { + this.C(); + } + + private void w() { + try { + this.getIPBans().save(); + } catch (IOException ioexception) { + DedicatedPlayerList.f.warn("Failed to save ip banlist: ", ioexception); + } + + } + + private void x() { + try { + this.getProfileBans().save(); + } catch (IOException ioexception) { + DedicatedPlayerList.f.warn("Failed to save user banlist: ", ioexception); + } + + } + + private void y() { + try { + this.getIPBans().load(); + } catch (IOException ioexception) { + DedicatedPlayerList.f.warn("Failed to load ip banlist: ", ioexception); + } + + } + + private void z() { + try { + this.getProfileBans().load(); + } catch (IOException ioexception) { + DedicatedPlayerList.f.warn("Failed to load user banlist: ", ioexception); + } + + } + + private void A() { + try { + this.getOPs().load(); + } catch (Exception exception) { + DedicatedPlayerList.f.warn("Failed to load operators list: ", exception); + } + + } + + private void B() { + try { + this.getOPs().save(); + } catch (Exception exception) { + DedicatedPlayerList.f.warn("Failed to save operators list: ", exception); + } + + } + + private void C() { + try { + this.getWhitelist().load(); + } catch (Exception exception) { + DedicatedPlayerList.f.warn("Failed to load white-list: ", exception); + } + + } + + private void D() { + try { + this.getWhitelist().save(); + } catch (Exception exception) { + DedicatedPlayerList.f.warn("Failed to save white-list: ", exception); + } + + } + + public boolean isWhitelisted(GameProfile gameprofile) { + return !this.getHasWhitelist() || this.isOp(gameprofile) || this.getWhitelist().isWhitelisted(gameprofile); + } + + public DedicatedServer getServer() { + return (DedicatedServer) super.getServer(); + } + + public boolean f(GameProfile gameprofile) { + return this.getOPs().b(gameprofile); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java similarity index 63% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java index cd0efe0..594e1f8 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java @@ -1,13 +1,11 @@ package net.minecraft.server; -import com.google.common.collect.Lists; +import com.elevatemc.spigot.console.PandaConsole; import java.io.File; import java.io.IOException; import java.net.InetAddress; import java.net.Proxy; -import java.util.Collections; -import java.util.List; import java.util.Queue; import java.util.Random; import java.util.concurrent.Callable; @@ -33,7 +31,6 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer private RemoteStatusListener m; private RemoteControlListener n; public PropertyManager propertyManager; - private EULA p; private boolean generateStructures; private WorldSettings.EnumGamemode r; private boolean s; @@ -68,6 +65,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } // CraftBukkit end + // PandaSpigot start - Use TerminalConsoleAppender + new PandaConsole(DedicatedServer.this).start(); + /* + // PandaSpigot end jline.console.ConsoleReader bufferedreader = reader; // CraftBukkit String s; @@ -87,6 +88,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } catch (IOException ioexception) { DedicatedServer.LOGGER.error("Exception handling console input", ioexception); } + */ // PandaSpigot } }; @@ -99,6 +101,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } global.addHandler(new org.bukkit.craftbukkit.util.ForwardLogHandler()); + // PandaSpigot start - Not needed with TerminalConsoleAppender + final org.apache.logging.log4j.Logger logger = LogManager.getRootLogger(); + /* + // PandaSpigot end final org.apache.logging.log4j.core.Logger logger = ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()); for (org.apache.logging.log4j.core.Appender appender : logger.getAppenders().values()) { if (appender instanceof org.apache.logging.log4j.core.appender.ConsoleAppender) { @@ -107,6 +113,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } new Thread(new org.bukkit.craftbukkit.util.TerminalConsoleWriterThread(System.out, this.reader)).start(); + */ System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); @@ -121,198 +128,205 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer DedicatedServer.LOGGER.info("Loading properties"); this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support - this.p = new EULA(new File("eula.txt")); // Spigot Start - boolean eulaAgreed = true; - if ( eulaAgreed ) - { - System.err.println( "You have used the Spigot command line EULA agreement flag." ); - System.err.println( "By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula)." ); - System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." ); - } - // Spigot End - if (!this.p.a() && !eulaAgreed) { // Spigot - DedicatedServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); - this.p.b(); - return false; + if (this.T()) { + this.c("127.0.0.1"); } else { - if (this.T()) { - this.c("127.0.0.1"); - } else { - this.setOnlineMode(this.propertyManager.getBoolean("online-mode", true)); - this.c(this.propertyManager.getString("server-ip", "")); + this.setOnlineMode(this.propertyManager.getBoolean("online-mode", true)); + this.c(this.propertyManager.getString("server-ip", "")); + } + + this.setSpawnAnimals(this.propertyManager.getBoolean("spawn-animals", true)); + this.setSpawnNPCs(this.propertyManager.getBoolean("spawn-npcs", true)); + this.setPVP(this.propertyManager.getBoolean("pvp", true)); + this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false)); + this.setResourcePack(this.propertyManager.getString("resource-pack", ""), this.propertyManager.getString("resource-pack-hash", "")); + this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server")); + this.setForceGamemode(this.propertyManager.getBoolean("force-gamemode", false)); + this.setIdleTimeout(this.propertyManager.getInt("player-idle-timeout", 0)); + if (this.propertyManager.getInt("difficulty", 1) < 0) { + this.propertyManager.setProperty("difficulty", 0); + } else if (this.propertyManager.getInt("difficulty", 1) > 3) { + this.propertyManager.setProperty("difficulty", 3); + } + + this.generateStructures = this.propertyManager.getBoolean("generate-structures", true); + int i = this.propertyManager.getInt("gamemode", WorldSettings.EnumGamemode.SURVIVAL.getId()); + + this.r = WorldSettings.a(i); + DedicatedServer.LOGGER.info("Default game type: " + this.r); + // PandaSpigot start - Unix domain socket support + // PandaSpigot - Move SpigotConfig to load earlier, so that we can check IP forwarding status here. + // Spigot start + this.a(new DedicatedPlayerList(this)); + org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings")); + org.spigotmc.SpigotConfig.registerCommands(); + // Spigot end + java.net.SocketAddress bindAddress; + if (this.getServerIp().startsWith("unix:")) { + if (!io.netty.channel.epoll.Epoll.isAvailable()) { + DedicatedServer.LOGGER.fatal("**** INVALID CONFIGURATION!"); + DedicatedServer.LOGGER.fatal("You are trying to use a Unix domain socket but you're not on a supported OS."); + return false; + } else if (!org.spigotmc.SpigotConfig.bungee) { + DedicatedServer.LOGGER.fatal("**** INVALID CONFIGURATION!"); + DedicatedServer.LOGGER.fatal("Unix domain sockets require IPs to be forwarded from a proxy."); + return false; } + bindAddress = new io.netty.channel.unix.DomainSocketAddress(this.getServerIp().substring("unix:".length())); + } else { + // PandaSpigot end - this.setSpawnAnimals(this.propertyManager.getBoolean("spawn-animals", true)); - this.setSpawnNPCs(this.propertyManager.getBoolean("spawn-npcs", true)); - this.setPVP(this.propertyManager.getBoolean("pvp", true)); - this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false)); - this.setResourcePack(this.propertyManager.getString("resource-pack", ""), this.propertyManager.getString("resource-pack-hash", "")); - this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server")); - this.setForceGamemode(this.propertyManager.getBoolean("force-gamemode", false)); - this.setIdleTimeout(this.propertyManager.getInt("player-idle-timeout", 0)); - if (this.propertyManager.getInt("difficulty", 1) < 0) { - this.propertyManager.setProperty("difficulty", 0); - } else if (this.propertyManager.getInt("difficulty", 1) > 3) { - this.propertyManager.setProperty("difficulty", 3); - } + InetAddress inetaddress = null; - this.generateStructures = this.propertyManager.getBoolean("generate-structures", true); - int i = this.propertyManager.getInt("gamemode", WorldSettings.EnumGamemode.SURVIVAL.getId()); - - this.r = WorldSettings.a(i); - DedicatedServer.LOGGER.info("Default game type: " + this.r); - InetAddress inetaddress = null; - - if (this.getServerIp().length() > 0) { - inetaddress = InetAddress.getByName(this.getServerIp()); - } + if (this.getServerIp().length() > 0) { + inetaddress = InetAddress.getByName(this.getServerIp()); + } if (this.R() < 0) { this.setPort(this.propertyManager.getInt("server-port", 25565)); } - // Spigot start - this.a(new DedicatedPlayerList(this)); - org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings")); - org.spigotmc.SpigotConfig.registerCommands(); - // Spigot end - // PaperSpigot start - org.github.paperspigot.PaperSpigotConfig.init((File) options.valueOf("paper-settings")); - org.github.paperspigot.PaperSpigotConfig.registerCommands(); - // PaperSpigot end + bindAddress = new java.net.InetSocketAddress(inetaddress, this.R()); + } - DedicatedServer.LOGGER.info("Generating keypair"); - this.a(MinecraftEncryption.b()); - DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R()); + // PandaSpigot end + // PaperSpigot start + org.github.paperspigot.PaperSpigotConfig.init((File) options.valueOf("paper-settings")); + org.github.paperspigot.PaperSpigotConfig.registerCommands(); + // PaperSpigot end + + DedicatedServer.LOGGER.info("Generating keypair"); + this.a(MinecraftEncryption.b()); + DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R()); if (!org.spigotmc.SpigotConfig.lateBind) { - try { - this.aq().a(inetaddress, this.R()); - } catch (IOException ioexception) { - DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!"); - DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()}); - DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?"); - return false; - } + try { + this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support + } catch (IOException ioexception) { + DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!"); + DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()}); + DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?"); + return false; } + } - // Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here - // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit - server.loadPlugins(); - server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.STARTUP); - // Spigot End + // Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here + // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit + server.loadPlugins(); + server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.STARTUP); + // Spigot End - if (!this.getOnlineMode()) { - DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); - DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware."); - // Spigot start - if (org.spigotmc.SpigotConfig.bungee) { - DedicatedServer.LOGGER.warn("Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose."); - DedicatedServer.LOGGER.warn("Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information."); - } else { - DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose."); - } - // Spigot end - DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file."); - } - - if (this.aR()) { - this.getUserCache().c(); - } - - if (!NameReferencingFileConverter.a(this.propertyManager)) { - return false; + if (!this.getOnlineMode()) { + DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); + DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware."); + // Spigot start + if (org.spigotmc.SpigotConfig.bungee) { + DedicatedServer.LOGGER.warn("Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose."); + DedicatedServer.LOGGER.warn("Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information."); } else { - this.convertable = new WorldLoaderServer(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor - long j = System.nanoTime(); + DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose."); + } + // Spigot end + DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file."); + } - if (this.U() == null) { - this.setWorld(this.propertyManager.getString("level-name", "world")); - } + if (this.aR()) { + this.getUserCache().c(); + } - String s = this.propertyManager.getString("level-seed", ""); - String s1 = this.propertyManager.getString("level-type", "DEFAULT"); - String s2 = this.propertyManager.getString("generator-settings", ""); - long k = (new Random()).nextLong(); + if (!NameReferencingFileConverter.a(this.propertyManager)) { + return false; + } else { + this.convertable = new WorldLoaderServer(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor + long j = System.nanoTime(); - if (s.length() > 0) { - try { - long l = Long.parseLong(s); + if (this.U() == null) { + this.setWorld(this.propertyManager.getString("level-name", "world")); + } - if (l != 0L) { - k = l; - } - } catch (NumberFormatException numberformatexception) { - k = s.hashCode(); + String s = this.propertyManager.getString("level-seed", ""); + String s1 = this.propertyManager.getString("level-type", "DEFAULT"); + String s2 = this.propertyManager.getString("generator-settings", ""); + long k = (new Random()).nextLong(); + + if (s.length() > 0) { + try { + long l = Long.parseLong(s); + + if (l != 0L) { + k = l; } + } catch (NumberFormatException numberformatexception) { + k = s.hashCode(); } - - WorldType worldtype = WorldType.getType(s1); - - if (worldtype == null) { - worldtype = WorldType.NORMAL; - } - - this.aB(); - this.getEnableCommandBlock(); - this.p(); - this.getSnooperEnabled(); - this.aK(); - this.c(this.propertyManager.getInt("max-build-height", 256)); - this.c((this.getMaxBuildHeight() + 8) / 16 * 16); - this.c(MathHelper.clamp(this.getMaxBuildHeight(), 64, 256)); - this.propertyManager.setProperty("max-build-height", this.getMaxBuildHeight()); - DedicatedServer.LOGGER.info("Preparing level \"" + this.U() + "\""); - this.a(this.U(), this.U(), k, worldtype, s2); - long i1 = System.nanoTime() - j; - String s3 = String.format("%.3fs", new Object[] {(double) i1 / 1.0E9D}); - - DedicatedServer.LOGGER.info("Done (" + s3 + ")! For help, type \"help\" or \"?\""); - if (this.propertyManager.getBoolean("enable-query", false)) { - DedicatedServer.LOGGER.info("Starting GS4 status listener"); - this.m = new RemoteStatusListener(this); - this.m.a(); - } - - if (this.propertyManager.getBoolean("enable-rcon", false)) { - DedicatedServer.LOGGER.info("Starting remote control listener"); - this.n = new RemoteControlListener(this); - this.n.a(); - this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit - } - - // CraftBukkit start - if (this.server.getBukkitSpawnRadius() > -1) { - DedicatedServer.LOGGER.info("'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you."); - this.propertyManager.properties.remove("spawn-protection"); - this.propertyManager.getInt("spawn-protection", this.server.getBukkitSpawnRadius()); - this.server.removeBukkitSpawnRadius(); - this.propertyManager.savePropertiesFile(); - } - // CraftBukkit end - - if (org.spigotmc.SpigotConfig.lateBind) { - try { - this.aq().a(inetaddress, this.R()); - } catch (IOException ioexception) { - DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!"); - DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()}); - DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?"); - return false; } + + WorldType worldtype = WorldType.getType(s1); + + if (worldtype == null) { + worldtype = WorldType.NORMAL; + } + + this.aB(); + this.getEnableCommandBlock(); + this.p(); + this.getSnooperEnabled(); + this.aK(); + this.c(this.propertyManager.getInt("max-build-height", 256)); + this.c((this.getMaxBuildHeight() + 8) / 16 * 16); + this.c(MathHelper.clamp(this.getMaxBuildHeight(), 64, 256)); + this.propertyManager.setProperty("max-build-height", this.getMaxBuildHeight()); + DedicatedServer.LOGGER.info("Preparing level \"" + this.U() + "\""); + this.a(this.U(), this.U(), k, worldtype, s2); + long i1 = System.nanoTime() - j; + String s3 = String.format("%.3fs", new Object[] {(double) i1 / 1.0E9D}); + + DedicatedServer.LOGGER.info("Done (" + s3 + ")! For help, type \"help\" or \"?\""); + if (this.propertyManager.getBoolean("enable-query", false)) { + DedicatedServer.LOGGER.info("Starting GS4 status listener"); + this.m = new RemoteStatusListener(this); + this.m.a(); + } + + if (this.propertyManager.getBoolean("enable-rcon", false)) { + DedicatedServer.LOGGER.info("Starting remote control listener"); + this.n = new RemoteControlListener(this); + this.n.a(); + this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit + } + + // CraftBukkit start + if (this.server.getBukkitSpawnRadius() > -1) { + DedicatedServer.LOGGER.info("'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you."); + this.propertyManager.properties.remove("spawn-protection"); + this.propertyManager.getInt("spawn-protection", this.server.getBukkitSpawnRadius()); + this.server.removeBukkitSpawnRadius(); + this.propertyManager.savePropertiesFile(); + } + // CraftBukkit end + + if (org.spigotmc.SpigotConfig.lateBind) { + try { + this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support + } catch (IOException ioexception) { + DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!"); + DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()}); + DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?"); + return false; + } + } + + if (false && this.aS() > 0L) { // Spigot - disable + Thread thread1 = new Thread(new ThreadWatchdog(this)); + + thread1.setName("Server Watchdog"); + thread1.setDaemon(true); + thread1.start(); + } + + return true; } - if (false && this.aS() > 0L) { // Spigot - disable - Thread thread1 = new Thread(new ThreadWatchdog(this)); - - thread1.setName("Server Watchdog"); - thread1.setDaemon(true); - thread1.start(); - } - - return true; - } - } } // CraftBukkit start diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java new file mode 100644 index 0000000..15eeb6d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java @@ -0,0 +1,91 @@ +package net.minecraft.server; + +public class DemoPlayerInteractManager extends PlayerInteractManager { + + private boolean c; + private boolean d; + private int e; + private int f; + + public DemoPlayerInteractManager(World world) { + super(world); + } + + public void a() { + super.a(); + ++this.f; + long i = this.world.getTime(); + long j = i / 24000L + 1L; + + if (!this.c && this.f > 20) { + this.c = true; + this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 0.0F)); + } + + this.d = i > 120500L; + if (this.d) { + ++this.e; + } + + if (i % 24000L == 500L) { + if (j <= 6L) { + this.player.sendMessage(new ChatMessage("demo.day." + j, new Object[0])); + } + } else if (j == 1L) { + if (i == 100L) { + this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 101.0F)); + } else if (i == 175L) { + this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 102.0F)); + } else if (i == 250L) { + this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 103.0F)); + } + } else if (j == 5L && i % 24000L == 22000L) { + this.player.sendMessage(new ChatMessage("demo.day.warning", new Object[0])); + } + + } + + private void f() { + if (this.e > 100) { + this.player.sendMessage(new ChatMessage("demo.reminder", new Object[0])); + this.e = 0; + } + + } + + public void a(BlockPosition blockposition, EnumDirection enumdirection) { + if (this.d) { + this.f(); + } else { + super.a(blockposition, enumdirection); + } + } + + public void a(BlockPosition blockposition) { + if (!this.d) { + super.a(blockposition); + } + } + + public boolean breakBlock(BlockPosition blockposition) { + return this.d ? false : super.breakBlock(blockposition); + } + + public boolean useItem(EntityHuman entityhuman, World world, ItemStack itemstack) { + if (this.d) { + this.f(); + return false; + } else { + return super.useItem(entityhuman, world, itemstack); + } + } + + public boolean interact(EntityHuman entityhuman, World world, ItemStack itemstack, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (this.d) { + this.f(); + return false; + } else { + return super.interact(entityhuman, world, itemstack, blockposition, enumdirection, f, f1, f2); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java new file mode 100644 index 0000000..de19f10 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class DemoWorldServer extends WorldServer { + + private static final long I = (long) "North Carolina".hashCode(); + public static final WorldSettings a = (new WorldSettings(DemoWorldServer.I, WorldSettings.EnumGamemode.SURVIVAL, true, false, WorldType.NORMAL)).a(); + + public DemoWorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, WorldData worlddata, int i, MethodProfiler methodprofiler, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) { + super(minecraftserver, idatamanager, worlddata, i, methodprofiler, env, gen); + this.worldData.a(DemoWorldServer.a); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java b/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java new file mode 100644 index 0000000..a8fe1bd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java @@ -0,0 +1,38 @@ +package net.minecraft.server; + +public class DifficultyDamageScaler { + + private final EnumDifficulty a; + private final float b; + + public DifficultyDamageScaler(EnumDifficulty enumdifficulty, long i, long j, float f) { + this.a = enumdifficulty; + this.b = this.a(enumdifficulty, i, j, f); + } + + public float c() { + return this.b < 2.0F ? 0.0F : (this.b > 4.0F ? 1.0F : (this.b - 2.0F) / 2.0F); + } + + private float a(EnumDifficulty enumdifficulty, long i, long j, float f) { + if (enumdifficulty == EnumDifficulty.PEACEFUL) { + return 0.0F; + } else { + boolean flag = enumdifficulty == EnumDifficulty.HARD; + float f1 = 0.75F; + float f2 = MathHelper.a(((float) i + -72000.0F) / 1440000.0F, 0.0F, 1.0F) * 0.25F; + + f1 += f2; + float f3 = 0.0F; + + f3 += MathHelper.a((float) j / 3600000.0F, 0.0F, 1.0F) * (flag ? 1.0F : 0.75F); + f3 += MathHelper.a(f * 0.25F, 0.0F, f2); + if (enumdifficulty == EnumDifficulty.EASY) { + f3 *= 0.5F; + } + + f1 += f3; + return (float) enumdifficulty.a() * f1; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EULA.java b/eSpigot-Server/src/main/java/net/minecraft/server/EULA.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EULA.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EULA.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java b/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java new file mode 100644 index 0000000..8bd79af --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java @@ -0,0 +1,90 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.List; +import java.util.Random; + +public class EmptyChunk extends Chunk { + + public EmptyChunk(World world, int i, int j) { + super(world, i, j); + } + + public boolean a(int i, int j) { + return i == this.locX && j == this.locZ; + } + + public int b(int i, int j) { + return 0; + } + + public void initLighting() {} + + public Block getType(BlockPosition blockposition) { + return Blocks.AIR; + } + + public int b(BlockPosition blockposition) { + return 255; + } + + public int c(BlockPosition blockposition) { + return 0; + } + + public int getBrightness(EnumSkyBlock enumskyblock, BlockPosition blockposition) { + return enumskyblock.c; + } + + public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {} + + public int a(BlockPosition blockposition, int i) { + return 0; + } + + public void a(Entity entity) {} + + public void b(Entity entity) {} + + public void a(Entity entity, int i) {} + + public boolean d(BlockPosition blockposition) { + return false; + } + + public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) { + return null; + } + + public void a(TileEntity tileentity) {} + + public void a(BlockPosition blockposition, TileEntity tileentity) {} + + public void e(BlockPosition blockposition) {} + + public void addEntities() {} + + public void removeEntities() {} + + public void e() {} + + public void a(Entity entity, AxisAlignedBB axisalignedbb, List list, Predicate predicate) {} + + public void a(Class oclass, AxisAlignedBB axisalignedbb, List list, Predicate predicate) {} + + public boolean a(boolean flag) { + return false; + } + + public Random a(long i) { + return new Random(this.getWorld().getSeed() + (long) (this.locX * this.locX * 4987142) + (long) (this.locX * 5947611) + (long) (this.locZ * this.locZ) * 4392871L + (long) (this.locZ * 389711) ^ i); + } + + public boolean isEmpty() { + return true; + } + + public boolean c(int i, int j) { + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java b/eSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java new file mode 100644 index 0000000..4750b4b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentArrowDamage extends Enchantment { + + public EnchantmentArrowDamage(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.BOW); + this.c("arrowDamage"); + } + + public int a(int i) { + return 1 + (i - 1) * 10; + } + + public int b(int i) { + return this.a(i) + 15; + } + + public int getMaxLevel() { + return 5; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java new file mode 100644 index 0000000..e9d3489 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentArrowKnockback extends Enchantment { + + public EnchantmentArrowKnockback(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.BOW); + this.c("arrowKnockback"); + } + + public int a(int i) { + return 12 + (i - 1) * 20; + } + + public int b(int i) { + return this.a(i) + 25; + } + + public int getMaxLevel() { + return 2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java new file mode 100644 index 0000000..c6e83cb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentDepthStrider extends Enchantment { + + public EnchantmentDepthStrider(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_FEET); + this.c("waterWalker"); + } + + public int a(int i) { + return i * 10; + } + + public int b(int i) { + return this.a(i) + 15; + } + + public int getMaxLevel() { + return 3; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java new file mode 100644 index 0000000..bd0050c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +public class EnchantmentDigging extends Enchantment { + + protected EnchantmentDigging(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.DIGGER); + this.c("digging"); + } + + public int a(int i) { + return 1 + 10 * (i - 1); + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 5; + } + + public boolean canEnchant(ItemStack itemstack) { + return itemstack.getItem() == Items.SHEARS ? true : super.canEnchant(itemstack); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java new file mode 100644 index 0000000..fe494bb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java @@ -0,0 +1,31 @@ +package net.minecraft.server; + +import java.util.Random; + +public class EnchantmentDurability extends Enchantment { + + protected EnchantmentDurability(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.BREAKABLE); + this.c("durability"); + } + + public int a(int i) { + return 5 + (i - 1) * 8; + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 3; + } + + public boolean canEnchant(ItemStack itemstack) { + return itemstack.e() ? true : super.canEnchant(itemstack); + } + + public static boolean a(ItemStack itemstack, int i, Random random) { + return itemstack.getItem() instanceof ItemArmor && random.nextFloat() < 0.6F ? false : random.nextInt(i + 1) > 0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java new file mode 100644 index 0000000..eab6fc3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentFire extends Enchantment { + + protected EnchantmentFire(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.WEAPON); + this.c("fire"); + } + + public int a(int i) { + return 10 + 20 * (i - 1); + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java new file mode 100644 index 0000000..a7dc48e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentFlameArrows extends Enchantment { + + public EnchantmentFlameArrows(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.BOW); + this.c("arrowFire"); + } + + public int a(int i) { + return 20; + } + + public int b(int i) { + return 50; + } + + public int getMaxLevel() { + return 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java new file mode 100644 index 0000000..3f88e47 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentInfiniteArrows extends Enchantment { + + public EnchantmentInfiniteArrows(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.BOW); + this.c("arrowInfinite"); + } + + public int a(int i) { + return 20; + } + + public int b(int i) { + return 50; + } + + public int getMaxLevel() { + return 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java new file mode 100644 index 0000000..c9aeb12 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentKnockback extends Enchantment { + + protected EnchantmentKnockback(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.WEAPON); + this.c("knockback"); + } + + public int a(int i) { + return 5 + 20 * (i - 1); + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java new file mode 100644 index 0000000..cd86a9f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +public class EnchantmentLootBonus extends Enchantment { + + protected EnchantmentLootBonus(int i, MinecraftKey minecraftkey, int j, EnchantmentSlotType enchantmentslottype) { + super(i, minecraftkey, j, enchantmentslottype); + if (enchantmentslottype == EnchantmentSlotType.DIGGER) { + this.c("lootBonusDigger"); + } else if (enchantmentslottype == EnchantmentSlotType.FISHING_ROD) { + this.c("lootBonusFishing"); + } else { + this.c("lootBonus"); + } + + } + + public int a(int i) { + return 15 + (i - 1) * 9; + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 3; + } + + public boolean a(Enchantment enchantment) { + return super.a(enchantment) && enchantment.id != EnchantmentLootBonus.SILK_TOUCH.id; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java new file mode 100644 index 0000000..0945deb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentLure extends Enchantment { + + protected EnchantmentLure(int i, MinecraftKey minecraftkey, int j, EnchantmentSlotType enchantmentslottype) { + super(i, minecraftkey, j, enchantmentslottype); + this.c("fishingSpeed"); + } + + public int a(int i) { + return 15 + (i - 1) * 9; + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 3; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java new file mode 100644 index 0000000..b539085 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentOxygen extends Enchantment { + + public EnchantmentOxygen(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_HEAD); + this.c("oxygen"); + } + + public int a(int i) { + return 10 * i; + } + + public int b(int i) { + return this.a(i) + 30; + } + + public int getMaxLevel() { + return 3; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java new file mode 100644 index 0000000..4dd4f1f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public class EnchantmentProtection extends Enchantment { + + private static final String[] E = new String[] { "all", "fire", "fall", "explosion", "projectile"}; + private static final int[] F = new int[] { 1, 10, 5, 5, 3}; + private static final int[] G = new int[] { 11, 8, 6, 8, 6}; + private static final int[] H = new int[] { 20, 12, 10, 12, 15}; + public final int a; + + public EnchantmentProtection(int i, MinecraftKey minecraftkey, int j, int k) { + super(i, minecraftkey, j, EnchantmentSlotType.ARMOR); + this.a = k; + if (k == 2) { + this.slot = EnchantmentSlotType.ARMOR_FEET; + } + + } + + public int a(int i) { + return EnchantmentProtection.F[this.a] + (i - 1) * EnchantmentProtection.G[this.a]; + } + + public int b(int i) { + return this.a(i) + EnchantmentProtection.H[this.a]; + } + + public int getMaxLevel() { + return 4; + } + + public int a(int i, DamageSource damagesource) { + if (damagesource.ignoresInvulnerability()) { + return 0; + } else { + float f = (float) (6 + i * i) / 3.0F; + + return this.a == 0 ? MathHelper.d(f * 0.75F) : (this.a == 1 && damagesource.o() ? MathHelper.d(f * 1.25F) : (this.a == 2 && damagesource == DamageSource.FALL ? MathHelper.d(f * 2.5F) : (this.a == 3 && damagesource.isExplosion() ? MathHelper.d(f * 1.5F) : (this.a == 4 && damagesource.a() ? MathHelper.d(f * 1.5F) : 0)))); + } + } + + public String a() { + return "enchantment.protect." + EnchantmentProtection.E[this.a]; + } + + public boolean a(Enchantment enchantment) { + if (enchantment instanceof EnchantmentProtection) { + EnchantmentProtection enchantmentprotection = (EnchantmentProtection) enchantment; + + return enchantmentprotection.a == this.a ? false : this.a == 2 || enchantmentprotection.a == 2; + } else { + return super.a(enchantment); + } + } + + public static int a(Entity entity, int i) { + int j = EnchantmentManager.a(Enchantment.PROTECTION_FIRE.id, entity.getEquipment()); + + if (j > 0) { + i -= MathHelper.d((float) i * (float) j * 0.15F); + } + + return i; + } + + public static double a(Entity entity, double d0) { + int i = EnchantmentManager.a(Enchantment.PROTECTION_EXPLOSIONS.id, entity.getEquipment()); + + if (i > 0) { + d0 -= (double) MathHelper.floor(d0 * (double) ((float) i * 0.15F)); + } + + return d0; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java new file mode 100644 index 0000000..cda4a45 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +public class EnchantmentSilkTouch extends Enchantment { + + protected EnchantmentSilkTouch(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.DIGGER); + this.c("untouching"); + } + + public int a(int i) { + return 15; + } + + public int b(int i) { + return super.a(i) + 50; + } + + public int getMaxLevel() { + return 1; + } + + public boolean a(Enchantment enchantment) { + return super.a(enchantment) && enchantment.id != EnchantmentSilkTouch.LOOT_BONUS_BLOCKS.id; + } + + public boolean canEnchant(ItemStack itemstack) { + return itemstack.getItem() == Items.SHEARS ? true : super.canEnchant(itemstack); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java new file mode 100644 index 0000000..d552656 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public enum EnchantmentSlotType { + + ALL, ARMOR, ARMOR_FEET, ARMOR_LEGS, ARMOR_TORSO, ARMOR_HEAD, WEAPON, DIGGER, FISHING_ROD, BREAKABLE, BOW; + + private EnchantmentSlotType() {} + + public boolean canEnchant(Item item) { + if (this == EnchantmentSlotType.ALL) { + return true; + } else if (this == EnchantmentSlotType.BREAKABLE && item.usesDurability()) { + return true; + } else if (item instanceof ItemArmor) { + if (this == EnchantmentSlotType.ARMOR) { + return true; + } else { + ItemArmor itemarmor = (ItemArmor) item; + + return itemarmor.b == 0 ? this == EnchantmentSlotType.ARMOR_HEAD : (itemarmor.b == 2 ? this == EnchantmentSlotType.ARMOR_LEGS : (itemarmor.b == 1 ? this == EnchantmentSlotType.ARMOR_TORSO : (itemarmor.b == 3 ? this == EnchantmentSlotType.ARMOR_FEET : false))); + } + } else { + return item instanceof ItemSword ? this == EnchantmentSlotType.WEAPON : (item instanceof ItemTool ? this == EnchantmentSlotType.DIGGER : (item instanceof ItemBow ? this == EnchantmentSlotType.BOW : (item instanceof ItemFishingRod ? this == EnchantmentSlotType.FISHING_ROD : false))); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java new file mode 100644 index 0000000..be8162d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class EnchantmentWaterWorker extends Enchantment { + + public EnchantmentWaterWorker(int i, MinecraftKey minecraftkey, int j) { + super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_HEAD); + this.c("waterWorker"); + } + + public int a(int i) { + return 1; + } + + public int b(int i) { + return this.a(i) + 40; + } + + public int getMaxLevel() { + return 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java new file mode 100644 index 0000000..8545190 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +public class EnchantmentWeaponDamage extends Enchantment { + + private static final String[] E = new String[] { "all", "undead", "arthropods"}; + private static final int[] F = new int[] { 1, 5, 5}; + private static final int[] G = new int[] { 11, 8, 8}; + private static final int[] H = new int[] { 20, 20, 20}; + public final int a; + + public EnchantmentWeaponDamage(int i, MinecraftKey minecraftkey, int j, int k) { + super(i, minecraftkey, j, EnchantmentSlotType.WEAPON); + this.a = k; + } + + public int a(int i) { + return EnchantmentWeaponDamage.F[this.a] + (i - 1) * EnchantmentWeaponDamage.G[this.a]; + } + + public int b(int i) { + return this.a(i) + EnchantmentWeaponDamage.H[this.a]; + } + + public int getMaxLevel() { + return 5; + } + + public float a(int i, EnumMonsterType enummonstertype) { + return this.a == 0 ? (float) i * 1.25F : (this.a == 1 && enummonstertype == EnumMonsterType.UNDEAD ? (float) i * 2.5F : (this.a == 2 && enummonstertype == EnumMonsterType.ARTHROPOD ? (float) i * 2.5F : 0.0F)); + } + + public String a() { + return "enchantment.damage." + EnchantmentWeaponDamage.E[this.a]; + } + + public boolean a(Enchantment enchantment) { + return !(enchantment instanceof EnchantmentWeaponDamage); + } + + public boolean canEnchant(ItemStack itemstack) { + return itemstack.getItem() instanceof ItemAxe ? true : super.canEnchant(itemstack); + } + + public void a(EntityLiving entityliving, Entity entity, int i) { + if (entity instanceof EntityLiving) { + EntityLiving entityliving1 = (EntityLiving) entity; + + if (this.a == 2 && entityliving1.getMonsterType() == EnumMonsterType.ARTHROPOD) { + int j = 20 + entityliving.bc().nextInt(10 * i); + + entityliving1.addEffect(new MobEffect(MobEffectList.SLOWER_MOVEMENT.id, j, 3)); + } + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Entity.java b/eSpigot-Server/src/main/java/net/minecraft/server/Entity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Entity.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Entity.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java new file mode 100644 index 0000000..10fd66a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +public class EntityAIBodyControl { + + private EntityLiving a; + private int b; + private float c; + + public EntityAIBodyControl(EntityLiving entityliving) { + this.a = entityliving; + } + + public void a() { + double d0 = this.a.locX - this.a.lastX; + double d1 = this.a.locZ - this.a.lastZ; + + if (d0 * d0 + d1 * d1 > 2.500000277905201E-7D) { + this.a.aI = this.a.yaw; + this.a.aK = this.a(this.a.aI, this.a.aK, 75.0F); + this.c = this.a.aK; + this.b = 0; + } else { + float f = 75.0F; + + if (Math.abs(this.a.aK - this.c) > 15.0F) { + this.b = 0; + this.c = this.a.aK; + } else { + ++this.b; + boolean flag = true; + + if (this.b > 10) { + f = Math.max(1.0F - (float) (this.b - 10) / 10.0F, 0.0F) * 75.0F; + } + } + + this.a.aI = this.a(this.a.aK, this.a.aI, f); + } + } + + private float a(float f, float f1, float f2) { + float f3 = MathHelper.g(f - f1); + + if (f3 < -f2) { + f3 = -f2; + } + + if (f3 >= f2) { + f3 = f2; + } + + return f - f3; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java new file mode 100644 index 0000000..df1e00d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public abstract class EntityAmbient extends EntityInsentient implements IAnimal { + + public EntityAmbient(World world) { + super(world); + } + + public boolean cb() { + return false; + } + + protected boolean a(EntityHuman entityhuman) { + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java new file mode 100644 index 0000000..5241620 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java @@ -0,0 +1,186 @@ +package net.minecraft.server; + +import java.util.Calendar; + +public class EntityBat extends EntityAmbient { + + private BlockPosition a; + + public EntityBat(World world) { + super(world); + this.setSize(0.5F, 0.9F); + this.setAsleep(true); + } + + protected void h() { + super.h(); + this.datawatcher.a(16, new Byte((byte) 0)); + } + + protected float bB() { + return 0.1F; + } + + protected float bC() { + return super.bC() * 0.95F; + } + + protected String z() { + return this.isAsleep() && this.random.nextInt(4) != 0 ? null : "mob.bat.idle"; + } + + protected String bo() { + return "mob.bat.hurt"; + } + + protected String bp() { + return "mob.bat.death"; + } + + public boolean ae() { + return false; + } + + protected void s(Entity entity) {} + + protected void bL() {} + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(6.0D); + } + + public boolean isAsleep() { + return (this.datawatcher.getByte(16) & 1) != 0; + } + + public void setAsleep(boolean flag) { + byte b0 = this.datawatcher.getByte(16); + + if (flag) { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 1))); + } else { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -2))); + } + + } + + public void t_() { + super.t_(); + if (this.isAsleep()) { + this.motX = this.motY = this.motZ = 0.0D; + this.locY = (double) MathHelper.floor(this.locY) + 1.0D - (double) this.length; + } else { + this.motY *= 0.6000000238418579D; + } + + } + + protected void E() { + super.E(); + BlockPosition blockposition = new BlockPosition(this); + BlockPosition blockposition1 = blockposition.up(); + + if (this.isAsleep()) { + if (!this.world.getType(blockposition1).getBlock().isOccluding()) { + this.setAsleep(false); + this.world.a((EntityHuman) null, 1015, blockposition, 0); + } else { + if (this.random.nextInt(200) == 0) { + this.aK = (float) this.random.nextInt(360); + } + + if (this.world.findNearbyPlayer(this, 4.0D) != null) { + this.setAsleep(false); + this.world.a((EntityHuman) null, 1015, blockposition, 0); + } + } + } else { + if (this.a != null && (!this.world.isEmpty(this.a) || this.a.getY() < 1)) { + this.a = null; + } + + if (this.a == null || this.random.nextInt(30) == 0 || this.a.c((double) ((int) this.locX), (double) ((int) this.locY), (double) ((int) this.locZ)) < 4.0D) { + this.a = new BlockPosition((int) this.locX + this.random.nextInt(7) - this.random.nextInt(7), (int) this.locY + this.random.nextInt(6) - 2, (int) this.locZ + this.random.nextInt(7) - this.random.nextInt(7)); + } + + double d0 = (double) this.a.getX() + 0.5D - this.locX; + double d1 = (double) this.a.getY() + 0.1D - this.locY; + double d2 = (double) this.a.getZ() + 0.5D - this.locZ; + + this.motX += (Math.signum(d0) * 0.5D - this.motX) * 0.10000000149011612D; + this.motY += (Math.signum(d1) * 0.699999988079071D - this.motY) * 0.10000000149011612D; + this.motZ += (Math.signum(d2) * 0.5D - this.motZ) * 0.10000000149011612D; + float f = (float) (MathHelper.b(this.motZ, this.motX) * 180.0D / 3.1415927410125732D) - 90.0F; + float f1 = MathHelper.g(f - this.yaw); + + this.ba = 0.5F; + this.yaw += f1; + if (this.random.nextInt(100) == 0 && this.world.getType(blockposition1).getBlock().isOccluding()) { + this.setAsleep(true); + } + } + + } + + protected boolean s_() { + return false; + } + + public void e(float f, float f1) {} + + protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {} + + public boolean aI() { + return true; + } + + public boolean damageEntity(DamageSource damagesource, float f) { + if (this.isInvulnerable(damagesource)) { + return false; + } else { + if (!this.world.isClientSide && this.isAsleep()) { + this.setAsleep(false); + } + + return super.damageEntity(damagesource, f); + } + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.datawatcher.watch(16, Byte.valueOf(nbttagcompound.getByte("BatFlags"))); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setByte("BatFlags", this.datawatcher.getByte(16)); + } + + public boolean bR() { + BlockPosition blockposition = new BlockPosition(this.locX, this.getBoundingBox().b, this.locZ); + + if (blockposition.getY() >= this.world.F()) { + return false; + } else { + int i = this.world.getLightLevel(blockposition); + byte b0 = 4; + + if (this.a(this.world.Y())) { + b0 = 7; + } else if (this.random.nextBoolean()) { + return false; + } + + return i > this.random.nextInt(b0) ? false : super.bR(); + } + } + + private boolean a(Calendar calendar) { + return calendar.get(2) + 1 == 10 && calendar.get(5) >= 20 || calendar.get(2) + 1 == 11 && calendar.get(5) <= 3; + } + + public float getHeadHeight() { + return this.length / 2.0F; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java new file mode 100644 index 0000000..c6b7113 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java @@ -0,0 +1,207 @@ +package net.minecraft.server; + +public class EntityBlaze extends EntityMonster { + + private float a = 0.5F; + private int b; + + public EntityBlaze(World world) { + super(world); + this.fireProof = true; + this.b_ = 10; + this.goalSelector.a(4, new EntityBlaze.PathfinderGoalBlazeFireball(this)); + this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D)); + this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0])); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true)); + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(6.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.23000000417232513D); + this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(48.0D); + } + + protected void h() { + super.h(); + this.datawatcher.a(16, new Byte((byte) 0)); + } + + protected String z() { + return "mob.blaze.breathe"; + } + + protected String bo() { + return "mob.blaze.hit"; + } + + protected String bp() { + return "mob.blaze.death"; + } + + public float c(float f) { + return 1.0F; + } + + public void m() { + if (!this.onGround && this.motY < 0.0D) { + this.motY *= 0.6D; + } + + if (this.world.isClientSide) { + if (this.random.nextInt(24) == 0 && !this.R()) { + this.world.a(this.locX + 0.5D, this.locY + 0.5D, this.locZ + 0.5D, "fire.fire", 1.0F + this.random.nextFloat(), this.random.nextFloat() * 0.7F + 0.3F, false); + } + + for (int i = 0; i < 2; ++i) { + this.world.addParticle(EnumParticle.SMOKE_LARGE, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, 0.0D, 0.0D, 0.0D, new int[0]); + } + } + + super.m(); + } + + protected void E() { + if (this.U()) { + this.damageEntity(DamageSource.DROWN, 1.0F); + } + + --this.b; + if (this.b <= 0) { + this.b = 100; + this.a = 0.5F + (float) this.random.nextGaussian() * 3.0F; + } + + EntityLiving entityliving = this.getGoalTarget(); + + if (entityliving != null && entityliving.locY + (double) entityliving.getHeadHeight() > this.locY + (double) this.getHeadHeight() + (double) this.a) { + this.motY += (0.30000001192092896D - this.motY) * 0.30000001192092896D; + this.ai = true; + } + + super.E(); + } + + public void e(float f, float f1) {} + + protected Item getLoot() { + return Items.BLAZE_ROD; + } + + public boolean isBurning() { + return this.n(); + } + + protected void dropDeathLoot(boolean flag, int i) { + if (flag) { + int j = this.random.nextInt(2 + i); + + for (int k = 0; k < j; ++k) { + this.a(Items.BLAZE_ROD, 1); + } + } + + } + + public boolean n() { + return (this.datawatcher.getByte(16) & 1) != 0; + } + + public void a(boolean flag) { + byte b0 = this.datawatcher.getByte(16); + + if (flag) { + b0 = (byte) (b0 | 1); + } else { + b0 &= -2; + } + + this.datawatcher.watch(16, Byte.valueOf(b0)); + } + + protected boolean n_() { + return true; + } + + static class PathfinderGoalBlazeFireball extends PathfinderGoal { + + private EntityBlaze a; + private int b; + private int c; + + public PathfinderGoalBlazeFireball(EntityBlaze entityblaze) { + this.a = entityblaze; + this.a(3); + } + + public boolean a() { + EntityLiving entityliving = this.a.getGoalTarget(); + + return entityliving != null && entityliving.isAlive(); + } + + public void c() { + this.b = 0; + } + + public void d() { + this.a.a(false); + } + + public void e() { + --this.c; + EntityLiving entityliving = this.a.getGoalTarget(); + double d0 = this.a.h(entityliving); + + if (d0 < 4.0D) { + if (this.c <= 0) { + this.c = 20; + this.a.r(entityliving); + } + + this.a.getControllerMove().a(entityliving.locX, entityliving.locY, entityliving.locZ, 1.0D); + } else if (d0 < 256.0D) { + double d1 = entityliving.locX - this.a.locX; + double d2 = entityliving.getBoundingBox().b + (double) (entityliving.length / 2.0F) - (this.a.locY + (double) (this.a.length / 2.0F)); + double d3 = entityliving.locZ - this.a.locZ; + + if (this.c <= 0) { + ++this.b; + if (this.b == 1) { + this.c = 60; + this.a.a(true); + } else if (this.b <= 4) { + this.c = 6; + } else { + this.c = 100; + this.b = 0; + this.a.a(false); + } + + if (this.b > 1) { + float f = MathHelper.c(MathHelper.sqrt(d0)) * 0.5F; + + this.a.world.a((EntityHuman) null, 1009, new BlockPosition((int) this.a.locX, (int) this.a.locY, (int) this.a.locZ), 0); + + for (int i = 0; i < 1; ++i) { + EntitySmallFireball entitysmallfireball = new EntitySmallFireball(this.a.world, this.a, d1 + this.a.bc().nextGaussian() * (double) f, d2, d3 + this.a.bc().nextGaussian() * (double) f); + + entitysmallfireball.locY = this.a.locY + (double) (this.a.length / 2.0F) + 0.5D; + this.a.world.addEntity(entitysmallfireball); + } + } + } + + this.a.getControllerLook().a(entityliving, 10.0F, 10.0F); + } else { + this.a.getNavigation().n(); + this.a.getControllerMove().a(entityliving.locX, entityliving.locY, entityliving.locZ, 1.0D); + } + + super.e(); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java new file mode 100644 index 0000000..f26d52a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public class EntityCaveSpider extends EntitySpider { + + public EntityCaveSpider(World world) { + super(world); + this.setSize(0.7F, 0.5F); + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(12.0D); + } + + public boolean r(Entity entity) { + if (super.r(entity)) { + if (entity instanceof EntityLiving) { + byte b0 = 0; + + if (this.world.getDifficulty() == EnumDifficulty.NORMAL) { + b0 = 7; + } else if (this.world.getDifficulty() == EnumDifficulty.HARD) { + b0 = 15; + } + + if (b0 > 0) { + ((EntityLiving) entity).addEffect(new MobEffect(MobEffectList.POISON.id, b0 * 20, 0)); + } + } + + return true; + } else { + return false; + } + } + + public GroupDataEntity prepare(DifficultyDamageScaler difficultydamagescaler, GroupDataEntity groupdataentity) { + return groupdataentity; + } + + public float getHeadHeight() { + return 0.45F; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java new file mode 100644 index 0000000..8addf6f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +public class EntityComplexPart extends Entity { + + public final IComplex owner; + public final String b; + + public EntityComplexPart(IComplex icomplex, String s, float f, float f1) { + super(icomplex.a()); + this.setSize(f, f1); + this.owner = icomplex; + this.b = s; + } + + protected void h() {} + + protected void a(NBTTagCompound nbttagcompound) {} + + protected void b(NBTTagCompound nbttagcompound) {} + + public boolean ad() { + return true; + } + + public boolean damageEntity(DamageSource damagesource, float f) { + return this.isInvulnerable(damagesource) ? false : this.owner.a(this, damagesource, f); + } + + public boolean k(Entity entity) { + return this == entity || this.owner == entity; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java new file mode 100644 index 0000000..b4b5a3f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +public class EntityDamageSource extends DamageSource { + + protected Entity q; + private boolean r = false; + + public EntityDamageSource(String s, Entity entity) { + super(s); + this.q = entity; + } + + public EntityDamageSource v() { + this.r = true; + return this; + } + + public boolean w() { + return this.r; + } + + public Entity getEntity() { + return this.q; + } + + public IChatBaseComponent getLocalizedDeathMessage(EntityLiving entityliving) { + ItemStack itemstack = this.q instanceof EntityLiving ? ((EntityLiving) this.q).bA() : null; + String s = "death.attack." + this.translationIndex; + String s1 = s + ".item"; + + return itemstack != null && itemstack.hasName() && LocaleI18n.c(s1) ? new ChatMessage(s1, new Object[] { entityliving.getScoreboardDisplayName(), this.q.getScoreboardDisplayName(), itemstack.C()}) : new ChatMessage(s, new Object[] { entityliving.getScoreboardDisplayName(), this.q.getScoreboardDisplayName()}); + } + + public boolean r() { + return this.q != null && this.q instanceof EntityLiving && !(this.q instanceof EntityHuman); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java new file mode 100644 index 0000000..1e4188c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java @@ -0,0 +1,134 @@ +package net.minecraft.server; + +public class EntityEnderSignal extends Entity { + + private double a; + private double b; + private double c; + private int d; + private boolean e; + + public EntityEnderSignal(World world) { + super(world); + this.setSize(0.25F, 0.25F); + } + + protected void h() {} + + public EntityEnderSignal(World world, double d0, double d1, double d2) { + super(world); + this.d = 0; + this.setSize(0.25F, 0.25F); + this.setPosition(d0, d1, d2); + } + + public void a(BlockPosition blockposition) { + double d0 = (double) blockposition.getX(); + int i = blockposition.getY(); + double d1 = (double) blockposition.getZ(); + double d2 = d0 - this.locX; + double d3 = d1 - this.locZ; + float f = MathHelper.sqrt(d2 * d2 + d3 * d3); + + if (f > 12.0F) { + this.a = this.locX + d2 / (double) f * 12.0D; + this.c = this.locZ + d3 / (double) f * 12.0D; + this.b = this.locY + 8.0D; + } else { + this.a = d0; + this.b = (double) i; + this.c = d1; + } + + this.d = 0; + this.e = this.random.nextInt(5) > 0; + } + + public void t_() { + this.P = this.locX; + this.Q = this.locY; + this.R = this.locZ; + super.t_(); + this.locX += this.motX; + this.locY += this.motY; + this.locZ += this.motZ; + float f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ); + + this.yaw = (float) (MathHelper.b(this.motX, this.motZ) * 180.0D / 3.1415927410125732D); + + for (this.pitch = (float) (MathHelper.b(this.motY, (double) f) * 180.0D / 3.1415927410125732D); this.pitch - this.lastPitch < -180.0F; this.lastPitch -= 360.0F) { + ; + } + + while (this.pitch - this.lastPitch >= 180.0F) { + this.lastPitch += 360.0F; + } + + while (this.yaw - this.lastYaw < -180.0F) { + this.lastYaw -= 360.0F; + } + + while (this.yaw - this.lastYaw >= 180.0F) { + this.lastYaw += 360.0F; + } + + this.pitch = this.lastPitch + (this.pitch - this.lastPitch) * 0.2F; + this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F; + if (!this.world.isClientSide) { + double d0 = this.a - this.locX; + double d1 = this.c - this.locZ; + float f1 = (float) Math.sqrt(d0 * d0 + d1 * d1); + float f2 = (float) MathHelper.b(d1, d0); + double d2 = (double) f + (double) (f1 - f) * 0.0025D; + + if (f1 < 1.0F) { + d2 *= 0.8D; + this.motY *= 0.8D; + } + + this.motX = Math.cos((double) f2) * d2; + this.motZ = Math.sin((double) f2) * d2; + if (this.locY < this.b) { + this.motY += (1.0D - this.motY) * 0.014999999664723873D; + } else { + this.motY += (-1.0D - this.motY) * 0.014999999664723873D; + } + } + + float f3 = 0.25F; + + if (this.V()) { + for (int i = 0; i < 4; ++i) { + this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX - this.motX * (double) f3, this.locY - this.motY * (double) f3, this.locZ - this.motZ * (double) f3, this.motX, this.motY, this.motZ, new int[0]); + } + } else { + this.world.addParticle(EnumParticle.PORTAL, this.locX - this.motX * (double) f3 + this.random.nextDouble() * 0.6D - 0.3D, this.locY - this.motY * (double) f3 - 0.5D, this.locZ - this.motZ * (double) f3 + this.random.nextDouble() * 0.6D - 0.3D, this.motX, this.motY, this.motZ, new int[0]); + } + + if (!this.world.isClientSide) { + this.setPosition(this.locX, this.locY, this.locZ); + ++this.d; + if (this.d > 80 && !this.world.isClientSide) { + this.die(); + if (this.e) { + this.world.addEntity(new EntityItem(this.world, this.locX, this.locY, this.locZ, new ItemStack(Items.ENDER_EYE))); + } else { + this.world.triggerEffect(2003, new BlockPosition(this), 0); + } + } + } + + } + + public void b(NBTTagCompound nbttagcompound) {} + + public void a(NBTTagCompound nbttagcompound) {} + + public float c(float f) { + return 1.0F; + } + + public boolean aD() { + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java new file mode 100644 index 0000000..be2bf9c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java @@ -0,0 +1,116 @@ +package net.minecraft.server; + +public class EntityEndermite extends EntityMonster { + + private int a = 0; + private boolean b = false; + + public EntityEndermite(World world) { + super(world); + this.b_ = 3; + this.setSize(0.4F, 0.3F); + this.goalSelector.a(1, new PathfinderGoalFloat(this)); + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, 1.0D, false)); + this.goalSelector.a(3, new PathfinderGoalRandomStroll(this, 1.0D)); + this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0])); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true)); + } + + public float getHeadHeight() { + return 0.1F; + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(8.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.25D); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D); + } + + protected boolean s_() { + return false; + } + + protected String z() { + return "mob.silverfish.say"; + } + + protected String bo() { + return "mob.silverfish.hit"; + } + + protected String bp() { + return "mob.silverfish.kill"; + } + + protected void a(BlockPosition blockposition, Block block) { + this.makeSound("mob.silverfish.step", 0.15F, 1.0F); + } + + protected Item getLoot() { + return null; + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.a = nbttagcompound.getInt("Lifetime"); + this.b = nbttagcompound.getBoolean("PlayerSpawned"); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setInt("Lifetime", this.a); + nbttagcompound.setBoolean("PlayerSpawned", this.b); + } + + public void t_() { + this.aI = this.yaw; + super.t_(); + } + + public boolean n() { + return this.b; + } + + public void a(boolean flag) { + this.b = flag; + } + + public void m() { + super.m(); + if (this.world.isClientSide) { + for (int i = 0; i < 2; ++i) { + this.world.addParticle(EnumParticle.PORTAL, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, (this.random.nextDouble() - 0.5D) * 2.0D, -this.random.nextDouble(), (this.random.nextDouble() - 0.5D) * 2.0D, new int[0]); + } + } else { + if (!this.isPersistent()) { + ++this.a; + } + + if (this.a >= 2400) { + this.die(); + } + } + + } + + protected boolean n_() { + return true; + } + + public boolean bR() { + if (super.bR()) { + EntityHuman entityhuman = this.world.findNearbyPlayer(this, 5.0D); + + return entityhuman == null; + } else { + return false; + } + } + + public EnumMonsterType getMonsterType() { + return EnumMonsterType.ARTHROPOD; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java new file mode 100644 index 0000000..b60d080 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java @@ -0,0 +1,63 @@ +package net.minecraft.server; + +public abstract class EntityFlying extends EntityInsentient { + + public EntityFlying(World world) { + super(world); + } + + public void e(float f, float f1) {} + + protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {} + + public void g(float f, float f1) { + if (this.V()) { + this.a(f, f1, 0.02F); + this.move(this.motX, this.motY, this.motZ); + this.motX *= 0.800000011920929D; + this.motY *= 0.800000011920929D; + this.motZ *= 0.800000011920929D; + } else if (this.ab()) { + this.a(f, f1, 0.02F); + this.move(this.motX, this.motY, this.motZ); + this.motX *= 0.5D; + this.motY *= 0.5D; + this.motZ *= 0.5D; + } else { + float f2 = 0.91F; + + if (this.onGround) { + f2 = this.world.getType(new BlockPosition(MathHelper.floor(this.locX), MathHelper.floor(this.getBoundingBox().b) - 1, MathHelper.floor(this.locZ))).getBlock().frictionFactor * 0.91F; + } + + float f3 = 0.16277136F / (f2 * f2 * f2); + + this.a(f, f1, this.onGround ? 0.1F * f3 : 0.02F); + f2 = 0.91F; + if (this.onGround) { + f2 = this.world.getType(new BlockPosition(MathHelper.floor(this.locX), MathHelper.floor(this.getBoundingBox().b) - 1, MathHelper.floor(this.locZ))).getBlock().frictionFactor * 0.91F; + } + + this.move(this.motX, this.motY, this.motZ); + this.motX *= (double) f2; + this.motY *= (double) f2; + this.motZ *= (double) f2; + } + + this.aA = this.aB; + double d0 = this.locX - this.lastX; + double d1 = this.locZ - this.lastZ; + float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F; + + if (f4 > 1.0F) { + f4 = 1.0F; + } + + this.aB += (f4 - this.aB) * 0.4F; + this.aC += this.aB; + } + + public boolean k_() { + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java new file mode 100644 index 0000000..558b3a6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +public class EntityGiantZombie extends EntityMonster { + + public EntityGiantZombie(World world) { + super(world); + this.setSize(this.width * 6.0F, this.length * 6.0F); + } + + public float getHeadHeight() { + return 10.440001F; + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(100.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D); + } + + public float a(BlockPosition blockposition) { + return this.world.o(blockposition) - 0.5F; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java new file mode 100644 index 0000000..7952295 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public abstract class EntityGolem extends EntityCreature implements IAnimal { + + public EntityGolem(World world) { + super(world); + } + + public void e(float f, float f1) {} + + protected String z() { + return "none"; + } + + protected String bo() { + return "none"; + } + + protected String bp() { + return "none"; + } + + public int w() { + return 120; + } + + protected boolean isTypeNotPersistent() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java new file mode 100644 index 0000000..4dfe5a6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java @@ -0,0 +1,523 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Iterator; +import java.util.List; + +public class EntityGuardian extends EntityMonster { + + private float a; + private float b; + private float c; + private float bm; + private float bn; + private EntityLiving bo; + private int bp; + private boolean bq; + public PathfinderGoalRandomStroll goalRandomStroll; + + public EntityGuardian(World world) { + super(world); + this.b_ = 10; + this.setSize(0.85F, 0.85F); + this.goalSelector.a(4, new EntityGuardian.PathfinderGoalGuardianAttack(this)); + PathfinderGoalMoveTowardsRestriction pathfindergoalmovetowardsrestriction; + + this.goalSelector.a(5, pathfindergoalmovetowardsrestriction = new PathfinderGoalMoveTowardsRestriction(this, 1.0D)); + this.goalSelector.a(7, this.goalRandomStroll = new PathfinderGoalRandomStroll(this, 1.0D, 80)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityGuardian.class, 12.0F, 0.01F)); + this.goalSelector.a(9, new PathfinderGoalRandomLookaround(this)); + this.goalRandomStroll.a(3); + pathfindergoalmovetowardsrestriction.a(3); + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 10, true, false, new EntityGuardian.EntitySelectorGuardianTargetHumanSquid(this))); + this.moveController = new EntityGuardian.ControllerMoveGuardian(this); + this.b = this.a = this.random.nextFloat(); + } + + public void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(6.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D); + this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(16.0D); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(30.0D); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.setElder(nbttagcompound.getBoolean("Elder")); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setBoolean("Elder", this.isElder()); + } + + protected NavigationAbstract b(World world) { + return new NavigationGuardian(this, world); + } + + protected void h() { + super.h(); + this.datawatcher.a(16, Integer.valueOf(0)); + this.datawatcher.a(17, Integer.valueOf(0)); + } + + private boolean a(int i) { + return (this.datawatcher.getInt(16) & i) != 0; + } + + private void a(int i, boolean flag) { + int j = this.datawatcher.getInt(16); + + if (flag) { + this.datawatcher.watch(16, Integer.valueOf(j | i)); + } else { + this.datawatcher.watch(16, Integer.valueOf(j & ~i)); + } + + } + + public boolean n() { + return this.a(2); + } + + private void l(boolean flag) { + this.a(2, flag); + } + + public int cm() { + return this.isElder() ? 60 : 80; + } + + public boolean isElder() { + return this.a(4); + } + + public void setElder(boolean flag) { + this.a(4, flag); + if (flag) { + this.setSize(1.9975F, 1.9975F); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.30000001192092896D); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(8.0D); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(80.0D); + this.bX(); + this.goalRandomStroll.setTimeBetweenMovement(400); + } + + } + + private void b(int i) { + this.datawatcher.watch(17, Integer.valueOf(i)); + } + + public boolean cp() { + return this.datawatcher.getInt(17) != 0; + } + + public EntityLiving cq() { + if (!this.cp()) { + return null; + } else if (this.world.isClientSide) { + if (this.bo != null) { + return this.bo; + } else { + Entity entity = this.world.a(this.datawatcher.getInt(17)); + + if (entity instanceof EntityLiving) { + this.bo = (EntityLiving) entity; + return this.bo; + } else { + return null; + } + } + } else { + return this.getGoalTarget(); + } + } + + public void i(int i) { + super.i(i); + if (i == 16) { + if (this.isElder() && this.width < 1.0F) { + this.setSize(1.9975F, 1.9975F); + } + } else if (i == 17) { + this.bp = 0; + this.bo = null; + } + + } + + public int w() { + return 160; + } + + protected String z() { + return !this.V() ? "mob.guardian.land.idle" : (this.isElder() ? "mob.guardian.elder.idle" : "mob.guardian.idle"); + } + + protected String bo() { + return !this.V() ? "mob.guardian.land.hit" : (this.isElder() ? "mob.guardian.elder.hit" : "mob.guardian.hit"); + } + + protected String bp() { + return !this.V() ? "mob.guardian.land.death" : (this.isElder() ? "mob.guardian.elder.death" : "mob.guardian.death"); + } + + protected boolean s_() { + return false; + } + + public float getHeadHeight() { + return this.length * 0.5F; + } + + public float a(BlockPosition blockposition) { + return this.world.getType(blockposition).getBlock().getMaterial() == Material.WATER ? 10.0F + this.world.o(blockposition) - 0.5F : super.a(blockposition); + } + + public void m() { + if (this.world.isClientSide) { + this.b = this.a; + if (!this.V()) { + this.c = 2.0F; + if (this.motY > 0.0D && this.bq && !this.R()) { + this.world.a(this.locX, this.locY, this.locZ, "mob.guardian.flop", 1.0F, 1.0F, false); + } + + this.bq = this.motY < 0.0D && this.world.d((new BlockPosition(this)).down(), false); + } else if (this.n()) { + if (this.c < 0.5F) { + this.c = 4.0F; + } else { + this.c += (0.5F - this.c) * 0.1F; + } + } else { + this.c += (0.125F - this.c) * 0.2F; + } + + this.a += this.c; + this.bn = this.bm; + if (!this.V()) { + this.bm = this.random.nextFloat(); + } else if (this.n()) { + this.bm += (0.0F - this.bm) * 0.25F; + } else { + this.bm += (1.0F - this.bm) * 0.06F; + } + + if (this.n() && this.V()) { + Vec3D vec3d = this.d(0.0F); + + for (int i = 0; i < 2; ++i) { + this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width - vec3d.a * 1.5D, this.locY + this.random.nextDouble() * (double) this.length - vec3d.b * 1.5D, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width - vec3d.c * 1.5D, 0.0D, 0.0D, 0.0D, new int[0]); + } + } + + if (this.cp()) { + if (this.bp < this.cm()) { + ++this.bp; + } + + EntityLiving entityliving = this.cq(); + + if (entityliving != null) { + this.getControllerLook().a(entityliving, 90.0F, 90.0F); + this.getControllerLook().a(); + double d0 = (double) this.q(0.0F); + double d1 = entityliving.locX - this.locX; + double d2 = entityliving.locY + (double) (entityliving.length * 0.5F) - (this.locY + (double) this.getHeadHeight()); + double d3 = entityliving.locZ - this.locZ; + double d4 = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3); + + d1 /= d4; + d2 /= d4; + d3 /= d4; + double d5 = this.random.nextDouble(); + + while (d5 < d4) { + d5 += 1.8D - d0 + this.random.nextDouble() * (1.7D - d0); + this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + d1 * d5, this.locY + d2 * d5 + (double) this.getHeadHeight(), this.locZ + d3 * d5, 0.0D, 0.0D, 0.0D, new int[0]); + } + } + } + } + + if (this.inWater) { + this.setAirTicks(300); + } else if (this.onGround) { + this.motY += 0.5D; + this.motX += (double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.4F); + this.motZ += (double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.4F); + this.yaw = this.random.nextFloat() * 360.0F; + this.onGround = false; + this.ai = true; + } + + if (this.cp()) { + this.yaw = this.aK; + } + + super.m(); + } + + public float q(float f) { + return ((float) this.bp + f) / (float) this.cm(); + } + + protected void E() { + super.E(); + if (this.isElder()) { + boolean flag = true; + boolean flag1 = true; + boolean flag2 = true; + boolean flag3 = true; + + if ((this.ticksLived + this.getId()) % 1200 == 0) { + MobEffectList mobeffectlist = MobEffectList.SLOWER_DIG; + List list = this.world.b(EntityPlayer.class, new Predicate() { + public boolean a(EntityPlayer entityplayer) { + return EntityGuardian.this.h(entityplayer) < 2500.0D && entityplayer.playerInteractManager.c(); + } + + public boolean apply(Object object) { + return this.a((EntityPlayer) object); + } + }); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + EntityPlayer entityplayer = (EntityPlayer) iterator.next(); + + if (!entityplayer.hasEffect(mobeffectlist) || entityplayer.getEffect(mobeffectlist).getAmplifier() < 2 || entityplayer.getEffect(mobeffectlist).getDuration() < 1200) { + entityplayer.playerConnection.sendPacket(new PacketPlayOutGameStateChange(10, 0.0F)); + entityplayer.addEffect(new MobEffect(mobeffectlist.id, 6000, 2)); + } + } + } + + if (!this.ck()) { + this.a(new BlockPosition(this), 16); + } + } + + } + + protected void dropDeathLoot(boolean flag, int i) { + int j = this.random.nextInt(3) + this.random.nextInt(i + 1); + + if (j > 0) { + this.a(new ItemStack(Items.PRISMARINE_SHARD, j, 0), 1.0F); + } + + if (this.random.nextInt(3 + i) > 1) { + this.a(new ItemStack(Items.FISH, 1, ItemFish.EnumFish.COD.a()), 1.0F); + } else if (this.random.nextInt(3 + i) > 1) { + this.a(new ItemStack(Items.PRISMARINE_CRYSTALS, 1, 0), 1.0F); + } + + if (flag && this.isElder()) { + this.a(new ItemStack(Blocks.SPONGE, 1, 1), 1.0F); + } + + } + + protected void getRareDrop() { + ItemStack itemstack = ((PossibleFishingResult) WeightedRandom.a(this.random, EntityFishingHook.j())).a(this.random); + + this.a(itemstack, 1.0F); + } + + protected boolean n_() { + return true; + } + + public boolean canSpawn() { + return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty(); + } + + public boolean bR() { + return (this.random.nextInt(20) == 0 || !this.world.j(new BlockPosition(this))) && super.bR(); + } + + public boolean damageEntity(DamageSource damagesource, float f) { + if (!this.n() && !damagesource.isMagic() && damagesource.i() instanceof EntityLiving) { + EntityLiving entityliving = (EntityLiving) damagesource.i(); + + if (!damagesource.isExplosion()) { + entityliving.damageEntity(DamageSource.a(this), 2.0F); + entityliving.makeSound("damage.thorns", 0.5F, 1.0F); + } + } + + this.goalRandomStroll.f(); + return super.damageEntity(damagesource, f); + } + + public int bQ() { + return 180; + } + + public void g(float f, float f1) { + if (this.bM()) { + if (this.V()) { + this.a(f, f1, 0.1F); + this.move(this.motX, this.motY, this.motZ); + this.motX *= 0.8999999761581421D; + this.motY *= 0.8999999761581421D; + this.motZ *= 0.8999999761581421D; + if (!this.n() && this.getGoalTarget() == null) { + this.motY -= 0.005D; + } + } else { + super.g(f, f1); + } + } else { + super.g(f, f1); + } + + } + + static class ControllerMoveGuardian extends ControllerMove { + + private EntityGuardian g; + + public ControllerMoveGuardian(EntityGuardian entityguardian) { + super(entityguardian); + this.g = entityguardian; + } + + public void c() { + if (this.f && !this.g.getNavigation().m()) { + double d0 = this.b - this.g.locX; + double d1 = this.c - this.g.locY; + double d2 = this.d - this.g.locZ; + double d3 = d0 * d0 + d1 * d1 + d2 * d2; + + d3 = (double) MathHelper.sqrt(d3); + d1 /= d3; + float f = (float) (MathHelper.b(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F; + + this.g.yaw = this.a(this.g.yaw, f, 30.0F); + this.g.aI = this.g.yaw; + float f1 = (float) (this.e * this.g.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue()); + + this.g.k(this.g.bI() + (f1 - this.g.bI()) * 0.125F); + double d4 = Math.sin((double) (this.g.ticksLived + this.g.getId()) * 0.5D) * 0.05D; + double d5 = Math.cos((double) (this.g.yaw * 3.1415927F / 180.0F)); + double d6 = Math.sin((double) (this.g.yaw * 3.1415927F / 180.0F)); + + this.g.motX += d4 * d5; + this.g.motZ += d4 * d6; + d4 = Math.sin((double) (this.g.ticksLived + this.g.getId()) * 0.75D) * 0.05D; + this.g.motY += d4 * (d6 + d5) * 0.25D; + this.g.motY += (double) this.g.bI() * d1 * 0.1D; + ControllerLook controllerlook = this.g.getControllerLook(); + double d7 = this.g.locX + d0 / d3 * 2.0D; + double d8 = (double) this.g.getHeadHeight() + this.g.locY + d1 / d3 * 1.0D; + double d9 = this.g.locZ + d2 / d3 * 2.0D; + double d10 = controllerlook.e(); + double d11 = controllerlook.f(); + double d12 = controllerlook.g(); + + if (!controllerlook.b()) { + d10 = d7; + d11 = d8; + d12 = d9; + } + + this.g.getControllerLook().a(d10 + (d7 - d10) * 0.125D, d11 + (d8 - d11) * 0.125D, d12 + (d9 - d12) * 0.125D, 10.0F, 40.0F); + this.g.l(true); + } else { + this.g.k(0.0F); + this.g.l(false); + } + } + } + + static class PathfinderGoalGuardianAttack extends PathfinderGoal { + + private EntityGuardian a; + private int b; + + public PathfinderGoalGuardianAttack(EntityGuardian entityguardian) { + this.a = entityguardian; + this.a(3); + } + + public boolean a() { + EntityLiving entityliving = this.a.getGoalTarget(); + + return entityliving != null && entityliving.isAlive(); + } + + public boolean b() { + return super.b() && (this.a.isElder() || this.a.h(this.a.getGoalTarget()) > 9.0D); + } + + public void c() { + this.b = -10; + this.a.getNavigation().n(); + this.a.getControllerLook().a(this.a.getGoalTarget(), 90.0F, 90.0F); + this.a.ai = true; + } + + public void d() { + this.a.b(0); + this.a.setGoalTarget((EntityLiving) null); + this.a.goalRandomStroll.f(); + } + + public void e() { + EntityLiving entityliving = this.a.getGoalTarget(); + + this.a.getNavigation().n(); + this.a.getControllerLook().a(entityliving, 90.0F, 90.0F); + if (!this.a.hasLineOfSight(entityliving)) { + this.a.setGoalTarget((EntityLiving) null); + } else { + ++this.b; + if (this.b == 0) { + this.a.b(this.a.getGoalTarget().getId()); + this.a.world.broadcastEntityEffect(this.a, (byte) 21); + } else if (this.b >= this.a.cm()) { + float f = 1.0F; + + if (this.a.world.getDifficulty() == EnumDifficulty.HARD) { + f += 2.0F; + } + + if (this.a.isElder()) { + f += 2.0F; + } + + entityliving.damageEntity(DamageSource.b(this.a, this.a), f); + entityliving.damageEntity(DamageSource.mobAttack(this.a), (float) this.a.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).getValue()); + this.a.setGoalTarget((EntityLiving) null); + } else if (this.b >= 60 && this.b % 20 == 0) { + ; + } + + super.e(); + } + } + } + + static class EntitySelectorGuardianTargetHumanSquid implements Predicate { + + private EntityGuardian a; + + public EntitySelectorGuardianTargetHumanSquid(EntityGuardian entityguardian) { + this.a = entityguardian; + } + + public boolean a(EntityLiving entityliving) { + return (entityliving instanceof EntityHuman || entityliving instanceof EntitySquid) && entityliving.h(this.a) > 9.0D; + } + + public boolean apply(EntityLiving object) { + return this.a(object); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java new file mode 100644 index 0000000..4647895 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -0,0 +1,99 @@ +package net.minecraft.server; + +public class EntityMagmaCube extends EntitySlime { + + public EntityMagmaCube(World world) { + super(world); + this.fireProof = true; + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.20000000298023224D); + } + + public boolean bR() { + return this.world.getDifficulty() != EnumDifficulty.PEACEFUL; + } + + public boolean canSpawn() { + return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox()); + } + + public int br() { + return this.getSize() * 3; + } + + public float c(float f) { + return 1.0F; + } + + protected EnumParticle n() { + return EnumParticle.FLAME; + } + + protected EntitySlime cf() { + return new EntityMagmaCube(this.world); + } + + protected Item getLoot() { + return Items.MAGMA_CREAM; + } + + protected void dropDeathLoot(boolean flag, int i) { + Item item = this.getLoot(); + + if (item != null && this.getSize() > 1) { + int j = this.random.nextInt(4) - 2; + + if (i > 0) { + j += this.random.nextInt(i + 1); + } + + for (int k = 0; k < j; ++k) { + this.a(item, 1); + } + } + + } + + public boolean isBurning() { + return false; + } + + protected int cg() { + return super.cg() * 4; + } + + protected void ch() { + this.a *= 0.9F; + } + + protected void bF() { + this.motY = (double) (0.42F + (float) this.getSize() * 0.1F); + this.ai = true; + } + + protected void bH() { + this.motY = (double) (0.22F + (float) this.getSize() * 0.05F); + this.ai = true; + } + + public void e(float f, float f1) {} + + protected boolean ci() { + return true; + } + + protected int cj() { + return super.cj() + 2; + } + + protected String ck() { + return this.getSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small"; + } + + protected boolean cl() { + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java new file mode 100644 index 0000000..dcee0df --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public class EntityMinecartChest extends EntityMinecartContainer { + + public EntityMinecartChest(World world) { + super(world); + } + + public EntityMinecartChest(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + } + + public void a(DamageSource damagesource) { + super.a(damagesource); + if (this.world.getGameRules().getBoolean("doEntityDrops")) { + this.a(Item.getItemOf(Blocks.CHEST), 1, 0.0F); + } + + } + + public int getSize() { + return 27; + } + + public EntityMinecartAbstract.EnumMinecartType s() { + return EntityMinecartAbstract.EnumMinecartType.CHEST; + } + + public IBlockData u() { + return Blocks.CHEST.getBlockData().set(BlockChest.FACING, EnumDirection.NORTH); + } + + public int w() { + return 8; + } + + public String getContainerName() { + return "minecraft:chest"; + } + + public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) { + return new ContainerChest(playerinventory, this, entityhuman); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java new file mode 100644 index 0000000..eefbdc6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java @@ -0,0 +1,147 @@ +package net.minecraft.server; + +import java.util.List; + +public class EntityMinecartHopper extends EntityMinecartContainer implements IHopper { + + private boolean a = true; + private int b = -1; + private BlockPosition c; + + public EntityMinecartHopper(World world) { + super(world); + this.c = BlockPosition.ZERO; + } + + public EntityMinecartHopper(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + this.c = BlockPosition.ZERO; + } + + public EntityMinecartAbstract.EnumMinecartType s() { + return EntityMinecartAbstract.EnumMinecartType.HOPPER; + } + + public IBlockData u() { + return Blocks.HOPPER.getBlockData(); + } + + public int w() { + return 1; + } + + public int getSize() { + return 5; + } + + public boolean e(EntityHuman entityhuman) { + if (!this.world.isClientSide) { + entityhuman.openContainer(this); + } + + return true; + } + + public void a(int i, int j, int k, boolean flag) { + boolean flag1 = !flag; + + if (flag1 != this.y()) { + this.i(flag1); + } + + } + + public boolean y() { + return this.a; + } + + public void i(boolean flag) { + this.a = flag; + } + + public World getWorld() { + return this.world; + } + + public double A() { + return this.locX; + } + + public double B() { + return this.locY + 0.5D; + } + + public double C() { + return this.locZ; + } + + public void t_() { + super.t_(); + if (!this.world.isClientSide && this.isAlive() && this.y()) { + BlockPosition blockposition = new BlockPosition(this); + + if (blockposition.equals(this.c)) { + --this.b; + } else { + this.m(0); + } + + if (!this.E()) { + this.m(0); + if (this.D()) { + this.m(4); + this.update(); + } + } + } + + } + + public boolean D() { + if (TileEntityHopper.a((IHopper) this)) { + return true; + } else { + List list = this.world.a(EntityItem.class, this.getBoundingBox().grow(0.25D, 0.0D, 0.25D), IEntitySelector.a); + + if (list.size() > 0) { + TileEntityHopper.a((IInventory) this, (EntityItem) list.get(0)); + } + + return false; + } + } + + public void a(DamageSource damagesource) { + super.a(damagesource); + if (this.world.getGameRules().getBoolean("doEntityDrops")) { + this.a(Item.getItemOf(Blocks.HOPPER), 1, 0.0F); + } + + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setInt("TransferCooldown", this.b); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.b = nbttagcompound.getInt("TransferCooldown"); + } + + public void m(int i) { + this.b = i; + } + + public boolean E() { + return this.b > 0; + } + + public String getContainerName() { + return "minecraft:hopper"; + } + + public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) { + return new ContainerHopper(playerinventory, this, entityhuman); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java new file mode 100644 index 0000000..1a8dc6b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +public class EntityMinecartMobSpawner extends EntityMinecartAbstract { + + private final MobSpawnerAbstract a = new MobSpawnerAbstract() { + public void a(int i) { + EntityMinecartMobSpawner.this.world.broadcastEntityEffect(EntityMinecartMobSpawner.this, (byte) i); + } + + public World a() { + return EntityMinecartMobSpawner.this.world; + } + + public BlockPosition b() { + return new BlockPosition(EntityMinecartMobSpawner.this); + } + }; + + public EntityMinecartMobSpawner(World world) { + super(world); + } + + public EntityMinecartMobSpawner(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + } + + public EntityMinecartAbstract.EnumMinecartType s() { + return EntityMinecartAbstract.EnumMinecartType.SPAWNER; + } + + public IBlockData u() { + return Blocks.MOB_SPAWNER.getBlockData(); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.a.a(nbttagcompound); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a.b(nbttagcompound); + } + + public void t_() { + super.t_(); + this.a.c(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java new file mode 100644 index 0000000..bcd9f62 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java @@ -0,0 +1,46 @@ +package net.minecraft.server; + +public class EntityMinecartRideable extends EntityMinecartAbstract { + + public EntityMinecartRideable(World world) { + super(world); + } + + public EntityMinecartRideable(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + } + + public boolean e(EntityHuman entityhuman) { + if (this.passenger != null && this.passenger instanceof EntityHuman && this.passenger != entityhuman) { + return true; + } else if (this.passenger != null && this.passenger != entityhuman) { + return false; + } else { + if (!this.world.isClientSide) { + entityhuman.mount(this); + } + + return true; + } + } + + public void a(int i, int j, int k, boolean flag) { + if (flag) { + if (this.passenger != null) { + this.passenger.mount((Entity) null); + } + + if (this.getType() == 0) { + this.k(-this.r()); + this.j(10); + this.setDamage(50.0F); + this.ac(); + } + } + + } + + public EntityMinecartAbstract.EnumMinecartType s() { + return EntityMinecartAbstract.EnumMinecartType.RIDEABLE; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java new file mode 100644 index 0000000..98d3217 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java @@ -0,0 +1,136 @@ +package net.minecraft.server; + +public class EntityMinecartTNT extends EntityMinecartAbstract { + + private int a = -1; + + public EntityMinecartTNT(World world) { + super(world); + } + + public EntityMinecartTNT(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + } + + public EntityMinecartAbstract.EnumMinecartType s() { + return EntityMinecartAbstract.EnumMinecartType.TNT; + } + + public IBlockData u() { + return Blocks.TNT.getBlockData(); + } + + public void t_() { + super.t_(); + if (this.a > 0) { + --this.a; + this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]); + } else if (this.a == 0) { + this.b(this.motX * this.motX + this.motZ * this.motZ); + } + + if (this.positionChanged) { + double d0 = this.motX * this.motX + this.motZ * this.motZ; + + if (d0 >= 0.009999999776482582D) { + this.b(d0); + } + } + + } + + public boolean damageEntity(DamageSource damagesource, float f) { + Entity entity = damagesource.i(); + + if (entity instanceof EntityArrow) { + EntityArrow entityarrow = (EntityArrow) entity; + + if (entityarrow.isBurning()) { + this.b(entityarrow.motX * entityarrow.motX + entityarrow.motY * entityarrow.motY + entityarrow.motZ * entityarrow.motZ); + } + } + + return super.damageEntity(damagesource, f); + } + + public void a(DamageSource damagesource) { + super.a(damagesource); + double d0 = this.motX * this.motX + this.motZ * this.motZ; + + if (!damagesource.isExplosion() && this.world.getGameRules().getBoolean("doEntityDrops")) { + this.a(new ItemStack(Blocks.TNT, 1), 0.0F); + } + + if (damagesource.o() || damagesource.isExplosion() || d0 >= 0.009999999776482582D) { + this.b(d0); + } + + } + + protected void b(double d0) { + if (!this.world.isClientSide) { + double d1 = Math.sqrt(d0); + + if (d1 > 5.0D) { + d1 = 5.0D; + } + + this.world.explode(this, this.locX, this.locY, this.locZ, (float) (4.0D + this.random.nextDouble() * 1.5D * d1), true); + this.die(); + } + + } + + public void e(float f, float f1) { + if (f >= 3.0F) { + float f2 = f / 10.0F; + + this.b((double) (f2 * f2)); + } + + super.e(f, f1); + } + + public void a(int i, int j, int k, boolean flag) { + if (flag && this.a < 0) { + this.j(); + } + + } + + public void j() { + this.a = 80; + if (!this.world.isClientSide) { + this.world.broadcastEntityEffect(this, (byte) 10); + if (!this.R()) { + this.world.makeSound(this, "game.tnt.primed", 1.0F, 1.0F); + } + } + + } + + public boolean y() { + return this.a > -1; + } + + public float a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata) { + return this.y() && (BlockMinecartTrackAbstract.d(iblockdata) || BlockMinecartTrackAbstract.e(world, blockposition.up())) ? 0.0F : super.a(explosion, world, blockposition, iblockdata); + } + + public boolean a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata, float f) { + return this.y() && (BlockMinecartTrackAbstract.d(iblockdata) || BlockMinecartTrackAbstract.e(world, blockposition.up())) ? false : super.a(explosion, world, blockposition, iblockdata, f); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + if (nbttagcompound.hasKeyOfType("TNTFuse", 99)) { + this.a = nbttagcompound.getInt("TNTFuse"); + } + + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setInt("TNTFuse", this.a); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java new file mode 100644 index 0000000..c5d6620 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface EntityOwnable { + + String getOwnerUUID(); + + Entity getOwner(); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java new file mode 100644 index 0000000..10f363a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -0,0 +1,206 @@ +package net.minecraft.server; + +import java.util.UUID; + +public class EntityPigZombie extends EntityZombie { + + private static final UUID b = UUID.fromString("49455A49-7EC5-45BA-B886-3B90B23A1718"); + private static final AttributeModifier c = (new AttributeModifier(EntityPigZombie.b, "Attacking speed boost", 0.05D, 0)).a(false); + public int angerLevel; + private int soundDelay; + private UUID hurtBy; + + public EntityPigZombie(World world) { + super(world); + this.fireProof = true; + } + + public void b(EntityLiving entityliving) { + super.b(entityliving); + if (entityliving != null) { + this.hurtBy = entityliving.getUniqueID(); + } + + } + + protected void n() { + this.targetSelector.a(1, new EntityPigZombie.PathfinderGoalAngerOther(this)); + this.targetSelector.a(2, new EntityPigZombie.PathfinderGoalAnger(this)); + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(EntityPigZombie.a).setValue(0.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.23000000417232513D); + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(5.0D); + } + + public void t_() { + super.t_(); + } + + protected void E() { + AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED); + + if (this.cm()) { + if (!this.isBaby() && !attributeinstance.a(EntityPigZombie.c)) { + attributeinstance.b(EntityPigZombie.c); + } + + --this.angerLevel; + } else if (attributeinstance.a(EntityPigZombie.c)) { + attributeinstance.c(EntityPigZombie.c); + } + + if (this.soundDelay > 0 && --this.soundDelay == 0) { + this.makeSound("mob.zombiepig.zpigangry", this.bB() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F); + } + + if (this.angerLevel > 0 && this.hurtBy != null && this.getLastDamager() == null) { + EntityHuman entityhuman = this.world.b(this.hurtBy); + + this.b((EntityLiving) entityhuman); + this.killer = entityhuman; + this.lastDamageByPlayerTime = this.be(); + } + + super.E(); + } + + public boolean bR() { + return this.world.getDifficulty() != EnumDifficulty.PEACEFUL; + } + + public boolean canSpawn() { + return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox()); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setShort("Anger", (short) this.angerLevel); + if (this.hurtBy != null) { + nbttagcompound.setString("HurtBy", this.hurtBy.toString()); + } else { + nbttagcompound.setString("HurtBy", ""); + } + + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.angerLevel = nbttagcompound.getShort("Anger"); + String s = nbttagcompound.getString("HurtBy"); + + if (s.length() > 0) { + this.hurtBy = UUID.fromString(s); + EntityHuman entityhuman = this.world.b(this.hurtBy); + + this.b((EntityLiving) entityhuman); + if (entityhuman != null) { + this.killer = entityhuman; + this.lastDamageByPlayerTime = this.be(); + } + } + + } + + public boolean damageEntity(DamageSource damagesource, float f) { + if (this.isInvulnerable(damagesource)) { + return false; + } else { + Entity entity = damagesource.getEntity(); + + if (entity instanceof EntityHuman) { + this.b(entity); + } + + return super.damageEntity(damagesource, f); + } + } + + private void b(Entity entity) { + this.angerLevel = 400 + this.random.nextInt(400); + this.soundDelay = this.random.nextInt(40); + if (entity instanceof EntityLiving) { + this.b((EntityLiving) entity); + } + + } + + public boolean cm() { + return this.angerLevel > 0; + } + + protected String z() { + return "mob.zombiepig.zpig"; + } + + protected String bo() { + return "mob.zombiepig.zpighurt"; + } + + protected String bp() { + return "mob.zombiepig.zpigdeath"; + } + + protected void dropDeathLoot(boolean flag, int i) { + int j = this.random.nextInt(2 + i); + + int k; + + for (k = 0; k < j; ++k) { + this.a(Items.ROTTEN_FLESH, 1); + } + + j = this.random.nextInt(2 + i); + + for (k = 0; k < j; ++k) { + this.a(Items.GOLD_NUGGET, 1); + } + + } + + public boolean a(EntityHuman entityhuman) { + return false; + } + + protected void getRareDrop() { + this.a(Items.GOLD_INGOT, 1); + } + + protected void a(DifficultyDamageScaler difficultydamagescaler) { + this.setEquipment(0, new ItemStack(Items.GOLDEN_SWORD)); + } + + public GroupDataEntity prepare(DifficultyDamageScaler difficultydamagescaler, GroupDataEntity groupdataentity) { + super.prepare(difficultydamagescaler, groupdataentity); + this.setVillager(false); + return groupdataentity; + } + + static class PathfinderGoalAnger extends PathfinderGoalNearestAttackableTarget { + + public PathfinderGoalAnger(EntityPigZombie entitypigzombie) { + super(entitypigzombie, EntityHuman.class, true); + } + + public boolean a() { + return ((EntityPigZombie) this.e).cm() && super.a(); + } + } + + static class PathfinderGoalAngerOther extends PathfinderGoalHurtByTarget { + + public PathfinderGoalAngerOther(EntityPigZombie entitypigzombie) { + super(entitypigzombie, true, new Class[0]); + } + + protected void a(EntityCreature entitycreature, EntityLiving entityliving) { + super.a(entitycreature, entityliving); + if (entitycreature instanceof EntityPigZombie) { + ((EntityPigZombie) entitycreature).b((Entity) entityliving); + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java similarity index 99% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java index 2f15a6f..01f3ce4 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java @@ -218,7 +218,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { while (!this.removeQueue.isEmpty()) { int i = Math.min(this.removeQueue.size(), Integer.MAX_VALUE); int[] aint = new int[i]; - Iterator iterator = this.removeQueue.iterator(); + //Iterator iterator = this.removeQueue.iterator(); // PandaSpigot int j = 0; // Paper start diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java new file mode 100644 index 0000000..9dbc596 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java @@ -0,0 +1,48 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.HashMap; + +public class EntityPositionTypes { + + private static final HashMap a = Maps.newHashMap(); + + public static EntityInsentient.EnumEntityPositionType a(Class oclass) { + return (EntityInsentient.EnumEntityPositionType) EntityPositionTypes.a.get(oclass); + } + + static { + EntityPositionTypes.a.put(EntityBat.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityChicken.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityCow.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityHorse.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityMushroomCow.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityOcelot.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityPig.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityRabbit.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySheep.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySnowman.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySquid.class, EntityInsentient.EnumEntityPositionType.IN_WATER); + EntityPositionTypes.a.put(EntityIronGolem.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityWolf.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityVillager.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityEnderDragon.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityWither.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityBlaze.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityCaveSpider.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityCreeper.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityEnderman.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityEndermite.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityGhast.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityGiantZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityGuardian.class, EntityInsentient.EnumEntityPositionType.IN_WATER); + EntityPositionTypes.a.put(EntityMagmaCube.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityPigZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySilverfish.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySkeleton.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySlime.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntitySpider.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityWitch.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + EntityPositionTypes.a.put(EntityZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java new file mode 100644 index 0000000..141a1ef --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; + +public class EntitySenses { + + EntityInsentient a; + List b = Lists.newArrayList(); + List c = Lists.newArrayList(); + + public EntitySenses(EntityInsentient entityinsentient) { + this.a = entityinsentient; + } + + public void a() { + this.b.clear(); + this.c.clear(); + } + + public boolean a(Entity entity) { + if (this.b.contains(entity)) { + return true; + } else if (this.c.contains(entity)) { + return false; + } else { + this.a.world.methodProfiler.a("canSee"); + boolean flag = this.a.hasLineOfSight(entity); + + this.a.world.methodProfiler.b(); + if (flag) { + this.b.add(entity); + } else { + this.c.add(entity); + } + + return flag; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java similarity index 91% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java index cd678d9..b56b3d0 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java @@ -4,11 +4,8 @@ import com.google.common.collect.Iterators; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import java.util.AbstractSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; + +import java.util.*; public class EntitySlice extends AbstractSet { @@ -106,7 +103,7 @@ public class EntitySlice extends AbstractSet { List list = EntitySlice.this.b.get(EntitySlice.this.b(oclass)); if (list == null) { - return Iterators.emptyIterator(); + return Collections.emptyIterator(); } else { Iterator iterator = list.iterator(); @@ -116,7 +113,7 @@ public class EntitySlice extends AbstractSet { } public Iterator iterator() { - return this.e.isEmpty() ? Iterators.emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator()); + return this.e.isEmpty() ? Collections.emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator()); } public int size() { diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java new file mode 100644 index 0000000..dade83b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +public class EntitySnowball extends EntityProjectile { + + public EntitySnowball(World world) { + super(world); + } + + public EntitySnowball(World world, EntityLiving entityliving) { + super(world, entityliving); + } + + public EntitySnowball(World world, double d0, double d1, double d2) { + super(world, d0, d1, d2); + } + + protected void a(MovingObjectPosition movingobjectposition) { + if (movingobjectposition.entity != null) { + byte b0 = 0; + + if (movingobjectposition.entity instanceof EntityBlaze) { + b0 = 3; + } + + movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.getShooter()), (float) b0); + } + + for (int i = 0; i < 8; ++i) { + this.world.addParticle(EnumParticle.SNOWBALL, this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]); + } + + if (!this.world.isClientSide) { + this.die(); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java new file mode 100644 index 0000000..1cc087d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java @@ -0,0 +1,167 @@ +package net.minecraft.server; + +import java.util.UUID; + +public abstract class EntityTameableAnimal extends EntityAnimal implements EntityOwnable { + + protected PathfinderGoalSit bm = new PathfinderGoalSit(this); + + public EntityTameableAnimal(World world) { + super(world); + this.cm(); + } + + protected void h() { + super.h(); + this.datawatcher.a(16, Byte.valueOf((byte) 0)); + this.datawatcher.a(17, ""); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + if (this.getOwnerUUID() == null) { + nbttagcompound.setString("OwnerUUID", ""); + } else { + nbttagcompound.setString("OwnerUUID", this.getOwnerUUID()); + } + + nbttagcompound.setBoolean("Sitting", this.isSitting()); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + String s = ""; + + if (nbttagcompound.hasKeyOfType("OwnerUUID", 8)) { + s = nbttagcompound.getString("OwnerUUID"); + } else { + String s1 = nbttagcompound.getString("Owner"); + + s = NameReferencingFileConverter.a(s1); + } + + if (s.length() > 0) { + this.setOwnerUUID(s); + this.setTamed(true); + } + + this.bm.setSitting(nbttagcompound.getBoolean("Sitting")); + this.setSitting(nbttagcompound.getBoolean("Sitting")); + } + + protected void l(boolean flag) { + EnumParticle enumparticle = EnumParticle.HEART; + + if (!flag) { + enumparticle = EnumParticle.SMOKE_NORMAL; + } + + for (int i = 0; i < 7; ++i) { + double d0 = this.random.nextGaussian() * 0.02D; + double d1 = this.random.nextGaussian() * 0.02D; + double d2 = this.random.nextGaussian() * 0.02D; + + this.world.addParticle(enumparticle, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, this.locY + 0.5D + (double) (this.random.nextFloat() * this.length), this.locZ + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, d0, d1, d2, new int[0]); + } + + } + + public boolean isTamed() { + return (this.datawatcher.getByte(16) & 4) != 0; + } + + public void setTamed(boolean flag) { + byte b0 = this.datawatcher.getByte(16); + + if (flag) { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 4))); + } else { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -5))); + } + + this.cm(); + } + + protected void cm() {} + + public boolean isSitting() { + return (this.datawatcher.getByte(16) & 1) != 0; + } + + public void setSitting(boolean flag) { + byte b0 = this.datawatcher.getByte(16); + + if (flag) { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 1))); + } else { + this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -2))); + } + + } + + public String getOwnerUUID() { + return this.datawatcher.getString(17); + } + + public void setOwnerUUID(String s) { + this.datawatcher.watch(17, s); + } + + public EntityLiving getOwner() { + try { + UUID uuid = UUID.fromString(this.getOwnerUUID()); + + return uuid == null ? null : this.world.b(uuid); + } catch (IllegalArgumentException illegalargumentexception) { + return null; + } + } + + public boolean e(EntityLiving entityliving) { + return entityliving == this.getOwner(); + } + + public PathfinderGoalSit getGoalSit() { + return this.bm; + } + + public boolean a(EntityLiving entityliving, EntityLiving entityliving1) { + return true; + } + + public ScoreboardTeamBase getScoreboardTeam() { + if (this.isTamed()) { + EntityLiving entityliving = this.getOwner(); + + if (entityliving != null) { + return entityliving.getScoreboardTeam(); + } + } + + return super.getScoreboardTeam(); + } + + public boolean c(EntityLiving entityliving) { + if (this.isTamed()) { + EntityLiving entityliving1 = this.getOwner(); + + if (entityliving == entityliving1) { + return true; + } + + if (entityliving1 != null) { + return entityliving1.c(entityliving); + } + } + + return super.c(entityliving); + } + + public void die(DamageSource damagesource) { + if (!this.world.isClientSide && this.world.getGameRules().getBoolean("showDeathMessages") && this.hasCustomName() && this.getOwner() instanceof EntityPlayer) { + ((EntityPlayer) this.getOwner()).sendMessage(this.bs().b()); + } + + super.die(damagesource); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java new file mode 100644 index 0000000..064d0b2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java @@ -0,0 +1,244 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class EntityTypes { + + private static final Logger b = LogManager.getLogger(); + private static final Map> c = Maps.newHashMap(); + private static final Map, String> d = Maps.newHashMap(); + private static final Map> e = Maps.newHashMap(); + private static final Map, Integer> f = Maps.newHashMap(); + private static final Map g = Maps.newHashMap(); + public static final Map eggInfo = Maps.newLinkedHashMap(); + + private static void a(Class oclass, String s, int i) { + if (EntityTypes.c.containsKey(s)) { + throw new IllegalArgumentException("ID is already registered: " + s); + } else if (EntityTypes.e.containsKey(Integer.valueOf(i))) { + throw new IllegalArgumentException("ID is already registered: " + i); + } else if (i == 0) { + throw new IllegalArgumentException("Cannot register to reserved id: " + i); + } else if (oclass == null) { + throw new IllegalArgumentException("Cannot register null clazz for id: " + i); + } else { + EntityTypes.c.put(s, oclass); + EntityTypes.d.put(oclass, s); + EntityTypes.e.put(Integer.valueOf(i), oclass); + EntityTypes.f.put(oclass, Integer.valueOf(i)); + EntityTypes.g.put(s, Integer.valueOf(i)); + } + } + + private static void a(Class oclass, String s, int i, int j, int k) { + a(oclass, s, i); + EntityTypes.eggInfo.put(Integer.valueOf(i), new EntityTypes.MonsterEggInfo(i, j, k)); + } + + public static Entity createEntityByName(String s, World world) { + Entity entity = null; + + try { + Class oclass = (Class) EntityTypes.c.get(s); + + if (oclass != null) { + entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world}); + } + } catch (Exception exception) { + exception.printStackTrace(); + } + + return entity; + } + + public static Entity a(NBTTagCompound nbttagcompound, World world) { + Entity entity = null; + + if ("Minecart".equals(nbttagcompound.getString("id"))) { + nbttagcompound.setString("id", EntityMinecartAbstract.EnumMinecartType.a(nbttagcompound.getInt("Type")).b()); + nbttagcompound.remove("Type"); + } + + try { + Class oclass = (Class) EntityTypes.c.get(nbttagcompound.getString("id")); + + if (oclass != null) { + entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world}); + } + } catch (Exception exception) { + exception.printStackTrace(); + } + + if (entity != null) { + entity.f(nbttagcompound); + } else { + EntityTypes.b.warn("Skipping Entity with id " + nbttagcompound.getString("id")); + } + + return entity; + } + + public static Entity a(int i, World world) { + Entity entity = null; + + try { + Class oclass = a(i); + + if (oclass != null) { + entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world}); + } + } catch (Exception exception) { + exception.printStackTrace(); + } + + if (entity == null) { + EntityTypes.b.warn("Skipping Entity with id " + i); + } + + return entity; + } + + public static int a(Entity entity) { + Integer integer = (Integer) EntityTypes.f.get(entity.getClass()); + + return integer == null ? 0 : integer.intValue(); + } + + public static Class a(int i) { + return (Class) EntityTypes.e.get(Integer.valueOf(i)); + } + + public static String b(Entity entity) { + return (String) EntityTypes.d.get(entity.getClass()); + } + + public static String b(int i) { + return (String) EntityTypes.d.get(a(i)); + } + + public static void a() {} + + public static List b() { + Set set = EntityTypes.c.keySet(); + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = set.iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + Class oclass = (Class) EntityTypes.c.get(s); + + if ((oclass.getModifiers() & 1024) != 1024) { + arraylist.add(s); + } + } + + arraylist.add("LightningBolt"); + return arraylist; + } + + public static boolean a(Entity entity, String s) { + String s1 = b(entity); + + if (s1 == null && entity instanceof EntityHuman) { + s1 = "Player"; + } else if (s1 == null && entity instanceof EntityLightning) { + s1 = "LightningBolt"; + } + + return s.equals(s1); + } + + public static boolean b(String s) { + return "Player".equals(s) || b().contains(s); + } + + static { + a(EntityItem.class, "Item", 1); + a(EntityExperienceOrb.class, "XPOrb", 2); + a(EntityEgg.class, "ThrownEgg", 7); + a(EntityLeash.class, "LeashKnot", 8); + a(EntityPainting.class, "Painting", 9); + a(EntityArrow.class, "Arrow", 10); + a(EntitySnowball.class, "Snowball", 11); + a(EntityLargeFireball.class, "Fireball", 12); + a(EntitySmallFireball.class, "SmallFireball", 13); + a(EntityEnderPearl.class, "ThrownEnderpearl", 14); + a(EntityEnderSignal.class, "EyeOfEnderSignal", 15); + a(EntityPotion.class, "ThrownPotion", 16); + a(EntityThrownExpBottle.class, "ThrownExpBottle", 17); + a(EntityItemFrame.class, "ItemFrame", 18); + a(EntityWitherSkull.class, "WitherSkull", 19); + a(EntityTNTPrimed.class, "PrimedTnt", 20); + a(EntityFallingBlock.class, "FallingSand", 21); + a(EntityFireworks.class, "FireworksRocketEntity", 22); + a(EntityArmorStand.class, "ArmorStand", 30); + a(EntityBoat.class, "Boat", 41); + a(EntityMinecartRideable.class, EntityMinecartAbstract.EnumMinecartType.RIDEABLE.b(), 42); + a(EntityMinecartChest.class, EntityMinecartAbstract.EnumMinecartType.CHEST.b(), 43); + a(EntityMinecartFurnace.class, EntityMinecartAbstract.EnumMinecartType.FURNACE.b(), 44); + a(EntityMinecartTNT.class, EntityMinecartAbstract.EnumMinecartType.TNT.b(), 45); + a(EntityMinecartHopper.class, EntityMinecartAbstract.EnumMinecartType.HOPPER.b(), 46); + a(EntityMinecartMobSpawner.class, EntityMinecartAbstract.EnumMinecartType.SPAWNER.b(), 47); + a(EntityMinecartCommandBlock.class, EntityMinecartAbstract.EnumMinecartType.COMMAND_BLOCK.b(), 40); + a(EntityInsentient.class, "Mob", 48); + a(EntityMonster.class, "Monster", 49); + a(EntityCreeper.class, "Creeper", 50, 894731, 0); + a(EntitySkeleton.class, "Skeleton", 51, 12698049, 4802889); + a(EntitySpider.class, "Spider", 52, 3419431, 11013646); + a(EntityGiantZombie.class, "Giant", 53); + a(EntityZombie.class, "Zombie", 54, '\uafaf', 7969893); + a(EntitySlime.class, "Slime", 55, 5349438, 8306542); + a(EntityGhast.class, "Ghast", 56, 16382457, 12369084); + a(EntityPigZombie.class, "PigZombie", 57, 15373203, 5009705); + a(EntityEnderman.class, "Enderman", 58, 1447446, 0); + a(EntityCaveSpider.class, "CaveSpider", 59, 803406, 11013646); + a(EntitySilverfish.class, "Silverfish", 60, 7237230, 3158064); + a(EntityBlaze.class, "Blaze", 61, 16167425, 16775294); + a(EntityMagmaCube.class, "LavaSlime", 62, 3407872, 16579584); + a(EntityEnderDragon.class, "EnderDragon", 63); + a(EntityWither.class, "WitherBoss", 64); + a(EntityBat.class, "Bat", 65, 4996656, 986895); + a(EntityWitch.class, "Witch", 66, 3407872, 5349438); + a(EntityEndermite.class, "Endermite", 67, 1447446, 7237230); + a(EntityGuardian.class, "Guardian", 68, 5931634, 15826224); + a(EntityPig.class, "Pig", 90, 15771042, 14377823); + a(EntitySheep.class, "Sheep", 91, 15198183, 16758197); + a(EntityCow.class, "Cow", 92, 4470310, 10592673); + a(EntityChicken.class, "Chicken", 93, 10592673, 16711680); + a(EntitySquid.class, "Squid", 94, 2243405, 7375001); + a(EntityWolf.class, "Wolf", 95, 14144467, 13545366); + a(EntityMushroomCow.class, "MushroomCow", 96, 10489616, 12040119); + a(EntitySnowman.class, "SnowMan", 97); + a(EntityOcelot.class, "Ozelot", 98, 15720061, 5653556); + a(EntityIronGolem.class, "VillagerGolem", 99); + a(EntityHorse.class, "EntityHorse", 100, 12623485, 15656192); + a(EntityRabbit.class, "Rabbit", 101, 10051392, 7555121); + a(EntityVillager.class, "Villager", 120, 5651507, 12422002); + a(EntityEnderCrystal.class, "EnderCrystal", 200); + } + + public static class MonsterEggInfo { + + public final int a; + public final int b; + public final int c; + public final Statistic killEntityStatistic; + public final Statistic e; + + public MonsterEggInfo(int i, int j, int k) { + this.a = i; + this.b = j; + this.c = k; + this.killEntityStatistic = StatisticList.a(this); + this.e = StatisticList.b(this); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java new file mode 100644 index 0000000..0337aba --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java @@ -0,0 +1,53 @@ +package net.minecraft.server; + +public abstract class EntityWaterAnimal extends EntityInsentient implements IAnimal { + + public EntityWaterAnimal(World world) { + super(world); + } + + public boolean aY() { + return true; + } + + public boolean bR() { + return true; + } + + public boolean canSpawn() { + return this.world.a(this.getBoundingBox(), (Entity) this); + } + + public int w() { + return 120; + } + + protected boolean isTypeNotPersistent() { + return true; + } + + protected int getExpValue(EntityHuman entityhuman) { + return 1 + this.world.random.nextInt(3); + } + + public void K() { + int i = this.getAirTicks(); + + super.K(); + if (this.isAlive() && !this.V()) { + --i; + this.setAirTicks(i); + if (this.getAirTicks() == -20) { + this.setAirTicks(0); + this.damageEntity(DamageSource.DROWN, 2.0F); + } + } else { + this.setAirTicks(300); + } + + } + + public boolean aL() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java new file mode 100644 index 0000000..03ff54c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public abstract class EntityWeather extends Entity { + + public EntityWeather(World world) { + super(world); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java new file mode 100644 index 0000000..d59d779 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java @@ -0,0 +1,173 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; +import java.util.UUID; + +public class EntityWitch extends EntityMonster implements IRangedEntity { + + private static final UUID a = UUID.fromString("5CD17E52-A79A-43D3-A529-90FDE04B181E"); + private static final AttributeModifier b = (new AttributeModifier(EntityWitch.a, "Drinking speed penalty", -0.25D, 0)).a(false); + private static final Item[] c = new Item[] { Items.GLOWSTONE_DUST, Items.SUGAR, Items.REDSTONE, Items.SPIDER_EYE, Items.GLASS_BOTTLE, Items.GUNPOWDER, Items.STICK, Items.STICK}; + private int bm; + + public EntityWitch(World world) { + super(world); + this.setSize(0.6F, 1.95F); + this.goalSelector.a(1, new PathfinderGoalFloat(this)); + this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, 1.0D, 60, 10.0F)); + this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(3, new PathfinderGoalRandomLookaround(this)); + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false, new Class[0])); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true)); + } + + protected void h() { + super.h(); + this.getDataWatcher().a(21, Byte.valueOf((byte) 0)); + } + + protected String z() { + return null; + } + + protected String bo() { + return null; + } + + protected String bp() { + return null; + } + + public void a(boolean flag) { + this.getDataWatcher().watch(21, Byte.valueOf((byte) (flag ? 1 : 0))); + } + + public boolean n() { + return this.getDataWatcher().getByte(21) == 1; + } + + protected void initAttributes() { + super.initAttributes(); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(26.0D); + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.25D); + } + + public void m() { + if (!this.world.isClientSide) { + if (this.n()) { + if (this.bm-- <= 0) { + this.a(false); + ItemStack itemstack = this.bA(); + + this.setEquipment(0, (ItemStack) null); + if (itemstack != null && itemstack.getItem() == Items.POTION) { + List list = Items.POTION.h(itemstack); + + if (list != null) { + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + MobEffect mobeffect = (MobEffect) iterator.next(); + + this.addEffect(new MobEffect(mobeffect)); + } + } + } + + this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).c(EntityWitch.b); + } + } else { + short short0 = -1; + + if (this.random.nextFloat() < 0.15F && this.a(Material.WATER) && !this.hasEffect(MobEffectList.WATER_BREATHING)) { + short0 = 8237; + } else if (this.random.nextFloat() < 0.15F && this.isBurning() && !this.hasEffect(MobEffectList.FIRE_RESISTANCE)) { + short0 = 16307; + } else if (this.random.nextFloat() < 0.05F && this.getHealth() < this.getMaxHealth()) { + short0 = 16341; + } else if (this.random.nextFloat() < 0.25F && this.getGoalTarget() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.getGoalTarget().h(this) > 121.0D) { + short0 = 16274; + } else if (this.random.nextFloat() < 0.25F && this.getGoalTarget() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.getGoalTarget().h(this) > 121.0D) { + short0 = 16274; + } + + if (short0 > -1) { + this.setEquipment(0, new ItemStack(Items.POTION, 1, short0)); + this.bm = this.bA().l(); + this.a(true); + AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED); + + attributeinstance.c(EntityWitch.b); + attributeinstance.b(EntityWitch.b); + } + } + + if (this.random.nextFloat() < 7.5E-4F) { + this.world.broadcastEntityEffect(this, (byte) 15); + } + } + + super.m(); + } + + protected float applyMagicModifier(DamageSource damagesource, float f) { + f = super.applyMagicModifier(damagesource, f); + if (damagesource.getEntity() == this) { + f = 0.0F; + } + + if (damagesource.isMagic()) { + f = (float) ((double) f * 0.15D); + } + + return f; + } + + protected void dropDeathLoot(boolean flag, int i) { + int j = this.random.nextInt(3) + 1; + + for (int k = 0; k < j; ++k) { + int l = this.random.nextInt(3); + Item item = EntityWitch.c[this.random.nextInt(EntityWitch.c.length)]; + + if (i > 0) { + l += this.random.nextInt(i + 1); + } + + for (int i1 = 0; i1 < l; ++i1) { + this.a(item, 1); + } + } + + } + + public void a(EntityLiving entityliving, float f) { + if (!this.n()) { + EntityPotion entitypotion = new EntityPotion(this.world, this, 32732); + double d0 = entityliving.locY + (double) entityliving.getHeadHeight() - 1.100000023841858D; + + entitypotion.pitch -= -20.0F; + double d1 = entityliving.locX + entityliving.motX - this.locX; + double d2 = d0 - this.locY; + double d3 = entityliving.locZ + entityliving.motZ - this.locZ; + float f1 = MathHelper.sqrt(d1 * d1 + d3 * d3); + + if (f1 >= 8.0F && !entityliving.hasEffect(MobEffectList.SLOWER_MOVEMENT)) { + entitypotion.setPotionValue(32698); + } else if (entityliving.getHealth() >= 8.0F && !entityliving.hasEffect(MobEffectList.POISON)) { + entitypotion.setPotionValue(32660); + } else if (f1 <= 3.0F && !entityliving.hasEffect(MobEffectList.WEAKNESS) && this.random.nextFloat() < 0.25F) { + entitypotion.setPotionValue(32696); + } + + entitypotion.shoot(d1, d2 + (double) (f1 * 0.2F), d3, 0.75F, 8.0F); + this.world.addEntity(entitypotion); + } + } + + public float getHeadHeight() { + return 1.62F; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java new file mode 100644 index 0000000..8c0088a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public enum EnumAnimation { + + NONE, EAT, DRINK, BLOCK, BOW; + + private EnumAnimation() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java new file mode 100644 index 0000000..f0382a5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java @@ -0,0 +1,116 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.regex.Pattern; + +public enum EnumChatFormat { + + BLACK("BLACK", '0', 0), DARK_BLUE("DARK_BLUE", '1', 1), DARK_GREEN("DARK_GREEN", '2', 2), DARK_AQUA("DARK_AQUA", '3', 3), DARK_RED("DARK_RED", '4', 4), DARK_PURPLE("DARK_PURPLE", '5', 5), GOLD("GOLD", '6', 6), GRAY("GRAY", '7', 7), DARK_GRAY("DARK_GRAY", '8', 8), BLUE("BLUE", '9', 9), GREEN("GREEN", 'a', 10), AQUA("AQUA", 'b', 11), RED("RED", 'c', 12), LIGHT_PURPLE("LIGHT_PURPLE", 'd', 13), YELLOW("YELLOW", 'e', 14), WHITE("WHITE", 'f', 15), OBFUSCATED("OBFUSCATED", 'k', true), BOLD("BOLD", 'l', true), STRIKETHROUGH("STRIKETHROUGH", 'm', true), UNDERLINE("UNDERLINE", 'n', true), ITALIC("ITALIC", 'o', true), RESET("RESET", 'r', -1); + + private static final Map w = Maps.newHashMap(); + private static final Pattern x = Pattern.compile("(?i)" + String.valueOf('\u00a7') + "[0-9A-FK-OR]"); + private final String y; + private final char z; + private final boolean A; + private final String B; + private final int C; + + private static String c(String s) { + return s.toLowerCase().replaceAll("[^a-z]", ""); + } + + private EnumChatFormat(String s, char c0, int i) { + this(s, c0, false, i); + } + + private EnumChatFormat(String s, char c0, boolean flag) { + this(s, c0, flag, -1); + } + + private EnumChatFormat(String s, char c0, boolean flag, int i) { + this.y = s; + this.z = c0; + this.A = flag; + this.C = i; + this.B = "\u00a7" + c0; + } + + public int b() { + return this.C; + } + + public boolean isFormat() { + return this.A; + } + + public boolean d() { + return !this.A && this != EnumChatFormat.RESET; + } + + public String e() { + return this.name().toLowerCase(); + } + + public String toString() { + return this.B; + } + + public static String a(String s) { + return s == null ? null : EnumChatFormat.x.matcher(s).replaceAll(""); + } + + public static EnumChatFormat b(String s) { + return s == null ? null : (EnumChatFormat) EnumChatFormat.w.get(c(s)); + } + + public static EnumChatFormat a(int i) { + if (i < 0) { + return EnumChatFormat.RESET; + } else { + EnumChatFormat[] aenumchatformat = values(); + int j = aenumchatformat.length; + + for (int k = 0; k < j; ++k) { + EnumChatFormat enumchatformat = aenumchatformat[k]; + + if (enumchatformat.b() == i) { + return enumchatformat; + } + } + + return null; + } + } + + public static Collection a(boolean flag, boolean flag1) { + ArrayList arraylist = Lists.newArrayList(); + EnumChatFormat[] aenumchatformat = values(); + int i = aenumchatformat.length; + + for (int j = 0; j < i; ++j) { + EnumChatFormat enumchatformat = aenumchatformat[j]; + + if ((!enumchatformat.d() || flag) && (!enumchatformat.isFormat() || flag1)) { + arraylist.add(enumchatformat.e()); + } + } + + return arraylist; + } + + static { + EnumChatFormat[] aenumchatformat = values(); + int i = aenumchatformat.length; + + for (int j = 0; j < i; ++j) { + EnumChatFormat enumchatformat = aenumchatformat[j]; + + EnumChatFormat.w.put(c(enumchatformat.y), enumchatformat); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java new file mode 100644 index 0000000..2bdaa0b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java @@ -0,0 +1,77 @@ +package net.minecraft.server; + +public enum EnumColor implements INamable { + + WHITE(0, 15, "white", "white", MaterialMapColor.j, EnumChatFormat.WHITE), ORANGE(1, 14, "orange", "orange", MaterialMapColor.q, EnumChatFormat.GOLD), MAGENTA(2, 13, "magenta", "magenta", MaterialMapColor.r, EnumChatFormat.AQUA), LIGHT_BLUE(3, 12, "light_blue", "lightBlue", MaterialMapColor.s, EnumChatFormat.BLUE), YELLOW(4, 11, "yellow", "yellow", MaterialMapColor.t, EnumChatFormat.YELLOW), LIME(5, 10, "lime", "lime", MaterialMapColor.u, EnumChatFormat.GREEN), PINK(6, 9, "pink", "pink", MaterialMapColor.v, EnumChatFormat.LIGHT_PURPLE), GRAY(7, 8, "gray", "gray", MaterialMapColor.w, EnumChatFormat.DARK_GRAY), SILVER(8, 7, "silver", "silver", MaterialMapColor.x, EnumChatFormat.GRAY), CYAN(9, 6, "cyan", "cyan", MaterialMapColor.y, EnumChatFormat.DARK_AQUA), PURPLE(10, 5, "purple", "purple", MaterialMapColor.z, EnumChatFormat.DARK_PURPLE), BLUE(11, 4, "blue", "blue", MaterialMapColor.A, EnumChatFormat.DARK_BLUE), BROWN(12, 3, "brown", "brown", MaterialMapColor.B, EnumChatFormat.GOLD), GREEN(13, 2, "green", "green", MaterialMapColor.C, EnumChatFormat.DARK_GREEN), RED(14, 1, "red", "red", MaterialMapColor.D, EnumChatFormat.DARK_RED), BLACK(15, 0, "black", "black", MaterialMapColor.E, EnumChatFormat.BLACK); + + private static final EnumColor[] q = new EnumColor[values().length]; + private static final EnumColor[] r = new EnumColor[values().length]; + private final int s; + private final int t; + private final String u; + private final String v; + private final MaterialMapColor w; + private final EnumChatFormat x; + + private EnumColor(int i, int j, String s, String s1, MaterialMapColor materialmapcolor, EnumChatFormat enumchatformat) { + this.s = i; + this.t = j; + this.u = s; + this.v = s1; + this.w = materialmapcolor; + this.x = enumchatformat; + } + + public int getColorIndex() { + return this.s; + } + + public int getInvColorIndex() { + return this.t; + } + + public String d() { + return this.v; + } + + public MaterialMapColor e() { + return this.w; + } + + public static EnumColor fromInvColorIndex(int i) { + if (i < 0 || i >= EnumColor.r.length) { + i = 0; + } + + return EnumColor.r[i]; + } + + public static EnumColor fromColorIndex(int i) { + if (i < 0 || i >= EnumColor.q.length) { + i = 0; + } + + return EnumColor.q[i]; + } + + public String toString() { + return this.v; + } + + public String getName() { + return this.u; + } + + static { + EnumColor[] aenumcolor = values(); + int i = aenumcolor.length; + + for (int j = 0; j < i; ++j) { + EnumColor enumcolor = aenumcolor[j]; + + EnumColor.q[enumcolor.getColorIndex()] = enumcolor; + EnumColor.r[enumcolor.getInvColorIndex()] = enumcolor; + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java new file mode 100644 index 0000000..18d6f3a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +public enum EnumCreatureType { + + MONSTER(IMonster.class, 70, Material.AIR, false, false), CREATURE(EntityAnimal.class, 10, Material.AIR, true, true), AMBIENT(EntityAmbient.class, 15, Material.AIR, true, false), WATER_CREATURE(EntityWaterAnimal.class, 5, Material.WATER, true, false); + + private final Class e; + private final int f; + private final Material g; + private final boolean h; + private final boolean i; + + EnumCreatureType(Class oclass, int i, Material material, boolean flag, boolean flag1) { + this.e = oclass; + this.f = i; + this.g = material; + this.h = flag; + this.i = flag1; + } + + public Class a() { + return this.e; + } + + public int b() { + return this.f; + } + + public boolean d() { + return this.h; + } + + public boolean e() { + return this.i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java new file mode 100644 index 0000000..7671000 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +public enum EnumDifficulty { + + PEACEFUL(0, "options.difficulty.peaceful"), EASY(1, "options.difficulty.easy"), NORMAL(2, "options.difficulty.normal"), HARD(3, "options.difficulty.hard"); + + private static final EnumDifficulty[] e = new EnumDifficulty[values().length]; + private final int f; + private final String g; + + private EnumDifficulty(int i, String s) { + this.f = i; + this.g = s; + } + + public int a() { + return this.f; + } + + public static EnumDifficulty getById(int i) { + return EnumDifficulty.e[i % EnumDifficulty.e.length]; + } + + public String b() { + return this.g; + } + + static { + EnumDifficulty[] aenumdifficulty = values(); + int i = aenumdifficulty.length; + + for (int j = 0; j < i; ++j) { + EnumDifficulty enumdifficulty = aenumdifficulty[j]; + + EnumDifficulty.e[enumdifficulty.f] = enumdifficulty; + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java new file mode 100644 index 0000000..938769b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java @@ -0,0 +1,361 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import java.util.Iterator; +import java.util.Map; +import java.util.Random; + +public enum EnumDirection implements INamable { + + DOWN(0, 1, -1, "down", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, -1, 0)), UP(1, 0, -1, "up", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, 1, 0)), NORTH(2, 3, 2, "north", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, -1)), SOUTH(3, 2, 0, "south", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, 1)), WEST(4, 5, 1, "west", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(-1, 0, 0)), EAST(5, 4, 3, "east", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(1, 0, 0)); + + private final int g; + private final int h; + private final int i; + private final String j; + private final EnumDirection.EnumAxis k; + private final EnumDirection.EnumAxisDirection l; + private final BaseBlockPosition m; + private static final EnumDirection[] n = new EnumDirection[6]; + private static final EnumDirection[] o = new EnumDirection[4]; + private static final Map p = Maps.newHashMap(); + + private EnumDirection(int i, int j, int k, String s, EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis, BaseBlockPosition baseblockposition) { + this.g = i; + this.i = k; + this.h = j; + this.j = s; + this.k = enumdirection_enumaxis; + this.l = enumdirection_enumaxisdirection; + this.m = baseblockposition; + } + + public int a() { + return this.g; + } + + public int b() { + return this.i; + } + + public EnumDirection.EnumAxisDirection c() { + return this.l; + } + + public EnumDirection opposite() { + return fromType1(this.h); + } + + public EnumDirection e() { + switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) { + case 1: + return EnumDirection.EAST; + + case 2: + return EnumDirection.SOUTH; + + case 3: + return EnumDirection.WEST; + + case 4: + return EnumDirection.NORTH; + + default: + throw new IllegalStateException("Unable to get Y-rotated facing of " + this); + } + } + + public EnumDirection f() { + switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) { + case 1: + return EnumDirection.WEST; + + case 2: + return EnumDirection.NORTH; + + case 3: + return EnumDirection.EAST; + + case 4: + return EnumDirection.SOUTH; + + default: + throw new IllegalStateException("Unable to get CCW facing of " + this); + } + } + + public int getAdjacentX() { + return this.k == EnumDirection.EnumAxis.X ? this.l.a() : 0; + } + + public int getAdjacentY() { + return this.k == EnumDirection.EnumAxis.Y ? this.l.a() : 0; + } + + public int getAdjacentZ() { + return this.k == EnumDirection.EnumAxis.Z ? this.l.a() : 0; + } + + public String j() { + return this.j; + } + + public EnumDirection.EnumAxis k() { + return this.k; + } + + public static EnumDirection fromType1(int i) { + return EnumDirection.n[MathHelper.a(i % EnumDirection.n.length)]; + } + + public static EnumDirection fromType2(int i) { + return EnumDirection.o[MathHelper.a(i % EnumDirection.o.length)]; + } + + public static EnumDirection fromAngle(double d0) { + return fromType2(MathHelper.floor(d0 / 90.0D + 0.5D) & 3); + } + + public static EnumDirection a(Random random) { + return values()[random.nextInt(values().length)]; + } + + public String toString() { + return this.j; + } + + public String getName() { + return this.j; + } + + public static EnumDirection a(EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis) { + EnumDirection[] aenumdirection = values(); + int i = aenumdirection.length; + + for (int j = 0; j < i; ++j) { + EnumDirection enumdirection = aenumdirection[j]; + + if (enumdirection.c() == enumdirection_enumaxisdirection && enumdirection.k() == enumdirection_enumaxis) { + return enumdirection; + } + } + + throw new IllegalArgumentException("No such direction: " + enumdirection_enumaxisdirection + " " + enumdirection_enumaxis); + } + + static { + EnumDirection[] aenumdirection = values(); + int i = aenumdirection.length; + + for (int j = 0; j < i; ++j) { + EnumDirection enumdirection = aenumdirection[j]; + + EnumDirection.n[enumdirection.g] = enumdirection; + if (enumdirection.k().c()) { + EnumDirection.o[enumdirection.i] = enumdirection; + } + + EnumDirection.p.put(enumdirection.j().toLowerCase(), enumdirection); + } + + } + + static class SyntheticClass_1 { + + static final int[] a; + static final int[] b; + static final int[] c = new int[EnumDirection.EnumDirectionLimit.values().length]; + + static { + try { + EnumDirection.SyntheticClass_1.c[EnumDirection.EnumDirectionLimit.HORIZONTAL.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + EnumDirection.SyntheticClass_1.c[EnumDirection.EnumDirectionLimit.VERTICAL.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + b = new int[EnumDirection.values().length]; + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.EAST.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.SOUTH.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.WEST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.UP.ordinal()] = 5; + } catch (NoSuchFieldError nosuchfielderror6) { + ; + } + + try { + EnumDirection.SyntheticClass_1.b[EnumDirection.DOWN.ordinal()] = 6; + } catch (NoSuchFieldError nosuchfielderror7) { + ; + } + + a = new int[EnumDirection.EnumAxis.values().length]; + + try { + EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror8) { + ; + } + + try { + EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror9) { + ; + } + + try { + EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror10) { + ; + } + + } + } + + public static enum EnumDirectionLimit implements Predicate, Iterable { + + HORIZONTAL, VERTICAL; + + private EnumDirectionLimit() {} + + public EnumDirection[] a() { + switch (EnumDirection.SyntheticClass_1.c[this.ordinal()]) { + case 1: + return new EnumDirection[] { EnumDirection.NORTH, EnumDirection.EAST, EnumDirection.SOUTH, EnumDirection.WEST}; + + case 2: + return new EnumDirection[] { EnumDirection.UP, EnumDirection.DOWN}; + + default: + throw new Error("Someone\'s been tampering with the universe!"); + } + } + + public EnumDirection a(Random random) { + EnumDirection[] aenumdirection = this.a(); + + return aenumdirection[random.nextInt(aenumdirection.length)]; + } + + public boolean a(EnumDirection enumdirection) { + return enumdirection != null && enumdirection.k().d() == this; + } + + public Iterator iterator() { + return Iterators.forArray(this.a()); + } + + public boolean apply(EnumDirection object) { + return this.a(object); + } + } + + public static enum EnumAxisDirection { + + POSITIVE(1, "Towards positive"), NEGATIVE(-1, "Towards negative"); + + private final int c; + private final String d; + + private EnumAxisDirection(int i, String s) { + this.c = i; + this.d = s; + } + + public int a() { + return this.c; + } + + public String toString() { + return this.d; + } + } + + public static enum EnumAxis implements Predicate, INamable { + + X("x", EnumDirection.EnumDirectionLimit.HORIZONTAL), Y("y", EnumDirection.EnumDirectionLimit.VERTICAL), Z("z", EnumDirection.EnumDirectionLimit.HORIZONTAL); + + private static final Map d = Maps.newHashMap(); + private final String e; + private final EnumDirection.EnumDirectionLimit f; + + private EnumAxis(String s, EnumDirection.EnumDirectionLimit enumdirection_enumdirectionlimit) { + this.e = s; + this.f = enumdirection_enumdirectionlimit; + } + + public String a() { + return this.e; + } + + public boolean b() { + return this.f == EnumDirection.EnumDirectionLimit.VERTICAL; + } + + public boolean c() { + return this.f == EnumDirection.EnumDirectionLimit.HORIZONTAL; + } + + public String toString() { + return this.e; + } + + public boolean a(EnumDirection enumdirection) { + return enumdirection != null && enumdirection.k() == this; + } + + public EnumDirection.EnumDirectionLimit d() { + return this.f; + } + + public String getName() { + return this.e; + } + + public boolean apply(EnumDirection object) { + return this.a(object); + } + + static { + EnumDirection.EnumAxis[] aenumdirection_enumaxis = values(); + int i = aenumdirection_enumaxis.length; + + for (int j = 0; j < i; ++j) { + EnumDirection.EnumAxis enumdirection_enumaxis = aenumdirection_enumaxis[j]; + + EnumDirection.EnumAxis.d.put(enumdirection_enumaxis.a().toLowerCase(), enumdirection_enumaxis); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumItemRarity.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumItemRarity.java new file mode 100644 index 0000000..85a1753 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumItemRarity.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public enum EnumItemRarity { + + COMMON(EnumChatFormat.WHITE, "Common"), UNCOMMON(EnumChatFormat.YELLOW, "Uncommon"), RARE(EnumChatFormat.AQUA, "Rare"), EPIC(EnumChatFormat.LIGHT_PURPLE, "Epic"); + + public final EnumChatFormat e; + public final String f; + + private EnumItemRarity(EnumChatFormat enumchatformat, String s) { + this.e = enumchatformat; + this.f = s; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumMonsterType.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumMonsterType.java new file mode 100644 index 0000000..25aa9c0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumMonsterType.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public enum EnumMonsterType { + + UNDEFINED, UNDEAD, ARTHROPOD; + + private EnumMonsterType() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumParticle.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumParticle.java new file mode 100644 index 0000000..f3b7d42 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumParticle.java @@ -0,0 +1,74 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Map; + +public enum EnumParticle { + + EXPLOSION_NORMAL("explode", 0, true), EXPLOSION_LARGE("largeexplode", 1, true), EXPLOSION_HUGE("hugeexplosion", 2, true), FIREWORKS_SPARK("fireworksSpark", 3, false), WATER_BUBBLE("bubble", 4, false), WATER_SPLASH("splash", 5, false), WATER_WAKE("wake", 6, false), SUSPENDED("suspended", 7, false), SUSPENDED_DEPTH("depthsuspend", 8, false), CRIT("crit", 9, false), CRIT_MAGIC("magicCrit", 10, false), SMOKE_NORMAL("smoke", 11, false), SMOKE_LARGE("largesmoke", 12, false), SPELL("spell", 13, false), SPELL_INSTANT("instantSpell", 14, false), SPELL_MOB("mobSpell", 15, false), SPELL_MOB_AMBIENT("mobSpellAmbient", 16, false), SPELL_WITCH("witchMagic", 17, false), DRIP_WATER("dripWater", 18, false), DRIP_LAVA("dripLava", 19, false), VILLAGER_ANGRY("angryVillager", 20, false), VILLAGER_HAPPY("happyVillager", 21, false), TOWN_AURA("townaura", 22, false), NOTE("note", 23, false), PORTAL("portal", 24, false), ENCHANTMENT_TABLE("enchantmenttable", 25, false), FLAME("flame", 26, false), LAVA("lava", 27, false), FOOTSTEP("footstep", 28, false), CLOUD("cloud", 29, false), REDSTONE("reddust", 30, false), SNOWBALL("snowballpoof", 31, false), SNOW_SHOVEL("snowshovel", 32, false), SLIME("slime", 33, false), HEART("heart", 34, false), BARRIER("barrier", 35, false), ITEM_CRACK("iconcrack_", 36, false, 2), BLOCK_CRACK("blockcrack_", 37, false, 1), BLOCK_DUST("blockdust_", 38, false, 1), WATER_DROP("droplet", 39, false), ITEM_TAKE("take", 40, false), MOB_APPEARANCE("mobappearance", 41, true); + + private final String Q; + private final int R; + private final boolean S; + private final int T; + private static final Map U = Maps.newHashMap(); + private static final String[] V; + + private EnumParticle(String s, int i, boolean flag, int j) { + this.Q = s; + this.R = i; + this.S = flag; + this.T = j; + } + + private EnumParticle(String s, int i, boolean flag) { + this(s, i, flag, 0); + } + + public static String[] a() { + return EnumParticle.V; + } + + public String b() { + return this.Q; + } + + public int c() { + return this.R; + } + + public int d() { + return this.T; + } + + public boolean e() { + return this.S; + } + + public boolean f() { + return this.T > 0; + } + + public static EnumParticle a(int i) { + return (EnumParticle) EnumParticle.U.get(Integer.valueOf(i)); + } + + static { + ArrayList arraylist = Lists.newArrayList(); + EnumParticle[] aenumparticle = values(); + int i = aenumparticle.length; + + for (int j = 0; j < i; ++j) { + EnumParticle enumparticle = aenumparticle[j]; + + EnumParticle.U.put(Integer.valueOf(enumparticle.c()), enumparticle); + if (!enumparticle.b().endsWith("_")) { + arraylist.add(enumparticle.b()); + } + } + + V = (String[]) arraylist.toArray(new String[arraylist.size()]); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocol.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocol.java new file mode 100644 index 0000000..393ffc8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocol.java @@ -0,0 +1,225 @@ +package net.minecraft.server; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.Maps; +import java.util.Iterator; +import java.util.Map; +import org.apache.logging.log4j.LogManager; + +public enum EnumProtocol { + + HANDSHAKING(-1) {; + { + this.a(EnumProtocolDirection.SERVERBOUND, PacketHandshakingInSetProtocol.class); + } + }, PLAY(0) {; + { + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutKeepAlive.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutLogin.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutChat.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateTime.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityEquipment.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnPosition.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateHealth.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutRespawn.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPosition.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutHeldItemSlot.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBed.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAnimation.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutNamedEntitySpawn.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCollect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntity.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityLiving.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityPainting.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityExperienceOrb.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityVelocity.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityDestroy.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutRelEntityMove.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutEntityLook.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityTeleport.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityHeadRotation.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityStatus.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAttachEntity.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityMetadata.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutEntityEffect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutRemoveEntityEffect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutExperience.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateAttributes.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMapChunk.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMultiBlockChange.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockChange.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockAction.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutBlockBreakAnimation.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMapChunkBulk.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutExplosion.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldEvent.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutNamedSoundEffect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldParticles.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutGameStateChange.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSpawnEntityWeather.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutOpenWindow.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCloseWindow.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSetSlot.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWindowItems.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWindowData.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTransaction.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateSign.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutMap.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTileEntityData.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutOpenSignEditor.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutStatistic.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPlayerInfo.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutAbilities.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTabComplete.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardObjective.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardScore.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardDisplayObjective.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutScoreboardTeam.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCustomPayload.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutKickDisconnect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutServerDifficulty.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCombatEvent.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutCamera.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutWorldBorder.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutTitle.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutSetCompression.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutPlayerListHeaderFooter.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutResourcePackSend.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketPlayOutUpdateEntityNBT.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInKeepAlive.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInChat.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInUseEntity.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInPosition.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInLook.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInFlying.PacketPlayInPositionLook.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInBlockDig.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInBlockPlace.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInHeldItemSlot.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInArmAnimation.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInEntityAction.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSteerVehicle.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInCloseWindow.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInWindowClick.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInTransaction.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSetCreativeSlot.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInEnchantItem.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInUpdateSign.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInAbilities.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInTabComplete.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSettings.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInClientCommand.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInCustomPayload.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInSpectate.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketPlayInResourcePackStatus.class); + } +}, STATUS(1) {; + { + this.a(EnumProtocolDirection.SERVERBOUND, PacketStatusInStart.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketStatusOutServerInfo.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketStatusInPing.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketStatusOutPong.class); + } +}, LOGIN(2) {; + { + this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutDisconnect.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutEncryptionBegin.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutSuccess.class); + this.a(EnumProtocolDirection.CLIENTBOUND, PacketLoginOutSetCompression.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketLoginInStart.class); + this.a(EnumProtocolDirection.SERVERBOUND, PacketLoginInEncryptionBegin.class); + } +}; + + private static int e = -1; + private static int f = 2; + private static final EnumProtocol[] g = new EnumProtocol[EnumProtocol.f - EnumProtocol.e + 1]; + private static final Map, EnumProtocol> h = Maps.newHashMap(); + private final int i; + private final Map>> j; + + private EnumProtocol(int i) { + this.j = Maps.newEnumMap(EnumProtocolDirection.class); + this.i = i; + } + + protected EnumProtocol a(EnumProtocolDirection enumprotocoldirection, Class oclass) { + BiMap> map = this.j.computeIfAbsent(enumprotocoldirection, k -> HashBiMap.create()); + + if (map.containsValue(oclass)) { + String s = enumprotocoldirection + " packet " + oclass + " is already known to ID " + ((BiMap) map).inverse().get(oclass); + + LogManager.getLogger().fatal(s); + throw new IllegalArgumentException(s); + } else { + map.put(map.size(), oclass); + return this; + } + } + + public Integer a(EnumProtocolDirection enumprotocoldirection, Packet packet) { + return (Integer) ((BiMap) this.j.get(enumprotocoldirection)).inverse().get(packet.getClass()); + } + + public Packet a(EnumProtocolDirection enumprotocoldirection, int i) throws IllegalAccessException, InstantiationException { + Class oclass = (Class) ((BiMap) this.j.get(enumprotocoldirection)).get(Integer.valueOf(i)); + + return oclass == null ? null : (Packet) oclass.newInstance(); + } + + public int a() { + return this.i; + } + + public static EnumProtocol a(int i) { + return i >= EnumProtocol.e && i <= EnumProtocol.f ? EnumProtocol.g[i - EnumProtocol.e] : null; + } + + public static EnumProtocol a(Packet packet) { + return (EnumProtocol) EnumProtocol.h.get(packet.getClass()); + } + + EnumProtocol(int i, Object object) { + this(i); + } + + static { + EnumProtocol[] aenumprotocol = values(); + int i = aenumprotocol.length; + + for (int j = 0; j < i; ++j) { + EnumProtocol enumprotocol = aenumprotocol[j]; + int k = enumprotocol.a(); + + if (k < EnumProtocol.e || k > EnumProtocol.f) { + throw new Error("Invalid protocol ID " + Integer.toString(k)); + } + + EnumProtocol.g[k - EnumProtocol.e] = enumprotocol; + Iterator iterator = enumprotocol.j.keySet().iterator(); + + while (iterator.hasNext()) { + EnumProtocolDirection enumprotocoldirection = (EnumProtocolDirection) iterator.next(); + + Class oclass; + + for (Iterator iterator1 = ((BiMap) enumprotocol.j.get(enumprotocoldirection)).values().iterator(); iterator1.hasNext(); EnumProtocol.h.put(oclass, enumprotocol)) { + oclass = (Class) iterator1.next(); + if (EnumProtocol.h.containsKey(oclass) && EnumProtocol.h.get(oclass) != enumprotocol) { + throw new Error("Packet " + oclass + " is already assigned to protocol " + EnumProtocol.h.get(oclass) + " - can\'t reassign to " + enumprotocol); + } + + try { + oclass.newInstance(); + } catch (Throwable throwable) { + throw new Error("Packet " + oclass + " fails instantiation checks! " + oclass); + } + } + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocolDirection.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocolDirection.java new file mode 100644 index 0000000..c525fad --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumProtocolDirection.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public enum EnumProtocolDirection { + + SERVERBOUND, CLIENTBOUND; + + private EnumProtocolDirection() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumSkyBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumSkyBlock.java new file mode 100644 index 0000000..5880922 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumSkyBlock.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public enum EnumSkyBlock { + + SKY(15), BLOCK(0); + + public final int c; + + private EnumSkyBlock(int i) { + this.c = i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumWorldBorderState.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumWorldBorderState.java new file mode 100644 index 0000000..32664e6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumWorldBorderState.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public enum EnumWorldBorderState { + + GROWING(4259712), SHRINKING(16724016), STATIONARY(2138367); + + private final int d; + + private EnumWorldBorderState(int i) { + this.d = i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionEntityNotFound.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionEntityNotFound.java new file mode 100644 index 0000000..d01a15f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionEntityNotFound.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ExceptionEntityNotFound extends CommandException { + + public ExceptionEntityNotFound() { + this("commands.generic.entity.notFound", new Object[0]); + } + + public ExceptionEntityNotFound(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidNumber.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidNumber.java new file mode 100644 index 0000000..b66af35 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidNumber.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ExceptionInvalidNumber extends CommandException { + + public ExceptionInvalidNumber() { + this("commands.generic.num.invalid", new Object[0]); + } + + public ExceptionInvalidNumber(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidSyntax.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidSyntax.java new file mode 100644 index 0000000..8f47be8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionInvalidSyntax.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ExceptionInvalidSyntax extends CommandException { + + public ExceptionInvalidSyntax() { + this("commands.generic.snytax", new Object[0]); + } + + public ExceptionInvalidSyntax(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionPlayerNotFound.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionPlayerNotFound.java new file mode 100644 index 0000000..76b2c68 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionPlayerNotFound.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ExceptionPlayerNotFound extends CommandException { + + public ExceptionPlayerNotFound() { + this("commands.generic.player.notFound", new Object[0]); + } + + public ExceptionPlayerNotFound(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUnknownCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUnknownCommand.java new file mode 100644 index 0000000..ed9a83a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUnknownCommand.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ExceptionUnknownCommand extends CommandException { + + public ExceptionUnknownCommand() { + this("commands.generic.notFound", new Object[0]); + } + + public ExceptionUnknownCommand(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUsage.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUsage.java new file mode 100644 index 0000000..0f2606a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionUsage.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public class ExceptionUsage extends ExceptionInvalidSyntax { + + public ExceptionUsage(String s, Object... aobject) { + super(s, aobject); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionWorldConflict.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionWorldConflict.java new file mode 100644 index 0000000..11de72a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ExceptionWorldConflict.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public class ExceptionWorldConflict extends Exception { + + public ExceptionWorldConflict(String s) { + super(s); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ExpirableListEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/ExpirableListEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ExpirableListEntry.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ExpirableListEntry.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Explosion.java b/eSpigot-Server/src/main/java/net/minecraft/server/Explosion.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Explosion.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Explosion.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/FileIOThread.java b/eSpigot-Server/src/main/java/net/minecraft/server/FileIOThread.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/FileIOThread.java rename to eSpigot-Server/src/main/java/net/minecraft/server/FileIOThread.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/FoodMetaData.java b/eSpigot-Server/src/main/java/net/minecraft/server/FoodMetaData.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/FoodMetaData.java rename to eSpigot-Server/src/main/java/net/minecraft/server/FoodMetaData.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanEntry.java rename to eSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanEntry.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanList.java b/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanList.java new file mode 100644 index 0000000..63fec2a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileBanList.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import java.io.File; +import java.util.Iterator; + +public class GameProfileBanList extends JsonList { + + public GameProfileBanList(File file) { + super(file); + } + + protected JsonListEntry a(JsonObject jsonobject) { + return new GameProfileBanEntry(jsonobject); + } + + public boolean isBanned(GameProfile gameprofile) { + return this.d(gameprofile); + } + + public String[] getEntries() { + String[] astring = new String[this.e().size()]; + int i = 0; + + GameProfileBanEntry gameprofilebanentry; + + for (Iterator iterator = this.e().values().iterator(); iterator.hasNext(); astring[i++] = ((GameProfile) gameprofilebanentry.getKey()).getName()) { + gameprofilebanentry = (GameProfileBanEntry) iterator.next(); + } + + return astring; + } + + protected String b(GameProfile gameprofile) { + return gameprofile.getId().toString(); + } + + public GameProfile a(String s) { + Iterator iterator = this.e().values().iterator(); + + GameProfileBanEntry gameprofilebanentry; + + do { + if (!iterator.hasNext()) { + return null; + } + + gameprofilebanentry = (GameProfileBanEntry) iterator.next(); + } while (!s.equalsIgnoreCase(((GameProfile) gameprofilebanentry.getKey()).getName())); + + return (GameProfile) gameprofilebanentry.getKey(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileSerializer.java b/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileSerializer.java new file mode 100644 index 0000000..998cf70 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GameProfileSerializer.java @@ -0,0 +1,164 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import java.util.Iterator; +import java.util.UUID; + +public final class GameProfileSerializer { + + public static GameProfile deserialize(NBTTagCompound nbttagcompound) { + String s = null; + String s1 = null; + + if (nbttagcompound.hasKeyOfType("Name", 8)) { + s = nbttagcompound.getString("Name"); + } + + if (nbttagcompound.hasKeyOfType("Id", 8)) { + s1 = nbttagcompound.getString("Id"); + } + + if (UtilColor.b(s) && UtilColor.b(s1)) { + return null; + } else { + UUID uuid; + + try { + uuid = UUID.fromString(s1); + } catch (Throwable throwable) { + uuid = null; + } + + GameProfile gameprofile = new GameProfile(uuid, s); + + if (nbttagcompound.hasKeyOfType("Properties", 10)) { + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Properties"); + Iterator iterator = nbttagcompound1.c().iterator(); + + while (iterator.hasNext()) { + String s2 = (String) iterator.next(); + NBTTagList nbttaglist = nbttagcompound1.getList(s2, 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound2 = nbttaglist.get(i); + String s3 = nbttagcompound2.getString("Value"); + + if (nbttagcompound2.hasKeyOfType("Signature", 8)) { + gameprofile.getProperties().put(s2, new Property(s2, s3, nbttagcompound2.getString("Signature"))); + } else { + gameprofile.getProperties().put(s2, new Property(s2, s3)); + } + } + } + } + + return gameprofile; + } + } + + public static NBTTagCompound serialize(NBTTagCompound nbttagcompound, GameProfile gameprofile) { + if (!UtilColor.b(gameprofile.getName())) { + nbttagcompound.setString("Name", gameprofile.getName()); + } + + if (gameprofile.getId() != null) { + nbttagcompound.setString("Id", gameprofile.getId().toString()); + } + + if (!gameprofile.getProperties().isEmpty()) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + Iterator iterator = gameprofile.getProperties().keySet().iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + NBTTagList nbttaglist = new NBTTagList(); + + NBTTagCompound nbttagcompound2; + + for (Iterator iterator1 = gameprofile.getProperties().get(s).iterator(); iterator1.hasNext(); nbttaglist.add(nbttagcompound2)) { + Property property = (Property) iterator1.next(); + + nbttagcompound2 = new NBTTagCompound(); + nbttagcompound2.setString("Value", property.getValue()); + if (property.hasSignature()) { + nbttagcompound2.setString("Signature", property.getSignature()); + } + } + + nbttagcompound1.set(s, nbttaglist); + } + + nbttagcompound.set("Properties", nbttagcompound1); + } + + return nbttagcompound; + } + + public static boolean a(NBTBase nbtbase, NBTBase nbtbase1, boolean flag) { + if (nbtbase == nbtbase1) { + return true; + } else if (nbtbase == null) { + return true; + } else if (nbtbase1 == null) { + return false; + } else if (!nbtbase.getClass().equals(nbtbase1.getClass())) { + return false; + } else if (nbtbase instanceof NBTTagCompound) { + NBTTagCompound nbttagcompound = (NBTTagCompound) nbtbase; + NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbtbase1; + Iterator iterator = nbttagcompound.c().iterator(); + + String s; + NBTBase nbtbase2; + + do { + if (!iterator.hasNext()) { + return true; + } + + s = (String) iterator.next(); + nbtbase2 = nbttagcompound.get(s); + } while (a(nbtbase2, nbttagcompound1.get(s), flag)); + + return false; + } else if (nbtbase instanceof NBTTagList && flag) { + NBTTagList nbttaglist = (NBTTagList) nbtbase; + NBTTagList nbttaglist1 = (NBTTagList) nbtbase1; + + if (nbttaglist.size() == 0) { + return nbttaglist1.size() == 0; + } else { + int i = 0; + + while (i < nbttaglist.size()) { + NBTBase nbtbase3 = nbttaglist.g(i); + boolean flag1 = false; + int j = 0; + + while (true) { + if (j < nbttaglist1.size()) { + if (!a(nbtbase3, nbttaglist1.g(j), flag)) { + ++j; + continue; + } + + flag1 = true; + } + + if (!flag1) { + return false; + } + + ++i; + break; + } + } + + return true; + } + } else { + return nbtbase.equals(nbtbase1); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GameRules.java b/eSpigot-Server/src/main/java/net/minecraft/server/GameRules.java new file mode 100644 index 0000000..1c89c90 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GameRules.java @@ -0,0 +1,160 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeMap; + +public class GameRules { + + private TreeMap a = new TreeMap(); + + public GameRules() { + this.a("doFireTick", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("mobGriefing", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("keepInventory", "false", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("doMobSpawning", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("doMobLoot", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("doTileDrops", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("doEntityDrops", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("commandBlockOutput", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("naturalRegeneration", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("doDaylightCycle", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("logAdminCommands", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("showDeathMessages", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("randomTickSpeed", "3", GameRules.EnumGameRuleType.NUMERICAL_VALUE); + this.a("sendCommandFeedback", "true", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + this.a("reducedDebugInfo", "false", GameRules.EnumGameRuleType.BOOLEAN_VALUE); + } + + public void a(String s, String s1, GameRules.EnumGameRuleType gamerules_enumgameruletype) { + this.a.put(s, new GameRules.GameRuleValue(s1, gamerules_enumgameruletype)); + } + + public void set(String s, String s1) { + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + if (gamerules_gamerulevalue != null) { + gamerules_gamerulevalue.a(s1); + } else { + this.a(s, s1, GameRules.EnumGameRuleType.ANY_VALUE); + } + + } + + public String get(String s) { + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + return gamerules_gamerulevalue != null ? gamerules_gamerulevalue.a() : ""; + } + + public boolean getBoolean(String s) { + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + return gamerules_gamerulevalue != null ? gamerules_gamerulevalue.b() : false; + } + + public int c(String s) { + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + return gamerules_gamerulevalue != null ? gamerules_gamerulevalue.c() : 0; + } + + public NBTTagCompound a() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + Iterator iterator = this.a.keySet().iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + nbttagcompound.setString(s, gamerules_gamerulevalue.a()); + } + + return nbttagcompound; + } + + public void a(NBTTagCompound nbttagcompound) { + Set set = nbttagcompound.c(); + Iterator iterator = set.iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + String s1 = nbttagcompound.getString(s); + + this.set(s, s1); + } + + } + + public String[] getGameRules() { + Set set = this.a.keySet(); + + return (String[]) set.toArray(new String[set.size()]); + } + + public boolean contains(String s) { + return this.a.containsKey(s); + } + + public boolean a(String s, GameRules.EnumGameRuleType gamerules_enumgameruletype) { + GameRules.GameRuleValue gamerules_gamerulevalue = (GameRules.GameRuleValue) this.a.get(s); + + return gamerules_gamerulevalue != null && (gamerules_gamerulevalue.e() == gamerules_enumgameruletype || gamerules_enumgameruletype == GameRules.EnumGameRuleType.ANY_VALUE); + } + + public static enum EnumGameRuleType { + + ANY_VALUE, BOOLEAN_VALUE, NUMERICAL_VALUE; + + private EnumGameRuleType() {} + } + + static class GameRuleValue { + + private String a; + private boolean b; + private int c; + private double d; + private final GameRules.EnumGameRuleType e; + + public GameRuleValue(String s, GameRules.EnumGameRuleType gamerules_enumgameruletype) { + this.e = gamerules_enumgameruletype; + this.a(s); + } + + public void a(String s) { + this.a = s; + this.b = Boolean.parseBoolean(s); + this.c = this.b ? 1 : 0; + + try { + this.c = Integer.parseInt(s); + } catch (NumberFormatException numberformatexception) { + ; + } + + try { + this.d = Double.parseDouble(s); + } catch (NumberFormatException numberformatexception1) { + ; + } + + } + + public String a() { + return this.a; + } + + public boolean b() { + return this.b; + } + + public int c() { + return this.c; + } + + public GameRules.EnumGameRuleType e() { + return this.e; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayer.java new file mode 100644 index 0000000..a57c57d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayer.java @@ -0,0 +1,184 @@ +package net.minecraft.server; + +import java.util.concurrent.Callable; + +public abstract class GenLayer { + + private long c; + protected GenLayer a; + private long d; + protected long b; + + public static GenLayer[] a(long i, WorldType worldtype, String s) { + LayerIsland layerisland = new LayerIsland(1L); + GenLayerZoomFuzzy genlayerzoomfuzzy = new GenLayerZoomFuzzy(2000L, layerisland); + GenLayerIsland genlayerisland = new GenLayerIsland(1L, genlayerzoomfuzzy); + GenLayerZoom genlayerzoom = new GenLayerZoom(2001L, genlayerisland); + + genlayerisland = new GenLayerIsland(2L, genlayerzoom); + genlayerisland = new GenLayerIsland(50L, genlayerisland); + genlayerisland = new GenLayerIsland(70L, genlayerisland); + GenLayerIcePlains genlayericeplains = new GenLayerIcePlains(2L, genlayerisland); + GenLayerTopSoil genlayertopsoil = new GenLayerTopSoil(2L, genlayericeplains); + + genlayerisland = new GenLayerIsland(3L, genlayertopsoil); + GenLayerSpecial genlayerspecial = new GenLayerSpecial(2L, genlayerisland, GenLayerSpecial.EnumGenLayerSpecial.COOL_WARM); + + genlayerspecial = new GenLayerSpecial(2L, genlayerspecial, GenLayerSpecial.EnumGenLayerSpecial.HEAT_ICE); + genlayerspecial = new GenLayerSpecial(3L, genlayerspecial, GenLayerSpecial.EnumGenLayerSpecial.SPECIAL); + genlayerzoom = new GenLayerZoom(2002L, genlayerspecial); + genlayerzoom = new GenLayerZoom(2003L, genlayerzoom); + genlayerisland = new GenLayerIsland(4L, genlayerzoom); + GenLayerMushroomIsland genlayermushroomisland = new GenLayerMushroomIsland(5L, genlayerisland); + GenLayerDeepOcean genlayerdeepocean = new GenLayerDeepOcean(4L, genlayermushroomisland); + GenLayer genlayer = GenLayerZoom.b(1000L, genlayerdeepocean, 0); + CustomWorldSettingsFinal customworldsettingsfinal = null; + int j = 4; + int k = j; + + if (worldtype == WorldType.CUSTOMIZED && s.length() > 0) { + customworldsettingsfinal = CustomWorldSettingsFinal.CustomWorldSettings.a(s).b(); + j = customworldsettingsfinal.G; + k = customworldsettingsfinal.H; + } + + if (worldtype == WorldType.LARGE_BIOMES) { + j = 6; + } + + GenLayer genlayer1 = GenLayerZoom.b(1000L, genlayer, 0); + GenLayerCleaner genlayercleaner = new GenLayerCleaner(100L, genlayer1); + GenLayerBiome genlayerbiome = new GenLayerBiome(200L, genlayer, worldtype, s); + GenLayer genlayer2 = GenLayerZoom.b(1000L, genlayerbiome, 2); + GenLayerDesert genlayerdesert = new GenLayerDesert(1000L, genlayer2); + GenLayer genlayer3 = GenLayerZoom.b(1000L, genlayercleaner, 2); + GenLayerRegionHills genlayerregionhills = new GenLayerRegionHills(1000L, genlayerdesert, genlayer3); + + genlayer1 = GenLayerZoom.b(1000L, genlayercleaner, 2); + genlayer1 = GenLayerZoom.b(1000L, genlayer1, k); + GenLayerRiver genlayerriver = new GenLayerRiver(1L, genlayer1); + GenLayerSmooth genlayersmooth = new GenLayerSmooth(1000L, genlayerriver); + Object object = new GenLayerPlains(1001L, genlayerregionhills); + + for (int l = 0; l < j; ++l) { + object = new GenLayerZoom((long) (1000 + l), (GenLayer) object); + if (l == 0) { + object = new GenLayerIsland(3L, (GenLayer) object); + } + + if (l == 1 || j == 1) { + object = new GenLayerMushroomShore(1000L, (GenLayer) object); + } + } + + GenLayerSmooth genlayersmooth1 = new GenLayerSmooth(1000L, (GenLayer) object); + GenLayerRiverMix genlayerrivermix = new GenLayerRiverMix(100L, genlayersmooth1, genlayersmooth); + GenLayerZoomVoronoi genlayerzoomvoronoi = new GenLayerZoomVoronoi(10L, genlayerrivermix); + + genlayerrivermix.a(i); + genlayerzoomvoronoi.a(i); + return new GenLayer[] { genlayerrivermix, genlayerzoomvoronoi, genlayerrivermix}; + } + + public GenLayer(long i) { + this.b = i; + this.b *= this.b * 6364136223846793005L + 1442695040888963407L; + this.b += i; + this.b *= this.b * 6364136223846793005L + 1442695040888963407L; + this.b += i; + this.b *= this.b * 6364136223846793005L + 1442695040888963407L; + this.b += i; + } + + public void a(long i) { + this.c = i; + if (this.a != null) { + this.a.a(i); + } + + this.c *= this.c * 6364136223846793005L + 1442695040888963407L; + this.c += this.b; + this.c *= this.c * 6364136223846793005L + 1442695040888963407L; + this.c += this.b; + this.c *= this.c * 6364136223846793005L + 1442695040888963407L; + this.c += this.b; + } + + public void a(long i, long j) { + this.d = this.c; + this.d *= this.d * 6364136223846793005L + 1442695040888963407L; + this.d += i; + this.d *= this.d * 6364136223846793005L + 1442695040888963407L; + this.d += j; + this.d *= this.d * 6364136223846793005L + 1442695040888963407L; + this.d += i; + this.d *= this.d * 6364136223846793005L + 1442695040888963407L; + this.d += j; + } + + protected int a(int i) { + int j = (int) ((this.d >> 24) % (long) i); + + if (j < 0) { + j += i; + } + + this.d *= this.d * 6364136223846793005L + 1442695040888963407L; + this.d += this.c; + return j; + } + + public abstract int[] a(int i, int j, int k, int l); + + protected static boolean a(int i, int j) { + if (i == j) { + return true; + } else if (i != BiomeBase.MESA_PLATEAU_F.id && i != BiomeBase.MESA_PLATEAU.id) { + final BiomeBase biomebase = BiomeBase.getBiome(i); + final BiomeBase biomebase1 = BiomeBase.getBiome(j); + + try { + return biomebase != null && biomebase1 != null ? biomebase.a(biomebase1) : false; + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Comparing biomes"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Biomes being compared"); + + crashreportsystemdetails.a("Biome A ID", (Object) Integer.valueOf(i)); + crashreportsystemdetails.a("Biome B ID", (Object) Integer.valueOf(j)); + crashreportsystemdetails.a("Biome A", new Callable() { + public String a() throws Exception { + return String.valueOf(biomebase); + } + + public Object call() throws Exception { + return this.a(); + } + }); + crashreportsystemdetails.a("Biome B", new Callable() { + public String a() throws Exception { + return String.valueOf(biomebase); + } + + public Object call() throws Exception { + return this.a(); + } + }); + throw new ReportedException(crashreport); + } + } else { + return j == BiomeBase.MESA_PLATEAU_F.id || j == BiomeBase.MESA_PLATEAU.id; + } + } + + protected static boolean b(int i) { + return i == BiomeBase.OCEAN.id || i == BiomeBase.DEEP_OCEAN.id || i == BiomeBase.FROZEN_OCEAN.id; + } + + protected int a(int... aint) { + return aint[this.a(aint.length)]; + } + + protected int b(int i, int j, int k, int l) { + return j == k && k == l ? j : (i == j && i == k ? i : (i == j && i == l ? i : (i == k && i == l ? i : (i == j && k != l ? i : (i == k && j != l ? i : (i == l && j != k ? i : (j == k && i != l ? j : (j == l && i != k ? j : (k == l && i != j ? k : this.a(new int[] { i, j, k, l})))))))))); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerBiome.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerBiome.java new file mode 100644 index 0000000..7dd9fd7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerBiome.java @@ -0,0 +1,78 @@ +package net.minecraft.server; + +public class GenLayerBiome extends GenLayer { + + private BiomeBase[] c; + private BiomeBase[] d; + private BiomeBase[] e; + private BiomeBase[] f; + private final CustomWorldSettingsFinal g; + + public GenLayerBiome(long i, GenLayer genlayer, WorldType worldtype, String s) { + super(i); + this.c = new BiomeBase[] { BiomeBase.DESERT, BiomeBase.DESERT, BiomeBase.DESERT, BiomeBase.SAVANNA, BiomeBase.SAVANNA, BiomeBase.PLAINS}; + this.d = new BiomeBase[] { BiomeBase.FOREST, BiomeBase.ROOFED_FOREST, BiomeBase.EXTREME_HILLS, BiomeBase.PLAINS, BiomeBase.BIRCH_FOREST, BiomeBase.SWAMPLAND}; + this.e = new BiomeBase[] { BiomeBase.FOREST, BiomeBase.EXTREME_HILLS, BiomeBase.TAIGA, BiomeBase.PLAINS}; + this.f = new BiomeBase[] { BiomeBase.ICE_PLAINS, BiomeBase.ICE_PLAINS, BiomeBase.ICE_PLAINS, BiomeBase.COLD_TAIGA}; + this.a = genlayer; + if (worldtype == WorldType.NORMAL_1_1) { + this.c = new BiomeBase[] { BiomeBase.DESERT, BiomeBase.FOREST, BiomeBase.EXTREME_HILLS, BiomeBase.SWAMPLAND, BiomeBase.PLAINS, BiomeBase.TAIGA}; + this.g = null; + } else if (worldtype == WorldType.CUSTOMIZED) { + this.g = CustomWorldSettingsFinal.CustomWorldSettings.a(s).b(); + } else { + this.g = null; + } + + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i, j, k, l); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + i1 * k]; + int l1 = (k1 & 3840) >> 8; + + k1 &= -3841; + if (this.g != null && this.g.F >= 0) { + aint1[j1 + i1 * k] = this.g.F; + } else if (b(k1)) { + aint1[j1 + i1 * k] = k1; + } else if (k1 == BiomeBase.MUSHROOM_ISLAND.id) { + aint1[j1 + i1 * k] = k1; + } else if (k1 == 1) { + if (l1 > 0) { + if (this.a(3) == 0) { + aint1[j1 + i1 * k] = BiomeBase.MESA_PLATEAU.id; + } else { + aint1[j1 + i1 * k] = BiomeBase.MESA_PLATEAU_F.id; + } + } else { + aint1[j1 + i1 * k] = this.c[this.a(this.c.length)].id; + } + } else if (k1 == 2) { + if (l1 > 0) { + aint1[j1 + i1 * k] = BiomeBase.JUNGLE.id; + } else { + aint1[j1 + i1 * k] = this.d[this.a(this.d.length)].id; + } + } else if (k1 == 3) { + if (l1 > 0) { + aint1[j1 + i1 * k] = BiomeBase.MEGA_TAIGA.id; + } else { + aint1[j1 + i1 * k] = this.e[this.a(this.e.length)].id; + } + } else if (k1 == 4) { + aint1[j1 + i1 * k] = this.f[this.a(this.f.length)].id; + } else { + aint1[j1 + i1 * k] = BiomeBase.MUSHROOM_ISLAND.id; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerCleaner.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerCleaner.java new file mode 100644 index 0000000..4522236 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerCleaner.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +public class GenLayerCleaner extends GenLayer { + + public GenLayerCleaner(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i, j, k, l); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + aint1[j1 + i1 * k] = aint[j1 + i1 * k] > 0 ? this.a(299999) + 2 : 0; + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDeepOcean.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDeepOcean.java new file mode 100644 index 0000000..71d1df7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDeepOcean.java @@ -0,0 +1,53 @@ +package net.minecraft.server; + +public class GenLayerDeepOcean extends GenLayer { + + public GenLayerDeepOcean(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 1 + (i2 + 1 - 1) * (k + 2)]; + int l2 = aint[j2 + 1 + 1 + (i2 + 1) * (k + 2)]; + int i3 = aint[j2 + 1 - 1 + (i2 + 1) * (k + 2)]; + int j3 = aint[j2 + 1 + (i2 + 1 + 1) * (k + 2)]; + int k3 = aint[j2 + 1 + (i2 + 1) * k1]; + int l3 = 0; + + if (k2 == 0) { + ++l3; + } + + if (l2 == 0) { + ++l3; + } + + if (i3 == 0) { + ++l3; + } + + if (j3 == 0) { + ++l3; + } + + if (k3 == 0 && l3 > 3) { + aint1[j2 + i2 * k] = BiomeBase.DEEP_OCEAN.id; + } else { + aint1[j2 + i2 * k] = k3; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDesert.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDesert.java new file mode 100644 index 0000000..901beae --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerDesert.java @@ -0,0 +1,114 @@ +package net.minecraft.server; + +public class GenLayerDesert extends GenLayer { + + public GenLayerDesert(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i - 1, j - 1, k + 2, l + 2); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + 1 + (i1 + 1) * (k + 2)]; + + if (!this.a(aint, aint1, j1, i1, k, k1, BiomeBase.EXTREME_HILLS.id, BiomeBase.SMALL_MOUNTAINS.id) && !this.b(aint, aint1, j1, i1, k, k1, BiomeBase.MESA_PLATEAU_F.id, BiomeBase.MESA.id) && !this.b(aint, aint1, j1, i1, k, k1, BiomeBase.MESA_PLATEAU.id, BiomeBase.MESA.id) && !this.b(aint, aint1, j1, i1, k, k1, BiomeBase.MEGA_TAIGA.id, BiomeBase.TAIGA.id)) { + int l1; + int i2; + int j2; + int k2; + + if (k1 == BiomeBase.DESERT.id) { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (l1 != BiomeBase.ICE_PLAINS.id && i2 != BiomeBase.ICE_PLAINS.id && j2 != BiomeBase.ICE_PLAINS.id && k2 != BiomeBase.ICE_PLAINS.id) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.EXTREME_HILLS_PLUS.id; + } + } else if (k1 == BiomeBase.SWAMPLAND.id) { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (l1 != BiomeBase.DESERT.id && i2 != BiomeBase.DESERT.id && j2 != BiomeBase.DESERT.id && k2 != BiomeBase.DESERT.id && l1 != BiomeBase.COLD_TAIGA.id && i2 != BiomeBase.COLD_TAIGA.id && j2 != BiomeBase.COLD_TAIGA.id && k2 != BiomeBase.COLD_TAIGA.id && l1 != BiomeBase.ICE_PLAINS.id && i2 != BiomeBase.ICE_PLAINS.id && j2 != BiomeBase.ICE_PLAINS.id && k2 != BiomeBase.ICE_PLAINS.id) { + if (l1 != BiomeBase.JUNGLE.id && k2 != BiomeBase.JUNGLE.id && i2 != BiomeBase.JUNGLE.id && j2 != BiomeBase.JUNGLE.id) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.JUNGLE_EDGE.id; + } + } else { + aint1[j1 + i1 * k] = BiomeBase.PLAINS.id; + } + } else { + aint1[j1 + i1 * k] = k1; + } + } + } + } + + return aint1; + } + + private boolean a(int[] aint, int[] aint1, int i, int j, int k, int l, int i1, int j1) { + if (!a(l, i1)) { + return false; + } else { + int k1 = aint[i + 1 + (j + 1 - 1) * (k + 2)]; + int l1 = aint[i + 1 + 1 + (j + 1) * (k + 2)]; + int i2 = aint[i + 1 - 1 + (j + 1) * (k + 2)]; + int j2 = aint[i + 1 + (j + 1 + 1) * (k + 2)]; + + if (this.b(k1, i1) && this.b(l1, i1) && this.b(i2, i1) && this.b(j2, i1)) { + aint1[i + j * k] = l; + } else { + aint1[i + j * k] = j1; + } + + return true; + } + } + + private boolean b(int[] aint, int[] aint1, int i, int j, int k, int l, int i1, int j1) { + if (l != i1) { + return false; + } else { + int k1 = aint[i + 1 + (j + 1 - 1) * (k + 2)]; + int l1 = aint[i + 1 + 1 + (j + 1) * (k + 2)]; + int i2 = aint[i + 1 - 1 + (j + 1) * (k + 2)]; + int j2 = aint[i + 1 + (j + 1 + 1) * (k + 2)]; + + if (a(k1, i1) && a(l1, i1) && a(i2, i1) && a(j2, i1)) { + aint1[i + j * k] = l; + } else { + aint1[i + j * k] = j1; + } + + return true; + } + } + + private boolean b(int i, int j) { + if (a(i, j)) { + return true; + } else { + BiomeBase biomebase = BiomeBase.getBiome(i); + BiomeBase biomebase1 = BiomeBase.getBiome(j); + + if (biomebase != null && biomebase1 != null) { + BiomeBase.EnumTemperature biomebase_enumtemperature = biomebase.m(); + BiomeBase.EnumTemperature biomebase_enumtemperature1 = biomebase1.m(); + + return biomebase_enumtemperature == biomebase_enumtemperature1 || biomebase_enumtemperature == BiomeBase.EnumTemperature.MEDIUM || biomebase_enumtemperature1 == BiomeBase.EnumTemperature.MEDIUM; + } else { + return false; + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIcePlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIcePlains.java new file mode 100644 index 0000000..993f058 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIcePlains.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +public class GenLayerIcePlains extends GenLayer { + + public GenLayerIcePlains(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 1 + (i2 + 1 - 1) * (k + 2)]; + int l2 = aint[j2 + 1 + 1 + (i2 + 1) * (k + 2)]; + int i3 = aint[j2 + 1 - 1 + (i2 + 1) * (k + 2)]; + int j3 = aint[j2 + 1 + (i2 + 1 + 1) * (k + 2)]; + int k3 = aint[j2 + 1 + (i2 + 1) * k1]; + + aint1[j2 + i2 * k] = k3; + this.a((long) (j2 + i), (long) (i2 + j)); + if (k3 == 0 && k2 == 0 && l2 == 0 && i3 == 0 && j3 == 0 && this.a(2) == 0) { + aint1[j2 + i2 * k] = 1; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIsland.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIsland.java new file mode 100644 index 0000000..ff8c936 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerIsland.java @@ -0,0 +1,72 @@ +package net.minecraft.server; + +public class GenLayerIsland extends GenLayer { + + public GenLayerIsland(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 0 + (i2 + 0) * k1]; + int l2 = aint[j2 + 2 + (i2 + 0) * k1]; + int i3 = aint[j2 + 0 + (i2 + 2) * k1]; + int j3 = aint[j2 + 2 + (i2 + 2) * k1]; + int k3 = aint[j2 + 1 + (i2 + 1) * k1]; + + this.a((long) (j2 + i), (long) (i2 + j)); + if (k3 == 0 && (k2 != 0 || l2 != 0 || i3 != 0 || j3 != 0)) { + int l3 = 1; + int i4 = 1; + + if (k2 != 0 && this.a(l3++) == 0) { + i4 = k2; + } + + if (l2 != 0 && this.a(l3++) == 0) { + i4 = l2; + } + + if (i3 != 0 && this.a(l3++) == 0) { + i4 = i3; + } + + if (j3 != 0 && this.a(l3++) == 0) { + i4 = j3; + } + + if (this.a(3) == 0) { + aint1[j2 + i2 * k] = i4; + } else if (i4 == 4) { + aint1[j2 + i2 * k] = 4; + } else { + aint1[j2 + i2 * k] = 0; + } + } else if (k3 > 0 && (k2 == 0 || l2 == 0 || i3 == 0 || j3 == 0)) { + if (this.a(5) == 0) { + if (k3 == 4) { + aint1[j2 + i2 * k] = 4; + } else { + aint1[j2 + i2 * k] = 0; + } + } else { + aint1[j2 + i2 * k] = k3; + } + } else { + aint1[j2 + i2 * k] = k3; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomIsland.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomIsland.java new file mode 100644 index 0000000..b04f04f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomIsland.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +public class GenLayerMushroomIsland extends GenLayer { + + public GenLayerMushroomIsland(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 0 + (i2 + 0) * k1]; + int l2 = aint[j2 + 2 + (i2 + 0) * k1]; + int i3 = aint[j2 + 0 + (i2 + 2) * k1]; + int j3 = aint[j2 + 2 + (i2 + 2) * k1]; + int k3 = aint[j2 + 1 + (i2 + 1) * k1]; + + this.a((long) (j2 + i), (long) (i2 + j)); + if (k3 == 0 && k2 == 0 && l2 == 0 && i3 == 0 && j3 == 0 && this.a(100) == 0) { + aint1[j2 + i2 * k] = BiomeBase.MUSHROOM_ISLAND.id; + } else { + aint1[j2 + i2 * k] = k3; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomShore.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomShore.java new file mode 100644 index 0000000..96e2c31 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerMushroomShore.java @@ -0,0 +1,114 @@ +package net.minecraft.server; + +public class GenLayerMushroomShore extends GenLayer { + + public GenLayerMushroomShore(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i - 1, j - 1, k + 2, l + 2); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + 1 + (i1 + 1) * (k + 2)]; + BiomeBase biomebase = BiomeBase.getBiome(k1); + int l1; + int i2; + int j2; + int k2; + + if (k1 == BiomeBase.MUSHROOM_ISLAND.id) { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (l1 != BiomeBase.OCEAN.id && i2 != BiomeBase.OCEAN.id && j2 != BiomeBase.OCEAN.id && k2 != BiomeBase.OCEAN.id) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.MUSHROOM_SHORE.id; + } + } else if (biomebase != null && biomebase.l() == BiomeJungle.class) { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (this.c(l1) && this.c(i2) && this.c(j2) && this.c(k2)) { + if (!b(l1) && !b(i2) && !b(j2) && !b(k2)) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.BEACH.id; + } + } else { + aint1[j1 + i1 * k] = BiomeBase.JUNGLE_EDGE.id; + } + } else if (k1 != BiomeBase.EXTREME_HILLS.id && k1 != BiomeBase.EXTREME_HILLS_PLUS.id && k1 != BiomeBase.SMALL_MOUNTAINS.id) { + if (biomebase != null && biomebase.j()) { + this.a(aint, aint1, j1, i1, k, k1, BiomeBase.COLD_BEACH.id); + } else if (k1 != BiomeBase.MESA.id && k1 != BiomeBase.MESA_PLATEAU_F.id) { + if (k1 != BiomeBase.OCEAN.id && k1 != BiomeBase.DEEP_OCEAN.id && k1 != BiomeBase.RIVER.id && k1 != BiomeBase.SWAMPLAND.id) { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (!b(l1) && !b(i2) && !b(j2) && !b(k2)) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.BEACH.id; + } + } else { + aint1[j1 + i1 * k] = k1; + } + } else { + l1 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + i2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + j2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + k2 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (!b(l1) && !b(i2) && !b(j2) && !b(k2)) { + if (this.d(l1) && this.d(i2) && this.d(j2) && this.d(k2)) { + aint1[j1 + i1 * k] = k1; + } else { + aint1[j1 + i1 * k] = BiomeBase.DESERT.id; + } + } else { + aint1[j1 + i1 * k] = k1; + } + } + } else { + this.a(aint, aint1, j1, i1, k, k1, BiomeBase.STONE_BEACH.id); + } + } + } + + return aint1; + } + + private void a(int[] aint, int[] aint1, int i, int j, int k, int l, int i1) { + if (b(l)) { + aint1[i + j * k] = l; + } else { + int j1 = aint[i + 1 + (j + 1 - 1) * (k + 2)]; + int k1 = aint[i + 1 + 1 + (j + 1) * (k + 2)]; + int l1 = aint[i + 1 - 1 + (j + 1) * (k + 2)]; + int i2 = aint[i + 1 + (j + 1 + 1) * (k + 2)]; + + if (!b(j1) && !b(k1) && !b(l1) && !b(i2)) { + aint1[i + j * k] = l; + } else { + aint1[i + j * k] = i1; + } + + } + } + + private boolean c(int i) { + return BiomeBase.getBiome(i) != null && BiomeBase.getBiome(i).l() == BiomeJungle.class ? true : i == BiomeBase.JUNGLE_EDGE.id || i == BiomeBase.JUNGLE.id || i == BiomeBase.JUNGLE_HILLS.id || i == BiomeBase.FOREST.id || i == BiomeBase.TAIGA.id || b(i); + } + + private boolean d(int i) { + return BiomeBase.getBiome(i) instanceof BiomeMesa; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerPlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerPlains.java new file mode 100644 index 0000000..2a8a99f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerPlains.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +public class GenLayerPlains extends GenLayer { + + public GenLayerPlains(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i - 1, j - 1, k + 2, l + 2); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + 1 + (i1 + 1) * (k + 2)]; + + if (this.a(57) == 0) { + if (k1 == BiomeBase.PLAINS.id) { + aint1[j1 + i1 * k] = BiomeBase.PLAINS.id + 128; + } else { + aint1[j1 + i1 * k] = k1; + } + } else { + aint1[j1 + i1 * k] = k1; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRegionHills.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRegionHills.java new file mode 100644 index 0000000..5964c0b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRegionHills.java @@ -0,0 +1,131 @@ +package net.minecraft.server; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class GenLayerRegionHills extends GenLayer { + + private static final Logger c = LogManager.getLogger(); + private GenLayer d; + + public GenLayerRegionHills(long i, GenLayer genlayer, GenLayer genlayer1) { + super(i); + this.a = genlayer; + this.d = genlayer1; + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.a.a(i - 1, j - 1, k + 2, l + 2); + int[] aint1 = this.d.a(i - 1, j - 1, k + 2, l + 2); + int[] aint2 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + 1 + (i1 + 1) * (k + 2)]; + int l1 = aint1[j1 + 1 + (i1 + 1) * (k + 2)]; + boolean flag = (l1 - 2) % 29 == 0; + + if (k1 > 255) { + GenLayerRegionHills.c.debug("old! " + k1); + } + + if (k1 != 0 && l1 >= 2 && (l1 - 2) % 29 == 1 && k1 < 128) { + if (BiomeBase.getBiome(k1 + 128) != null) { + aint2[j1 + i1 * k] = k1 + 128; + } else { + aint2[j1 + i1 * k] = k1; + } + } else if (this.a(3) != 0 && !flag) { + aint2[j1 + i1 * k] = k1; + } else { + int i2 = k1; + int j2; + + if (k1 == BiomeBase.DESERT.id) { + i2 = BiomeBase.DESERT_HILLS.id; + } else if (k1 == BiomeBase.FOREST.id) { + i2 = BiomeBase.FOREST_HILLS.id; + } else if (k1 == BiomeBase.BIRCH_FOREST.id) { + i2 = BiomeBase.BIRCH_FOREST_HILLS.id; + } else if (k1 == BiomeBase.ROOFED_FOREST.id) { + i2 = BiomeBase.PLAINS.id; + } else if (k1 == BiomeBase.TAIGA.id) { + i2 = BiomeBase.TAIGA_HILLS.id; + } else if (k1 == BiomeBase.MEGA_TAIGA.id) { + i2 = BiomeBase.MEGA_TAIGA_HILLS.id; + } else if (k1 == BiomeBase.COLD_TAIGA.id) { + i2 = BiomeBase.COLD_TAIGA_HILLS.id; + } else if (k1 == BiomeBase.PLAINS.id) { + if (this.a(3) == 0) { + i2 = BiomeBase.FOREST_HILLS.id; + } else { + i2 = BiomeBase.FOREST.id; + } + } else if (k1 == BiomeBase.ICE_PLAINS.id) { + i2 = BiomeBase.ICE_MOUNTAINS.id; + } else if (k1 == BiomeBase.JUNGLE.id) { + i2 = BiomeBase.JUNGLE_HILLS.id; + } else if (k1 == BiomeBase.OCEAN.id) { + i2 = BiomeBase.DEEP_OCEAN.id; + } else if (k1 == BiomeBase.EXTREME_HILLS.id) { + i2 = BiomeBase.EXTREME_HILLS_PLUS.id; + } else if (k1 == BiomeBase.SAVANNA.id) { + i2 = BiomeBase.SAVANNA_PLATEAU.id; + } else if (a(k1, BiomeBase.MESA_PLATEAU_F.id)) { + i2 = BiomeBase.MESA.id; + } else if (k1 == BiomeBase.DEEP_OCEAN.id && this.a(3) == 0) { + j2 = this.a(2); + if (j2 == 0) { + i2 = BiomeBase.PLAINS.id; + } else { + i2 = BiomeBase.FOREST.id; + } + } + + if (flag && i2 != k1) { + if (BiomeBase.getBiome(i2 + 128) != null) { + i2 += 128; + } else { + i2 = k1; + } + } + + if (i2 == k1) { + aint2[j1 + i1 * k] = k1; + } else { + j2 = aint[j1 + 1 + (i1 + 1 - 1) * (k + 2)]; + int k2 = aint[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int l2 = aint[j1 + 1 - 1 + (i1 + 1) * (k + 2)]; + int i3 = aint[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + int j3 = 0; + + if (a(j2, k1)) { + ++j3; + } + + if (a(k2, k1)) { + ++j3; + } + + if (a(l2, k1)) { + ++j3; + } + + if (a(i3, k1)) { + ++j3; + } + + if (j3 >= 3) { + aint2[j1 + i1 * k] = i2; + } else { + aint2[j1 + i1 * k] = k1; + } + } + } + } + } + + return aint2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiver.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiver.java new file mode 100644 index 0000000..d461683 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiver.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +public class GenLayerRiver extends GenLayer { + + public GenLayerRiver(long i, GenLayer genlayer) { + super(i); + super.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = this.c(aint[j2 + 0 + (i2 + 1) * k1]); + int l2 = this.c(aint[j2 + 2 + (i2 + 1) * k1]); + int i3 = this.c(aint[j2 + 1 + (i2 + 0) * k1]); + int j3 = this.c(aint[j2 + 1 + (i2 + 2) * k1]); + int k3 = this.c(aint[j2 + 1 + (i2 + 1) * k1]); + + if (k3 == k2 && k3 == i3 && k3 == l2 && k3 == j3) { + aint1[j2 + i2 * k] = -1; + } else { + aint1[j2 + i2 * k] = BiomeBase.RIVER.id; + } + } + } + + return aint1; + } + + private int c(int i) { + return i >= 2 ? 2 + (i & 1) : i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiverMix.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiverMix.java new file mode 100644 index 0000000..9f02d40 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerRiverMix.java @@ -0,0 +1,45 @@ +package net.minecraft.server; + +public class GenLayerRiverMix extends GenLayer { + + private GenLayer c; + private GenLayer d; + + public GenLayerRiverMix(long i, GenLayer genlayer, GenLayer genlayer1) { + super(i); + this.c = genlayer; + this.d = genlayer1; + } + + public void a(long i) { + this.c.a(i); + this.d.a(i); + super.a(i); + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = this.c.a(i, j, k, l); + int[] aint1 = this.d.a(i, j, k, l); + int[] aint2 = IntCache.a(k * l); + + for (int i1 = 0; i1 < k * l; ++i1) { + if (aint[i1] != BiomeBase.OCEAN.id && aint[i1] != BiomeBase.DEEP_OCEAN.id) { + if (aint1[i1] == BiomeBase.RIVER.id) { + if (aint[i1] == BiomeBase.ICE_PLAINS.id) { + aint2[i1] = BiomeBase.FROZEN_RIVER.id; + } else if (aint[i1] != BiomeBase.MUSHROOM_ISLAND.id && aint[i1] != BiomeBase.MUSHROOM_SHORE.id) { + aint2[i1] = aint1[i1] & 255; + } else { + aint2[i1] = BiomeBase.MUSHROOM_SHORE.id; + } + } else { + aint2[i1] = aint[i1]; + } + } else { + aint2[i1] = aint[i1]; + } + } + + return aint2; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSmooth.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSmooth.java new file mode 100644 index 0000000..6dd1163 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSmooth.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +public class GenLayerSmooth extends GenLayer { + + public GenLayerSmooth(long i, GenLayer genlayer) { + super(i); + super.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 0 + (i2 + 1) * k1]; + int l2 = aint[j2 + 2 + (i2 + 1) * k1]; + int i3 = aint[j2 + 1 + (i2 + 0) * k1]; + int j3 = aint[j2 + 1 + (i2 + 2) * k1]; + int k3 = aint[j2 + 1 + (i2 + 1) * k1]; + + if (k2 == l2 && i3 == j3) { + this.a((long) (j2 + i), (long) (i2 + j)); + if (this.a(2) == 0) { + k3 = k2; + } else { + k3 = i3; + } + } else { + if (k2 == l2) { + k3 = k2; + } + + if (i3 == j3) { + k3 = i3; + } + } + + aint1[j2 + i2 * k] = k3; + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSpecial.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSpecial.java new file mode 100644 index 0000000..33b4cfb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerSpecial.java @@ -0,0 +1,144 @@ +package net.minecraft.server; + +public class GenLayerSpecial extends GenLayer { + + private final GenLayerSpecial.EnumGenLayerSpecial c; + + public GenLayerSpecial(long i, GenLayer genlayer, GenLayerSpecial.EnumGenLayerSpecial genlayerspecial_enumgenlayerspecial) { + super(i); + this.a = genlayer; + this.c = genlayerspecial_enumgenlayerspecial; + } + + public int[] a(int i, int j, int k, int l) { + switch (GenLayerSpecial.SyntheticClass_1.a[this.c.ordinal()]) { + case 1: + default: + return this.c(i, j, k, l); + + case 2: + return this.d(i, j, k, l); + + case 3: + return this.e(i, j, k, l); + } + } + + private int[] c(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = 1 + k + 1; + int l1 = 1 + l + 1; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + this.a((long) (j2 + i), (long) (i2 + j)); + int k2 = aint[j2 + 1 + (i2 + 1) * k1]; + + if (k2 == 1) { + int l2 = aint[j2 + 1 + (i2 + 1 - 1) * k1]; + int i3 = aint[j2 + 1 + 1 + (i2 + 1) * k1]; + int j3 = aint[j2 + 1 - 1 + (i2 + 1) * k1]; + int k3 = aint[j2 + 1 + (i2 + 1 + 1) * k1]; + boolean flag = l2 == 3 || i3 == 3 || j3 == 3 || k3 == 3; + boolean flag1 = l2 == 4 || i3 == 4 || j3 == 4 || k3 == 4; + + if (flag || flag1) { + k2 = 2; + } + } + + aint1[j2 + i2 * k] = k2; + } + } + + return aint1; + } + + private int[] d(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = 1 + k + 1; + int l1 = 1 + l + 1; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 1 + (i2 + 1) * k1]; + + if (k2 == 4) { + int l2 = aint[j2 + 1 + (i2 + 1 - 1) * k1]; + int i3 = aint[j2 + 1 + 1 + (i2 + 1) * k1]; + int j3 = aint[j2 + 1 - 1 + (i2 + 1) * k1]; + int k3 = aint[j2 + 1 + (i2 + 1 + 1) * k1]; + boolean flag = l2 == 2 || i3 == 2 || j3 == 2 || k3 == 2; + boolean flag1 = l2 == 1 || i3 == 1 || j3 == 1 || k3 == 1; + + if (flag1 || flag) { + k2 = 3; + } + } + + aint1[j2 + i2 * k] = k2; + } + } + + return aint1; + } + + private int[] e(int i, int j, int k, int l) { + int[] aint = this.a.a(i, j, k, l); + int[] aint1 = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (j1 + i), (long) (i1 + j)); + int k1 = aint[j1 + i1 * k]; + + if (k1 != 0 && this.a(13) == 0) { + k1 |= 1 + this.a(15) << 8 & 3840; + } + + aint1[j1 + i1 * k] = k1; + } + } + + return aint1; + } + + static class SyntheticClass_1 { + + static final int[] a = new int[GenLayerSpecial.EnumGenLayerSpecial.values().length]; + + static { + try { + GenLayerSpecial.SyntheticClass_1.a[GenLayerSpecial.EnumGenLayerSpecial.COOL_WARM.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + GenLayerSpecial.SyntheticClass_1.a[GenLayerSpecial.EnumGenLayerSpecial.HEAT_ICE.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + GenLayerSpecial.SyntheticClass_1.a[GenLayerSpecial.EnumGenLayerSpecial.SPECIAL.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + } + } + + public static enum EnumGenLayerSpecial { + + COOL_WARM, HEAT_ICE, SPECIAL; + + private EnumGenLayerSpecial() {} + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerTopSoil.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerTopSoil.java new file mode 100644 index 0000000..9e26498 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerTopSoil.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public class GenLayerTopSoil extends GenLayer { + + public GenLayerTopSoil(long i, GenLayer genlayer) { + super(i); + this.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int[] aint1 = IntCache.a(k * l); + + for (int i2 = 0; i2 < l; ++i2) { + for (int j2 = 0; j2 < k; ++j2) { + int k2 = aint[j2 + 1 + (i2 + 1) * k1]; + + this.a((long) (j2 + i), (long) (i2 + j)); + if (k2 == 0) { + aint1[j2 + i2 * k] = 0; + } else { + int l2 = this.a(6); + byte b0; + + if (l2 == 0) { + b0 = 4; + } else if (l2 <= 1) { + b0 = 3; + } else { + b0 = 1; + } + + aint1[j2 + i2 * k] = b0; + } + } + } + + return aint1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoom.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoom.java new file mode 100644 index 0000000..9bb3731 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoom.java @@ -0,0 +1,59 @@ +package net.minecraft.server; + +public class GenLayerZoom extends GenLayer { + + public GenLayerZoom(long i, GenLayer genlayer) { + super(i); + super.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + int i1 = i >> 1; + int j1 = j >> 1; + int k1 = (k >> 1) + 2; + int l1 = (l >> 1) + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int i2 = k1 - 1 << 1; + int j2 = l1 - 1 << 1; + int[] aint1 = IntCache.a(i2 * j2); + + int k2; + + for (int l2 = 0; l2 < l1 - 1; ++l2) { + k2 = (l2 << 1) * i2; + int i3 = 0; + int j3 = aint[i3 + 0 + (l2 + 0) * k1]; + + for (int k3 = aint[i3 + 0 + (l2 + 1) * k1]; i3 < k1 - 1; ++i3) { + this.a((long) (i3 + i1 << 1), (long) (l2 + j1 << 1)); + int l3 = aint[i3 + 1 + (l2 + 0) * k1]; + int i4 = aint[i3 + 1 + (l2 + 1) * k1]; + + aint1[k2] = j3; + aint1[k2++ + i2] = this.a(new int[] { j3, k3}); + aint1[k2] = this.a(new int[] { j3, l3}); + aint1[k2++ + i2] = this.b(j3, l3, k3, i4); + j3 = l3; + k3 = i4; + } + } + + int[] aint2 = IntCache.a(k * l); + + for (k2 = 0; k2 < l; ++k2) { + System.arraycopy(aint1, (k2 + (j & 1)) * i2 + (i & 1), aint2, k2 * k, k); + } + + return aint2; + } + + public static GenLayer b(long i, GenLayer genlayer, int j) { + Object object = genlayer; + + for (int k = 0; k < j; ++k) { + object = new GenLayerZoom(i + (long) k, (GenLayer) object); + } + + return (GenLayer) object; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomFuzzy.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomFuzzy.java new file mode 100644 index 0000000..b139208 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomFuzzy.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class GenLayerZoomFuzzy extends GenLayerZoom { + + public GenLayerZoomFuzzy(long i, GenLayer genlayer) { + super(i, genlayer); + } + + protected int b(int i, int j, int k, int l) { + return this.a(new int[] { i, j, k, l}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomVoronoi.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomVoronoi.java new file mode 100644 index 0000000..4b71fcd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GenLayerZoomVoronoi.java @@ -0,0 +1,83 @@ +package net.minecraft.server; + +public class GenLayerZoomVoronoi extends GenLayer { + + public GenLayerZoomVoronoi(long i, GenLayer genlayer) { + super(i); + super.a = genlayer; + } + + public int[] a(int i, int j, int k, int l) { + i -= 2; + j -= 2; + int i1 = i >> 2; + int j1 = j >> 2; + int k1 = (k >> 2) + 2; + int l1 = (l >> 2) + 2; + int[] aint = this.a.a(i1, j1, k1, l1); + int i2 = k1 - 1 << 2; + int j2 = l1 - 1 << 2; + int[] aint1 = IntCache.a(i2 * j2); + + int k2; + + for (int l2 = 0; l2 < l1 - 1; ++l2) { + k2 = 0; + int i3 = aint[k2 + 0 + (l2 + 0) * k1]; + + for (int j3 = aint[k2 + 0 + (l2 + 1) * k1]; k2 < k1 - 1; ++k2) { + double d0 = 3.6D; + + this.a((long) (k2 + i1 << 2), (long) (l2 + j1 << 2)); + double d1 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D; + double d2 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D; + + this.a((long) (k2 + i1 + 1 << 2), (long) (l2 + j1 << 2)); + double d3 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D + 4.0D; + double d4 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D; + + this.a((long) (k2 + i1 << 2), (long) (l2 + j1 + 1 << 2)); + double d5 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D; + double d6 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D + 4.0D; + + this.a((long) (k2 + i1 + 1 << 2), (long) (l2 + j1 + 1 << 2)); + double d7 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D + 4.0D; + double d8 = ((double) this.a(1024) / 1024.0D - 0.5D) * 3.6D + 4.0D; + int k3 = aint[k2 + 1 + (l2 + 0) * k1] & 255; + int l3 = aint[k2 + 1 + (l2 + 1) * k1] & 255; + + for (int i4 = 0; i4 < 4; ++i4) { + int j4 = ((l2 << 2) + i4) * i2 + (k2 << 2); + + for (int k4 = 0; k4 < 4; ++k4) { + double d9 = ((double) i4 - d2) * ((double) i4 - d2) + ((double) k4 - d1) * ((double) k4 - d1); + double d10 = ((double) i4 - d4) * ((double) i4 - d4) + ((double) k4 - d3) * ((double) k4 - d3); + double d11 = ((double) i4 - d6) * ((double) i4 - d6) + ((double) k4 - d5) * ((double) k4 - d5); + double d12 = ((double) i4 - d8) * ((double) i4 - d8) + ((double) k4 - d7) * ((double) k4 - d7); + + if (d9 < d10 && d9 < d11 && d9 < d12) { + aint1[j4++] = i3; + } else if (d10 < d9 && d10 < d11 && d10 < d12) { + aint1[j4++] = k3; + } else if (d11 < d9 && d11 < d10 && d11 < d12) { + aint1[j4++] = j3; + } else { + aint1[j4++] = l3; + } + } + } + + i3 = k3; + j3 = l3; + } + } + + int[] aint2 = IntCache.a(k * l); + + for (k2 = 0; k2 < l; ++k2) { + System.arraycopy(aint1, (k2 + (j & 3)) * i2 + (i & 3), aint2, k2 * k, k); + } + + return aint2; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/GenericAttributes.java b/eSpigot-Server/src/main/java/net/minecraft/server/GenericAttributes.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/GenericAttributes.java rename to eSpigot-Server/src/main/java/net/minecraft/server/GenericAttributes.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GroupDataEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/GroupDataEntity.java new file mode 100644 index 0000000..464d2fa --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GroupDataEntity.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface GroupDataEntity {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/GuiStatsComponent.java b/eSpigot-Server/src/main/java/net/minecraft/server/GuiStatsComponent.java new file mode 100644 index 0000000..0325109 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/GuiStatsComponent.java @@ -0,0 +1,76 @@ +package net.minecraft.server; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.DecimalFormat; +import javax.swing.JComponent; +import javax.swing.Timer; + +public class GuiStatsComponent extends JComponent { + + private static final DecimalFormat a = new DecimalFormat("########0.000"); + private int[] b = new int[256]; + private int c; + private String[] d = new String[11]; + private final MinecraftServer e; + + public GuiStatsComponent(MinecraftServer minecraftserver) { + this.e = minecraftserver; + this.setPreferredSize(new Dimension(456, 246)); + this.setMinimumSize(new Dimension(456, 246)); + this.setMaximumSize(new Dimension(456, 246)); + (new Timer(500, new ActionListener() { + public void actionPerformed(ActionEvent actionevent) { + GuiStatsComponent.this.a(); + } + })).start(); + this.setBackground(Color.BLACK); + } + + private void a() { + long i = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + + System.gc(); + this.d[0] = "Memory use: " + i / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; + this.d[1] = "Avg tick: " + GuiStatsComponent.a.format(this.a(this.e.h) * 1.0E-6D) + " ms"; + this.repaint(); + } + + private double a(long[] along) { + long i = 0L; + + for (int j = 0; j < along.length; ++j) { + i += along[j]; + } + + return (double) i / (double) along.length; + } + + public void paint(Graphics graphics) { + graphics.setColor(new Color(16777215)); + graphics.fillRect(0, 0, 456, 246); + + int i; + + for (i = 0; i < 256; ++i) { + int j = this.b[i + this.c & 255]; + + graphics.setColor(new Color(j + 28 << 16)); + graphics.fillRect(i, 100 - j, 1, j); + } + + graphics.setColor(Color.BLACK); + + for (i = 0; i < this.d.length; ++i) { + String s = this.d[i]; + + if (s != null) { + graphics.drawString(s, 32, 116 + i * 16); + } + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java similarity index 67% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java rename to eSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java index 7ff8cae..4d40a43 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/HandshakeListener.java @@ -29,34 +29,36 @@ public class HandshakeListener implements PacketHandshakingInListener { // CraftBukkit start - Connection throttle try { - long currentTime = System.currentTimeMillis(); - long connectionThrottle = MinecraftServer.getServer().server.getConnectionThrottle(); - InetAddress address = ((java.net.InetSocketAddress) this.b.getSocketAddress()).getAddress(); + if (!(this.b.channel.localAddress() instanceof io.netty.channel.unix.DomainSocketAddress)) { // PandaSpigot - the connection throttle is useless when you have a Unix domain socket + long currentTime = System.currentTimeMillis(); + long connectionThrottle = MinecraftServer.getServer().server.getConnectionThrottle(); + InetAddress address = ((java.net.InetSocketAddress) this.b.getSocketAddress()).getAddress(); + + synchronized (throttleTracker) { + if (throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - throttleTracker.get(address) < connectionThrottle) { + throttleTracker.put(address, currentTime); + chatcomponenttext = new ChatComponentText("Connection throttled! Please wait before reconnecting."); + this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext)); + this.b.close(chatcomponenttext); + return; + } - synchronized (throttleTracker) { - if (throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - throttleTracker.get(address) < connectionThrottle) { throttleTracker.put(address, currentTime); - chatcomponenttext = new ChatComponentText("Connection throttled! Please wait before reconnecting."); - this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext)); - this.b.close(chatcomponenttext); - return; - } + throttleCounter++; + if (throttleCounter > 200) { + throttleCounter = 0; - throttleTracker.put(address, currentTime); - throttleCounter++; - if (throttleCounter > 200) { - throttleCounter = 0; - - // Cleanup stale entries - java.util.Iterator iter = throttleTracker.entrySet().iterator(); - while (iter.hasNext()) { - java.util.Map.Entry entry = (java.util.Map.Entry) iter.next(); - if (entry.getValue() > connectionThrottle) { - iter.remove(); + // Cleanup stale entries + java.util.Iterator iter = throttleTracker.entrySet().iterator(); + while (iter.hasNext()) { + java.util.Map.Entry entry = (java.util.Map.Entry) iter.next(); + if (entry.getValue() > connectionThrottle) { + iter.remove(); + } } } } - } + } // PandaSpigot - add closing bracket for if check above } catch (Throwable t) { org.apache.logging.log4j.LogManager.getLogger().debug("Failed to check connection throttle", t); } @@ -76,8 +78,11 @@ public class HandshakeListener implements PacketHandshakingInListener { if (org.spigotmc.SpigotConfig.bungee) { String[] split = packethandshakinginsetprotocol.hostname.split("\00"); if ( split.length == 3 || split.length == 4 ) { + // PandaSpigot start - Unix domain socket support + java.net.SocketAddress socketAddress = b.getSocketAddress(); packethandshakinginsetprotocol.hostname = split[0]; - b.l = new java.net.InetSocketAddress(split[1], ((java.net.InetSocketAddress) b.getSocketAddress()).getPort()); + b.l = new java.net.InetSocketAddress(split[1], socketAddress instanceof java.net.InetSocketAddress ? ((java.net.InetSocketAddress) socketAddress).getPort() : 0); + // PandaSpigot end b.spoofedUUID = com.mojang.util.UUIDTypeAdapter.fromString( split[2] ); } else { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/HttpUtilities.java b/eSpigot-Server/src/main/java/net/minecraft/server/HttpUtilities.java new file mode 100644 index 0000000..4132d8b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/HttpUtilities.java @@ -0,0 +1,105 @@ +package net.minecraft.server; + +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class HttpUtilities { + + public static final ListeningExecutorService a = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool((new ThreadFactoryBuilder()).setDaemon(true).setNameFormat("Downloader %d").build())); + private static final AtomicInteger b = new AtomicInteger(0); + private static final Logger c = LogManager.getLogger(); + + public static String a(Map map) { + StringBuilder stringbuilder = new StringBuilder(); + Iterator iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (stringbuilder.length() > 0) { + stringbuilder.append('&'); + } + + try { + stringbuilder.append(URLEncoder.encode((String) entry.getKey(), "UTF-8")); + } catch (UnsupportedEncodingException unsupportedencodingexception) { + unsupportedencodingexception.printStackTrace(); + } + + if (entry.getValue() != null) { + stringbuilder.append('='); + + try { + stringbuilder.append(URLEncoder.encode(entry.getValue().toString(), "UTF-8")); + } catch (UnsupportedEncodingException unsupportedencodingexception1) { + unsupportedencodingexception1.printStackTrace(); + } + } + } + + return stringbuilder.toString(); + } + + public static String a(URL url, Map map, boolean flag) { + return a(url, a(map), flag); + } + + private static String a(URL url, String s, boolean flag) { + try { + Proxy proxy = MinecraftServer.getServer() == null ? null : MinecraftServer.getServer().ay(); + + if (proxy == null) { + proxy = Proxy.NO_PROXY; + } + + HttpURLConnection httpurlconnection = (HttpURLConnection) url.openConnection(proxy); + + httpurlconnection.setRequestMethod("POST"); + httpurlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + httpurlconnection.setRequestProperty("Content-Length", "" + s.getBytes().length); + httpurlconnection.setRequestProperty("Content-Language", "en-US"); + httpurlconnection.setUseCaches(false); + httpurlconnection.setDoInput(true); + httpurlconnection.setDoOutput(true); + DataOutputStream dataoutputstream = new DataOutputStream(httpurlconnection.getOutputStream()); + + dataoutputstream.writeBytes(s); + dataoutputstream.flush(); + dataoutputstream.close(); + BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(httpurlconnection.getInputStream())); + StringBuffer stringbuffer = new StringBuffer(); + + String s1; + + while ((s1 = bufferedreader.readLine()) != null) { + stringbuffer.append(s1); + stringbuffer.append('\r'); + } + + bufferedreader.close(); + return stringbuffer.toString(); + } catch (Exception exception) { + if (!flag) { + HttpUtilities.c.error("Could not post to " + url, exception); + } + + return ""; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/IAnimal.java new file mode 100644 index 0000000..78d3914 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IAnimal.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface IAnimal {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncChunkSaver.java b/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncChunkSaver.java new file mode 100644 index 0000000..dde4c47 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncChunkSaver.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IAsyncChunkSaver { + + boolean c(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncTaskHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncTaskHandler.java new file mode 100644 index 0000000..41cdbe7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IAsyncTaskHandler.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +import com.google.common.util.concurrent.ListenableFuture; + +public interface IAsyncTaskHandler { + + ListenableFuture postToMainThread(Runnable runnable); + + boolean isMainThread(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IAttribute.java b/eSpigot-Server/src/main/java/net/minecraft/server/IAttribute.java new file mode 100644 index 0000000..e76405d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IAttribute.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public interface IAttribute { + + String getName(); + + double a(double d0); + + double b(); + + boolean c(); + + IAttribute d(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IBlockAccess.java b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockAccess.java new file mode 100644 index 0000000..304e827 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockAccess.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public interface IBlockAccess { + + TileEntity getTileEntity(BlockPosition blockposition); + + IBlockData getType(BlockPosition blockposition); + + boolean isEmpty(BlockPosition blockposition); + + int getBlockPower(BlockPosition blockposition, EnumDirection enumdirection); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IBlockData.java b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockData.java new file mode 100644 index 0000000..3c3ab0c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockData.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import com.google.common.collect.ImmutableMap; +import java.util.Collection; + +public interface IBlockData { + + Collection a(); + + > T get(IBlockState iblockstate); + + , V extends T> IBlockData set(IBlockState iblockstate, V v0); + + > IBlockData a(IBlockState iblockstate); + + ImmutableMap b(); + + Block getBlock(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IBlockFragilePlantElement.java b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockFragilePlantElement.java new file mode 100644 index 0000000..2df9744 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockFragilePlantElement.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +import java.util.Random; + +public interface IBlockFragilePlantElement { + + boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag); + + boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata); + + void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IBlockState.java b/eSpigot-Server/src/main/java/net/minecraft/server/IBlockState.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IBlockState.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IBlockState.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IChatBaseComponent.java b/eSpigot-Server/src/main/java/net/minecraft/server/IChatBaseComponent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IChatBaseComponent.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IChatBaseComponent.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IChunkLoader.java b/eSpigot-Server/src/main/java/net/minecraft/server/IChunkLoader.java new file mode 100644 index 0000000..df4c1e0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IChunkLoader.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +import java.io.IOException; + +public interface IChunkLoader { + + Chunk a(World world, int i, int j) throws IOException; + + void a(World world, Chunk chunk) throws IOException, ExceptionWorldConflict; + + void b(World world, Chunk chunk) throws IOException; + + void a(); + + void b(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IChunkProvider.java b/eSpigot-Server/src/main/java/net/minecraft/server/IChunkProvider.java new file mode 100644 index 0000000..c68ffe0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IChunkProvider.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.util.List; + +public interface IChunkProvider { + + boolean isChunkLoaded(int i, int j); + + Chunk getOrCreateChunk(int i, int j); + + Chunk getChunkAt(BlockPosition blockposition); + + void getChunkAt(IChunkProvider ichunkprovider, int i, int j); + + boolean a(IChunkProvider ichunkprovider, Chunk chunk, int i, int j); + + boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate); + + boolean unloadChunks(); + + boolean canSave(); + + String getName(); + + List getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition); + + BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockposition); + + int getLoadedChunks(); + + void recreateStructures(Chunk chunk, int i, int j); + + void c(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ICommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ICommand.java new file mode 100644 index 0000000..7c87a09 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ICommand.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +import java.util.List; + +public interface ICommand extends Comparable { + + String getCommand(); + + String getUsage(ICommandListener icommandlistener); + + List b(); + + void execute(ICommandListener icommandlistener, String[] astring) throws CommandException; + + boolean canUse(ICommandListener icommandlistener); + + List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition); + + boolean isListStart(String[] astring, int i); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ICommandDispatcher.java b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandDispatcher.java new file mode 100644 index 0000000..6fe2bba --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandDispatcher.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface ICommandDispatcher { + + void a(ICommandListener icommandlistener, ICommand icommand, int i, String s, Object... aobject); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ICommandHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandHandler.java new file mode 100644 index 0000000..1cc3bc0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandHandler.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Map; + +public interface ICommandHandler { + + int a(ICommandListener icommandlistener, String s); + + List a(ICommandListener icommandlistener, String s, BlockPosition blockposition); + + List a(ICommandListener icommandlistener); + + Map getCommands(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ICommandListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandListener.java new file mode 100644 index 0000000..443e967 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ICommandListener.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +public interface ICommandListener { + + String getName(); + + IChatBaseComponent getScoreboardDisplayName(); + + void sendMessage(IChatBaseComponent ichatbasecomponent); + + boolean a(int i, String s); + + BlockPosition getChunkCoordinates(); + + Vec3D d(); + + World getWorld(); + + Entity f(); + + boolean getSendCommandFeedback(); + + void a(CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, int i); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IComplex.java b/eSpigot-Server/src/main/java/net/minecraft/server/IComplex.java new file mode 100644 index 0000000..b92a1f9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IComplex.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface IComplex { + + World a(); + + boolean a(EntityComplexPart entitycomplexpart, DamageSource damagesource, float f); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/IContainer.java new file mode 100644 index 0000000..873c7a2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IContainer.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IContainer { + + TileEntity a(World world, int i); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ICrafting.java b/eSpigot-Server/src/main/java/net/minecraft/server/ICrafting.java new file mode 100644 index 0000000..f528e95 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ICrafting.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +import java.util.List; + +public interface ICrafting { + + void a(Container container, List list); + + void a(Container container, int i, ItemStack itemstack); + + void setContainerData(Container container, int i, int j); + + void setContainerData(Container container, IInventory iinventory); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IDataManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/IDataManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IDataManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IDataManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IDispenseBehavior.java b/eSpigot-Server/src/main/java/net/minecraft/server/IDispenseBehavior.java new file mode 100644 index 0000000..f045a6e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IDispenseBehavior.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public interface IDispenseBehavior { + + IDispenseBehavior NONE = new IDispenseBehavior() { + public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { + return itemstack; + } + }; + + ItemStack a(ISourceBlock isourceblock, ItemStack itemstack); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IEntitySelector.java b/eSpigot-Server/src/main/java/net/minecraft/server/IEntitySelector.java new file mode 100644 index 0000000..1dd636d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IEntitySelector.java @@ -0,0 +1,68 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public final class IEntitySelector { + + public static final Predicate a = new Predicate() { + public boolean a(Entity entity) { + return entity.isAlive(); + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + public static final Predicate b = new Predicate() { + public boolean a(Entity entity) { + return entity.isAlive() && entity.passenger == null && entity.vehicle == null; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + public static final Predicate c = new Predicate() { + public boolean a(Entity entity) { + return entity instanceof IInventory && entity.isAlive(); + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + public static final Predicate d = new Predicate() { + public boolean a(Entity entity) { + return !(entity instanceof EntityHuman) || !((EntityHuman) entity).isSpectator(); + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + + public static class EntitySelectorEquipable implements Predicate { + + private final ItemStack a; + + public EntitySelectorEquipable(ItemStack itemstack) { + this.a = itemstack; + } + + public boolean a(Entity entity) { + if (!entity.isAlive()) { + return false; + } else if (!(entity instanceof EntityLiving)) { + return false; + } else { + EntityLiving entityliving = (EntityLiving) entity; + + return entityliving.getEquipment(EntityInsentient.c(this.a)) != null ? false : (entityliving instanceof EntityInsentient ? ((EntityInsentient) entityliving).bY() : (entityliving instanceof EntityArmorStand ? true : entityliving instanceof EntityHuman)); + } + } + + public boolean apply(Entity object) { + return this.a(object); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/IHopper.java new file mode 100644 index 0000000..58ebe50 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IHopper.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public interface IHopper extends IInventory { + + World getWorld(); + + double A(); + + double B(); + + double C(); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IInventory.java b/eSpigot-Server/src/main/java/net/minecraft/server/IInventory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IInventory.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IInventory.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IInventoryListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/IInventoryListener.java new file mode 100644 index 0000000..9950b76 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IInventoryListener.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IInventoryListener { + + void a(InventorySubcontainer inventorysubcontainer); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IJsonStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/IJsonStatistic.java new file mode 100644 index 0000000..5df213b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IJsonStatistic.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +import com.google.gson.JsonElement; + +public interface IJsonStatistic { + + void a(JsonElement jsonelement); + + JsonElement a(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ILocationSource.java b/eSpigot-Server/src/main/java/net/minecraft/server/ILocationSource.java new file mode 100644 index 0000000..21f31dd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ILocationSource.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface ILocationSource extends ISource {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IMerchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/IMerchant.java new file mode 100644 index 0000000..07a68e3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IMerchant.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public interface IMerchant { + + void a_(EntityHuman entityhuman); + + EntityHuman v_(); + + MerchantRecipeList getOffers(EntityHuman entityhuman); + + void a(MerchantRecipe merchantrecipe); + + void a_(ItemStack itemstack); + + IChatBaseComponent getScoreboardDisplayName(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IMinecraftServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/IMinecraftServer.java new file mode 100644 index 0000000..5692a46 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IMinecraftServer.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public interface IMinecraftServer { + + int a(String s, int i); + + String a(String s, String s1); + + void a(String s, Object object); + + void a(); + + String b(); + + String E(); + + int F(); + + String G(); + + String getVersion(); + + int I(); + + int J(); + + String[] getPlayers(); + + String U(); + + String getPlugins(); + + String executeRemoteCommand(String s); + + boolean isDebugging(); + + void info(String s); + + void warning(String s); + + void g(String s); + + void h(String s); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IMojangStatistics.java b/eSpigot-Server/src/main/java/net/minecraft/server/IMojangStatistics.java new file mode 100644 index 0000000..d906c9c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IMojangStatistics.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface IMojangStatistics { + + void a(MojangStatisticsGenerator mojangstatisticsgenerator); + + void b(MojangStatisticsGenerator mojangstatisticsgenerator); + + boolean getSnooperEnabled(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IMonster.java b/eSpigot-Server/src/main/java/net/minecraft/server/IMonster.java new file mode 100644 index 0000000..8076121 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IMonster.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public interface IMonster extends IAnimal { + + Predicate d = new Predicate() { + public boolean a(Entity entity) { + return entity instanceof IMonster; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + Predicate e = new Predicate() { + public boolean a(Entity entity) { + return entity instanceof IMonster && !entity.isInvisible(); + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/INamable.java b/eSpigot-Server/src/main/java/net/minecraft/server/INamable.java new file mode 100644 index 0000000..c957511 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/INamable.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface INamable { + + String getName(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/INamableTileEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/INamableTileEntity.java new file mode 100644 index 0000000..e82245d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/INamableTileEntity.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface INamableTileEntity { + + String getName(); + + boolean hasCustomName(); + + IChatBaseComponent getScoreboardDisplayName(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IPlayerFileData.java b/eSpigot-Server/src/main/java/net/minecraft/server/IPlayerFileData.java new file mode 100644 index 0000000..8b2d910 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IPlayerFileData.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface IPlayerFileData { + + void save(EntityHuman entityhuman); + + NBTTagCompound load(EntityHuman entityhuman); + + String[] getSeenPlayers(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/IPosition.java new file mode 100644 index 0000000..b883ec9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IPosition.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface IPosition { + + double getX(); + + double getY(); + + double getZ(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IProgressUpdate.java b/eSpigot-Server/src/main/java/net/minecraft/server/IProgressUpdate.java new file mode 100644 index 0000000..3ac3db1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IProgressUpdate.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface IProgressUpdate { + + void a(String s); + + void c(String s); + + void a(int i); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IProjectile.java b/eSpigot-Server/src/main/java/net/minecraft/server/IProjectile.java new file mode 100644 index 0000000..c043481 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IProjectile.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IProjectile { + + void shoot(double d0, double d1, double d2, float f, float f1); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IRangedEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/IRangedEntity.java new file mode 100644 index 0000000..b4178ce --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IRangedEntity.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IRangedEntity { + + void a(EntityLiving entityliving, float f); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IRecipe.java b/eSpigot-Server/src/main/java/net/minecraft/server/IRecipe.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IRecipe.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IRecipe.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IRegistry.java b/eSpigot-Server/src/main/java/net/minecraft/server/IRegistry.java new file mode 100644 index 0000000..fb8e5cc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IRegistry.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface IRegistry extends Iterable {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IScoreboardCriteria.java b/eSpigot-Server/src/main/java/net/minecraft/server/IScoreboardCriteria.java new file mode 100644 index 0000000..5c9fd9a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IScoreboardCriteria.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.List; +import java.util.Map; + +public interface IScoreboardCriteria { + + Map criteria = Maps.newHashMap(); + IScoreboardCriteria b = new ScoreboardBaseCriteria("dummy"); + IScoreboardCriteria c = new ScoreboardBaseCriteria("trigger"); + IScoreboardCriteria d = new ScoreboardBaseCriteria("deathCount"); + IScoreboardCriteria e = new ScoreboardBaseCriteria("playerKillCount"); + IScoreboardCriteria f = new ScoreboardBaseCriteria("totalKillCount"); + IScoreboardCriteria g = new ScoreboardHealthCriteria("health"); + IScoreboardCriteria[] h = new IScoreboardCriteria[] { new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.BLACK), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_BLUE), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_GREEN), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_AQUA), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_RED), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_PURPLE), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.GOLD), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.GRAY), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.DARK_GRAY), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.BLUE), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.GREEN), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.AQUA), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.RED), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.LIGHT_PURPLE), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.YELLOW), new ScoreboardCriteriaInteger("teamkill.", EnumChatFormat.WHITE)}; + IScoreboardCriteria[] i = new IScoreboardCriteria[] { new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.BLACK), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_BLUE), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_GREEN), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_AQUA), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_RED), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_PURPLE), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.GOLD), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.GRAY), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.DARK_GRAY), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.BLUE), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.GREEN), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.AQUA), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.RED), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.LIGHT_PURPLE), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.YELLOW), new ScoreboardCriteriaInteger("killedByTeam.", EnumChatFormat.WHITE)}; + + String getName(); + + int getScoreModifier(List list); + + boolean isReadOnly(); + + IScoreboardCriteria.EnumScoreboardHealthDisplay c(); + + public static enum EnumScoreboardHealthDisplay { + + INTEGER("integer"), HEARTS("hearts"); + + private static final Map c = Maps.newHashMap(); + private final String d; + + private EnumScoreboardHealthDisplay(String s) { + this.d = s; + } + + public String a() { + return this.d; + } + + public static IScoreboardCriteria.EnumScoreboardHealthDisplay a(String s) { + IScoreboardCriteria.EnumScoreboardHealthDisplay iscoreboardcriteria_enumscoreboardhealthdisplay = (IScoreboardCriteria.EnumScoreboardHealthDisplay) IScoreboardCriteria.EnumScoreboardHealthDisplay.c.get(s); + + return iscoreboardcriteria_enumscoreboardhealthdisplay == null ? IScoreboardCriteria.EnumScoreboardHealthDisplay.INTEGER : iscoreboardcriteria_enumscoreboardhealthdisplay; + } + + static { + IScoreboardCriteria.EnumScoreboardHealthDisplay[] aiscoreboardcriteria_enumscoreboardhealthdisplay = values(); + int i = aiscoreboardcriteria_enumscoreboardhealthdisplay.length; + + for (int j = 0; j < i; ++j) { + IScoreboardCriteria.EnumScoreboardHealthDisplay iscoreboardcriteria_enumscoreboardhealthdisplay = aiscoreboardcriteria_enumscoreboardhealthdisplay[j]; + + IScoreboardCriteria.EnumScoreboardHealthDisplay.c.put(iscoreboardcriteria_enumscoreboardhealthdisplay.a(), iscoreboardcriteria_enumscoreboardhealthdisplay); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ISource.java b/eSpigot-Server/src/main/java/net/minecraft/server/ISource.java new file mode 100644 index 0000000..9424003 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ISource.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface ISource extends IPosition { + + World getWorld(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ISourceBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/ISourceBlock.java new file mode 100644 index 0000000..a028295 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ISourceBlock.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public interface ISourceBlock extends ILocationSource { + + double getX(); + + double getY(); + + double getZ(); + + BlockPosition getBlockPosition(); + + int f(); + + T getTileEntity(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ITileEntityContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ITileEntityContainer.java new file mode 100644 index 0000000..4da4298 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ITileEntityContainer.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface ITileEntityContainer extends INamableTileEntity { + + Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman); + + String getContainerName(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ITileInventory.java b/eSpigot-Server/src/main/java/net/minecraft/server/ITileInventory.java new file mode 100644 index 0000000..6dc5cbc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ITileInventory.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface ITileInventory extends IInventory, ITileEntityContainer { + + boolean r_(); + + void a(ChestLock chestlock); + + ChestLock i(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IUpdatePlayerListBox.java b/eSpigot-Server/src/main/java/net/minecraft/server/IUpdatePlayerListBox.java new file mode 100644 index 0000000..63e38c9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IUpdatePlayerListBox.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface IUpdatePlayerListBox { + + void c(); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IWorldAccess.java b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldAccess.java new file mode 100644 index 0000000..3070925 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldAccess.java @@ -0,0 +1,28 @@ +package net.minecraft.server; + +public interface IWorldAccess { + + void a(BlockPosition blockposition); + + void b(BlockPosition blockposition); + + void a(int i, int j, int k, int l, int i1, int j1); + + void a(String s, double d0, double d1, double d2, float f, float f1); + + void a(EntityHuman entityhuman, String s, double d0, double d1, double d2, float f, float f1); + + void a(int i, boolean flag, double d0, double d1, double d2, double d3, double d4, double d5, int... aint); + + void a(Entity entity); + + void b(Entity entity); + + void a(String s, BlockPosition blockposition); + + void a(int i, BlockPosition blockposition, int j); + + void a(EntityHuman entityhuman, int i, BlockPosition blockposition, int j); + + void b(int i, BlockPosition blockposition, int j); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IWorldBorderListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldBorderListener.java new file mode 100644 index 0000000..4552acd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldBorderListener.java @@ -0,0 +1,18 @@ +package net.minecraft.server; + +public interface IWorldBorderListener { + + void a(WorldBorder worldborder, double d0); + + void a(WorldBorder worldborder, double d0, double d1, long i); + + void a(WorldBorder worldborder, double d0, double d1); + + void a(WorldBorder worldborder, int i); + + void b(WorldBorder worldborder, int i); + + void b(WorldBorder worldborder, double d0); + + void c(WorldBorder worldborder, double d0); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IWorldInventory.java b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldInventory.java new file mode 100644 index 0000000..e935b4d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IWorldInventory.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +public interface IWorldInventory extends IInventory { + + int[] getSlotsForFace(EnumDirection enumdirection); + + boolean canPlaceItemThroughFace(int i, ItemStack itemstack, EnumDirection enumdirection); + + boolean canTakeItemThroughFace(int i, ItemStack itemstack, EnumDirection enumdirection); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/InsensitiveStringMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/InsensitiveStringMap.java new file mode 100644 index 0000000..1d67b28 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/InsensitiveStringMap.java @@ -0,0 +1,74 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +public class InsensitiveStringMap implements Map { + + private final Map a = Maps.newLinkedHashMap(); + + public InsensitiveStringMap() {} + + public int size() { + return this.a.size(); + } + + public boolean isEmpty() { + return this.a.isEmpty(); + } + + public boolean containsKey(Object object) { + return this.a.containsKey(object.toString().toLowerCase()); + } + + public boolean containsValue(Object object) { + return this.a.containsKey(object); + } + + public V get(Object object) { + return this.a.get(object.toString().toLowerCase()); + } + + public V a(String s, V v0) { + return this.a.put(s.toLowerCase(), v0); + } + + public V remove(Object object) { + return this.a.remove(object.toString().toLowerCase()); + } + + public void putAll(Map map) { + Iterator iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + this.a((String) entry.getKey(), (V) entry.getValue()); + } + + } + + public void clear() { + this.a.clear(); + } + + public Set keySet() { + return this.a.keySet(); + } + + public Collection values() { + return this.a.values(); + } + + public Set> entrySet() { + return this.a.entrySet(); + } + + public V put(String object, V object1) { + return this.a(object, object1); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/InstantMobEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/InstantMobEffect.java new file mode 100644 index 0000000..50a5124 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/InstantMobEffect.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class InstantMobEffect extends MobEffectList { + + public InstantMobEffect(int i, MinecraftKey minecraftkey, boolean flag, int j) { + super(i, minecraftkey, flag, j); + } + + public boolean isInstant() { + return true; + } + + public boolean a(int i, int j) { + return i >= 1; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/IntCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/IntCache.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/IntCache.java rename to eSpigot-Server/src/main/java/net/minecraft/server/IntCache.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IntHashMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/IntHashMap.java new file mode 100644 index 0000000..f3dd9b5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IntHashMap.java @@ -0,0 +1,207 @@ +package net.minecraft.server; + +public class IntHashMap { + + private transient IntHashMap.IntHashMapEntry[] a = new IntHashMap.IntHashMapEntry[16]; + private transient int b; + private int c = 12; + private final float d = 0.75F; + + public IntHashMap() {} + + private static int g(int i) { + i ^= i >>> 20 ^ i >>> 12; + return i ^ i >>> 7 ^ i >>> 4; + } + + private static int a(int i, int j) { + return i & j - 1; + } + + public V get(int i) { + int j = g(i); + + for (IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.a[a(j, this.a.length)]; inthashmap_inthashmapentry != null; inthashmap_inthashmapentry = inthashmap_inthashmapentry.c) { + if (inthashmap_inthashmapentry.a == i) { + return inthashmap_inthashmapentry.b; + } + } + + return null; + } + + public boolean b(int i) { + return this.c(i) != null; + } + + final IntHashMap.IntHashMapEntry c(int i) { + int j = g(i); + + for (IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.a[a(j, this.a.length)]; inthashmap_inthashmapentry != null; inthashmap_inthashmapentry = inthashmap_inthashmapentry.c) { + if (inthashmap_inthashmapentry.a == i) { + return inthashmap_inthashmapentry; + } + } + + return null; + } + + public void a(int i, V v0) { + int j = g(i); + int k = a(j, this.a.length); + + for (IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.a[k]; inthashmap_inthashmapentry != null; inthashmap_inthashmapentry = inthashmap_inthashmapentry.c) { + if (inthashmap_inthashmapentry.a == i) { + inthashmap_inthashmapentry.b = v0; + return; + } + } + + this.a(j, i, v0, k); + } + + private void h(int i) { + IntHashMap.IntHashMapEntry[] ainthashmap_inthashmapentry = this.a; + int j = ainthashmap_inthashmapentry.length; + + if (j == 1073741824) { + this.c = Integer.MAX_VALUE; + } else { + IntHashMap.IntHashMapEntry[] ainthashmap_inthashmapentry1 = new IntHashMap.IntHashMapEntry[i]; + + this.a(ainthashmap_inthashmapentry1); + this.a = ainthashmap_inthashmapentry1; + this.c = (int) ((float) i * this.d); + } + } + + private void a(IntHashMap.IntHashMapEntry[] ainthashmap_inthashmapentry) { + IntHashMap.IntHashMapEntry[] ainthashmap_inthashmapentry1 = this.a; + int i = ainthashmap_inthashmapentry.length; + + for (int j = 0; j < ainthashmap_inthashmapentry1.length; ++j) { + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = ainthashmap_inthashmapentry1[j]; + + if (inthashmap_inthashmapentry != null) { + ainthashmap_inthashmapentry1[j] = null; + + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry1; + + do { + inthashmap_inthashmapentry1 = inthashmap_inthashmapentry.c; + int k = a(inthashmap_inthashmapentry.d, i); + + inthashmap_inthashmapentry.c = ainthashmap_inthashmapentry[k]; + ainthashmap_inthashmapentry[k] = inthashmap_inthashmapentry; + inthashmap_inthashmapentry = inthashmap_inthashmapentry1; + } while (inthashmap_inthashmapentry1 != null); + } + } + + } + + public V d(int i) { + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.e(i); + + return inthashmap_inthashmapentry == null ? null : inthashmap_inthashmapentry.b; + } + + final IntHashMap.IntHashMapEntry e(int i) { + int j = g(i); + int k = a(j, this.a.length); + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.a[k]; + + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry1; + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry2; + + for (inthashmap_inthashmapentry1 = inthashmap_inthashmapentry; inthashmap_inthashmapentry1 != null; inthashmap_inthashmapentry1 = inthashmap_inthashmapentry2) { + inthashmap_inthashmapentry2 = inthashmap_inthashmapentry1.c; + if (inthashmap_inthashmapentry1.a == i) { + --this.b; + if (inthashmap_inthashmapentry == inthashmap_inthashmapentry1) { + this.a[k] = inthashmap_inthashmapentry2; + } else { + inthashmap_inthashmapentry.c = inthashmap_inthashmapentry2; + } + + return inthashmap_inthashmapentry1; + } + + inthashmap_inthashmapentry = inthashmap_inthashmapentry1; + } + + return inthashmap_inthashmapentry1; + } + + public void c() { + IntHashMap.IntHashMapEntry[] ainthashmap_inthashmapentry = this.a; + + for (int i = 0; i < ainthashmap_inthashmapentry.length; ++i) { + ainthashmap_inthashmapentry[i] = null; + } + + this.b = 0; + } + + private void a(int i, int j, V v0, int k) { + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = this.a[k]; + + this.a[k] = new IntHashMap.IntHashMapEntry(i, j, v0, inthashmap_inthashmapentry); + if (this.b++ >= this.c) { + this.h(2 * this.a.length); + } + + } + + static class IntHashMapEntry { + + final int a; + V b; + IntHashMap.IntHashMapEntry c; + final int d; + + IntHashMapEntry(int i, int j, V v0, IntHashMap.IntHashMapEntry inthashmap_inthashmapentry) { + this.b = v0; + this.c = inthashmap_inthashmapentry; + this.a = j; + this.d = i; + } + + public final int a() { + return this.a; + } + + public final V b() { + return this.b; + } + + public final boolean equals(Object object) { + if (!(object instanceof IntHashMap.IntHashMapEntry)) { + return false; + } else { + IntHashMap.IntHashMapEntry inthashmap_inthashmapentry = (IntHashMap.IntHashMapEntry) object; + Integer integer = Integer.valueOf(this.a()); + Integer integer1 = Integer.valueOf(inthashmap_inthashmapentry.a()); + + if (integer == integer1 || integer != null && integer.equals(integer1)) { + Object object1 = this.b(); + Object object2 = inthashmap_inthashmapentry.b(); + + if (object1 == object2 || object1 != null && object1.equals(object2)) { + return true; + } + } + + return false; + } + } + + public final int hashCode() { + return IntHashMap.g(this.a); + } + + public final String toString() { + return this.a() + "=" + this.b(); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryCraftResult.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryCraftResult.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryCraftResult.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryCraftResult.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryCrafting.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryCrafting.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryCrafting.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryCrafting.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryEnderChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryEnderChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryEnderChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryEnderChest.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryHorseChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryHorseChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryHorseChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryHorseChest.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryLargeChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryLargeChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryLargeChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryLargeChest.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryMerchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryMerchant.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventoryMerchant.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventoryMerchant.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/InventorySubcontainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventorySubcontainer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/InventorySubcontainer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/InventorySubcontainer.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/InventoryUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryUtils.java new file mode 100644 index 0000000..55ab12f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/InventoryUtils.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import java.util.Random; + +public class InventoryUtils { + + private static final Random a = new Random(); + + public static void dropInventory(World world, BlockPosition blockposition, IInventory iinventory) { + dropInventory(world, (double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), iinventory); + } + + public static void dropEntity(World world, Entity entity, IInventory iinventory) { + dropInventory(world, entity.locX, entity.locY, entity.locZ, iinventory); + } + + private static void dropInventory(World world, double d0, double d1, double d2, IInventory iinventory) { + for (int i = 0; i < iinventory.getSize(); ++i) { + ItemStack itemstack = iinventory.getItem(i); + + if (itemstack != null) { + dropItem(world, d0, d1, d2, itemstack); + } + } + + } + + private static void dropItem(World world, double d0, double d1, double d2, ItemStack itemstack) { + float f = InventoryUtils.a.nextFloat() * 0.8F + 0.1F; + float f1 = InventoryUtils.a.nextFloat() * 0.8F + 0.1F; + float f2 = InventoryUtils.a.nextFloat() * 0.8F + 0.1F; + + while (itemstack.count > 0) { + int i = InventoryUtils.a.nextInt(21) + 10; + + if (i > itemstack.count) { + i = itemstack.count; + } + + itemstack.count -= i; + EntityItem entityitem = new EntityItem(world, d0 + (double) f, d1 + (double) f1, d2 + (double) f2, new ItemStack(itemstack.getItem(), i, itemstack.getData())); + + if (itemstack.hasTag()) { + entityitem.getItemStack().setTag((NBTTagCompound) itemstack.getTag().clone()); + } + + float f3 = 0.05F; + + entityitem.motX = InventoryUtils.a.nextGaussian() * (double) f3; + entityitem.motY = InventoryUtils.a.nextGaussian() * (double) f3 + 0.20000000298023224D; + entityitem.motZ = InventoryUtils.a.nextGaussian() * (double) f3; + world.addEntity(entityitem); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IpBanEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/IpBanEntry.java new file mode 100644 index 0000000..a9781bc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IpBanEntry.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import java.util.Date; + +public class IpBanEntry extends ExpirableListEntry { + + public IpBanEntry(String s) { + this(s, (Date) null, (String) null, (Date) null, (String) null); + } + + public IpBanEntry(String s, Date date, String s1, Date date1, String s2) { + super(s, date, s1, date1, s2); + } + + public IpBanEntry(JsonObject jsonobject) { + super(b(jsonobject), jsonobject); + } + + private static String b(JsonObject jsonobject) { + return jsonobject.has("ip") ? jsonobject.get("ip").getAsString() : null; + } + + protected void a(JsonObject jsonobject) { + if (this.getKey() != null) { + jsonobject.addProperty("ip", (String) this.getKey()); + super.a(jsonobject); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IpBanList.java b/eSpigot-Server/src/main/java/net/minecraft/server/IpBanList.java new file mode 100644 index 0000000..e91b964 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IpBanList.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import java.io.File; +import java.net.SocketAddress; + +public class IpBanList extends JsonList { + + public IpBanList(File file) { + super(file); + } + + protected JsonListEntry a(JsonObject jsonobject) { + return new IpBanEntry(jsonobject); + } + + public boolean isBanned(SocketAddress socketaddress) { + String s = this.c(socketaddress); + + return this.d(s); + } + + public IpBanEntry get(SocketAddress socketaddress) { + String s = this.c(socketaddress); + + return this.get(s); + } + + private String c(SocketAddress socketaddress) { + String s = socketaddress.toString(); + + if (s.contains("/")) { + s = s.substring(s.indexOf(47) + 1); + } + + if (s.contains(":")) { + s = s.substring(0, s.indexOf(58)); + } + + return s; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Item.java b/eSpigot-Server/src/main/java/net/minecraft/server/Item.java new file mode 100644 index 0000000..87a2d7b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Item.java @@ -0,0 +1,786 @@ +package net.minecraft.server; + +import com.google.common.base.Function; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import java.util.Map; +import java.util.Random; +import java.util.UUID; + +public class Item { + + public static final RegistryMaterials REGISTRY = new RegistryMaterials(); + private static final Map a = Maps.newHashMap(); + protected static final UUID f = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF"); + private CreativeModeTab b; + protected static Random g = new Random(); + protected int maxStackSize = 64; + private int durability; + protected boolean i; + protected boolean j; + private Item craftingResult; + private String k; + private String name; + + public Item() {} + + public static int getId(Item item) { + return item == null ? 0 : Item.REGISTRY.b(item); + } + + public static Item getById(int i) { + return (Item) Item.REGISTRY.a(i); + } + + public static Item getItemOf(Block block) { + return (Item) Item.a.get(block); + } + + public static Item d(String s) { + Item item = (Item) Item.REGISTRY.get(new MinecraftKey(s)); + + if (item == null) { + try { + return getById(Integer.parseInt(s)); + } catch (NumberFormatException numberformatexception) { + ; + } + } + + return item; + } + + public boolean a(NBTTagCompound nbttagcompound) { + return false; + } + + public Item c(int i) { + this.maxStackSize = i; + return this; + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + return false; + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + return 1.0F; + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + return itemstack; + } + + public ItemStack b(ItemStack itemstack, World world, EntityHuman entityhuman) { + return itemstack; + } + + public int getMaxStackSize() { + return this.maxStackSize; + } + + public int filterData(int i) { + return 0; + } + + public boolean k() { + return this.j; + } + + protected Item a(boolean flag) { + this.j = flag; + return this; + } + + public int getMaxDurability() { + return this.durability; + } + + protected Item setMaxDurability(int i) { + this.durability = i; + return this; + } + + public boolean usesDurability() { + return this.durability > 0 && !this.j; + } + + public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { + return false; + } + + public boolean a(ItemStack itemstack, World world, Block block, BlockPosition blockposition, EntityLiving entityliving) { + return false; + } + + public boolean canDestroySpecialBlock(Block block) { + return false; + } + + public boolean a(ItemStack itemstack, EntityHuman entityhuman, EntityLiving entityliving) { + return false; + } + + public Item n() { + this.i = true; + return this; + } + + public Item c(String s) { + this.name = s; + return this; + } + + public String k(ItemStack itemstack) { + String s = this.e_(itemstack); + + return s == null ? "" : LocaleI18n.get(s); + } + + public String getName() { + return "item." + this.name; + } + + public String e_(ItemStack itemstack) { + return "item." + this.name; + } + + public Item c(Item item) { + this.craftingResult = item; + return this; + } + + public boolean p() { + return true; + } + + public Item q() { + return this.craftingResult; + } + + public boolean r() { + return this.craftingResult != null; + } + + public void a(ItemStack itemstack, World world, Entity entity, int i, boolean flag) {} + + public void d(ItemStack itemstack, World world, EntityHuman entityhuman) {} + + public boolean f() { + return false; + } + + public EnumAnimation e(ItemStack itemstack) { + return EnumAnimation.NONE; + } + + public int d(ItemStack itemstack) { + return 0; + } + + public void a(ItemStack itemstack, World world, EntityHuman entityhuman, int i) {} + + protected Item e(String s) { + this.k = s; + return this; + } + + public String j(ItemStack itemstack) { + return this.k; + } + + public boolean l(ItemStack itemstack) { + return this.j(itemstack) != null; + } + + public String a(ItemStack itemstack) { + return ("" + LocaleI18n.get(this.k(itemstack) + ".name")).trim(); + } + + public EnumItemRarity g(ItemStack itemstack) { + return itemstack.hasEnchantments() ? EnumItemRarity.RARE : EnumItemRarity.COMMON; + } + + public boolean f_(ItemStack itemstack) { + return this.getMaxStackSize() == 1 && this.usesDurability(); + } + + protected MovingObjectPosition a(World world, EntityHuman entityhuman, boolean flag) { + float f = entityhuman.pitch; + float f1 = entityhuman.yaw; + double d0 = entityhuman.locX; + double d1 = entityhuman.locY + (double) entityhuman.getHeadHeight(); + double d2 = entityhuman.locZ; + Vec3D vec3d = new Vec3D(d0, d1, d2); + float f2 = MathHelper.cos(-f1 * 0.017453292F - 3.1415927F); + float f3 = MathHelper.sin(-f1 * 0.017453292F - 3.1415927F); + float f4 = -MathHelper.cos(-f * 0.017453292F); + float f5 = MathHelper.sin(-f * 0.017453292F); + float f6 = f3 * f4; + float f7 = f2 * f4; + double d3 = 5.0D; + Vec3D vec3d1 = vec3d.add((double) f6 * d3, (double) f5 * d3, (double) f7 * d3); + + return world.rayTrace(vec3d, vec3d1, flag, !flag, false); + } + + public int b() { + return 0; + } + + public Item a(CreativeModeTab creativemodetab) { + this.b = creativemodetab; + return this; + } + + public boolean s() { + return false; + } + + public boolean a(ItemStack itemstack, ItemStack itemstack1) { + return false; + } + + public Multimap i() { + return HashMultimap.create(); + } + + public static void t() { + a(Blocks.STONE, (Item) (new ItemMultiTexture(Blocks.STONE, Blocks.STONE, new Function() { + public String a(ItemStack itemstack) { + return BlockStone.EnumStoneVariant.a(itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("stone")); + a((Block) Blocks.GRASS, (Item) (new ItemWithAuxData(Blocks.GRASS, false))); + a(Blocks.DIRT, (Item) (new ItemMultiTexture(Blocks.DIRT, Blocks.DIRT, new Function() { + public String a(ItemStack itemstack) { + return BlockDirt.EnumDirtVariant.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("dirt")); + c(Blocks.COBBLESTONE); + a(Blocks.PLANKS, (Item) (new ItemMultiTexture(Blocks.PLANKS, Blocks.PLANKS, new Function() { + public String a(ItemStack itemstack) { + return BlockWood.EnumLogVariant.a(itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("wood")); + a(Blocks.SAPLING, (Item) (new ItemMultiTexture(Blocks.SAPLING, Blocks.SAPLING, new Function() { + public String a(ItemStack itemstack) { + return BlockWood.EnumLogVariant.a(itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("sapling")); + c(Blocks.BEDROCK); + a((Block) Blocks.SAND, (Item) (new ItemMultiTexture(Blocks.SAND, Blocks.SAND, new Function() { + public String a(ItemStack itemstack) { + return BlockSand.EnumSandVariant.a(itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("sand")); + c(Blocks.GRAVEL); + c(Blocks.GOLD_ORE); + c(Blocks.IRON_ORE); + c(Blocks.COAL_ORE); + a(Blocks.LOG, (Item) (new ItemMultiTexture(Blocks.LOG, Blocks.LOG, new Function() { + public String a(ItemStack itemstack) { + return BlockWood.EnumLogVariant.a(itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("log")); + a(Blocks.LOG2, (Item) (new ItemMultiTexture(Blocks.LOG2, Blocks.LOG2, new Function() { + public String a(ItemStack itemstack) { + return BlockWood.EnumLogVariant.a(itemstack.getData() + 4).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("log")); + a((Block) Blocks.LEAVES, (Item) (new ItemLeaves(Blocks.LEAVES)).b("leaves")); + a((Block) Blocks.LEAVES2, (Item) (new ItemLeaves(Blocks.LEAVES2)).b("leaves")); + a(Blocks.SPONGE, (Item) (new ItemMultiTexture(Blocks.SPONGE, Blocks.SPONGE, new Function() { + public String a(ItemStack itemstack) { + return (itemstack.getData() & 1) == 1 ? "wet" : "dry"; + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("sponge")); + c(Blocks.GLASS); + c(Blocks.LAPIS_ORE); + c(Blocks.LAPIS_BLOCK); + c(Blocks.DISPENSER); + a(Blocks.SANDSTONE, (Item) (new ItemMultiTexture(Blocks.SANDSTONE, Blocks.SANDSTONE, new Function() { + public String a(ItemStack itemstack) { + return BlockSandStone.EnumSandstoneVariant.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("sandStone")); + c(Blocks.NOTEBLOCK); + c(Blocks.GOLDEN_RAIL); + c(Blocks.DETECTOR_RAIL); + a((Block) Blocks.STICKY_PISTON, (Item) (new ItemPiston(Blocks.STICKY_PISTON))); + c(Blocks.WEB); + a((Block) Blocks.TALLGRASS, (Item) (new ItemWithAuxData(Blocks.TALLGRASS, true)).a(new String[] { "shrub", "grass", "fern"})); + c((Block) Blocks.DEADBUSH); + a((Block) Blocks.PISTON, (Item) (new ItemPiston(Blocks.PISTON))); + a(Blocks.WOOL, (Item) (new ItemCloth(Blocks.WOOL)).b("cloth")); + a((Block) Blocks.YELLOW_FLOWER, (Item) (new ItemMultiTexture(Blocks.YELLOW_FLOWER, Blocks.YELLOW_FLOWER, new Function() { + public String a(ItemStack itemstack) { + return BlockFlowers.EnumFlowerVarient.a(BlockFlowers.EnumFlowerType.YELLOW, itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("flower")); + a((Block) Blocks.RED_FLOWER, (Item) (new ItemMultiTexture(Blocks.RED_FLOWER, Blocks.RED_FLOWER, new Function() { + public String a(ItemStack itemstack) { + return BlockFlowers.EnumFlowerVarient.a(BlockFlowers.EnumFlowerType.RED, itemstack.getData()).d(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("rose")); + c((Block) Blocks.BROWN_MUSHROOM); + c((Block) Blocks.RED_MUSHROOM); + c(Blocks.GOLD_BLOCK); + c(Blocks.IRON_BLOCK); + a((Block) Blocks.STONE_SLAB, (Item) (new ItemStep(Blocks.STONE_SLAB, Blocks.STONE_SLAB, Blocks.DOUBLE_STONE_SLAB)).b("stoneSlab")); + c(Blocks.BRICK_BLOCK); + c(Blocks.TNT); + c(Blocks.BOOKSHELF); + c(Blocks.MOSSY_COBBLESTONE); + c(Blocks.OBSIDIAN); + c(Blocks.TORCH); + c(Blocks.MOB_SPAWNER); + c(Blocks.OAK_STAIRS); + c((Block) Blocks.CHEST); + c(Blocks.DIAMOND_ORE); + c(Blocks.DIAMOND_BLOCK); + c(Blocks.CRAFTING_TABLE); + c(Blocks.FARMLAND); + c(Blocks.FURNACE); + c(Blocks.LIT_FURNACE); + c(Blocks.LADDER); + c(Blocks.RAIL); + c(Blocks.STONE_STAIRS); + c(Blocks.LEVER); + c(Blocks.STONE_PRESSURE_PLATE); + c(Blocks.WOODEN_PRESSURE_PLATE); + c(Blocks.REDSTONE_ORE); + c(Blocks.REDSTONE_TORCH); + c(Blocks.STONE_BUTTON); + a(Blocks.SNOW_LAYER, (Item) (new ItemSnow(Blocks.SNOW_LAYER))); + c(Blocks.ICE); + c(Blocks.SNOW); + c((Block) Blocks.CACTUS); + c(Blocks.CLAY); + c(Blocks.JUKEBOX); + c(Blocks.FENCE); + c(Blocks.SPRUCE_FENCE); + c(Blocks.BIRCH_FENCE); + c(Blocks.JUNGLE_FENCE); + c(Blocks.DARK_OAK_FENCE); + c(Blocks.ACACIA_FENCE); + c(Blocks.PUMPKIN); + c(Blocks.NETHERRACK); + c(Blocks.SOUL_SAND); + c(Blocks.GLOWSTONE); + c(Blocks.LIT_PUMPKIN); + c(Blocks.TRAPDOOR); + a(Blocks.MONSTER_EGG, (Item) (new ItemMultiTexture(Blocks.MONSTER_EGG, Blocks.MONSTER_EGG, new Function() { + public String a(ItemStack itemstack) { + return BlockMonsterEggs.EnumMonsterEggVarient.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("monsterStoneEgg")); + a(Blocks.STONEBRICK, (Item) (new ItemMultiTexture(Blocks.STONEBRICK, Blocks.STONEBRICK, new Function() { + public String a(ItemStack itemstack) { + return BlockSmoothBrick.EnumStonebrickType.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("stonebricksmooth")); + c(Blocks.BROWN_MUSHROOM_BLOCK); + c(Blocks.RED_MUSHROOM_BLOCK); + c(Blocks.IRON_BARS); + c(Blocks.GLASS_PANE); + c(Blocks.MELON_BLOCK); + a(Blocks.VINE, (Item) (new ItemWithAuxData(Blocks.VINE, false))); + c(Blocks.FENCE_GATE); + c(Blocks.SPRUCE_FENCE_GATE); + c(Blocks.BIRCH_FENCE_GATE); + c(Blocks.JUNGLE_FENCE_GATE); + c(Blocks.DARK_OAK_FENCE_GATE); + c(Blocks.ACACIA_FENCE_GATE); + c(Blocks.BRICK_STAIRS); + c(Blocks.STONE_BRICK_STAIRS); + c((Block) Blocks.MYCELIUM); + a(Blocks.WATERLILY, (Item) (new ItemWaterLily(Blocks.WATERLILY))); + c(Blocks.NETHER_BRICK); + c(Blocks.NETHER_BRICK_FENCE); + c(Blocks.NETHER_BRICK_STAIRS); + c(Blocks.ENCHANTING_TABLE); + c(Blocks.END_PORTAL_FRAME); + c(Blocks.END_STONE); + c(Blocks.DRAGON_EGG); + c(Blocks.REDSTONE_LAMP); + a((Block) Blocks.WOODEN_SLAB, (Item) (new ItemStep(Blocks.WOODEN_SLAB, Blocks.WOODEN_SLAB, Blocks.DOUBLE_WOODEN_SLAB)).b("woodSlab")); + c(Blocks.SANDSTONE_STAIRS); + c(Blocks.EMERALD_ORE); + c(Blocks.ENDER_CHEST); + c((Block) Blocks.TRIPWIRE_HOOK); + c(Blocks.EMERALD_BLOCK); + c(Blocks.SPRUCE_STAIRS); + c(Blocks.BIRCH_STAIRS); + c(Blocks.JUNGLE_STAIRS); + c(Blocks.COMMAND_BLOCK); + c((Block) Blocks.BEACON); + a(Blocks.COBBLESTONE_WALL, (Item) (new ItemMultiTexture(Blocks.COBBLESTONE_WALL, Blocks.COBBLESTONE_WALL, new Function() { + public String a(ItemStack itemstack) { + return BlockCobbleWall.EnumCobbleVariant.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("cobbleWall")); + c(Blocks.WOODEN_BUTTON); + a(Blocks.ANVIL, (Item) (new ItemAnvil(Blocks.ANVIL)).b("anvil")); + c(Blocks.TRAPPED_CHEST); + c(Blocks.LIGHT_WEIGHTED_PRESSURE_PLATE); + c(Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE); + c((Block) Blocks.DAYLIGHT_DETECTOR); + c(Blocks.REDSTONE_BLOCK); + c(Blocks.QUARTZ_ORE); + c((Block) Blocks.HOPPER); + a(Blocks.QUARTZ_BLOCK, (Item) (new ItemMultiTexture(Blocks.QUARTZ_BLOCK, Blocks.QUARTZ_BLOCK, new String[] { "default", "chiseled", "lines"})).b("quartzBlock")); + c(Blocks.QUARTZ_STAIRS); + c(Blocks.ACTIVATOR_RAIL); + c(Blocks.DROPPER); + a(Blocks.STAINED_HARDENED_CLAY, (Item) (new ItemCloth(Blocks.STAINED_HARDENED_CLAY)).b("clayHardenedStained")); + c(Blocks.BARRIER); + c(Blocks.IRON_TRAPDOOR); + c(Blocks.HAY_BLOCK); + a(Blocks.CARPET, (Item) (new ItemCloth(Blocks.CARPET)).b("woolCarpet")); + c(Blocks.HARDENED_CLAY); + c(Blocks.COAL_BLOCK); + c(Blocks.PACKED_ICE); + c(Blocks.ACACIA_STAIRS); + c(Blocks.DARK_OAK_STAIRS); + c(Blocks.SLIME); + a((Block) Blocks.DOUBLE_PLANT, (Item) (new ItemTallPlant(Blocks.DOUBLE_PLANT, Blocks.DOUBLE_PLANT, new Function() { + public String a(ItemStack itemstack) { + return BlockTallPlant.EnumTallFlowerVariants.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("doublePlant")); + a((Block) Blocks.STAINED_GLASS, (Item) (new ItemCloth(Blocks.STAINED_GLASS)).b("stainedGlass")); + a((Block) Blocks.STAINED_GLASS_PANE, (Item) (new ItemCloth(Blocks.STAINED_GLASS_PANE)).b("stainedGlassPane")); + a(Blocks.PRISMARINE, (Item) (new ItemMultiTexture(Blocks.PRISMARINE, Blocks.PRISMARINE, new Function() { + public String a(ItemStack itemstack) { + return BlockPrismarine.EnumPrismarineVariant.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("prismarine")); + c(Blocks.SEA_LANTERN); + a(Blocks.RED_SANDSTONE, (Item) (new ItemMultiTexture(Blocks.RED_SANDSTONE, Blocks.RED_SANDSTONE, new Function() { + public String a(ItemStack itemstack) { + return BlockRedSandstone.EnumRedSandstoneVariant.a(itemstack.getData()).c(); + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + })).b("redSandStone")); + c(Blocks.RED_SANDSTONE_STAIRS); + a((Block) Blocks.STONE_SLAB2, (Item) (new ItemStep(Blocks.STONE_SLAB2, Blocks.STONE_SLAB2, Blocks.DOUBLE_STONE_SLAB2)).b("stoneSlab2")); + a(256, "iron_shovel", (new ItemSpade(Item.EnumToolMaterial.IRON)).c("shovelIron")); + a(257, "iron_pickaxe", (new ItemPickaxe(Item.EnumToolMaterial.IRON)).c("pickaxeIron")); + a(258, "iron_axe", (new ItemAxe(Item.EnumToolMaterial.IRON)).c("hatchetIron")); + a(259, "flint_and_steel", (new ItemFlintAndSteel()).c("flintAndSteel")); + a(260, "apple", (new ItemFood(4, 0.3F, false)).c("apple")); + a(261, "bow", (new ItemBow()).c("bow")); + a(262, "arrow", (new Item()).c("arrow").a(CreativeModeTab.j)); + a(263, "coal", (new ItemCoal()).c("coal")); + a(264, "diamond", (new Item()).c("diamond").a(CreativeModeTab.l)); + a(265, "iron_ingot", (new Item()).c("ingotIron").a(CreativeModeTab.l)); + a(266, "gold_ingot", (new Item()).c("ingotGold").a(CreativeModeTab.l)); + a(267, "iron_sword", (new ItemSword(Item.EnumToolMaterial.IRON)).c("swordIron")); + a(268, "wooden_sword", (new ItemSword(Item.EnumToolMaterial.WOOD)).c("swordWood")); + a(269, "wooden_shovel", (new ItemSpade(Item.EnumToolMaterial.WOOD)).c("shovelWood")); + a(270, "wooden_pickaxe", (new ItemPickaxe(Item.EnumToolMaterial.WOOD)).c("pickaxeWood")); + a(271, "wooden_axe", (new ItemAxe(Item.EnumToolMaterial.WOOD)).c("hatchetWood")); + a(272, "stone_sword", (new ItemSword(Item.EnumToolMaterial.STONE)).c("swordStone")); + a(273, "stone_shovel", (new ItemSpade(Item.EnumToolMaterial.STONE)).c("shovelStone")); + a(274, "stone_pickaxe", (new ItemPickaxe(Item.EnumToolMaterial.STONE)).c("pickaxeStone")); + a(275, "stone_axe", (new ItemAxe(Item.EnumToolMaterial.STONE)).c("hatchetStone")); + a(276, "diamond_sword", (new ItemSword(Item.EnumToolMaterial.EMERALD)).c("swordDiamond")); + a(277, "diamond_shovel", (new ItemSpade(Item.EnumToolMaterial.EMERALD)).c("shovelDiamond")); + a(278, "diamond_pickaxe", (new ItemPickaxe(Item.EnumToolMaterial.EMERALD)).c("pickaxeDiamond")); + a(279, "diamond_axe", (new ItemAxe(Item.EnumToolMaterial.EMERALD)).c("hatchetDiamond")); + a(280, "stick", (new Item()).n().c("stick").a(CreativeModeTab.l)); + a(281, "bowl", (new Item()).c("bowl").a(CreativeModeTab.l)); + a(282, "mushroom_stew", (new ItemSoup(6)).c("mushroomStew")); + a(283, "golden_sword", (new ItemSword(Item.EnumToolMaterial.GOLD)).c("swordGold")); + a(284, "golden_shovel", (new ItemSpade(Item.EnumToolMaterial.GOLD)).c("shovelGold")); + a(285, "golden_pickaxe", (new ItemPickaxe(Item.EnumToolMaterial.GOLD)).c("pickaxeGold")); + a(286, "golden_axe", (new ItemAxe(Item.EnumToolMaterial.GOLD)).c("hatchetGold")); + a(287, "string", (new ItemReed(Blocks.TRIPWIRE)).c("string").a(CreativeModeTab.l)); + a(288, "feather", (new Item()).c("feather").a(CreativeModeTab.l)); + a(289, "gunpowder", (new Item()).c("sulphur").e(PotionBrewer.k).a(CreativeModeTab.l)); + a(290, "wooden_hoe", (new ItemHoe(Item.EnumToolMaterial.WOOD)).c("hoeWood")); + a(291, "stone_hoe", (new ItemHoe(Item.EnumToolMaterial.STONE)).c("hoeStone")); + a(292, "iron_hoe", (new ItemHoe(Item.EnumToolMaterial.IRON)).c("hoeIron")); + a(293, "diamond_hoe", (new ItemHoe(Item.EnumToolMaterial.EMERALD)).c("hoeDiamond")); + a(294, "golden_hoe", (new ItemHoe(Item.EnumToolMaterial.GOLD)).c("hoeGold")); + a(295, "wheat_seeds", (new ItemSeeds(Blocks.WHEAT, Blocks.FARMLAND)).c("seeds")); + a(296, "wheat", (new Item()).c("wheat").a(CreativeModeTab.l)); + a(297, "bread", (new ItemFood(5, 0.6F, false)).c("bread")); + a(298, "leather_helmet", (new ItemArmor(ItemArmor.EnumArmorMaterial.LEATHER, 0, 0)).c("helmetCloth")); + a(299, "leather_chestplate", (new ItemArmor(ItemArmor.EnumArmorMaterial.LEATHER, 0, 1)).c("chestplateCloth")); + a(300, "leather_leggings", (new ItemArmor(ItemArmor.EnumArmorMaterial.LEATHER, 0, 2)).c("leggingsCloth")); + a(301, "leather_boots", (new ItemArmor(ItemArmor.EnumArmorMaterial.LEATHER, 0, 3)).c("bootsCloth")); + a(302, "chainmail_helmet", (new ItemArmor(ItemArmor.EnumArmorMaterial.CHAIN, 1, 0)).c("helmetChain")); + a(303, "chainmail_chestplate", (new ItemArmor(ItemArmor.EnumArmorMaterial.CHAIN, 1, 1)).c("chestplateChain")); + a(304, "chainmail_leggings", (new ItemArmor(ItemArmor.EnumArmorMaterial.CHAIN, 1, 2)).c("leggingsChain")); + a(305, "chainmail_boots", (new ItemArmor(ItemArmor.EnumArmorMaterial.CHAIN, 1, 3)).c("bootsChain")); + a(306, "iron_helmet", (new ItemArmor(ItemArmor.EnumArmorMaterial.IRON, 2, 0)).c("helmetIron")); + a(307, "iron_chestplate", (new ItemArmor(ItemArmor.EnumArmorMaterial.IRON, 2, 1)).c("chestplateIron")); + a(308, "iron_leggings", (new ItemArmor(ItemArmor.EnumArmorMaterial.IRON, 2, 2)).c("leggingsIron")); + a(309, "iron_boots", (new ItemArmor(ItemArmor.EnumArmorMaterial.IRON, 2, 3)).c("bootsIron")); + a(310, "diamond_helmet", (new ItemArmor(ItemArmor.EnumArmorMaterial.DIAMOND, 3, 0)).c("helmetDiamond")); + a(311, "diamond_chestplate", (new ItemArmor(ItemArmor.EnumArmorMaterial.DIAMOND, 3, 1)).c("chestplateDiamond")); + a(312, "diamond_leggings", (new ItemArmor(ItemArmor.EnumArmorMaterial.DIAMOND, 3, 2)).c("leggingsDiamond")); + a(313, "diamond_boots", (new ItemArmor(ItemArmor.EnumArmorMaterial.DIAMOND, 3, 3)).c("bootsDiamond")); + a(314, "golden_helmet", (new ItemArmor(ItemArmor.EnumArmorMaterial.GOLD, 4, 0)).c("helmetGold")); + a(315, "golden_chestplate", (new ItemArmor(ItemArmor.EnumArmorMaterial.GOLD, 4, 1)).c("chestplateGold")); + a(316, "golden_leggings", (new ItemArmor(ItemArmor.EnumArmorMaterial.GOLD, 4, 2)).c("leggingsGold")); + a(317, "golden_boots", (new ItemArmor(ItemArmor.EnumArmorMaterial.GOLD, 4, 3)).c("bootsGold")); + a(318, "flint", (new Item()).c("flint").a(CreativeModeTab.l)); + a(319, "porkchop", (new ItemFood(3, 0.3F, true)).c("porkchopRaw")); + a(320, "cooked_porkchop", (new ItemFood(8, 0.8F, true)).c("porkchopCooked")); + a(321, "painting", (new ItemHanging(EntityPainting.class)).c("painting")); + a(322, "golden_apple", (new ItemGoldenApple(4, 1.2F, false)).h().a(MobEffectList.REGENERATION.id, 5, 1, 1.0F).c("appleGold")); + a(323, "sign", (new ItemSign()).c("sign")); + a(324, "wooden_door", (new ItemDoor(Blocks.WOODEN_DOOR)).c("doorOak")); + Item item = (new ItemBucket(Blocks.AIR)).c("bucket").c(16); + + a(325, "bucket", item); + a(326, "water_bucket", (new ItemBucket(Blocks.FLOWING_WATER)).c("bucketWater").c(item)); + a(327, "lava_bucket", (new ItemBucket(Blocks.FLOWING_LAVA)).c("bucketLava").c(item)); + a(328, "minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.RIDEABLE)).c("minecart")); + a(329, "saddle", (new ItemSaddle()).c("saddle")); + a(330, "iron_door", (new ItemDoor(Blocks.IRON_DOOR)).c("doorIron")); + a(331, "redstone", (new ItemRedstone()).c("redstone").e(PotionBrewer.i)); + a(332, "snowball", (new ItemSnowball()).c("snowball")); + a(333, "boat", (new ItemBoat()).c("boat")); + a(334, "leather", (new Item()).c("leather").a(CreativeModeTab.l)); + a(335, "milk_bucket", (new ItemMilkBucket()).c("milk").c(item)); + a(336, "brick", (new Item()).c("brick").a(CreativeModeTab.l)); + a(337, "clay_ball", (new Item()).c("clay").a(CreativeModeTab.l)); + a(338, "reeds", (new ItemReed(Blocks.REEDS)).c("reeds").a(CreativeModeTab.l)); + a(339, "paper", (new Item()).c("paper").a(CreativeModeTab.f)); + a(340, "book", (new ItemBook()).c("book").a(CreativeModeTab.f)); + a(341, "slime_ball", (new Item()).c("slimeball").a(CreativeModeTab.f)); + a(342, "chest_minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.CHEST)).c("minecartChest")); + a(343, "furnace_minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.FURNACE)).c("minecartFurnace")); + a(344, "egg", (new ItemEgg()).c("egg")); + a(345, "compass", (new Item()).c("compass").a(CreativeModeTab.i)); + a(346, "fishing_rod", (new ItemFishingRod()).c("fishingRod")); + a(347, "clock", (new Item()).c("clock").a(CreativeModeTab.i)); + a(348, "glowstone_dust", (new Item()).c("yellowDust").e(PotionBrewer.j).a(CreativeModeTab.l)); + a(349, "fish", (new ItemFish(false)).c("fish").a(true)); + a(350, "cooked_fish", (new ItemFish(true)).c("fish").a(true)); + a(351, "dye", (new ItemDye()).c("dyePowder")); + a(352, "bone", (new Item()).c("bone").n().a(CreativeModeTab.f)); + a(353, "sugar", (new Item()).c("sugar").e(PotionBrewer.b).a(CreativeModeTab.l)); + a(354, "cake", (new ItemReed(Blocks.CAKE)).c(1).c("cake").a(CreativeModeTab.h)); + a(355, "bed", (new ItemBed()).c(1).c("bed")); + a(356, "repeater", (new ItemReed(Blocks.UNPOWERED_REPEATER)).c("diode").a(CreativeModeTab.d)); + a(357, "cookie", (new ItemFood(2, 0.1F, false)).c("cookie")); + a(358, "filled_map", (new ItemWorldMap()).c("map")); + a(359, "shears", (new ItemShears()).c("shears")); + a(360, "melon", (new ItemFood(2, 0.3F, false)).c("melon")); + a(361, "pumpkin_seeds", (new ItemSeeds(Blocks.PUMPKIN_STEM, Blocks.FARMLAND)).c("seeds_pumpkin")); + a(362, "melon_seeds", (new ItemSeeds(Blocks.MELON_STEM, Blocks.FARMLAND)).c("seeds_melon")); + a(363, "beef", (new ItemFood(3, 0.3F, true)).c("beefRaw")); + a(364, "cooked_beef", (new ItemFood(8, 0.8F, true)).c("beefCooked")); + a(365, "chicken", (new ItemFood(2, 0.3F, true)).a(MobEffectList.HUNGER.id, 30, 0, 0.3F).c("chickenRaw")); + a(366, "cooked_chicken", (new ItemFood(6, 0.6F, true)).c("chickenCooked")); + a(367, "rotten_flesh", (new ItemFood(4, 0.1F, true)).a(MobEffectList.HUNGER.id, 30, 0, 0.8F).c("rottenFlesh")); + a(368, "ender_pearl", (new ItemEnderPearl()).c("enderPearl")); + a(369, "blaze_rod", (new Item()).c("blazeRod").a(CreativeModeTab.l).n()); + a(370, "ghast_tear", (new Item()).c("ghastTear").e(PotionBrewer.c).a(CreativeModeTab.k)); + a(371, "gold_nugget", (new Item()).c("goldNugget").a(CreativeModeTab.l)); + a(372, "nether_wart", (new ItemSeeds(Blocks.NETHER_WART, Blocks.SOUL_SAND)).c("netherStalkSeeds").e("+4")); + a(373, "potion", (new ItemPotion()).c("potion")); + a(374, "glass_bottle", (new ItemGlassBottle()).c("glassBottle")); + a(375, "spider_eye", (new ItemFood(2, 0.8F, false)).a(MobEffectList.POISON.id, 5, 0, 1.0F).c("spiderEye").e(PotionBrewer.d)); + a(376, "fermented_spider_eye", (new Item()).c("fermentedSpiderEye").e(PotionBrewer.e).a(CreativeModeTab.k)); + a(377, "blaze_powder", (new Item()).c("blazePowder").e(PotionBrewer.g).a(CreativeModeTab.k)); + a(378, "magma_cream", (new Item()).c("magmaCream").e(PotionBrewer.h).a(CreativeModeTab.k)); + a(379, "brewing_stand", (new ItemReed(Blocks.BREWING_STAND)).c("brewingStand").a(CreativeModeTab.k)); + a(380, "cauldron", (new ItemReed(Blocks.cauldron)).c("cauldron").a(CreativeModeTab.k)); + a(381, "ender_eye", (new ItemEnderEye()).c("eyeOfEnder")); + a(382, "speckled_melon", (new Item()).c("speckledMelon").e(PotionBrewer.f).a(CreativeModeTab.k)); + a(383, "spawn_egg", (new ItemMonsterEgg()).c("monsterPlacer")); + a(384, "experience_bottle", (new ItemExpBottle()).c("expBottle")); + a(385, "fire_charge", (new ItemFireball()).c("fireball")); + a(386, "writable_book", (new ItemBookAndQuill()).c("writingBook").a(CreativeModeTab.f)); + a(387, "written_book", (new ItemWrittenBook()).c("writtenBook").c(16)); + a(388, "emerald", (new Item()).c("emerald").a(CreativeModeTab.l)); + a(389, "item_frame", (new ItemHanging(EntityItemFrame.class)).c("frame")); + a(390, "flower_pot", (new ItemReed(Blocks.FLOWER_POT)).c("flowerPot").a(CreativeModeTab.c)); + a(391, "carrot", (new ItemSeedFood(3, 0.6F, Blocks.CARROTS, Blocks.FARMLAND)).c("carrots")); + a(392, "potato", (new ItemSeedFood(1, 0.3F, Blocks.POTATOES, Blocks.FARMLAND)).c("potato")); + a(393, "baked_potato", (new ItemFood(5, 0.6F, false)).c("potatoBaked")); + a(394, "poisonous_potato", (new ItemFood(2, 0.3F, false)).a(MobEffectList.POISON.id, 5, 0, 0.6F).c("potatoPoisonous")); + a(395, "map", (new ItemMapEmpty()).c("emptyMap")); + a(396, "golden_carrot", (new ItemFood(6, 1.2F, false)).c("carrotGolden").e(PotionBrewer.l).a(CreativeModeTab.k)); + a(397, "skull", (new ItemSkull()).c("skull")); + a(398, "carrot_on_a_stick", (new ItemCarrotStick()).c("carrotOnAStick")); + a(399, "nether_star", (new ItemNetherStar()).c("netherStar").a(CreativeModeTab.l)); + a(400, "pumpkin_pie", (new ItemFood(8, 0.3F, false)).c("pumpkinPie").a(CreativeModeTab.h)); + a(401, "fireworks", (new ItemFireworks()).c("fireworks")); + a(402, "firework_charge", (new ItemFireworksCharge()).c("fireworksCharge").a(CreativeModeTab.f)); + a(403, "enchanted_book", (new ItemEnchantedBook()).c(1).c("enchantedBook")); + a(404, "comparator", (new ItemReed(Blocks.UNPOWERED_COMPARATOR)).c("comparator").a(CreativeModeTab.d)); + a(405, "netherbrick", (new Item()).c("netherbrick").a(CreativeModeTab.l)); + a(406, "quartz", (new Item()).c("netherquartz").a(CreativeModeTab.l)); + a(407, "tnt_minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.TNT)).c("minecartTnt")); + a(408, "hopper_minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.HOPPER)).c("minecartHopper")); + a(409, "prismarine_shard", (new Item()).c("prismarineShard").a(CreativeModeTab.l)); + a(410, "prismarine_crystals", (new Item()).c("prismarineCrystals").a(CreativeModeTab.l)); + a(411, "rabbit", (new ItemFood(3, 0.3F, true)).c("rabbitRaw")); + a(412, "cooked_rabbit", (new ItemFood(5, 0.6F, true)).c("rabbitCooked")); + a(413, "rabbit_stew", (new ItemSoup(10)).c("rabbitStew")); + a(414, "rabbit_foot", (new Item()).c("rabbitFoot").e(PotionBrewer.n).a(CreativeModeTab.k)); + a(415, "rabbit_hide", (new Item()).c("rabbitHide").a(CreativeModeTab.l)); + a(416, "armor_stand", (new ItemArmorStand()).c("armorStand").c(16)); + a(417, "iron_horse_armor", (new Item()).c("horsearmormetal").c(1).a(CreativeModeTab.f)); + a(418, "golden_horse_armor", (new Item()).c("horsearmorgold").c(1).a(CreativeModeTab.f)); + a(419, "diamond_horse_armor", (new Item()).c("horsearmordiamond").c(1).a(CreativeModeTab.f)); + a(420, "lead", (new ItemLeash()).c("leash")); + a(421, "name_tag", (new ItemNameTag()).c("nameTag")); + a(422, "command_block_minecart", (new ItemMinecart(EntityMinecartAbstract.EnumMinecartType.COMMAND_BLOCK)).c("minecartCommandBlock").a((CreativeModeTab) null)); + a(423, "mutton", (new ItemFood(2, 0.3F, true)).c("muttonRaw")); + a(424, "cooked_mutton", (new ItemFood(6, 0.8F, true)).c("muttonCooked")); + a(425, "banner", (new ItemBanner()).b("banner")); + a(427, "spruce_door", (new ItemDoor(Blocks.SPRUCE_DOOR)).c("doorSpruce")); + a(428, "birch_door", (new ItemDoor(Blocks.BIRCH_DOOR)).c("doorBirch")); + a(429, "jungle_door", (new ItemDoor(Blocks.JUNGLE_DOOR)).c("doorJungle")); + a(430, "acacia_door", (new ItemDoor(Blocks.ACACIA_DOOR)).c("doorAcacia")); + a(431, "dark_oak_door", (new ItemDoor(Blocks.DARK_OAK_DOOR)).c("doorDarkOak")); + a(2256, "record_13", (new ItemRecord("13")).c("record")); + a(2257, "record_cat", (new ItemRecord("cat")).c("record")); + a(2258, "record_blocks", (new ItemRecord("blocks")).c("record")); + a(2259, "record_chirp", (new ItemRecord("chirp")).c("record")); + a(2260, "record_far", (new ItemRecord("far")).c("record")); + a(2261, "record_mall", (new ItemRecord("mall")).c("record")); + a(2262, "record_mellohi", (new ItemRecord("mellohi")).c("record")); + a(2263, "record_stal", (new ItemRecord("stal")).c("record")); + a(2264, "record_strad", (new ItemRecord("strad")).c("record")); + a(2265, "record_ward", (new ItemRecord("ward")).c("record")); + a(2266, "record_11", (new ItemRecord("11")).c("record")); + a(2267, "record_wait", (new ItemRecord("wait")).c("record")); + } + + private static void c(Block block) { + a(block, (Item) (new ItemBlock(block))); + } + + protected static void a(Block block, Item item) { + a(Block.getId(block), (MinecraftKey) Block.REGISTRY.c(block), item); + Item.a.put(block, item); + } + + private static void a(int i, String s, Item item) { + a(i, new MinecraftKey(s), item); + } + + private static void a(int i, MinecraftKey minecraftkey, Item item) { + Item.REGISTRY.a(i, minecraftkey, item); + } + + public static enum EnumToolMaterial { + + WOOD(0, 59, 2.0F, 0.0F, 15), STONE(1, 131, 4.0F, 1.0F, 5), IRON(2, 250, 6.0F, 2.0F, 14), EMERALD(3, 1561, 8.0F, 3.0F, 10), GOLD(0, 32, 12.0F, 0.0F, 22); + + private final int f; + private final int g; + private final float h; + private final float i; + private final int j; + + private EnumToolMaterial(int i, int j, float f, float f1, int k) { + this.f = i; + this.g = j; + this.h = f; + this.i = f1; + this.j = k; + } + + public int a() { + return this.g; + } + + public float b() { + return this.h; + } + + public float c() { + return this.i; + } + + public int d() { + return this.f; + } + + public int e() { + return this.j; + } + + public Item f() { + return this == Item.EnumToolMaterial.WOOD ? Item.getItemOf(Blocks.PLANKS) : (this == Item.EnumToolMaterial.STONE ? Item.getItemOf(Blocks.COBBLESTONE) : (this == Item.EnumToolMaterial.GOLD ? Items.GOLD_INGOT : (this == Item.EnumToolMaterial.IRON ? Items.IRON_INGOT : (this == Item.EnumToolMaterial.EMERALD ? Items.DIAMOND : null)))); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemAnvil.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemAnvil.java new file mode 100644 index 0000000..f3bf808 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemAnvil.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ItemAnvil extends ItemMultiTexture { + + public ItemAnvil(Block block) { + super(block, block, new String[] { "intact", "slightlyDamaged", "veryDamaged"}); + } + + public int filterData(int i) { + return i << 2; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemArmor.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemArmor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemArmor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemArmor.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemArmorStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemArmorStand.java new file mode 100644 index 0000000..d8de619 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemArmorStand.java @@ -0,0 +1,78 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class ItemArmorStand extends Item { + + public ItemArmorStand() { + this.a(CreativeModeTab.c); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (enumdirection == EnumDirection.DOWN) { + return false; + } else { + boolean flag = world.getType(blockposition).getBlock().a(world, blockposition); + BlockPosition blockposition1 = flag ? blockposition : blockposition.shift(enumdirection); + + if (!entityhuman.a(blockposition1, enumdirection, itemstack)) { + return false; + } else { + BlockPosition blockposition2 = blockposition1.up(); + boolean flag1 = !world.isEmpty(blockposition1) && !world.getType(blockposition1).getBlock().a(world, blockposition1); + + flag1 |= !world.isEmpty(blockposition2) && !world.getType(blockposition2).getBlock().a(world, blockposition2); + if (flag1) { + return false; + } else { + double d0 = (double) blockposition1.getX(); + double d1 = (double) blockposition1.getY(); + double d2 = (double) blockposition1.getZ(); + List list = world.getEntities((Entity) null, AxisAlignedBB.a(d0, d1, d2, d0 + 1.0D, d1 + 2.0D, d2 + 1.0D)); + + if (list.size() > 0) { + return false; + } else { + if (!world.isClientSide) { + world.setAir(blockposition1); + world.setAir(blockposition2); + EntityArmorStand entityarmorstand = new EntityArmorStand(world, d0 + 0.5D, d1, d2 + 0.5D); + float f3 = (float) MathHelper.d((MathHelper.g(entityhuman.yaw - 180.0F) + 22.5F) / 45.0F) * 45.0F; + + entityarmorstand.setPositionRotation(d0 + 0.5D, d1, d2 + 0.5D, f3, 0.0F); + this.a(entityarmorstand, world.random); + NBTTagCompound nbttagcompound = itemstack.getTag(); + + if (nbttagcompound != null && nbttagcompound.hasKeyOfType("EntityTag", 10)) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + entityarmorstand.d(nbttagcompound1); + nbttagcompound1.a(nbttagcompound.getCompound("EntityTag")); + entityarmorstand.f(nbttagcompound1); + } + + world.addEntity(entityarmorstand); + } + + --itemstack.count; + return true; + } + } + } + } + } + + private void a(EntityArmorStand entityarmorstand, Random random) { + Vector3f vector3f = entityarmorstand.t(); + float f = random.nextFloat() * 5.0F; + float f1 = random.nextFloat() * 20.0F - 10.0F; + Vector3f vector3f1 = new Vector3f(vector3f.getX() + f, vector3f.getY() + f1, vector3f.getZ()); + + entityarmorstand.setHeadPose(vector3f1); + vector3f = entityarmorstand.u(); + f = random.nextFloat() * 10.0F - 5.0F; + vector3f1 = new Vector3f(vector3f.getX(), vector3f.getY() + f, vector3f.getZ()); + entityarmorstand.setBodyPose(vector3f1); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemAxe.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemAxe.java new file mode 100644 index 0000000..7c3840c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemAxe.java @@ -0,0 +1,17 @@ +package net.minecraft.server; + +import com.google.common.collect.Sets; +import java.util.Set; + +public class ItemAxe extends ItemTool { + + private static final Set c = Sets.newHashSet(new Block[] { Blocks.PLANKS, Blocks.BOOKSHELF, Blocks.LOG, Blocks.LOG2, Blocks.CHEST, Blocks.PUMPKIN, Blocks.LIT_PUMPKIN, Blocks.MELON_BLOCK, Blocks.LADDER}); + + protected ItemAxe(Item.EnumToolMaterial item_enumtoolmaterial) { + super(3.0F, item_enumtoolmaterial, ItemAxe.c); + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + return block.getMaterial() != Material.WOOD && block.getMaterial() != Material.PLANT && block.getMaterial() != Material.REPLACEABLE_PLANT ? super.getDestroySpeed(itemstack, block) : this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemBanner.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBanner.java new file mode 100644 index 0000000..9c7ff9b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBanner.java @@ -0,0 +1,67 @@ +package net.minecraft.server; + +public class ItemBanner extends ItemBlock { + + public ItemBanner() { + super(Blocks.STANDING_BANNER); + this.maxStackSize = 16; + this.a(CreativeModeTab.c); + this.a(true); + this.setMaxDurability(0); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (enumdirection == EnumDirection.DOWN) { + return false; + } else if (!world.getType(blockposition).getBlock().getMaterial().isBuildable()) { + return false; + } else { + blockposition = blockposition.shift(enumdirection); + if (!entityhuman.a(blockposition, enumdirection, itemstack)) { + return false; + } else if (!Blocks.STANDING_BANNER.canPlace(world, blockposition)) { + return false; + } else if (world.isClientSide) { + return true; + } else { + if (enumdirection == EnumDirection.UP) { + int i = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15; + + world.setTypeAndData(blockposition, Blocks.STANDING_BANNER.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(i)), 3); + } else { + world.setTypeAndData(blockposition, Blocks.WALL_BANNER.getBlockData().set(BlockWallSign.FACING, enumdirection), 3); + } + + --itemstack.count; + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityBanner) { + ((TileEntityBanner) tileentity).a(itemstack); + } + + return true; + } + } + } + + public String a(ItemStack itemstack) { + String s = "item.banner."; + EnumColor enumcolor = this.h(itemstack); + + s = s + enumcolor.d() + ".name"; + return LocaleI18n.get(s); + } + + private EnumColor h(ItemStack itemstack) { + NBTTagCompound nbttagcompound = itemstack.a("BlockEntityTag", false); + EnumColor enumcolor = null; + + if (nbttagcompound != null && nbttagcompound.hasKey("Base")) { + enumcolor = EnumColor.fromInvColorIndex(nbttagcompound.getInt("Base")); + } else { + enumcolor = EnumColor.fromInvColorIndex(itemstack.getData()); + } + + return enumcolor; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemBed.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBed.java new file mode 100644 index 0000000..6b38236 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBed.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +public class ItemBed extends Item { + + public ItemBed() { + this.a(CreativeModeTab.c); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (world.isClientSide) { + return true; + } else if (enumdirection != EnumDirection.UP) { + return false; + } else { + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + boolean flag = block.a(world, blockposition); + + if (!flag) { + blockposition = blockposition.up(); + } + + int i = MathHelper.floor((double) (entityhuman.yaw * 4.0F / 360.0F) + 0.5D) & 3; + EnumDirection enumdirection1 = EnumDirection.fromType2(i); + BlockPosition blockposition1 = blockposition.shift(enumdirection1); + + if (entityhuman.a(blockposition, enumdirection, itemstack) && entityhuman.a(blockposition1, enumdirection, itemstack)) { + boolean flag1 = world.getType(blockposition1).getBlock().a(world, blockposition1); + boolean flag2 = flag || world.isEmpty(blockposition); + boolean flag3 = flag1 || world.isEmpty(blockposition1); + + if (flag2 && flag3 && World.a((IBlockAccess) world, blockposition.down()) && World.a((IBlockAccess) world, blockposition1.down())) { + IBlockData iblockdata1 = Blocks.BED.getBlockData().set(BlockBed.OCCUPIED, Boolean.valueOf(false)).set(BlockBed.FACING, enumdirection1).set(BlockBed.PART, BlockBed.EnumBedPart.FOOT); + + if (world.setTypeAndData(blockposition, iblockdata1, 3)) { + IBlockData iblockdata2 = iblockdata1.set(BlockBed.PART, BlockBed.EnumBedPart.HEAD); + + world.setTypeAndData(blockposition1, iblockdata2, 3); + } + + --itemstack.count; + return true; + } else { + return false; + } + } else { + return false; + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBlock.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemBlock.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBoat.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBoat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBoat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemBoat.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemBook.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBook.java new file mode 100644 index 0000000..24fd6dd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBook.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class ItemBook extends Item { + + public ItemBook() {} + + public boolean f_(ItemStack itemstack) { + return itemstack.count == 1; + } + + public int b() { + return 1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemBookAndQuill.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBookAndQuill.java new file mode 100644 index 0000000..a345507 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBookAndQuill.java @@ -0,0 +1,38 @@ +package net.minecraft.server; + +public class ItemBookAndQuill extends Item { + + public ItemBookAndQuill() { + this.c(1); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + entityhuman.openBook(itemstack); + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } + + public static boolean b(NBTTagCompound nbttagcompound) { + if (nbttagcompound == null) { + return false; + } else if (!nbttagcompound.hasKeyOfType("pages", 9)) { + return false; + } else { + NBTTagList nbttaglist = nbttagcompound.getList("pages", 8); + + for (int i = 0; i < nbttaglist.size(); ++i) { + String s = nbttaglist.getString(i); + + if (s == null) { + return false; + } + + if (s.length() > 32767) { + return false; + } + } + + return true; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBow.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemBow.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBucket.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemBucket.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemBucket.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemBucket.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemCarrotStick.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCarrotStick.java new file mode 100644 index 0000000..47a2786 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCarrotStick.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public class ItemCarrotStick extends Item { + + public ItemCarrotStick() { + this.a(CreativeModeTab.e); + this.c(1); + this.setMaxDurability(25); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (entityhuman.au() && entityhuman.vehicle instanceof EntityPig) { + EntityPig entitypig = (EntityPig) entityhuman.vehicle; + + if (entitypig.cm().h() && itemstack.j() - itemstack.getData() >= 7) { + entitypig.cm().g(); + itemstack.damage(7, entityhuman); + if (itemstack.count == 0) { + ItemStack itemstack1 = new ItemStack(Items.FISHING_ROD); + + itemstack1.setTag(itemstack.getTag()); + return itemstack1; + } + } + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemCloth.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCloth.java new file mode 100644 index 0000000..3a89af4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCloth.java @@ -0,0 +1,18 @@ +package net.minecraft.server; + +public class ItemCloth extends ItemBlock { + + public ItemCloth(Block block) { + super(block); + this.setMaxDurability(0); + this.a(true); + } + + public int filterData(int i) { + return i; + } + + public String e_(ItemStack itemstack) { + return super.getName() + "." + EnumColor.fromColorIndex(itemstack.getData()).d(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemCoal.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCoal.java new file mode 100644 index 0000000..d398370 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemCoal.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class ItemCoal extends Item { + + public ItemCoal() { + this.a(true); + this.setMaxDurability(0); + this.a(CreativeModeTab.l); + } + + public String e_(ItemStack itemstack) { + return itemstack.getData() == 1 ? "item.charcoal" : "item.coal"; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemDoor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemDoor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemDoor.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemDye.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemDye.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemDye.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemDye.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEgg.java new file mode 100644 index 0000000..41d6fb6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEgg.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +public class ItemEgg extends Item { + + public ItemEgg() { + this.maxStackSize = 16; + this.a(CreativeModeTab.l); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemEgg.g.nextFloat() * 0.4F + 0.8F)); + if (!world.isClientSide) { + world.addEntity(new EntityEgg(world, entityhuman)); + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnchantedBook.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnchantedBook.java new file mode 100644 index 0000000..801f14f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnchantedBook.java @@ -0,0 +1,72 @@ +package net.minecraft.server; + +import java.util.Random; + +public class ItemEnchantedBook extends Item { + + public ItemEnchantedBook() {} + + public boolean f_(ItemStack itemstack) { + return false; + } + + public EnumItemRarity g(ItemStack itemstack) { + return this.h(itemstack).size() > 0 ? EnumItemRarity.UNCOMMON : super.g(itemstack); + } + + public NBTTagList h(ItemStack itemstack) { + NBTTagCompound nbttagcompound = itemstack.getTag(); + + return nbttagcompound != null && nbttagcompound.hasKeyOfType("StoredEnchantments", 9) ? (NBTTagList) nbttagcompound.get("StoredEnchantments") : new NBTTagList(); + } + + public void a(ItemStack itemstack, WeightedRandomEnchant weightedrandomenchant) { + NBTTagList nbttaglist = this.h(itemstack); + boolean flag = true; + + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.get(i); + + if (nbttagcompound.getShort("id") == weightedrandomenchant.enchantment.id) { + if (nbttagcompound.getShort("lvl") < weightedrandomenchant.level) { + nbttagcompound.setShort("lvl", (short) weightedrandomenchant.level); + } + + flag = false; + break; + } + } + + if (flag) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound1.setShort("id", (short) weightedrandomenchant.enchantment.id); + nbttagcompound1.setShort("lvl", (short) weightedrandomenchant.level); + nbttaglist.add(nbttagcompound1); + } + + if (!itemstack.hasTag()) { + itemstack.setTag(new NBTTagCompound()); + } + + itemstack.getTag().set("StoredEnchantments", nbttaglist); + } + + public ItemStack a(WeightedRandomEnchant weightedrandomenchant) { + ItemStack itemstack = new ItemStack(this); + + this.a(itemstack, weightedrandomenchant); + return itemstack; + } + + public StructurePieceTreasure b(Random random) { + return this.a(random, 1, 1, 1); + } + + public StructurePieceTreasure a(Random random, int i, int j, int k) { + ItemStack itemstack = new ItemStack(Items.BOOK, 1, 0); + + EnchantmentManager.a(random, itemstack, 30); + return new StructurePieceTreasure(itemstack, i, j, k); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderEye.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderEye.java new file mode 100644 index 0000000..8c000a1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderEye.java @@ -0,0 +1,134 @@ +package net.minecraft.server; + +public class ItemEnderEye extends Item { + + public ItemEnderEye() { + this.a(CreativeModeTab.f); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + IBlockData iblockdata = world.getType(blockposition); + + if (entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack) && iblockdata.getBlock() == Blocks.END_PORTAL_FRAME && !((Boolean) iblockdata.get(BlockEnderPortalFrame.EYE)).booleanValue()) { + if (world.isClientSide) { + return true; + } else { + world.setTypeAndData(blockposition, iblockdata.set(BlockEnderPortalFrame.EYE, Boolean.valueOf(true)), 2); + world.updateAdjacentComparators(blockposition, Blocks.END_PORTAL_FRAME); + --itemstack.count; + + for (int i = 0; i < 16; ++i) { + double d0 = (double) ((float) blockposition.getX() + (5.0F + ItemEnderEye.g.nextFloat() * 6.0F) / 16.0F); + double d1 = (double) ((float) blockposition.getY() + 0.8125F); + double d2 = (double) ((float) blockposition.getZ() + (5.0F + ItemEnderEye.g.nextFloat() * 6.0F) / 16.0F); + double d3 = 0.0D; + double d4 = 0.0D; + double d5 = 0.0D; + + world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, d3, d4, d5, new int[0]); + } + + EnumDirection enumdirection1 = (EnumDirection) iblockdata.get(BlockEnderPortalFrame.FACING); + int j = 0; + int k = 0; + boolean flag = false; + boolean flag1 = true; + EnumDirection enumdirection2 = enumdirection1.e(); + + for (int l = -2; l <= 2; ++l) { + BlockPosition blockposition1 = blockposition.shift(enumdirection2, l); + IBlockData iblockdata1 = world.getType(blockposition1); + + if (iblockdata1.getBlock() == Blocks.END_PORTAL_FRAME) { + if (!((Boolean) iblockdata1.get(BlockEnderPortalFrame.EYE)).booleanValue()) { + flag1 = false; + break; + } + + k = l; + if (!flag) { + j = l; + flag = true; + } + } + } + + if (flag1 && k == j + 2) { + BlockPosition blockposition2 = blockposition.shift(enumdirection1, 4); + + int i1; + + for (i1 = j; i1 <= k; ++i1) { + BlockPosition blockposition3 = blockposition2.shift(enumdirection2, i1); + IBlockData iblockdata2 = world.getType(blockposition3); + + if (iblockdata2.getBlock() != Blocks.END_PORTAL_FRAME || !((Boolean) iblockdata2.get(BlockEnderPortalFrame.EYE)).booleanValue()) { + flag1 = false; + break; + } + } + + int j1; + BlockPosition blockposition4; + + for (i1 = j - 1; i1 <= k + 1; i1 += 4) { + blockposition2 = blockposition.shift(enumdirection2, i1); + + for (j1 = 1; j1 <= 3; ++j1) { + blockposition4 = blockposition2.shift(enumdirection1, j1); + IBlockData iblockdata3 = world.getType(blockposition4); + + if (iblockdata3.getBlock() != Blocks.END_PORTAL_FRAME || !((Boolean) iblockdata3.get(BlockEnderPortalFrame.EYE)).booleanValue()) { + flag1 = false; + break; + } + } + } + + if (flag1) { + for (i1 = j; i1 <= k; ++i1) { + blockposition2 = blockposition.shift(enumdirection2, i1); + + for (j1 = 1; j1 <= 3; ++j1) { + blockposition4 = blockposition2.shift(enumdirection1, j1); + world.setTypeAndData(blockposition4, Blocks.END_PORTAL.getBlockData(), 2); + } + } + } + } + + return true; + } + } else { + return false; + } + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + MovingObjectPosition movingobjectposition = this.a(world, entityhuman, false); + + if (movingobjectposition != null && movingobjectposition.type == MovingObjectPosition.EnumMovingObjectType.BLOCK && world.getType(movingobjectposition.a()).getBlock() == Blocks.END_PORTAL_FRAME) { + return itemstack; + } else { + if (!world.isClientSide) { + BlockPosition blockposition = world.a("Stronghold", new BlockPosition(entityhuman)); + + if (blockposition != null) { + EntityEnderSignal entityendersignal = new EntityEnderSignal(world, entityhuman.locX, entityhuman.locY, entityhuman.locZ); + + entityendersignal.a(blockposition); + world.addEntity(entityendersignal); + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemEnderEye.g.nextFloat() * 0.4F + 0.8F)); + world.a((EntityHuman) null, 1002, new BlockPosition(entityhuman), 0); + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + } + } + + return itemstack; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderPearl.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderPearl.java new file mode 100644 index 0000000..fbc9ab2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemEnderPearl.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +public class ItemEnderPearl extends Item { + + public ItemEnderPearl() { + this.maxStackSize = 16; + this.a(CreativeModeTab.f); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (entityhuman.abilities.canInstantlyBuild) { + return itemstack; + } else { + --itemstack.count; + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemEnderPearl.g.nextFloat() * 0.4F + 0.8F)); + if (!world.isClientSide) { + world.addEntity(new EntityEnderPearl(world, entityhuman)); + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemExpBottle.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemExpBottle.java new file mode 100644 index 0000000..d919694 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemExpBottle.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class ItemExpBottle extends Item { + + public ItemExpBottle() { + this.a(CreativeModeTab.f); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemExpBottle.g.nextFloat() * 0.4F + 0.8F)); + if (!world.isClientSide) { + world.addEntity(new EntityThrownExpBottle(world, entityhuman)); + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFireball.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemFireball.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworks.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworks.java new file mode 100644 index 0000000..e193a07 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworks.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class ItemFireworks extends Item { + + public ItemFireworks() {} + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (!world.isClientSide) { + EntityFireworks entityfireworks = new EntityFireworks(world, (double) ((float) blockposition.getX() + f), (double) ((float) blockposition.getY() + f1), (double) ((float) blockposition.getZ() + f2), itemstack); + + world.addEntity(entityfireworks); + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + return true; + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworksCharge.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworksCharge.java new file mode 100644 index 0000000..e7ca932 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFireworksCharge.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public class ItemFireworksCharge extends Item { + + public ItemFireworksCharge() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemFish.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFish.java new file mode 100644 index 0000000..409a064 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFish.java @@ -0,0 +1,132 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Map; + +public class ItemFish extends ItemFood { + + private final boolean b; + + public ItemFish(boolean flag) { + super(0, 0.0F, false); + this.b = flag; + } + + public int getNutrition(ItemStack itemstack) { + ItemFish.EnumFish itemfish_enumfish = ItemFish.EnumFish.a(itemstack); + + return this.b && itemfish_enumfish.g() ? itemfish_enumfish.e() : itemfish_enumfish.c(); + } + + public float getSaturationModifier(ItemStack itemstack) { + ItemFish.EnumFish itemfish_enumfish = ItemFish.EnumFish.a(itemstack); + + return this.b && itemfish_enumfish.g() ? itemfish_enumfish.f() : itemfish_enumfish.d(); + } + + public String j(ItemStack itemstack) { + return ItemFish.EnumFish.a(itemstack) == ItemFish.EnumFish.PUFFERFISH ? PotionBrewer.m : null; + } + + protected void c(ItemStack itemstack, World world, EntityHuman entityhuman) { + ItemFish.EnumFish itemfish_enumfish = ItemFish.EnumFish.a(itemstack); + + if (itemfish_enumfish == ItemFish.EnumFish.PUFFERFISH) { + entityhuman.addEffect(new MobEffect(MobEffectList.POISON.id, 1200, 3)); + entityhuman.addEffect(new MobEffect(MobEffectList.HUNGER.id, 300, 2)); + entityhuman.addEffect(new MobEffect(MobEffectList.CONFUSION.id, 300, 1)); + } + + super.c(itemstack, world, entityhuman); + } + + public String e_(ItemStack itemstack) { + ItemFish.EnumFish itemfish_enumfish = ItemFish.EnumFish.a(itemstack); + + return this.getName() + "." + itemfish_enumfish.b() + "." + (this.b && itemfish_enumfish.g() ? "cooked" : "raw"); + } + + public static enum EnumFish { + + COD(0, "cod", 2, 0.1F, 5, 0.6F), SALMON(1, "salmon", 2, 0.1F, 6, 0.8F), CLOWNFISH(2, "clownfish", 1, 0.1F), PUFFERFISH(3, "pufferfish", 1, 0.1F); + + private static final Map e = Maps.newHashMap(); + private final int f; + private final String g; + private final int h; + private final float i; + private final int j; + private final float k; + private boolean l = false; + + private EnumFish(int i, String s, int j, float f, int k, float f1) { + this.f = i; + this.g = s; + this.h = j; + this.i = f; + this.j = k; + this.k = f1; + this.l = true; + } + + private EnumFish(int i, String s, int j, float f) { + this.f = i; + this.g = s; + this.h = j; + this.i = f; + this.j = 0; + this.k = 0.0F; + this.l = false; + } + + public int a() { + return this.f; + } + + public String b() { + return this.g; + } + + public int c() { + return this.h; + } + + public float d() { + return this.i; + } + + public int e() { + return this.j; + } + + public float f() { + return this.k; + } + + public boolean g() { + return this.l; + } + + public static ItemFish.EnumFish a(int i) { + ItemFish.EnumFish itemfish_enumfish = (ItemFish.EnumFish) ItemFish.EnumFish.e.get(Integer.valueOf(i)); + + return itemfish_enumfish == null ? ItemFish.EnumFish.COD : itemfish_enumfish; + } + + public static ItemFish.EnumFish a(ItemStack itemstack) { + return itemstack.getItem() instanceof ItemFish ? a(itemstack.getData()) : ItemFish.EnumFish.COD; + } + + static { + ItemFish.EnumFish[] aitemfish_enumfish = values(); + int i = aitemfish_enumfish.length; + + for (int j = 0; j < i; ++j) { + ItemFish.EnumFish itemfish_enumfish = aitemfish_enumfish[j]; + + ItemFish.EnumFish.e.put(Integer.valueOf(itemfish_enumfish.a()), itemfish_enumfish); + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFishingRod.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFishingRod.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFishingRod.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemFishingRod.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFlintAndSteel.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFlintAndSteel.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemFlintAndSteel.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemFlintAndSteel.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemFood.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFood.java new file mode 100644 index 0000000..4a2ec5d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemFood.java @@ -0,0 +1,83 @@ +package net.minecraft.server; + +public class ItemFood extends Item { + + public final int a; + private final int b; + private final float c; + private final boolean d; + private boolean k; + private int l; + private int m; + private int n; + private float o; + + public ItemFood(int i, float f, boolean flag) { + this.a = 32; + this.b = i; + this.d = flag; + this.c = f; + this.a(CreativeModeTab.h); + } + + public ItemFood(int i, boolean flag) { + this(i, 0.6F, flag); + } + + public ItemStack b(ItemStack itemstack, World world, EntityHuman entityhuman) { + --itemstack.count; + entityhuman.getFoodData().a(this, itemstack); + world.makeSound(entityhuman, "random.burp", 0.5F, world.random.nextFloat() * 0.1F + 0.9F); + this.c(itemstack, world, entityhuman); + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } + + protected void c(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!world.isClientSide && this.l > 0 && world.random.nextFloat() < this.o) { + entityhuman.addEffect(new MobEffect(this.l, this.m * 20, this.n)); + } + + } + + public int d(ItemStack itemstack) { + return 32; + } + + public EnumAnimation e(ItemStack itemstack) { + return EnumAnimation.EAT; + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (entityhuman.j(this.k)) { + entityhuman.a(itemstack, this.d(itemstack)); + } + + return itemstack; + } + + public int getNutrition(ItemStack itemstack) { + return this.b; + } + + public float getSaturationModifier(ItemStack itemstack) { + return this.c; + } + + public boolean g() { + return this.d; + } + + public ItemFood a(int i, int j, int k, float f) { + this.l = i; + this.m = j; + this.n = k; + this.o = f; + return this; + } + + public ItemFood h() { + this.k = true; + return this; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemGlassBottle.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemGlassBottle.java new file mode 100644 index 0000000..fbda18d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemGlassBottle.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +public class ItemGlassBottle extends Item { + + public ItemGlassBottle() { + this.a(CreativeModeTab.k); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + MovingObjectPosition movingobjectposition = this.a(world, entityhuman, true); + + if (movingobjectposition == null) { + return itemstack; + } else { + if (movingobjectposition.type == MovingObjectPosition.EnumMovingObjectType.BLOCK) { + BlockPosition blockposition = movingobjectposition.a(); + + if (!world.a(entityhuman, blockposition)) { + return itemstack; + } + + if (!entityhuman.a(blockposition.shift(movingobjectposition.direction), movingobjectposition.direction, itemstack)) { + return itemstack; + } + + if (world.getType(blockposition).getBlock().getMaterial() == Material.WATER) { + --itemstack.count; + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + if (itemstack.count <= 0) { + return new ItemStack(Items.POTION); + } + + if (!entityhuman.inventory.pickup(new ItemStack(Items.POTION))) { + entityhuman.drop(new ItemStack(Items.POTION, 1, 0), false); + } + } + } + + return itemstack; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemGoldenApple.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemGoldenApple.java new file mode 100644 index 0000000..1537d21 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemGoldenApple.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public class ItemGoldenApple extends ItemFood { + + public ItemGoldenApple(int i, float f, boolean flag) { + super(i, f, flag); + this.a(true); + } + + public EnumItemRarity g(ItemStack itemstack) { + return itemstack.getData() == 0 ? EnumItemRarity.RARE : EnumItemRarity.EPIC; + } + + protected void c(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!world.isClientSide) { + entityhuman.addEffect(new MobEffect(MobEffectList.ABSORBTION.id, 2400, 0)); + } + + if (itemstack.getData() > 0) { + if (!world.isClientSide) { + entityhuman.addEffect(new MobEffect(MobEffectList.REGENERATION.id, 600, 4)); + entityhuman.addEffect(new MobEffect(MobEffectList.RESISTANCE.id, 6000, 0)); + entityhuman.addEffect(new MobEffect(MobEffectList.FIRE_RESISTANCE.id, 6000, 0)); + } + } else { + super.c(itemstack, world, entityhuman); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemHanging.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemHanging.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemHanging.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemHanging.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemHoe.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemHoe.java new file mode 100644 index 0000000..7c041a0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemHoe.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public class ItemHoe extends Item { + + protected Item.EnumToolMaterial a; + + public ItemHoe(Item.EnumToolMaterial item_enumtoolmaterial) { + this.a = item_enumtoolmaterial; + this.maxStackSize = 1; + this.setMaxDurability(item_enumtoolmaterial.a()); + this.a(CreativeModeTab.i); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (!entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack)) { + return false; + } else { + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + + if (enumdirection != EnumDirection.DOWN && world.getType(blockposition.up()).getBlock().getMaterial() == Material.AIR) { + if (block == Blocks.GRASS) { + return this.a(itemstack, entityhuman, world, blockposition, Blocks.FARMLAND.getBlockData()); + } + + if (block == Blocks.DIRT) { + switch (ItemHoe.SyntheticClass_1.a[((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).ordinal()]) { + case 1: + return this.a(itemstack, entityhuman, world, blockposition, Blocks.FARMLAND.getBlockData()); + + case 2: + return this.a(itemstack, entityhuman, world, blockposition, Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT)); + } + } + } + + return false; + } + } + + protected boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, IBlockData iblockdata) { + world.makeSound((double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), iblockdata.getBlock().stepSound.getStepSound(), (iblockdata.getBlock().stepSound.getVolume1() + 1.0F) / 2.0F, iblockdata.getBlock().stepSound.getVolume2() * 0.8F); + if (world.isClientSide) { + return true; + } else { + world.setTypeUpdate(blockposition, iblockdata); + itemstack.damage(1, entityhuman); + return true; + } + } + + public String g() { + return this.a.toString(); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[BlockDirt.EnumDirtVariant.values().length]; + + static { + try { + ItemHoe.SyntheticClass_1.a[BlockDirt.EnumDirtVariant.DIRT.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + ItemHoe.SyntheticClass_1.a[BlockDirt.EnumDirtVariant.COARSE_DIRT.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemLeash.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemLeash.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemLeash.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemLeash.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemLeaves.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemLeaves.java new file mode 100644 index 0000000..31bb831 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemLeaves.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class ItemLeaves extends ItemBlock { + + private final BlockLeaves b; + + public ItemLeaves(BlockLeaves blockleaves) { + super(blockleaves); + this.b = blockleaves; + this.setMaxDurability(0); + this.a(true); + } + + public int filterData(int i) { + return i | 4; + } + + public String e_(ItemStack itemstack) { + return super.getName() + "." + this.b.b(itemstack.getData()).d(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMapEmpty.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMapEmpty.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMapEmpty.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemMapEmpty.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMilkBucket.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMilkBucket.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMilkBucket.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemMilkBucket.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMinecart.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMinecart.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMinecart.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemMinecart.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMonsterEgg.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemMonsterEgg.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemMonsterEgg.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemMultiTexture.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMultiTexture.java new file mode 100644 index 0000000..4bdc129 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemMultiTexture.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import com.google.common.base.Function; + +public class ItemMultiTexture extends ItemBlock { + + protected final Block b; + protected final Function c; + + public ItemMultiTexture(Block block, Block block1, Function function) { + super(block); + this.b = block1; + this.c = function; + this.setMaxDurability(0); + this.a(true); + } + + public ItemMultiTexture(Block block, Block block1, final String[] astring) { + this(block, block1, new Function() { + public String a(ItemStack itemstack) { + int i = itemstack.getData(); + + if (i < 0 || i >= astring.length) { + i = 0; + } + + return astring[i]; + } + + public Object apply(Object object) { + return this.a((ItemStack) object); + } + }); + } + + public int filterData(int i) { + return i; + } + + public String e_(ItemStack itemstack) { + return super.getName() + "." + (String) this.c.apply(itemstack); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemNameTag.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemNameTag.java new file mode 100644 index 0000000..9c3b3c5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemNameTag.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +public class ItemNameTag extends Item { + + public ItemNameTag() { + this.a(CreativeModeTab.i); + } + + public boolean a(ItemStack itemstack, EntityHuman entityhuman, EntityLiving entityliving) { + if (!itemstack.hasName()) { + return false; + } else if (entityliving instanceof EntityInsentient) { + EntityInsentient entityinsentient = (EntityInsentient) entityliving; + + entityinsentient.setCustomName(itemstack.getName()); + entityinsentient.bX(); + --itemstack.count; + return true; + } else { + return super.a(itemstack, entityhuman, entityliving); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemNetherStar.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemNetherStar.java new file mode 100644 index 0000000..86319b7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemNetherStar.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public class ItemNetherStar extends Item { + + public ItemNetherStar() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemPickaxe.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPickaxe.java new file mode 100644 index 0000000..85405e6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPickaxe.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +import com.google.common.collect.Sets; +import java.util.Set; + +public class ItemPickaxe extends ItemTool { + + private static final Set c = Sets.newHashSet(new Block[] { Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.DOUBLE_STONE_SLAB, Blocks.GOLDEN_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.LIT_REDSTONE_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.STONE_SLAB}); + + protected ItemPickaxe(Item.EnumToolMaterial item_enumtoolmaterial) { + super(2.0F, item_enumtoolmaterial, ItemPickaxe.c); + } + + public boolean canDestroySpecialBlock(Block block) { + return block == Blocks.OBSIDIAN ? this.b.d() == 3 : (block != Blocks.DIAMOND_BLOCK && block != Blocks.DIAMOND_ORE ? (block != Blocks.EMERALD_ORE && block != Blocks.EMERALD_BLOCK ? (block != Blocks.GOLD_BLOCK && block != Blocks.GOLD_ORE ? (block != Blocks.IRON_BLOCK && block != Blocks.IRON_ORE ? (block != Blocks.LAPIS_BLOCK && block != Blocks.LAPIS_ORE ? (block != Blocks.REDSTONE_ORE && block != Blocks.LIT_REDSTONE_ORE ? (block.getMaterial() == Material.STONE ? true : (block.getMaterial() == Material.ORE ? true : block.getMaterial() == Material.HEAVY)) : this.b.d() >= 2) : this.b.d() >= 1) : this.b.d() >= 1) : this.b.d() >= 2) : this.b.d() >= 2) : this.b.d() >= 2); + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + return block.getMaterial() != Material.ORE && block.getMaterial() != Material.HEAVY && block.getMaterial() != Material.STONE ? super.getDestroySpeed(itemstack, block) : this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemPiston.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPiston.java new file mode 100644 index 0000000..85ff125 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPiston.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ItemPiston extends ItemBlock { + + public ItemPiston(Block block) { + super(block); + } + + public int filterData(int i) { + return 7; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemPotion.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPotion.java new file mode 100644 index 0000000..45dd15b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemPotion.java @@ -0,0 +1,145 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class ItemPotion extends Item { + + private Map> a = Maps.newHashMap(); + private static final Map, Integer> b = Maps.newLinkedHashMap(); + + public ItemPotion() { + this.c(1); + this.a(true); + this.setMaxDurability(0); + this.a(CreativeModeTab.k); + } + + public List h(ItemStack itemstack) { + if (itemstack.hasTag() && itemstack.getTag().hasKeyOfType("CustomPotionEffects", 9)) { + ArrayList arraylist = Lists.newArrayList(); + NBTTagList nbttaglist = itemstack.getTag().getList("CustomPotionEffects", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.get(i); + MobEffect mobeffect = MobEffect.b(nbttagcompound); + + if (mobeffect != null) { + arraylist.add(mobeffect); + } + } + + return arraylist; + } else { + List list = (List) this.a.get(Integer.valueOf(itemstack.getData())); + + if (list == null) { + list = PotionBrewer.getEffects(itemstack.getData(), false); + this.a.put(Integer.valueOf(itemstack.getData()), list); + } + + return list; + } + } + + public List e(int i) { + List list = (List) this.a.get(Integer.valueOf(i)); + + if (list == null) { + list = PotionBrewer.getEffects(i, false); + this.a.put(Integer.valueOf(i), list); + } + + return list; + } + + public ItemStack b(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + if (!world.isClientSide) { + List list = this.h(itemstack); + + if (list != null) { + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + MobEffect mobeffect = (MobEffect) iterator.next(); + + entityhuman.addEffect(new MobEffect(mobeffect)); + } + } + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + if (!entityhuman.abilities.canInstantlyBuild) { + if (itemstack.count <= 0) { + return new ItemStack(Items.GLASS_BOTTLE); + } + + entityhuman.inventory.pickup(new ItemStack(Items.GLASS_BOTTLE)); + } + + return itemstack; + } + + public int d(ItemStack itemstack) { + return 32; + } + + public EnumAnimation e(ItemStack itemstack) { + return EnumAnimation.DRINK; + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (f(itemstack.getData())) { + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemPotion.g.nextFloat() * 0.4F + 0.8F)); + if (!world.isClientSide) { + world.addEntity(new EntityPotion(world, entityhuman, itemstack)); + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } else { + entityhuman.a(itemstack, this.d(itemstack)); + return itemstack; + } + } + + public static boolean f(int i) { + return (i & 16384) != 0; + } + + public String a(ItemStack itemstack) { + if (itemstack.getData() == 0) { + return LocaleI18n.get("item.emptyPotion.name").trim(); + } else { + String s = ""; + + if (f(itemstack.getData())) { + s = LocaleI18n.get("potion.prefix.grenade").trim() + " "; + } + + List list = Items.POTION.h(itemstack); + String s1; + + if (list != null && !list.isEmpty()) { + s1 = ((MobEffect) list.get(0)).g(); + s1 = s1 + ".postfix"; + return s + LocaleI18n.get(s1).trim(); + } else { + s1 = PotionBrewer.c(itemstack.getData()); + return LocaleI18n.get(s1).trim() + " " + super.a(itemstack); + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemRecord.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemRecord.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemRecord.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemRecord.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemRedstone.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemRedstone.java new file mode 100644 index 0000000..210e629 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemRedstone.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +public class ItemRedstone extends Item { + + public ItemRedstone() { + this.a(CreativeModeTab.d); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + boolean flag = world.getType(blockposition).getBlock().a(world, blockposition); + BlockPosition blockposition1 = flag ? blockposition : blockposition.shift(enumdirection); + + if (!entityhuman.a(blockposition1, enumdirection, itemstack)) { + return false; + } else { + Block block = world.getType(blockposition1).getBlock(); + + if (!world.a(block, blockposition1, false, enumdirection, (Entity) null, itemstack)) { + return false; + } else if (Blocks.REDSTONE_WIRE.canPlace(world, blockposition1)) { + --itemstack.count; + world.setTypeUpdate(blockposition1, Blocks.REDSTONE_WIRE.getBlockData()); + return true; + } else { + return false; + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemReed.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemReed.java new file mode 100644 index 0000000..7da20be --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemReed.java @@ -0,0 +1,45 @@ +package net.minecraft.server; + +public class ItemReed extends Item { + + private Block a; + + public ItemReed(Block block) { + this.a = block; + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + + if (block == Blocks.SNOW_LAYER && ((Integer) iblockdata.get(BlockSnow.LAYERS)).intValue() < 1) { + enumdirection = EnumDirection.UP; + } else if (!block.a(world, blockposition)) { + blockposition = blockposition.shift(enumdirection); + } + + if (!entityhuman.a(blockposition, enumdirection, itemstack)) { + return false; + } else if (itemstack.count == 0) { + return false; + } else { + if (world.a(this.a, blockposition, false, enumdirection, (Entity) null, itemstack)) { + IBlockData iblockdata1 = this.a.getPlacedState(world, blockposition, enumdirection, f, f1, f2, 0, entityhuman); + + if (world.setTypeAndData(blockposition, iblockdata1, 3)) { + iblockdata1 = world.getType(blockposition); + if (iblockdata1.getBlock() == this.a) { + ItemBlock.a(world, entityhuman, blockposition, itemstack); + iblockdata1.getBlock().postPlace(world, blockposition, iblockdata1, entityhuman, itemstack); + } + + world.makeSound((double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), this.a.stepSound.getPlaceSound(), (this.a.stepSound.getVolume1() + 1.0F) / 2.0F, this.a.stepSound.getVolume2() * 0.8F); + --itemstack.count; + return true; + } + } + + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSaddle.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSaddle.java new file mode 100644 index 0000000..b13fd00 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSaddle.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public class ItemSaddle extends Item { + + public ItemSaddle() { + this.maxStackSize = 1; + this.a(CreativeModeTab.e); + } + + public boolean a(ItemStack itemstack, EntityHuman entityhuman, EntityLiving entityliving) { + if (entityliving instanceof EntityPig) { + EntityPig entitypig = (EntityPig) entityliving; + + if (!entitypig.hasSaddle() && !entitypig.isBaby()) { + entitypig.setSaddle(true); + entitypig.world.makeSound(entitypig, "mob.horse.leather", 0.5F, 1.0F); + --itemstack.count; + } + + return true; + } else { + return false; + } + } + + public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { + this.a(itemstack, (EntityHuman) null, entityliving); + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeedFood.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeedFood.java new file mode 100644 index 0000000..3229add --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeedFood.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +public class ItemSeedFood extends ItemFood { + + private Block b; + private Block c; + + public ItemSeedFood(int i, float f, Block block, Block block1) { + super(i, f, false); + this.b = block; + this.c = block1; + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (enumdirection != EnumDirection.UP) { + return false; + } else if (!entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack)) { + return false; + } else if (world.getType(blockposition).getBlock() == this.c && world.isEmpty(blockposition.up())) { + world.setTypeUpdate(blockposition.up(), this.b.getBlockData()); + --itemstack.count; + return true; + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeeds.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeeds.java new file mode 100644 index 0000000..0d573d3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSeeds.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +public class ItemSeeds extends Item { + + private Block a; + private Block b; + + public ItemSeeds(Block block, Block block1) { + this.a = block; + this.b = block1; + this.a(CreativeModeTab.l); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (enumdirection != EnumDirection.UP) { + return false; + } else if (!entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack)) { + return false; + } else if (world.getType(blockposition).getBlock() == this.b && world.isEmpty(blockposition.up())) { + world.setTypeUpdate(blockposition.up(), this.a.getBlockData()); + --itemstack.count; + return true; + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemShears.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemShears.java new file mode 100644 index 0000000..d6effdf --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemShears.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +public class ItemShears extends Item { + + public ItemShears() { + this.c(1); + this.setMaxDurability(238); + this.a(CreativeModeTab.i); + } + + public boolean a(ItemStack itemstack, World world, Block block, BlockPosition blockposition, EntityLiving entityliving) { + if (block.getMaterial() != Material.LEAVES && block != Blocks.WEB && block != Blocks.TALLGRASS && block != Blocks.VINE && block != Blocks.TRIPWIRE && block != Blocks.WOOL) { + return super.a(itemstack, world, block, blockposition, entityliving); + } else { + itemstack.damage(1, entityliving); + return true; + } + } + + public boolean canDestroySpecialBlock(Block block) { + return block == Blocks.WEB || block == Blocks.REDSTONE_WIRE || block == Blocks.TRIPWIRE; + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + return block != Blocks.WEB && block.getMaterial() != Material.LEAVES ? (block == Blocks.WOOL ? 5.0F : super.getDestroySpeed(itemstack, block)) : 15.0F; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSign.java new file mode 100644 index 0000000..73b7d8e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSign.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +public class ItemSign extends Item { + + public ItemSign() { + this.maxStackSize = 16; + this.a(CreativeModeTab.c); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (enumdirection == EnumDirection.DOWN) { + return false; + } else if (!world.getType(blockposition).getBlock().getMaterial().isBuildable()) { + return false; + } else { + blockposition = blockposition.shift(enumdirection); + if (!entityhuman.a(blockposition, enumdirection, itemstack)) { + return false; + } else if (!Blocks.STANDING_SIGN.canPlace(world, blockposition)) { + return false; + } else if (world.isClientSide) { + return true; + } else { + if (enumdirection == EnumDirection.UP) { + int i = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15; + + world.setTypeAndData(blockposition, Blocks.STANDING_SIGN.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(i)), 3); + } else { + world.setTypeAndData(blockposition, Blocks.WALL_SIGN.getBlockData().set(BlockWallSign.FACING, enumdirection), 3); + } + + --itemstack.count; + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntitySign && !ItemBlock.a(world, entityhuman, blockposition, itemstack)) { + entityhuman.openSign((TileEntitySign) tileentity); + } + + return true; + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemSkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemSkull.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemSkull.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnow.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnow.java new file mode 100644 index 0000000..f79e1f8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnow.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +public class ItemSnow extends ItemBlock { + + public ItemSnow(Block block) { + super(block); + this.setMaxDurability(0); + this.a(true); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (itemstack.count == 0) { + return false; + } else if (!entityhuman.a(blockposition, enumdirection, itemstack)) { + return false; + } else { + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + BlockPosition blockposition1 = blockposition; + + if ((enumdirection != EnumDirection.UP || block != this.a) && !block.a(world, blockposition)) { + blockposition1 = blockposition.shift(enumdirection); + iblockdata = world.getType(blockposition1); + block = iblockdata.getBlock(); + } + + if (block == this.a) { + int i = ((Integer) iblockdata.get(BlockSnow.LAYERS)).intValue(); + + if (i <= 7) { + IBlockData iblockdata1 = iblockdata.set(BlockSnow.LAYERS, Integer.valueOf(i + 1)); + AxisAlignedBB axisalignedbb = this.a.a(world, blockposition1, iblockdata1); + + if (axisalignedbb != null && world.b(axisalignedbb) && world.setTypeAndData(blockposition1, iblockdata1, 2)) { + world.makeSound((double) ((float) blockposition1.getX() + 0.5F), (double) ((float) blockposition1.getY() + 0.5F), (double) ((float) blockposition1.getZ() + 0.5F), this.a.stepSound.getPlaceSound(), (this.a.stepSound.getVolume1() + 1.0F) / 2.0F, this.a.stepSound.getVolume2() * 0.8F); + --itemstack.count; + return true; + } + } + } + + return super.interactWith(itemstack, entityhuman, world, blockposition1, enumdirection, f, f1, f2); + } + } + + public int filterData(int i) { + return i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnowball.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnowball.java new file mode 100644 index 0000000..57324b9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSnowball.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +public class ItemSnowball extends Item { + + public ItemSnowball() { + this.maxStackSize = 16; + this.a(CreativeModeTab.f); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!entityhuman.abilities.canInstantlyBuild) { + --itemstack.count; + } + + world.makeSound(entityhuman, "random.bow", 0.5F, 0.4F / (ItemSnowball.g.nextFloat() * 0.4F + 0.8F)); + if (!world.isClientSide) { + world.addEntity(new EntitySnowball(world, entityhuman)); + } + + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSoup.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSoup.java new file mode 100644 index 0000000..de3023c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSoup.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class ItemSoup extends ItemFood { + + public ItemSoup(int i) { + super(i, false); + this.c(1); + } + + public ItemStack b(ItemStack itemstack, World world, EntityHuman entityhuman) { + super.b(itemstack, world, entityhuman); + return new ItemStack(Items.BOWL); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSpade.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSpade.java new file mode 100644 index 0000000..7d8224b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSpade.java @@ -0,0 +1,17 @@ +package net.minecraft.server; + +import com.google.common.collect.Sets; +import java.util.Set; + +public class ItemSpade extends ItemTool { + + private static final Set c = Sets.newHashSet(new Block[] { Blocks.CLAY, Blocks.DIRT, Blocks.FARMLAND, Blocks.GRASS, Blocks.GRAVEL, Blocks.MYCELIUM, Blocks.SAND, Blocks.SNOW, Blocks.SNOW_LAYER, Blocks.SOUL_SAND}); + + public ItemSpade(Item.EnumToolMaterial item_enumtoolmaterial) { + super(1.0F, item_enumtoolmaterial, ItemSpade.c); + } + + public boolean canDestroySpecialBlock(Block block) { + return block == Blocks.SNOW_LAYER ? true : block == Blocks.SNOW; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemStack.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemStack.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemStack.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemStack.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemStep.java new file mode 100644 index 0000000..4a84372 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemStep.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public class ItemStep extends ItemBlock { + + private final BlockStepAbstract b; + private final BlockStepAbstract c; + + public ItemStep(Block block, BlockStepAbstract blockstepabstract, BlockStepAbstract blockstepabstract1) { + super(block); + this.b = blockstepabstract; + this.c = blockstepabstract1; + this.setMaxDurability(0); + this.a(true); + } + + public int filterData(int i) { + return i; + } + + public String e_(ItemStack itemstack) { + return this.b.b(itemstack.getData()); + } + + public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) { + if (itemstack.count == 0) { + return false; + } else if (!entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack)) { + return false; + } else { + Object object = this.b.a(itemstack); + IBlockData iblockdata = world.getType(blockposition); + + if (iblockdata.getBlock() == this.b) { + IBlockState iblockstate = this.b.n(); + Comparable comparable = iblockdata.get(iblockstate); + BlockStepAbstract.EnumSlabHalf blockstepabstract_enumslabhalf = (BlockStepAbstract.EnumSlabHalf) iblockdata.get(BlockStepAbstract.HALF); + + if ((enumdirection == EnumDirection.UP && blockstepabstract_enumslabhalf == BlockStepAbstract.EnumSlabHalf.BOTTOM || enumdirection == EnumDirection.DOWN && blockstepabstract_enumslabhalf == BlockStepAbstract.EnumSlabHalf.TOP) && comparable == object) { + IBlockData iblockdata1 = this.c.getBlockData().set(iblockstate, comparable); + + if (world.b(this.c.a(world, blockposition, iblockdata1)) && world.setTypeAndData(blockposition, iblockdata1, 3)) { + world.makeSound((double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), this.c.stepSound.getPlaceSound(), (this.c.stepSound.getVolume1() + 1.0F) / 2.0F, this.c.stepSound.getVolume2() * 0.8F); + --itemstack.count; + } + + return true; + } + } + + return this.a(itemstack, world, blockposition.shift(enumdirection), object) ? true : super.interactWith(itemstack, entityhuman, world, blockposition, enumdirection, f, f1, f2); + } + } + + private boolean a(ItemStack itemstack, World world, BlockPosition blockposition, Object object) { + IBlockData iblockdata = world.getType(blockposition); + + if (iblockdata.getBlock() == this.b) { + Comparable comparable = iblockdata.get(this.b.n()); + + if (comparable == object) { + IBlockState state = this.b.n(); + IBlockData iblockdata1 = this.c.getBlockData().set(state, comparable); + + if (world.b(this.c.a(world, blockposition, iblockdata1)) && world.setTypeAndData(blockposition, iblockdata1, 3)) { + world.makeSound((double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), this.c.stepSound.getPlaceSound(), (this.c.stepSound.getVolume1() + 1.0F) / 2.0F, this.c.stepSound.getVolume2() * 0.8F); + --itemstack.count; + } + + return true; + } + } + + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemSword.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSword.java new file mode 100644 index 0000000..f2efd9f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemSword.java @@ -0,0 +1,80 @@ +package net.minecraft.server; + +import com.google.common.collect.Multimap; + +public class ItemSword extends Item { + + private float a; + private final Item.EnumToolMaterial b; + + public ItemSword(Item.EnumToolMaterial item_enumtoolmaterial) { + this.b = item_enumtoolmaterial; + this.maxStackSize = 1; + this.setMaxDurability(item_enumtoolmaterial.a()); + this.a(CreativeModeTab.j); + this.a = 4.0F + item_enumtoolmaterial.c(); + } + + public float g() { + return this.b.c(); + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + if (block == Blocks.WEB) { + return 15.0F; + } else { + Material material = block.getMaterial(); + + return material != Material.PLANT && material != Material.REPLACEABLE_PLANT && material != Material.CORAL && material != Material.LEAVES && material != Material.PUMPKIN ? 1.0F : 1.5F; + } + } + + public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { + itemstack.damage(1, entityliving1); + return true; + } + + public boolean a(ItemStack itemstack, World world, Block block, BlockPosition blockposition, EntityLiving entityliving) { + if ((double) block.g(world, blockposition) != 0.0D) { + itemstack.damage(2, entityliving); + } + + return true; + } + + public EnumAnimation e(ItemStack itemstack) { + return EnumAnimation.BLOCK; + } + + public int d(ItemStack itemstack) { + return 72000; + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + entityhuman.a(itemstack, this.d(itemstack)); + return itemstack; + } + + public boolean canDestroySpecialBlock(Block block) { + return block == Blocks.WEB; + } + + public int b() { + return this.b.e(); + } + + public String h() { + return this.b.toString(); + } + + public boolean a(ItemStack itemstack, ItemStack itemstack1) { + return this.b.f() == itemstack1.getItem() ? true : super.a(itemstack, itemstack1); + } + + public Multimap i() { + Multimap multimap = super.i(); + + multimap.put(GenericAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ItemSword.f, "Weapon modifier", (double) this.a, 0)); + return multimap; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemTallPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemTallPlant.java new file mode 100644 index 0000000..8c9ca00 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemTallPlant.java @@ -0,0 +1,10 @@ +package net.minecraft.server; + +import com.google.common.base.Function; + +public class ItemTallPlant extends ItemMultiTexture { + + public ItemTallPlant(Block block, Block block1, Function function) { + super(block, block1, function); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemTool.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemTool.java new file mode 100644 index 0000000..4e94ea1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemTool.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +import com.google.common.collect.Multimap; +import java.util.Set; + +public class ItemTool extends Item { + + private Set c; + protected float a = 4.0F; + private float d; + protected Item.EnumToolMaterial b; + + protected ItemTool(float f, Item.EnumToolMaterial item_enumtoolmaterial, Set set) { + this.b = item_enumtoolmaterial; + this.c = set; + this.maxStackSize = 1; + this.setMaxDurability(item_enumtoolmaterial.a()); + this.a = item_enumtoolmaterial.b(); + this.d = f + item_enumtoolmaterial.c(); + this.a(CreativeModeTab.i); + } + + public float getDestroySpeed(ItemStack itemstack, Block block) { + return this.c.contains(block) ? this.a : 1.0F; + } + + public boolean a(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) { + itemstack.damage(2, entityliving1); + return true; + } + + public boolean a(ItemStack itemstack, World world, Block block, BlockPosition blockposition, EntityLiving entityliving) { + if ((double) block.g(world, blockposition) != 0.0D) { + itemstack.damage(1, entityliving); + } + + return true; + } + + public Item.EnumToolMaterial g() { + return this.b; + } + + public int b() { + return this.b.e(); + } + + public String h() { + return this.b.toString(); + } + + public boolean a(ItemStack itemstack, ItemStack itemstack1) { + return this.b.f() == itemstack1.getItem() ? true : super.a(itemstack, itemstack1); + } + + public Multimap i() { + Multimap multimap = super.i(); + + multimap.put(GenericAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ItemTool.f, "Tool modifier", (double) this.d, 0)); + return multimap; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemWaterLily.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWaterLily.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemWaterLily.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemWaterLily.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemWithAuxData.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWithAuxData.java new file mode 100644 index 0000000..697e436 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWithAuxData.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +public class ItemWithAuxData extends ItemBlock { + + private final Block b; + private String[] c; + + public ItemWithAuxData(Block block, boolean flag) { + super(block); + this.b = block; + if (flag) { + this.setMaxDurability(0); + this.a(true); + } + + } + + public int filterData(int i) { + return i; + } + + public ItemWithAuxData a(String[] astring) { + this.c = astring; + return this; + } + + public String e_(ItemStack itemstack) { + if (this.c == null) { + return super.e_(itemstack); + } else { + int i = itemstack.getData(); + + return i >= 0 && i < this.c.length ? super.e_(itemstack) + "." + this.c[i] : super.e_(itemstack); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMap.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMap.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMapBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMapBase.java new file mode 100644 index 0000000..785e6f4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWorldMapBase.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class ItemWorldMapBase extends Item { + + protected ItemWorldMapBase() {} + + public boolean f() { + return true; + } + + public Packet c(ItemStack itemstack, World world, EntityHuman entityhuman) { + return null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ItemWrittenBook.java b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWrittenBook.java new file mode 100644 index 0000000..d179049 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ItemWrittenBook.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +public class ItemWrittenBook extends Item { + + public ItemWrittenBook() { + this.c(1); + } + + public static boolean b(NBTTagCompound nbttagcompound) { + if (!ItemBookAndQuill.b(nbttagcompound)) { + return false; + } else if (!nbttagcompound.hasKeyOfType("title", 8)) { + return false; + } else { + String s = nbttagcompound.getString("title"); + + return s != null && s.length() <= 32 ? nbttagcompound.hasKeyOfType("author", 8) : false; + } + } + + public static int h(ItemStack itemstack) { + return itemstack.getTag().getInt("generation"); + } + + public String a(ItemStack itemstack) { + if (itemstack.hasTag()) { + NBTTagCompound nbttagcompound = itemstack.getTag(); + String s = nbttagcompound.getString("title"); + + if (!UtilColor.b(s)) { + return s; + } + } + + return super.a(itemstack); + } + + public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { + if (!world.isClientSide) { + this.a(itemstack, entityhuman); + } + + entityhuman.openBook(itemstack); + entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]); + return itemstack; + } + + private void a(ItemStack itemstack, EntityHuman entityhuman) { + if (itemstack != null && itemstack.getTag() != null) { + NBTTagCompound nbttagcompound = itemstack.getTag(); + + if (!nbttagcompound.getBoolean("resolved")) { + nbttagcompound.setBoolean("resolved", true); + if (b(nbttagcompound)) { + NBTTagList nbttaglist = nbttagcompound.getList("pages", 8); + + for (int i = 0; i < nbttaglist.size(); ++i) { + String s = nbttaglist.getString(i); + + Object object; + + try { + IChatBaseComponent ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s); + + object = ChatComponentUtils.filterForDisplay(entityhuman, ichatbasecomponent, entityhuman); + } catch (Exception exception) { + object = new ChatComponentText(s); + } + + nbttaglist.a(i, new NBTTagString(IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) object))); + } + + nbttagcompound.set("pages", nbttaglist); + if (entityhuman instanceof EntityPlayer && entityhuman.bZ() == itemstack) { + Slot slot = entityhuman.activeContainer.getSlot(entityhuman.inventory, entityhuman.inventory.itemInHandIndex); + + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutSetSlot(0, slot.rawSlotIndex, itemstack)); + } + + } + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Items.java b/eSpigot-Server/src/main/java/net/minecraft/server/Items.java new file mode 100644 index 0000000..33d39b1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Items.java @@ -0,0 +1,390 @@ +package net.minecraft.server; + +public class Items { + + public static final Item IRON_SHOVEL; + public static final Item IRON_PICKAXE; + public static final Item IRON_AXE; + public static final Item FLINT_AND_STEEL; + public static final Item APPLE; + public static final ItemBow BOW; + public static final Item ARROW; + public static final Item COAL; + public static final Item DIAMOND; + public static final Item IRON_INGOT; + public static final Item GOLD_INGOT; + public static final Item IRON_SWORD; + public static final Item WOODEN_SWORD; + public static final Item WOODEN_SHOVEL; + public static final Item WOODEN_PICKAXE; + public static final Item WOODEN_AXE; + public static final Item STONE_SWORD; + public static final Item STONE_SHOVEL; + public static final Item STONE_PICKAXE; + public static final Item STONE_AXE; + public static final Item DIAMOND_SWORD; + public static final Item DIAMOND_SHOVEL; + public static final Item DIAMOND_PICKAXE; + public static final Item DIAMOND_AXE; + public static final Item STICK; + public static final Item BOWL; + public static final Item MUSHROOM_STEW; + public static final Item GOLDEN_SWORD; + public static final Item GOLDEN_SHOVEL; + public static final Item GOLDEN_PICKAXE; + public static final Item GOLDEN_AXE; + public static final Item STRING; + public static final Item FEATHER; + public static final Item GUNPOWDER; + public static final Item WOODEN_HOE; + public static final Item STONE_HOE; + public static final Item IRON_HOE; + public static final Item DIAMOND_HOE; + public static final Item GOLDEN_HOE; + public static final Item WHEAT_SEEDS; + public static final Item WHEAT; + public static final Item BREAD; + public static final ItemArmor LEATHER_HELMET; + public static final ItemArmor LEATHER_CHESTPLATE; + public static final ItemArmor LEATHER_LEGGINGS; + public static final ItemArmor LEATHER_BOOTS; + public static final ItemArmor CHAINMAIL_HELMET; + public static final ItemArmor CHAINMAIL_CHESTPLATE; + public static final ItemArmor CHAINMAIL_LEGGINGS; + public static final ItemArmor CHAINMAIL_BOOTS; + public static final ItemArmor IRON_HELMET; + public static final ItemArmor IRON_CHESTPLATE; + public static final ItemArmor IRON_LEGGINGS; + public static final ItemArmor IRON_BOOTS; + public static final ItemArmor DIAMOND_HELMET; + public static final ItemArmor DIAMOND_CHESTPLATE; + public static final ItemArmor DIAMOND_LEGGINGS; + public static final ItemArmor DIAMOND_BOOTS; + public static final ItemArmor GOLDEN_HELMET; + public static final ItemArmor GOLDEN_CHESTPLATE; + public static final ItemArmor GOLDEN_LEGGINGS; + public static final ItemArmor GOLDEN_BOOTS; + public static final Item FLINT; + public static final Item PORKCHOP; + public static final Item COOKED_PORKCHOP; + public static final Item PAINTING; + public static final Item GOLDEN_APPLE; + public static final Item SIGN; + public static final Item WOODEN_DOOR; + public static final Item SPRUCE_DOOR; + public static final Item BIRCH_DOOR; + public static final Item JUNGLE_DOOR; + public static final Item ACACIA_DOOR; + public static final Item DARK_OAK_DOOR; + public static final Item BUCKET; + public static final Item WATER_BUCKET; + public static final Item LAVA_BUCKET; + public static final Item MINECART; + public static final Item SADDLE; + public static final Item IRON_DOOR; + public static final Item REDSTONE; + public static final Item SNOWBALL; + public static final Item BOAT; + public static final Item LEATHER; + public static final Item MILK_BUCKET; + public static final Item BRICK; + public static final Item CLAY_BALL; + public static final Item REEDS; + public static final Item PAPER; + public static final Item BOOK; + public static final Item SLIME; + public static final Item CHEST_MINECART; + public static final Item FURNACE_MINECART; + public static final Item EGG; + public static final Item COMPASS; + public static final ItemFishingRod FISHING_ROD; + public static final Item CLOCK; + public static final Item GLOWSTONE_DUST; + public static final Item FISH; + public static final Item COOKED_FISH; + public static final Item DYE; + public static final Item BONE; + public static final Item SUGAR; + public static final Item CAKE; + public static final Item BED; + public static final Item REPEATER; + public static final Item COOKIE; + public static final ItemWorldMap FILLED_MAP; + public static final ItemShears SHEARS; + public static final Item MELON; + public static final Item PUMPKIN_SEEDS; + public static final Item MELON_SEEDS; + public static final Item BEEF; + public static final Item COOKED_BEEF; + public static final Item CHICKEN; + public static final Item COOKED_CHICKEN; + public static final Item MUTTON; + public static final Item COOKED_MUTTON; + public static final Item RABBIT; + public static final Item COOKED_RABBIT; + public static final Item RABBIT_STEW; + public static final Item RABBIT_FOOT; + public static final Item RABBIT_HIDE; + public static final Item ROTTEN_FLESH; + public static final Item ENDER_PEARL; + public static final Item BLAZE_ROD; + public static final Item GHAST_TEAR; + public static final Item GOLD_NUGGET; + public static final Item NETHER_WART; + public static final ItemPotion POTION; + public static final Item GLASS_BOTTLE; + public static final Item SPIDER_EYE; + public static final Item FERMENTED_SPIDER_EYE; + public static final Item BLAZE_POWDER; + public static final Item MAGMA_CREAM; + public static final Item BREWING_STAND; + public static final Item CAULDRON; + public static final Item ENDER_EYE; + public static final Item SPECKLED_MELON; + public static final Item SPAWN_EGG; + public static final Item EXPERIENCE_BOTTLE; + public static final Item FIRE_CHARGE; + public static final Item WRITABLE_BOOK; + public static final Item WRITTEN_BOOK; + public static final Item EMERALD; + public static final Item ITEM_FRAME; + public static final Item FLOWER_POT; + public static final Item CARROT; + public static final Item POTATO; + public static final Item BAKED_POTATO; + public static final Item POISONOUS_POTATO; + public static final ItemMapEmpty MAP; + public static final Item GOLDEN_CARROT; + public static final Item SKULL; + public static final Item CARROT_ON_A_STICK; + public static final Item NETHER_STAR; + public static final Item PUMPKIN_PIE; + public static final Item FIREWORKS; + public static final Item FIREWORK_CHARGE; + public static final ItemEnchantedBook ENCHANTED_BOOK; + public static final Item COMPARATOR; + public static final Item NETHERBRICK; + public static final Item QUARTZ; + public static final Item TNT_MINECART; + public static final Item HOPPER_MINECART; + public static final ItemArmorStand ARMOR_STAND; + public static final Item IRON_HORSE_ARMOR; + public static final Item GOLDEN_HORSE_ARMOR; + public static final Item DIAMOND_HORSE_ARMOR; + public static final Item LEAD; + public static final Item NAME_TAG; + public static final Item COMMAND_BLOCK_MINECART; + public static final Item RECORD_13; + public static final Item RECORD_CAT; + public static final Item RECORD_BLOCKS; + public static final Item RECORD_CHIRP; + public static final Item RECORD_FAR; + public static final Item RECORD_MALL; + public static final Item RECORD_MELLOHI; + public static final Item RECORD_STAL; + public static final Item RECORD_STRAD; + public static final Item RECORD_WARD; + public static final Item RECORD_11; + public static final Item RECORD_WAIT; + public static final Item PRISMARINE_SHARD; + public static final Item PRISMARINE_CRYSTALS; + public static final Item BANNER; + + private static Item get(String s) { + return (Item) Item.REGISTRY.get(new MinecraftKey(s)); + } + + static { + if (!DispenserRegistry.a()) { + throw new RuntimeException("Accessed Items before Bootstrap!"); + } else { + IRON_SHOVEL = get("iron_shovel"); + IRON_PICKAXE = get("iron_pickaxe"); + IRON_AXE = get("iron_axe"); + FLINT_AND_STEEL = get("flint_and_steel"); + APPLE = get("apple"); + BOW = (ItemBow) get("bow"); + ARROW = get("arrow"); + COAL = get("coal"); + DIAMOND = get("diamond"); + IRON_INGOT = get("iron_ingot"); + GOLD_INGOT = get("gold_ingot"); + IRON_SWORD = get("iron_sword"); + WOODEN_SWORD = get("wooden_sword"); + WOODEN_SHOVEL = get("wooden_shovel"); + WOODEN_PICKAXE = get("wooden_pickaxe"); + WOODEN_AXE = get("wooden_axe"); + STONE_SWORD = get("stone_sword"); + STONE_SHOVEL = get("stone_shovel"); + STONE_PICKAXE = get("stone_pickaxe"); + STONE_AXE = get("stone_axe"); + DIAMOND_SWORD = get("diamond_sword"); + DIAMOND_SHOVEL = get("diamond_shovel"); + DIAMOND_PICKAXE = get("diamond_pickaxe"); + DIAMOND_AXE = get("diamond_axe"); + STICK = get("stick"); + BOWL = get("bowl"); + MUSHROOM_STEW = get("mushroom_stew"); + GOLDEN_SWORD = get("golden_sword"); + GOLDEN_SHOVEL = get("golden_shovel"); + GOLDEN_PICKAXE = get("golden_pickaxe"); + GOLDEN_AXE = get("golden_axe"); + STRING = get("string"); + FEATHER = get("feather"); + GUNPOWDER = get("gunpowder"); + WOODEN_HOE = get("wooden_hoe"); + STONE_HOE = get("stone_hoe"); + IRON_HOE = get("iron_hoe"); + DIAMOND_HOE = get("diamond_hoe"); + GOLDEN_HOE = get("golden_hoe"); + WHEAT_SEEDS = get("wheat_seeds"); + WHEAT = get("wheat"); + BREAD = get("bread"); + LEATHER_HELMET = (ItemArmor) get("leather_helmet"); + LEATHER_CHESTPLATE = (ItemArmor) get("leather_chestplate"); + LEATHER_LEGGINGS = (ItemArmor) get("leather_leggings"); + LEATHER_BOOTS = (ItemArmor) get("leather_boots"); + CHAINMAIL_HELMET = (ItemArmor) get("chainmail_helmet"); + CHAINMAIL_CHESTPLATE = (ItemArmor) get("chainmail_chestplate"); + CHAINMAIL_LEGGINGS = (ItemArmor) get("chainmail_leggings"); + CHAINMAIL_BOOTS = (ItemArmor) get("chainmail_boots"); + IRON_HELMET = (ItemArmor) get("iron_helmet"); + IRON_CHESTPLATE = (ItemArmor) get("iron_chestplate"); + IRON_LEGGINGS = (ItemArmor) get("iron_leggings"); + IRON_BOOTS = (ItemArmor) get("iron_boots"); + DIAMOND_HELMET = (ItemArmor) get("diamond_helmet"); + DIAMOND_CHESTPLATE = (ItemArmor) get("diamond_chestplate"); + DIAMOND_LEGGINGS = (ItemArmor) get("diamond_leggings"); + DIAMOND_BOOTS = (ItemArmor) get("diamond_boots"); + GOLDEN_HELMET = (ItemArmor) get("golden_helmet"); + GOLDEN_CHESTPLATE = (ItemArmor) get("golden_chestplate"); + GOLDEN_LEGGINGS = (ItemArmor) get("golden_leggings"); + GOLDEN_BOOTS = (ItemArmor) get("golden_boots"); + FLINT = get("flint"); + PORKCHOP = get("porkchop"); + COOKED_PORKCHOP = get("cooked_porkchop"); + PAINTING = get("painting"); + GOLDEN_APPLE = get("golden_apple"); + SIGN = get("sign"); + WOODEN_DOOR = get("wooden_door"); + SPRUCE_DOOR = get("spruce_door"); + BIRCH_DOOR = get("birch_door"); + JUNGLE_DOOR = get("jungle_door"); + ACACIA_DOOR = get("acacia_door"); + DARK_OAK_DOOR = get("dark_oak_door"); + BUCKET = get("bucket"); + WATER_BUCKET = get("water_bucket"); + LAVA_BUCKET = get("lava_bucket"); + MINECART = get("minecart"); + SADDLE = get("saddle"); + IRON_DOOR = get("iron_door"); + REDSTONE = get("redstone"); + SNOWBALL = get("snowball"); + BOAT = get("boat"); + LEATHER = get("leather"); + MILK_BUCKET = get("milk_bucket"); + BRICK = get("brick"); + CLAY_BALL = get("clay_ball"); + REEDS = get("reeds"); + PAPER = get("paper"); + BOOK = get("book"); + SLIME = get("slime_ball"); + CHEST_MINECART = get("chest_minecart"); + FURNACE_MINECART = get("furnace_minecart"); + EGG = get("egg"); + COMPASS = get("compass"); + FISHING_ROD = (ItemFishingRod) get("fishing_rod"); + CLOCK = get("clock"); + GLOWSTONE_DUST = get("glowstone_dust"); + FISH = get("fish"); + COOKED_FISH = get("cooked_fish"); + DYE = get("dye"); + BONE = get("bone"); + SUGAR = get("sugar"); + CAKE = get("cake"); + BED = get("bed"); + REPEATER = get("repeater"); + COOKIE = get("cookie"); + FILLED_MAP = (ItemWorldMap) get("filled_map"); + SHEARS = (ItemShears) get("shears"); + MELON = get("melon"); + PUMPKIN_SEEDS = get("pumpkin_seeds"); + MELON_SEEDS = get("melon_seeds"); + BEEF = get("beef"); + COOKED_BEEF = get("cooked_beef"); + CHICKEN = get("chicken"); + COOKED_CHICKEN = get("cooked_chicken"); + MUTTON = get("mutton"); + COOKED_MUTTON = get("cooked_mutton"); + RABBIT = get("rabbit"); + COOKED_RABBIT = get("cooked_rabbit"); + RABBIT_STEW = get("rabbit_stew"); + RABBIT_FOOT = get("rabbit_foot"); + RABBIT_HIDE = get("rabbit_hide"); + ROTTEN_FLESH = get("rotten_flesh"); + ENDER_PEARL = get("ender_pearl"); + BLAZE_ROD = get("blaze_rod"); + GHAST_TEAR = get("ghast_tear"); + GOLD_NUGGET = get("gold_nugget"); + NETHER_WART = get("nether_wart"); + POTION = (ItemPotion) get("potion"); + GLASS_BOTTLE = get("glass_bottle"); + SPIDER_EYE = get("spider_eye"); + FERMENTED_SPIDER_EYE = get("fermented_spider_eye"); + BLAZE_POWDER = get("blaze_powder"); + MAGMA_CREAM = get("magma_cream"); + BREWING_STAND = get("brewing_stand"); + CAULDRON = get("cauldron"); + ENDER_EYE = get("ender_eye"); + SPECKLED_MELON = get("speckled_melon"); + SPAWN_EGG = get("spawn_egg"); + EXPERIENCE_BOTTLE = get("experience_bottle"); + FIRE_CHARGE = get("fire_charge"); + WRITABLE_BOOK = get("writable_book"); + WRITTEN_BOOK = get("written_book"); + EMERALD = get("emerald"); + ITEM_FRAME = get("item_frame"); + FLOWER_POT = get("flower_pot"); + CARROT = get("carrot"); + POTATO = get("potato"); + BAKED_POTATO = get("baked_potato"); + POISONOUS_POTATO = get("poisonous_potato"); + MAP = (ItemMapEmpty) get("map"); + GOLDEN_CARROT = get("golden_carrot"); + SKULL = get("skull"); + CARROT_ON_A_STICK = get("carrot_on_a_stick"); + NETHER_STAR = get("nether_star"); + PUMPKIN_PIE = get("pumpkin_pie"); + FIREWORKS = get("fireworks"); + FIREWORK_CHARGE = get("firework_charge"); + ENCHANTED_BOOK = (ItemEnchantedBook) get("enchanted_book"); + COMPARATOR = get("comparator"); + NETHERBRICK = get("netherbrick"); + QUARTZ = get("quartz"); + TNT_MINECART = get("tnt_minecart"); + HOPPER_MINECART = get("hopper_minecart"); + ARMOR_STAND = (ItemArmorStand) get("armor_stand"); + IRON_HORSE_ARMOR = get("iron_horse_armor"); + GOLDEN_HORSE_ARMOR = get("golden_horse_armor"); + DIAMOND_HORSE_ARMOR = get("diamond_horse_armor"); + LEAD = get("lead"); + NAME_TAG = get("name_tag"); + COMMAND_BLOCK_MINECART = get("command_block_minecart"); + RECORD_13 = get("record_13"); + RECORD_CAT = get("record_cat"); + RECORD_BLOCKS = get("record_blocks"); + RECORD_CHIRP = get("record_chirp"); + RECORD_FAR = get("record_far"); + RECORD_MALL = get("record_mall"); + RECORD_MELLOHI = get("record_mellohi"); + RECORD_STAL = get("record_stal"); + RECORD_STRAD = get("record_strad"); + RECORD_WARD = get("record_ward"); + RECORD_11 = get("record_11"); + RECORD_WAIT = get("record_wait"); + PRISMARINE_SHARD = get("prismarine_shard"); + PRISMARINE_CRYSTALS = get("prismarine_crystals"); + BANNER = get("banner"); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/IteratorUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/IteratorUtils.java new file mode 100644 index 0000000..04d5ec4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/IteratorUtils.java @@ -0,0 +1,173 @@ +package net.minecraft.server; + +import com.google.common.base.Function; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.UnmodifiableIterator; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; + +public class IteratorUtils { + + public static Iterable a(Class oclass, Iterable> iterable) { + return new IteratorUtils.ClassIterable(oclass, (Iterable[]) b(Iterable.class, iterable), (IteratorUtils.SyntheticClass_1) null); + } + + public static Iterable> a(Iterable> iterable) { + return b(a(Object.class, iterable)); + } + + private static Iterable> b(Iterable iterable) { + return Iterables.transform(iterable, new IteratorUtils.ArrayToList((IteratorUtils.SyntheticClass_1) null)); + } + + private static T[] b(Class oclass, Iterable iterable) { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = iterable.iterator(); + + while (iterator.hasNext()) { + Object object = iterator.next(); + + arraylist.add(object); + } + + return (T[]) arraylist.toArray(b(oclass, arraylist.size())); + } + + private static T[] b(Class oclass, int i) { + return (T[]) Array.newInstance(oclass, i); + } + + static class SyntheticClass_1 { } + + static class ClassIterable implements Iterable { + + private final Class a; + private final Iterable[] b; + + private ClassIterable(Class oclass, Iterable[] aiterable) { + this.a = oclass; + this.b = aiterable; + } + + public Iterator iterator() { + return (Iterator) (this.b.length <= 0 ? Collections.singletonList((Object[]) IteratorUtils.b(this.a, 0)).iterator() : new IteratorUtils.ClassIterable.ClassIterator(this.a, this.b, (IteratorUtils.SyntheticClass_1) null)); + } + + ClassIterable(Class oclass, Iterable[] aiterable, IteratorUtils.SyntheticClass_1 iteratorutils_syntheticclass_1) { + this(oclass, aiterable); + } + + static class ClassIterator extends UnmodifiableIterator { + + private int a; + private final Iterable[] b; + private final Iterator[] c; + private final T[] d; + + private ClassIterator(Class oclass, Iterable[] aiterable) { + this.a = -2; + this.b = aiterable; + this.c = (Iterator[]) IteratorUtils.b(Iterator.class, this.b.length); + + for (int i = 0; i < this.b.length; ++i) { + this.c[i] = aiterable[i].iterator(); + } + + this.d = IteratorUtils.b(oclass, this.c.length); + } + + private void b() { + this.a = -1; + Arrays.fill(this.c, (Object) null); + Arrays.fill(this.d, (Object) null); + } + + public boolean hasNext() { + if (this.a == -2) { + this.a = 0; + Iterator[] aiterator = this.c; + int i = aiterator.length; + + for (int j = 0; j < i; ++j) { + Iterator iterator = aiterator[j]; + + if (!iterator.hasNext()) { + this.b(); + break; + } + } + + return true; + } else { + if (this.a >= this.c.length) { + for (this.a = this.c.length - 1; this.a >= 0; --this.a) { + Iterator iterator1 = this.c[this.a]; + + if (iterator1.hasNext()) { + break; + } + + if (this.a == 0) { + this.b(); + break; + } + + iterator1 = this.b[this.a].iterator(); + this.c[this.a] = iterator1; + if (!iterator1.hasNext()) { + this.b(); + break; + } + } + } + + return this.a >= 0; + } + } + + public T[] a() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } else { + while (this.a < this.c.length) { + this.d[this.a] = this.c[this.a].next(); + ++this.a; + } + + return this.d.clone(); + } + } + + public T[] next() { + return this.a(); + } + + ClassIterator(Class oclass, Iterable[] aiterable, IteratorUtils.SyntheticClass_1 iteratorutils_syntheticclass_1) { + this(oclass, aiterable); + } + } + } + + static class ArrayToList implements Function> { + + private ArrayToList() {} + + public List a(Object[] aobject) { + return Arrays.asList((T[]) aobject); + } + + public List apply(Object[] object) { + return this.a(object); + } + + ArrayToList(IteratorUtils.SyntheticClass_1 iteratorutils_syntheticclass_1) { + this(); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/JsonList.java b/eSpigot-Server/src/main/java/net/minecraft/server/JsonList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/JsonList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/JsonList.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/JsonListEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/JsonListEntry.java new file mode 100644 index 0000000..3d29f49 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/JsonListEntry.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; + +public class JsonListEntry { + + private final T a; + + public JsonListEntry(T t0) { + this.a = t0; + } + + protected JsonListEntry(T t0, JsonObject jsonobject) { + this.a = t0; + } + + public T getKey() { + return this.a; + } + + boolean hasExpired() { + return false; + } + + protected void a(JsonObject jsonobject) {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/LayerIsland.java b/eSpigot-Server/src/main/java/net/minecraft/server/LayerIsland.java new file mode 100644 index 0000000..8a21033 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/LayerIsland.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +public class LayerIsland extends GenLayer { + + public LayerIsland(long i) { + super(i); + } + + public int[] a(int i, int j, int k, int l) { + int[] aint = IntCache.a(k * l); + + for (int i1 = 0; i1 < l; ++i1) { + for (int j1 = 0; j1 < k; ++j1) { + this.a((long) (i + j1), (long) (j + i1)); + aint[j1 + i1 * k] = this.a(10) == 0 ? 1 : 0; + } + } + + if (i > -k && i <= 0 && j > -l && j <= 0) { + aint[-i + -j * k] = 1; + } + + return aint; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/LazyInitVar.java b/eSpigot-Server/src/main/java/net/minecraft/server/LazyInitVar.java new file mode 100644 index 0000000..344c75c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/LazyInitVar.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public abstract class LazyInitVar { + + private T a; + private boolean b = false; + + public LazyInitVar() {} + + public T c() { + if (!this.b) { + this.b = true; + this.a = this.init(); + } + + return this.a; + } + + protected abstract T init(); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/LegacyPingHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/LegacyPingHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/LegacyPingHandler.java rename to eSpigot-Server/src/main/java/net/minecraft/server/LegacyPingHandler.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/LocaleI18n.java b/eSpigot-Server/src/main/java/net/minecraft/server/LocaleI18n.java new file mode 100644 index 0000000..61c3690 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/LocaleI18n.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +public class LocaleI18n { + + private static LocaleLanguage a = LocaleLanguage.a(); + private static LocaleLanguage b = new LocaleLanguage(); + + public static String get(String s) { + return LocaleI18n.a.a(s); + } + + public static String a(String s, Object... aobject) { + return LocaleI18n.a.a(s, aobject); + } + + public static String b(String s) { + return LocaleI18n.b.a(s); + } + + public static boolean c(String s) { + return LocaleI18n.a.b(s); + } + + public static long a() { + return LocaleI18n.a.c(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/LocaleLanguage.java b/eSpigot-Server/src/main/java/net/minecraft/server/LocaleLanguage.java new file mode 100644 index 0000000..1af4090 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/LocaleLanguage.java @@ -0,0 +1,81 @@ +package net.minecraft.server; + +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import java.io.IOException; +import java.io.InputStream; +import java.util.IllegalFormatException; +import java.util.Iterator; +import java.util.Map; +import java.util.regex.Pattern; +import org.apache.commons.io.Charsets; +import org.apache.commons.io.IOUtils; + +public class LocaleLanguage { + + private static final Pattern a = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]"); + private static final Splitter b = Splitter.on('=').limit(2); + private static LocaleLanguage c = new LocaleLanguage(); + private final Map d = Maps.newHashMap(); + private long e; + + public LocaleLanguage() { + try { + InputStream inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_US.lang"); + Iterator iterator = IOUtils.readLines(inputstream, Charsets.UTF_8).iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + + if (!s.isEmpty() && s.charAt(0) != 35) { + String[] astring = (String[]) Iterables.toArray(LocaleLanguage.b.split(s), String.class); + + if (astring != null && astring.length == 2) { + String s1 = astring[0]; + String s2 = LocaleLanguage.a.matcher(astring[1]).replaceAll("%$1s"); + + this.d.put(s1, s2); + } + } + } + + this.e = System.currentTimeMillis(); + } catch (IOException ioexception) { + ; + } + + } + + static LocaleLanguage a() { + return LocaleLanguage.c; + } + + public synchronized String a(String s) { + return this.c(s); + } + + public synchronized String a(String s, Object... aobject) { + String s1 = this.c(s); + + try { + return String.format(s1, aobject); + } catch (IllegalFormatException illegalformatexception) { + return "Format error: " + s1; + } + } + + private String c(String s) { + String s1 = (String) this.d.get(s); + + return s1 == null ? s : s1; + } + + public synchronized boolean b(String s) { + return this.d.containsKey(s); + } + + public long c() { + return this.e; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/LoginListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/LoginListener.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/LoginListener.java rename to eSpigot-Server/src/main/java/net/minecraft/server/LoginListener.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/LongHashMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/LongHashMap.java new file mode 100644 index 0000000..11f23a5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/LongHashMap.java @@ -0,0 +1,212 @@ +package net.minecraft.server; + +public class LongHashMap { + + private transient LongHashMap.LongHashMapEntry[] entries = new LongHashMap.LongHashMapEntry[4096]; + private transient int count; + private int c; + private int d = 3072; + private final float e = 0.75F; + private transient volatile int f; + + public LongHashMap() { + this.c = this.entries.length - 1; + } + + private static int g(long i) { + return a((int) (i ^ i >>> 32)); + } + + private static int a(int i) { + i ^= i >>> 20 ^ i >>> 12; + return i ^ i >>> 7 ^ i >>> 4; + } + + private static int a(int i, int j) { + return i & j; + } + + public int count() { + return this.count; + } + + public V getEntry(long i) { + int j = g(i); + + for (LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.entries[a(j, this.c)]; longhashmap_longhashmapentry != null; longhashmap_longhashmapentry = longhashmap_longhashmapentry.c) { + if (longhashmap_longhashmapentry.a == i) { + return longhashmap_longhashmapentry.b; + } + } + + return null; + } + + public boolean contains(long i) { + return this.c(i) != null; + } + + final LongHashMap.LongHashMapEntry c(long i) { + int j = g(i); + + for (LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.entries[a(j, this.c)]; longhashmap_longhashmapentry != null; longhashmap_longhashmapentry = longhashmap_longhashmapentry.c) { + if (longhashmap_longhashmapentry.a == i) { + return longhashmap_longhashmapentry; + } + } + + return null; + } + + public void put(long i, V v0) { + int j = g(i); + int k = a(j, this.c); + + for (LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.entries[k]; longhashmap_longhashmapentry != null; longhashmap_longhashmapentry = longhashmap_longhashmapentry.c) { + if (longhashmap_longhashmapentry.a == i) { + longhashmap_longhashmapentry.b = v0; + return; + } + } + + ++this.f; + this.a(j, i, v0, k); + } + + private void b(int i) { + LongHashMap.LongHashMapEntry[] alonghashmap_longhashmapentry = this.entries; + int j = alonghashmap_longhashmapentry.length; + + if (j == 1073741824) { + this.d = Integer.MAX_VALUE; + } else { + LongHashMap.LongHashMapEntry[] alonghashmap_longhashmapentry1 = new LongHashMap.LongHashMapEntry[i]; + + this.a(alonghashmap_longhashmapentry1); + this.entries = alonghashmap_longhashmapentry1; + this.c = this.entries.length - 1; + this.d = (int) ((float) i * this.e); + } + } + + private void a(LongHashMap.LongHashMapEntry[] alonghashmap_longhashmapentry) { + LongHashMap.LongHashMapEntry[] alonghashmap_longhashmapentry1 = this.entries; + int i = alonghashmap_longhashmapentry.length; + + for (int j = 0; j < alonghashmap_longhashmapentry1.length; ++j) { + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = alonghashmap_longhashmapentry1[j]; + + if (longhashmap_longhashmapentry != null) { + alonghashmap_longhashmapentry1[j] = null; + + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry1; + + do { + longhashmap_longhashmapentry1 = longhashmap_longhashmapentry.c; + int k = a(longhashmap_longhashmapentry.d, i - 1); + + longhashmap_longhashmapentry.c = alonghashmap_longhashmapentry[k]; + alonghashmap_longhashmapentry[k] = longhashmap_longhashmapentry; + longhashmap_longhashmapentry = longhashmap_longhashmapentry1; + } while (longhashmap_longhashmapentry1 != null); + } + } + + } + + public V remove(long i) { + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.e(i); + + return longhashmap_longhashmapentry == null ? null : longhashmap_longhashmapentry.b; + } + + final LongHashMap.LongHashMapEntry e(long i) { + int j = g(i); + int k = a(j, this.c); + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.entries[k]; + + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry1; + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry2; + + for (longhashmap_longhashmapentry1 = longhashmap_longhashmapentry; longhashmap_longhashmapentry1 != null; longhashmap_longhashmapentry1 = longhashmap_longhashmapentry2) { + longhashmap_longhashmapentry2 = longhashmap_longhashmapentry1.c; + if (longhashmap_longhashmapentry1.a == i) { + ++this.f; + --this.count; + if (longhashmap_longhashmapentry == longhashmap_longhashmapentry1) { + this.entries[k] = longhashmap_longhashmapentry2; + } else { + longhashmap_longhashmapentry.c = longhashmap_longhashmapentry2; + } + + return longhashmap_longhashmapentry1; + } + + longhashmap_longhashmapentry = longhashmap_longhashmapentry1; + } + + return longhashmap_longhashmapentry1; + } + + private void a(int i, long j, V v0, int k) { + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = this.entries[k]; + + this.entries[k] = new LongHashMap.LongHashMapEntry(i, j, v0, longhashmap_longhashmapentry); + if (this.count++ >= this.d) { + this.b(2 * this.entries.length); + } + + } + + static class LongHashMapEntry { + + final long a; + V b; + LongHashMap.LongHashMapEntry c; + final int d; + + LongHashMapEntry(int i, long j, V v0, LongHashMap.LongHashMapEntry longhashmap_longhashmapentry) { + this.b = v0; + this.c = longhashmap_longhashmapentry; + this.a = j; + this.d = i; + } + + public final long a() { + return this.a; + } + + public final V b() { + return this.b; + } + + public final boolean equals(Object object) { + if (!(object instanceof LongHashMap.LongHashMapEntry)) { + return false; + } else { + LongHashMap.LongHashMapEntry longhashmap_longhashmapentry = (LongHashMap.LongHashMapEntry) object; + Long olong = Long.valueOf(this.a()); + Long olong1 = Long.valueOf(longhashmap_longhashmapentry.a()); + + if (olong == olong1 || olong != null && olong.equals(olong1)) { + Object object1 = this.b(); + Object object2 = longhashmap_longhashmapentry.b(); + + if (object1 == object2 || object1 != null && object1.equals(object2)) { + return true; + } + } + + return false; + } + } + + public final int hashCode() { + return LongHashMap.g(this.a); + } + + public final String toString() { + return this.a() + "=" + this.b(); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MCUtil.java b/eSpigot-Server/src/main/java/net/minecraft/server/MCUtil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MCUtil.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MCUtil.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MapGeneratorUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/MapGeneratorUtils.java new file mode 100644 index 0000000..5361446 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MapGeneratorUtils.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; + +public class MapGeneratorUtils { + + public static Map b(Iterable iterable, Iterable iterable1) { + return a(iterable, iterable1, Maps.newLinkedHashMap()); + } + + public static Map a(Iterable iterable, Iterable iterable1, Map map) { + Iterator iterator = iterable1.iterator(); + Iterator iterator1 = iterable.iterator(); + + while (iterator1.hasNext()) { + K object = iterator1.next(); + + map.put(object, iterator.next()); + } + + if (iterator.hasNext()) { + throw new NoSuchElementException(); + } else { + return map; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MapIcon.java b/eSpigot-Server/src/main/java/net/minecraft/server/MapIcon.java new file mode 100644 index 0000000..d7bf93c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MapIcon.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +public class MapIcon { + + private byte type; + private byte x; + private byte y; + private byte rotation; + + public MapIcon(byte b0, byte b1, byte b2, byte b3) { + this.type = b0; + this.x = b1; + this.y = b2; + this.rotation = b3; + } + + public MapIcon(MapIcon mapicon) { + this.type = mapicon.type; + this.x = mapicon.x; + this.y = mapicon.y; + this.rotation = mapicon.rotation; + } + + public byte getType() { + return this.type; + } + + public byte getX() { + return this.x; + } + + public byte getY() { + return this.y; + } + + public byte getRotation() { + return this.rotation; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof MapIcon)) { + return false; + } else { + MapIcon mapicon = (MapIcon) object; + + return this.type != mapicon.type ? false : (this.rotation != mapicon.rotation ? false : (this.x != mapicon.x ? false : this.y == mapicon.y)); + } + } + + public int hashCode() { + byte b0 = this.type; + int i = 31 * b0 + this.x; + + i = 31 * i + this.y; + i = 31 * i + this.rotation; + return i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Material.java b/eSpigot-Server/src/main/java/net/minecraft/server/Material.java new file mode 100644 index 0000000..d9ded46 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Material.java @@ -0,0 +1,130 @@ +package net.minecraft.server; + +public class Material { + + public static final Material AIR = new MaterialGas(MaterialMapColor.b); + public static final Material GRASS = new Material(MaterialMapColor.c); + public static final Material EARTH = new Material(MaterialMapColor.l); + public static final Material WOOD = (new Material(MaterialMapColor.o)).g(); + public static final Material STONE = (new Material(MaterialMapColor.m)).f(); + public static final Material ORE = (new Material(MaterialMapColor.h)).f(); + public static final Material HEAVY = (new Material(MaterialMapColor.h)).f().o(); + public static final Material WATER = (new MaterialLiquid(MaterialMapColor.n)).n(); + public static final Material LAVA = (new MaterialLiquid(MaterialMapColor.f)).n(); + public static final Material LEAVES = (new Material(MaterialMapColor.i)).g().s().n(); + public static final Material PLANT = (new MaterialDecoration(MaterialMapColor.i)).n(); + public static final Material REPLACEABLE_PLANT = (new MaterialDecoration(MaterialMapColor.i)).g().n().i(); + public static final Material SPONGE = new Material(MaterialMapColor.t); + public static final Material CLOTH = (new Material(MaterialMapColor.e)).g(); + public static final Material FIRE = (new MaterialGas(MaterialMapColor.b)).n(); + public static final Material SAND = new Material(MaterialMapColor.d); + public static final Material ORIENTABLE = (new MaterialDecoration(MaterialMapColor.b)).n(); + public static final Material WOOL = (new MaterialDecoration(MaterialMapColor.e)).g(); + public static final Material SHATTERABLE = (new Material(MaterialMapColor.b)).s().p(); + public static final Material BUILDABLE_GLASS = (new Material(MaterialMapColor.b)).p(); + public static final Material TNT = (new Material(MaterialMapColor.f)).g().s(); + public static final Material CORAL = (new Material(MaterialMapColor.i)).n(); + public static final Material ICE = (new Material(MaterialMapColor.g)).s().p(); + public static final Material SNOW_LAYER = (new Material(MaterialMapColor.g)).p(); + public static final Material PACKED_ICE = (new MaterialDecoration(MaterialMapColor.j)).i().s().f().n(); + public static final Material SNOW_BLOCK = (new Material(MaterialMapColor.j)).f(); + public static final Material CACTUS = (new Material(MaterialMapColor.i)).s().n(); + public static final Material CLAY = new Material(MaterialMapColor.k); + public static final Material PUMPKIN = (new Material(MaterialMapColor.i)).n(); + public static final Material DRAGON_EGG = (new Material(MaterialMapColor.i)).n(); + public static final Material PORTAL = (new MaterialPortal(MaterialMapColor.b)).o(); + public static final Material CAKE = (new Material(MaterialMapColor.b)).n(); + public static final Material WEB = (new Material(MaterialMapColor.e) { + public boolean isSolid() { + return false; + } + }).f().n(); + public static final Material PISTON = (new Material(MaterialMapColor.m)).o(); + public static final Material BANNER = (new Material(MaterialMapColor.b)).f().o(); + private boolean canBurn; + private boolean K; + private boolean L; + private final MaterialMapColor M; + private boolean N = true; + private int O; + private boolean P; + + public Material(MaterialMapColor materialmapcolor) { + this.M = materialmapcolor; + } + + public boolean isLiquid() { + return false; + } + + public boolean isBuildable() { + return true; + } + + public boolean blocksLight() { + return true; + } + + public boolean isSolid() { + return true; + } + + private Material s() { + this.L = true; + return this; + } + + protected Material f() { + this.N = false; + return this; + } + + protected Material g() { + this.canBurn = true; + return this; + } + + public boolean isBurnable() { + return this.canBurn; + } + + public Material i() { + this.K = true; + return this; + } + + public boolean isReplaceable() { + return this.K; + } + + public boolean k() { + return this.L ? false : this.isSolid(); + } + + public boolean isAlwaysDestroyable() { + return this.N; + } + + public int getPushReaction() { + return this.O; + } + + protected Material n() { + this.O = 1; + return this; + } + + protected Material o() { + this.O = 2; + return this; + } + + protected Material p() { + this.P = true; + return this; + } + + public MaterialMapColor r() { + return this.M; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MaterialDecoration.java b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialDecoration.java new file mode 100644 index 0000000..3eebf79 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialDecoration.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class MaterialDecoration extends Material { + + public MaterialDecoration(MaterialMapColor materialmapcolor) { + super(materialmapcolor); + this.p(); + } + + public boolean isBuildable() { + return false; + } + + public boolean blocksLight() { + return false; + } + + public boolean isSolid() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MaterialGas.java b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialGas.java new file mode 100644 index 0000000..3328cd0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialGas.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class MaterialGas extends Material { + + public MaterialGas(MaterialMapColor materialmapcolor) { + super(materialmapcolor); + this.i(); + } + + public boolean isBuildable() { + return false; + } + + public boolean blocksLight() { + return false; + } + + public boolean isSolid() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MaterialLiquid.java b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialLiquid.java new file mode 100644 index 0000000..f77eee9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialLiquid.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class MaterialLiquid extends Material { + + public MaterialLiquid(MaterialMapColor materialmapcolor) { + super(materialmapcolor); + this.i(); + this.n(); + } + + public boolean isLiquid() { + return true; + } + + public boolean isSolid() { + return false; + } + + public boolean isBuildable() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MaterialMapColor.java b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialMapColor.java new file mode 100644 index 0000000..5254b17 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialMapColor.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +public class MaterialMapColor { + + public static final MaterialMapColor[] a = new MaterialMapColor[64]; + public static final MaterialMapColor b = new MaterialMapColor(0, 0); + public static final MaterialMapColor c = new MaterialMapColor(1, 8368696); + public static final MaterialMapColor d = new MaterialMapColor(2, 16247203); + public static final MaterialMapColor e = new MaterialMapColor(3, 13092807); + public static final MaterialMapColor f = new MaterialMapColor(4, 16711680); + public static final MaterialMapColor g = new MaterialMapColor(5, 10526975); + public static final MaterialMapColor h = new MaterialMapColor(6, 10987431); + public static final MaterialMapColor i = new MaterialMapColor(7, 31744); + public static final MaterialMapColor j = new MaterialMapColor(8, 16777215); + public static final MaterialMapColor k = new MaterialMapColor(9, 10791096); + public static final MaterialMapColor l = new MaterialMapColor(10, 9923917); + public static final MaterialMapColor m = new MaterialMapColor(11, 7368816); + public static final MaterialMapColor n = new MaterialMapColor(12, 4210943); + public static final MaterialMapColor o = new MaterialMapColor(13, 9402184); + public static final MaterialMapColor p = new MaterialMapColor(14, 16776437); + public static final MaterialMapColor q = new MaterialMapColor(15, 14188339); + public static final MaterialMapColor r = new MaterialMapColor(16, 11685080); + public static final MaterialMapColor s = new MaterialMapColor(17, 6724056); + public static final MaterialMapColor t = new MaterialMapColor(18, 15066419); + public static final MaterialMapColor u = new MaterialMapColor(19, 8375321); + public static final MaterialMapColor v = new MaterialMapColor(20, 15892389); + public static final MaterialMapColor w = new MaterialMapColor(21, 5000268); + public static final MaterialMapColor x = new MaterialMapColor(22, 10066329); + public static final MaterialMapColor y = new MaterialMapColor(23, 5013401); + public static final MaterialMapColor z = new MaterialMapColor(24, 8339378); + public static final MaterialMapColor A = new MaterialMapColor(25, 3361970); + public static final MaterialMapColor B = new MaterialMapColor(26, 6704179); + public static final MaterialMapColor C = new MaterialMapColor(27, 6717235); + public static final MaterialMapColor D = new MaterialMapColor(28, 10040115); + public static final MaterialMapColor E = new MaterialMapColor(29, 1644825); + public static final MaterialMapColor F = new MaterialMapColor(30, 16445005); + public static final MaterialMapColor G = new MaterialMapColor(31, 6085589); + public static final MaterialMapColor H = new MaterialMapColor(32, 4882687); + public static final MaterialMapColor I = new MaterialMapColor(33, '\ud93a'); + public static final MaterialMapColor J = new MaterialMapColor(34, 8476209); + public static final MaterialMapColor K = new MaterialMapColor(35, 7340544); + public final int L; + public final int M; + + private MaterialMapColor(int i, int j) { + if (i >= 0 && i <= 63) { + this.M = i; + this.L = j; + MaterialMapColor.a[i] = this; + } else { + throw new IndexOutOfBoundsException("Map colour ID must be between 0 and 63 (inclusive)"); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MaterialPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialPortal.java new file mode 100644 index 0000000..4f3ab40 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MaterialPortal.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class MaterialPortal extends Material { + + public MaterialPortal(MaterialMapColor materialmapcolor) { + super(materialmapcolor); + } + + public boolean isBuildable() { + return false; + } + + public boolean blocksLight() { + return false; + } + + public boolean isSolid() { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MathHelper.java b/eSpigot-Server/src/main/java/net/minecraft/server/MathHelper.java new file mode 100644 index 0000000..49e0646 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MathHelper.java @@ -0,0 +1,310 @@ +package net.minecraft.server; + +import java.util.Random; +import java.util.UUID; + +public class MathHelper { + + public static final float a = c(2.0F); + private static final float[] b = new float[65536]; + private static final int[] c; + private static final double d; + private static final double[] e; + private static final double[] f; + + public static float sin(float f) { + return MathHelper.b[(int) (f * 10430.378F) & '\uffff']; + } + + public static float cos(float f) { + return MathHelper.b[(int) (f * 10430.378F + 16384.0F) & '\uffff']; + } + + public static float c(float f) { + return (float) Math.sqrt((double) f); + } + + public static float sqrt(double d0) { + return (float) Math.sqrt(d0); + } + + public static int d(float f) { + int i = (int) f; + + return f < (float) i ? i - 1 : i; + } + + public static int floor(double d0) { + int i = (int) d0; + + return d0 < (double) i ? i - 1 : i; + } + + public static long d(double d0) { + long i = (long) d0; + + return d0 < (double) i ? i - 1L : i; + } + + public static float e(float f) { + return f >= 0.0F ? f : -f; + } + + public static int a(int i) { + return i >= 0 ? i : -i; + } + + public static int f(float f) { + int i = (int) f; + + return f > (float) i ? i + 1 : i; + } + + public static int f(double d0) { + int i = (int) d0; + + return d0 > (double) i ? i + 1 : i; + } + + public static int clamp(int i, int j, int k) { + return i < j ? j : (i > k ? k : i); + } + + public static float a(float f, float f1, float f2) { + return f < f1 ? f1 : (f > f2 ? f2 : f); + } + + public static double a(double d0, double d1, double d2) { + return d0 < d1 ? d1 : (d0 > d2 ? d2 : d0); + } + + public static double b(double d0, double d1, double d2) { + return d2 < 0.0D ? d0 : (d2 > 1.0D ? d1 : d0 + (d1 - d0) * d2); + } + + public static double a(double d0, double d1) { + if (d0 < 0.0D) { + d0 = -d0; + } + + if (d1 < 0.0D) { + d1 = -d1; + } + + return d0 > d1 ? d0 : d1; + } + + public static int nextInt(Random random, int i, int j) { + return i >= j ? i : random.nextInt(j - i + 1) + i; + } + + public static float a(Random random, float f, float f1) { + return f >= f1 ? f : random.nextFloat() * (f1 - f) + f; + } + + public static double a(Random random, double d0, double d1) { + return d0 >= d1 ? d0 : random.nextDouble() * (d1 - d0) + d0; + } + + public static double a(long[] along) { + long i = 0L; + long[] along1 = along; + int j = along.length; + + for (int k = 0; k < j; ++k) { + long l = along1[k]; + + i += l; + } + + return (double) i / (double) along.length; + } + + public static float g(float f) { + f %= 360.0F; + if (f >= 180.0F) { + f -= 360.0F; + } + + if (f < -180.0F) { + f += 360.0F; + } + + return f; + } + + public static double g(double d0) { + d0 %= 360.0D; + if (d0 >= 180.0D) { + d0 -= 360.0D; + } + + if (d0 < -180.0D) { + d0 += 360.0D; + } + + return d0; + } + + public static int a(String s, int i) { + try { + return Integer.parseInt(s); + } catch (Throwable throwable) { + return i; + } + } + + public static int a(String s, int i, int j) { + return Math.max(j, a(s, i)); + } + + public static double a(String s, double d0) { + try { + return Double.parseDouble(s); + } catch (Throwable throwable) { + return d0; + } + } + + public static double a(String s, double d0, double d1) { + return Math.max(d1, a(s, d0)); + } + + public static int b(int i) { + int j = i - 1; + + j |= j >> 1; + j |= j >> 2; + j |= j >> 4; + j |= j >> 8; + j |= j >> 16; + return j + 1; + } + + private static boolean d(int i) { + return i != 0 && (i & i - 1) == 0; + } + + private static int e(int i) { + i = d(i) ? i : b(i); + return MathHelper.c[(int) ((long) i * 125613361L >> 27) & 31]; + } + + public static int c(int i) { + return e(i) - (d(i) ? 0 : 1); + } + + public static int c(int i, int j) { + if (j == 0) { + return 0; + } else if (i == 0) { + return j; + } else { + if (i < 0) { + j *= -1; + } + + int k = i % j; + + return k == 0 ? i : i + j - k; + } + } + + public static UUID a(Random random) { + long i = random.nextLong() & -61441L | 16384L; + long j = random.nextLong() & 4611686018427387903L | Long.MIN_VALUE; + + return new UUID(i, j); + } + + public static double c(double d0, double d1, double d2) { + return (d0 - d1) / (d2 - d1); + } + + public static double b(double d0, double d1) { + double d2 = d1 * d1 + d0 * d0; + + if (Double.isNaN(d2)) { + return Double.NaN; + } else { + boolean flag = d0 < 0.0D; + + if (flag) { + d0 = -d0; + } + + boolean flag1 = d1 < 0.0D; + + if (flag1) { + d1 = -d1; + } + + boolean flag2 = d0 > d1; + double d3; + + if (flag2) { + d3 = d1; + d1 = d0; + d0 = d3; + } + + d3 = i(d2); + d1 *= d3; + d0 *= d3; + double d4 = MathHelper.d + d0; + int i = (int) Double.doubleToRawLongBits(d4); + double d5 = MathHelper.e[i]; + double d6 = MathHelper.f[i]; + double d7 = d4 - MathHelper.d; + double d8 = d0 * d6 - d1 * d7; + double d9 = (6.0D + d8 * d8) * d8 * 0.16666666666666666D; + double d10 = d5 + d9; + + if (flag2) { + d10 = 1.5707963267948966D - d10; + } + + if (flag1) { + d10 = 3.141592653589793D - d10; + } + + if (flag) { + d10 = -d10; + } + + return d10; + } + } + + public static double i(double d0) { + double d1 = 0.5D * d0; + long i = Double.doubleToRawLongBits(d0); + + i = 6910469410427058090L - (i >> 1); + d0 = Double.longBitsToDouble(i); + d0 *= 1.5D - d1 * d0 * d0; + return d0; + } + + static { + int i; + + for (i = 0; i < 65536; ++i) { + MathHelper.b[i] = (float) Math.sin((double) i * 3.141592653589793D * 2.0D / 65536.0D); + } + + c = new int[] { 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9}; + d = Double.longBitsToDouble(4805340802404319232L); + e = new double[257]; + f = new double[257]; + + for (i = 0; i < 257; ++i) { + double d0 = (double) i / 256.0D; + double d1 = Math.asin(d0); + + MathHelper.f[i] = Math.cos(d1); + MathHelper.e[i] = d1; + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipe.java b/eSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipe.java new file mode 100644 index 0000000..99958c6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipe.java @@ -0,0 +1,120 @@ +package net.minecraft.server; + +public class MerchantRecipe { + + private ItemStack buyingItem1; + private ItemStack buyingItem2; + private ItemStack sellingItem; + private int uses; + private int maxUses; + private boolean rewardExp; + + public MerchantRecipe(NBTTagCompound nbttagcompound) { + this.a(nbttagcompound); + } + + public MerchantRecipe(ItemStack itemstack, ItemStack itemstack1, ItemStack itemstack2) { + this(itemstack, itemstack1, itemstack2, 0, 7); + } + + public MerchantRecipe(ItemStack itemstack, ItemStack itemstack1, ItemStack itemstack2, int i, int j) { + this.buyingItem1 = itemstack; + this.buyingItem2 = itemstack1; + this.sellingItem = itemstack2; + this.uses = i; + this.maxUses = j; + this.rewardExp = true; + } + + public MerchantRecipe(ItemStack itemstack, ItemStack itemstack1) { + this(itemstack, (ItemStack) null, itemstack1); + } + + public MerchantRecipe(ItemStack itemstack, Item item) { + this(itemstack, new ItemStack(item)); + } + + public ItemStack getBuyItem1() { + return this.buyingItem1; + } + + public ItemStack getBuyItem2() { + return this.buyingItem2; + } + + public boolean hasSecondItem() { + return this.buyingItem2 != null; + } + + public ItemStack getBuyItem3() { + return this.sellingItem; + } + + public int e() { + return this.uses; + } + + public int f() { + return this.maxUses; + } + + public void g() { + ++this.uses; + } + + public void a(int i) { + this.maxUses += i; + } + + public boolean h() { + return this.uses >= this.maxUses; + } + + public boolean j() { + return this.rewardExp; + } + + public void a(NBTTagCompound nbttagcompound) { + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("buy"); + + this.buyingItem1 = ItemStack.createStack(nbttagcompound1); + NBTTagCompound nbttagcompound2 = nbttagcompound.getCompound("sell"); + + this.sellingItem = ItemStack.createStack(nbttagcompound2); + if (nbttagcompound.hasKeyOfType("buyB", 10)) { + this.buyingItem2 = ItemStack.createStack(nbttagcompound.getCompound("buyB")); + } + + if (nbttagcompound.hasKeyOfType("uses", 99)) { + this.uses = nbttagcompound.getInt("uses"); + } + + if (nbttagcompound.hasKeyOfType("maxUses", 99)) { + this.maxUses = nbttagcompound.getInt("maxUses"); + } else { + this.maxUses = 7; + } + + if (nbttagcompound.hasKeyOfType("rewardExp", 1)) { + this.rewardExp = nbttagcompound.getBoolean("rewardExp"); + } else { + this.rewardExp = true; + } + + } + + public NBTTagCompound k() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.set("buy", this.buyingItem1.save(new NBTTagCompound())); + nbttagcompound.set("sell", this.sellingItem.save(new NBTTagCompound())); + if (this.buyingItem2 != null) { + nbttagcompound.set("buyB", this.buyingItem2.save(new NBTTagCompound())); + } + + nbttagcompound.setInt("uses", this.uses); + nbttagcompound.setInt("maxUses", this.maxUses); + nbttagcompound.setBoolean("rewardExp", this.rewardExp); + return nbttagcompound; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipeList.java b/eSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipeList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipeList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MerchantRecipeList.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MethodProfiler.java b/eSpigot-Server/src/main/java/net/minecraft/server/MethodProfiler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MethodProfiler.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MethodProfiler.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftEncryption.java b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftEncryption.java new file mode 100644 index 0000000..74c50e7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftEncryption.java @@ -0,0 +1,136 @@ +package net.minecraft.server; + +import java.io.UnsupportedEncodingException; +import java.security.GeneralSecurityException; +import java.security.InvalidKeyException; +import java.security.Key; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.X509EncodedKeySpec; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class MinecraftEncryption { + + private static final Logger a = LogManager.getLogger(); + + public static KeyPair b() { + try { + KeyPairGenerator keypairgenerator = KeyPairGenerator.getInstance("RSA"); + + keypairgenerator.initialize(1024); + return keypairgenerator.generateKeyPair(); + } catch (NoSuchAlgorithmException nosuchalgorithmexception) { + nosuchalgorithmexception.printStackTrace(); + MinecraftEncryption.a.error("Key pair generation failed!"); + return null; + } + } + + public static byte[] a(String s, PublicKey publickey, SecretKey secretkey) { + try { + return a("SHA-1", new byte[][] { s.getBytes("ISO_8859_1"), secretkey.getEncoded(), publickey.getEncoded()}); + } catch (UnsupportedEncodingException unsupportedencodingexception) { + unsupportedencodingexception.printStackTrace(); + return null; + } + } + + private static byte[] a(String s, byte[]... abyte) { + try { + MessageDigest messagedigest = MessageDigest.getInstance(s); + byte[][] abyte1 = abyte; + int i = abyte.length; + + for (int j = 0; j < i; ++j) { + byte[] abyte2 = abyte1[j]; + + messagedigest.update(abyte2); + } + + return messagedigest.digest(); + } catch (NoSuchAlgorithmException nosuchalgorithmexception) { + nosuchalgorithmexception.printStackTrace(); + return null; + } + } + + public static PublicKey a(byte[] abyte) { + try { + X509EncodedKeySpec x509encodedkeyspec = new X509EncodedKeySpec(abyte); + KeyFactory keyfactory = KeyFactory.getInstance("RSA"); + + return keyfactory.generatePublic(x509encodedkeyspec); + } catch (NoSuchAlgorithmException nosuchalgorithmexception) { + ; + } catch (InvalidKeySpecException invalidkeyspecexception) { + ; + } + + MinecraftEncryption.a.error("Public key reconstitute failed!"); + return null; + } + + public static SecretKey a(PrivateKey privatekey, byte[] abyte) { + return new SecretKeySpec(b(privatekey, abyte), "AES"); + } + + public static byte[] b(Key key, byte[] abyte) { + return a(2, key, abyte); + } + + private static byte[] a(int i, Key key, byte[] abyte) { + try { + return a(i, key.getAlgorithm(), key).doFinal(abyte); + } catch (IllegalBlockSizeException illegalblocksizeexception) { + illegalblocksizeexception.printStackTrace(); + } catch (BadPaddingException badpaddingexception) { + badpaddingexception.printStackTrace(); + } + + MinecraftEncryption.a.error("Cipher data failed!"); + return null; + } + + private static Cipher a(int i, String s, Key key) { + try { + Cipher cipher = Cipher.getInstance(s); + + cipher.init(i, key); + return cipher; + } catch (InvalidKeyException invalidkeyexception) { + invalidkeyexception.printStackTrace(); + } catch (NoSuchAlgorithmException nosuchalgorithmexception) { + nosuchalgorithmexception.printStackTrace(); + } catch (NoSuchPaddingException nosuchpaddingexception) { + nosuchpaddingexception.printStackTrace(); + } + + MinecraftEncryption.a.error("Cipher creation failed!"); + return null; + } + + public static Cipher a(int i, Key key) { + try { + Cipher cipher = Cipher.getInstance("AES/CFB8/NoPadding"); + + cipher.init(i, key, new IvParameterSpec(key.getEncoded())); + return cipher; + } catch (GeneralSecurityException generalsecurityexception) { + throw new RuntimeException(generalsecurityexception); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftKey.java b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftKey.java new file mode 100644 index 0000000..dadc01e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftKey.java @@ -0,0 +1,58 @@ +package net.minecraft.server; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; + +public class MinecraftKey { + + protected final String a; + protected final String b; + + protected MinecraftKey(int i, String... astring) { + this.a = StringUtils.isEmpty(astring[0]) ? "minecraft" : astring[0].toLowerCase(); + this.b = astring[1]; + Validate.notNull(this.b); + } + + public MinecraftKey(String s) { + this(0, a(s)); + } + + protected static String[] a(String s) { + String[] astring = new String[] { null, s}; + int i = s.indexOf(58); + + if (i >= 0) { + astring[1] = s.substring(i + 1, s.length()); + if (i > 1) { + astring[0] = s.substring(0, i); + } + } + + return astring; + } + + public String a() { + return this.b; + } + + public String toString() { + return this.a + ':' + this.b; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof MinecraftKey)) { + return false; + } else { + MinecraftKey minecraftkey = (MinecraftKey) object; + + return this.a.equals(minecraftkey.a) && this.b.equals(minecraftkey.b); + } + } + + public int hashCode() { + return 31 * this.a.hashCode() + this.b.hashCode(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java similarity index 98% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java index 2bc1b52..27bf1e1 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MinecraftServer.java @@ -16,9 +16,9 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufOutputStream; import io.netty.buffer.Unpooled; import io.netty.handler.codec.base64.Base64; -import jline.console.ConsoleReader; import joptsimple.OptionSet; import com.elevatemc.spigot.eSpigot; +import net.minecrell.terminalconsole.TerminalConsoleAppender; import net.openhft.affinity.AffinityLock; import org.apache.commons.lang3.Validate; import org.apache.logging.log4j.LogManager; @@ -89,7 +89,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs public OptionSet options; public org.bukkit.command.ConsoleCommandSender console; public org.bukkit.command.RemoteConsoleCommandSender remoteConsole; - public ConsoleReader reader; + //public ConsoleReader reader; //public java.util.Queue processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); SportBukkit - use Mojang's task queue public int autosavePeriod; public double[] recentTps = new double[3]; // PaperSpigot - Fine have your darn compat with bad plugins @@ -190,6 +190,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.Y = this.V.createProfileRepository(); // CraftBukkit start this.options = options; + /* // PandaSpigot - Handled by TerminalConsoleAppender // Try to see if we're actually running in a terminal, disable jline if not if (System.console() == null && System.getProperty("jline.terminal") == null) { System.setProperty("jline.terminal", "jline.UnsupportedTerminal"); @@ -211,6 +212,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs LOGGER.warn((String) null, ex); } } + */ // PandaSpigot Runtime.getRuntime().addShutdownHook(new org.bukkit.craftbukkit.util.ServerShutdownThread(this)); this.serverThread = primaryThread = new Thread(this, "Server thread"); // Moved from main @@ -445,7 +447,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } worlddata.checkName(s1); // CraftBukkit - Migration did not rewrite the level.dat; This forces 1.8 to take the last loaded world as respawn (in this case the end) if (this.X()) { - world = (WorldServer) (new DemoWorldServer(this, idatamanager, worlddata, dimension, this.methodProfiler)).b(); + world = (WorldServer) (new DemoWorldServer(this, idatamanager, worlddata, dimension, this.methodProfiler, org.bukkit.World.Environment.getEnvironment(dimension), gen)).b(); } else { world = (WorldServer) (new WorldServer(this, idatamanager, worlddata, dimension, this.methodProfiler, org.bukkit.World.Environment.getEnvironment(dimension), gen)).b(); } @@ -789,7 +791,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } finally { // CraftBukkit start - Restore terminal to original settings try { - reader.getTerminal().restore(); + TerminalConsoleAppender.close(); // PandaSpigot - Use TerminalConsoleAppender } catch (Exception ignored) { } // CraftBukkit end @@ -940,6 +942,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // if (i == 0 || this.getAllowNether()) { WorldServer worldserver = this.worlds.get(i); + worldserver.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // PandaSpigot if(!worldserver.getWorld().checkTicking()) continue; // SportBukkit this.methodProfiler.a(worldserver.getWorldData().getName()); @@ -1211,7 +1214,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } public void sendMessage(IChatBaseComponent ichatbasecomponent) { - MinecraftServer.LOGGER.info(ichatbasecomponent.c()); + MinecraftServer.LOGGER.info(org.bukkit.craftbukkit.util.CraftChatMessage.fromComponent(ichatbasecomponent)); // PandaSpigot - Log messages with color } public boolean a(int i, String s) { @@ -1593,7 +1596,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs try { return Futures.immediateFuture(callable.call()); } catch (Exception exception) { - return Futures.immediateFailedCheckedFuture(exception); + return Futures.immediateFailedFuture(exception); // KigPaper } } } diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MobEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffect.java new file mode 100644 index 0000000..c9f433f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffect.java @@ -0,0 +1,169 @@ +package net.minecraft.server; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class MobEffect { + + private static final Logger a = LogManager.getLogger(); + private int effectId; + private int duration; + private int amplification; + private boolean splash; + private boolean ambient; + private boolean particles; + + public MobEffect(int i, int j) { + this(i, j, 0); + } + + public MobEffect(int i, int j, int k) { + this(i, j, k, false, true); + } + + public MobEffect(int i, int j, int k, boolean flag, boolean flag1) { + this.effectId = i; + this.duration = j; + this.amplification = k; + this.ambient = flag; + this.particles = flag1; + } + + public MobEffect(MobEffect mobeffect) { + this.effectId = mobeffect.effectId; + this.duration = mobeffect.duration; + this.amplification = mobeffect.amplification; + this.ambient = mobeffect.ambient; + this.particles = mobeffect.particles; + } + + public void a(MobEffect mobeffect) { + if (this.effectId != mobeffect.effectId) { + MobEffect.a.warn("This method should only be called for matching effects!"); + } + + if (mobeffect.amplification > this.amplification) { + this.amplification = mobeffect.amplification; + this.duration = mobeffect.duration; + } else if (mobeffect.amplification == this.amplification && this.duration < mobeffect.duration) { + this.duration = mobeffect.duration; + } else if (!mobeffect.ambient && this.ambient) { + this.ambient = mobeffect.ambient; + } + + this.particles = mobeffect.particles; + } + + public int getEffectId() { + return this.effectId; + } + + public int getDuration() { + return this.duration; + } + + public int getAmplifier() { + return this.amplification; + } + + public void setSplash(boolean flag) { + this.splash = flag; + } + + public boolean isAmbient() { + return this.ambient; + } + + public boolean isShowParticles() { + return this.particles; + } + + public boolean tick(EntityLiving entityliving) { + if (this.duration > 0) { + if (MobEffectList.byId[this.effectId].a(this.duration, this.amplification)) { + this.b(entityliving); + } + + this.i(); + } + + return this.duration > 0; + } + + private int i() { + return --this.duration; + } + + public void b(EntityLiving entityliving) { + if (this.duration > 0) { + MobEffectList.byId[this.effectId].tick(entityliving, this.amplification); + } + + } + + public String g() { + return MobEffectList.byId[this.effectId].a(); + } + + public int hashCode() { + return this.effectId; + } + + public String toString() { + String s = ""; + + if (this.getAmplifier() > 0) { + s = this.g() + " x " + (this.getAmplifier() + 1) + ", Duration: " + this.getDuration(); + } else { + s = this.g() + ", Duration: " + this.getDuration(); + } + + if (this.splash) { + s = s + ", Splash: true"; + } + + if (!this.particles) { + s = s + ", Particles: false"; + } + + return MobEffectList.byId[this.effectId].j() ? "(" + s + ")" : s; + } + + public boolean equals(Object object) { + if (!(object instanceof MobEffect)) { + return false; + } else { + MobEffect mobeffect = (MobEffect) object; + + return this.effectId == mobeffect.effectId && this.amplification == mobeffect.amplification && this.duration == mobeffect.duration && this.splash == mobeffect.splash && this.ambient == mobeffect.ambient; + } + } + + public NBTTagCompound a(NBTTagCompound nbttagcompound) { + nbttagcompound.setByte("Id", (byte) this.getEffectId()); + nbttagcompound.setByte("Amplifier", (byte) this.getAmplifier()); + nbttagcompound.setInt("Duration", this.getDuration()); + nbttagcompound.setBoolean("Ambient", this.isAmbient()); + nbttagcompound.setBoolean("ShowParticles", this.isShowParticles()); + return nbttagcompound; + } + + public static MobEffect b(NBTTagCompound nbttagcompound) { + byte b0 = nbttagcompound.getByte("Id"); + + if (b0 >= 0 && b0 < MobEffectList.byId.length && MobEffectList.byId[b0] != null) { + byte b1 = nbttagcompound.getByte("Amplifier"); + int i = nbttagcompound.getInt("Duration"); + boolean flag = nbttagcompound.getBoolean("Ambient"); + boolean flag1 = true; + + if (nbttagcompound.hasKeyOfType("ShowParticles", 1)) { + flag1 = nbttagcompound.getBoolean("ShowParticles"); + } + + return new MobEffect(b0, i, b1, flag, flag1); + } else { + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectAbsorption.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectAbsorption.java new file mode 100644 index 0000000..b85bc4d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectAbsorption.java @@ -0,0 +1,18 @@ +package net.minecraft.server; + +public class MobEffectAbsorption extends MobEffectList { + + protected MobEffectAbsorption(int i, MinecraftKey minecraftkey, boolean flag, int j) { + super(i, minecraftkey, flag, j); + } + + public void a(EntityLiving entityliving, AttributeMapBase attributemapbase, int i) { + entityliving.setAbsorptionHearts(entityliving.getAbsorptionHearts() - (float) (4 * (i + 1))); + super.a(entityliving, attributemapbase, i); + } + + public void b(EntityLiving entityliving, AttributeMapBase attributemapbase, int i) { + entityliving.setAbsorptionHearts(entityliving.getAbsorptionHearts() + (float) (4 * (i + 1))); + super.b(entityliving, attributemapbase, i); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MobEffectAttackDamage.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectAttackDamage.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MobEffectAttackDamage.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MobEffectAttackDamage.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectHealthBoost.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectHealthBoost.java new file mode 100644 index 0000000..8e74380 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectHealthBoost.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class MobEffectHealthBoost extends MobEffectList { + + public MobEffectHealthBoost(int i, MinecraftKey minecraftkey, boolean flag, int j) { + super(i, minecraftkey, flag, j); + } + + public void a(EntityLiving entityliving, AttributeMapBase attributemapbase, int i) { + super.a(entityliving, attributemapbase, i); + if (entityliving.getHealth() > entityliving.getMaxHealth()) { + entityliving.setHealth(entityliving.getMaxHealth()); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MobEffectList.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobEffectList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MobEffectList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MobEffectList.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/MobSpawnerAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/MobSpawnerAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/MobSpawnerAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MojangStatisticsGenerator.java b/eSpigot-Server/src/main/java/net/minecraft/server/MojangStatisticsGenerator.java new file mode 100644 index 0000000..076306d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MojangStatisticsGenerator.java @@ -0,0 +1,134 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.lang.management.ManagementFactory; +import java.lang.management.RuntimeMXBean; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class MojangStatisticsGenerator { + + private final Map a = Maps.newHashMap(); + private final Map b = Maps.newHashMap(); + private final String c = UUID.randomUUID().toString(); + private final URL d; + private final IMojangStatistics e; + private final Timer f = new Timer("Snooper Timer", true); + private final Object g = new Object(); + private final long h; + private boolean i; + private int j; + + public MojangStatisticsGenerator(String s, IMojangStatistics imojangstatistics, long i) { + try { + this.d = new URL("http://snoop.minecraft.net/" + s + "?version=" + 2); + } catch (MalformedURLException malformedurlexception) { + throw new IllegalArgumentException(); + } + + this.e = imojangstatistics; + this.h = i; + } + + public void a() { + if (!this.i) { + this.i = true; + this.h(); + this.f.schedule(new TimerTask() { + public void run() { + if (MojangStatisticsGenerator.this.e.getSnooperEnabled()) { + HashMap hashmap; + + synchronized (MojangStatisticsGenerator.this.g) { + hashmap = Maps.newHashMap(MojangStatisticsGenerator.this.b); + if (MojangStatisticsGenerator.this.j == 0) { + hashmap.putAll(MojangStatisticsGenerator.this.a); + } + + hashmap.put("snooper_count", Integer.valueOf(MojangStatisticsGenerator.f(MojangStatisticsGenerator.this))); + hashmap.put("snooper_token", MojangStatisticsGenerator.this.c); + } + + HttpUtilities.a(MojangStatisticsGenerator.this.d, (Map) hashmap, true); + } + } + }, 0L, 900000L); + } + } + + private void h() { + this.i(); + this.a("snooper_token", this.c); + this.b("snooper_token", this.c); + this.b("os_name", System.getProperty("os.name")); + this.b("os_version", System.getProperty("os.version")); + this.b("os_architecture", System.getProperty("os.arch")); + this.b("java_version", System.getProperty("java.version")); + this.a("version", "1.8.8"); + this.e.b(this); + } + + private void i() { + RuntimeMXBean runtimemxbean = ManagementFactory.getRuntimeMXBean(); + List list = runtimemxbean.getInputArguments(); + int i = 0; + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + + if (s.startsWith("-X")) { + this.a("jvm_arg[" + i++ + "]", s); + } + } + + this.a("jvm_args", Integer.valueOf(i)); + } + + public void b() { + this.b("memory_total", Long.valueOf(Runtime.getRuntime().totalMemory())); + this.b("memory_max", Long.valueOf(Runtime.getRuntime().maxMemory())); + this.b("memory_free", Long.valueOf(Runtime.getRuntime().freeMemory())); + this.b("cpu_cores", Integer.valueOf(Runtime.getRuntime().availableProcessors())); + this.e.a(this); + } + + public void a(String s, Object object) { + Object object1 = this.g; + + synchronized (this.g) { + this.b.put(s, object); + } + } + + public void b(String s, Object object) { + Object object1 = this.g; + + synchronized (this.g) { + this.a.put(s, object); + } + } + + public boolean d() { + return this.i; + } + + public void e() { + this.f.cancel(); + } + + public long g() { + return this.h; + } + + static int f(MojangStatisticsGenerator mojangstatisticsgenerator) { + return mojangstatisticsgenerator.j++; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParseException.java b/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParseException.java new file mode 100644 index 0000000..15cd833 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParseException.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public class MojangsonParseException extends Exception { + + public MojangsonParseException(String s) { + super(s); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParser.java b/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParser.java new file mode 100644 index 0000000..3378d7f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MojangsonParser.java @@ -0,0 +1,433 @@ +package net.minecraft.server; + +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Stack; +import java.util.regex.Pattern; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class MojangsonParser { + + private static final Logger a = LogManager.getLogger(); + private static final Pattern b = Pattern.compile("\\[[-+\\d|,\\s]+\\]"); + + public static NBTTagCompound parse(String s) throws MojangsonParseException { + s = s.trim(); + if (!s.startsWith("{")) { + throw new MojangsonParseException("Invalid tag encountered, expected \'{\' as first char."); + } else if (b(s) != 1) { + throw new MojangsonParseException("Encountered multiple top tags, only one expected"); + } else { + return (NBTTagCompound) a("tag", s).a(); + } + } + + static int b(String s) throws MojangsonParseException { + int i = 0; + boolean flag = false; + Stack stack = new Stack(); + + for (int j = 0; j < s.length(); ++j) { + char c0 = s.charAt(j); + + if (c0 == 34) { + if (b(s, j)) { + if (!flag) { + throw new MojangsonParseException("Illegal use of \\\": " + s); + } + } else { + flag = !flag; + } + } else if (!flag) { + if (c0 != 123 && c0 != 91) { + if (c0 == 125 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 123)) { + throw new MojangsonParseException("Unbalanced curly brackets {}: " + s); + } + + if (c0 == 93 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 91)) { + throw new MojangsonParseException("Unbalanced square brackets []: " + s); + } + } else { + if (stack.isEmpty()) { + ++i; + } + + stack.push(Character.valueOf(c0)); + } + } + } + + if (flag) { + throw new MojangsonParseException("Unbalanced quotation: " + s); + } else if (!stack.isEmpty()) { + throw new MojangsonParseException("Unbalanced brackets: " + s); + } else { + if (i == 0 && !s.isEmpty()) { + i = 1; + } + + return i; + } + } + + static MojangsonParser.MojangsonTypeParser a(String... astring) throws MojangsonParseException { + return a(astring[0], astring[1]); + } + + static MojangsonParser.MojangsonTypeParser a(String s, String s1) throws MojangsonParseException { + s1 = s1.trim(); + String s2; + boolean flag; + char c0; + + if (s1.startsWith("{")) { + s1 = s1.substring(1, s1.length() - 1); + + MojangsonParser.MojangsonCompoundParser mojangsonparser_mojangsoncompoundparser; + + for (mojangsonparser_mojangsoncompoundparser = new MojangsonParser.MojangsonCompoundParser(s); s1.length() > 0; s1 = s1.substring(s2.length() + 1)) { + s2 = b(s1, true); + if (s2.length() > 0) { + flag = false; + mojangsonparser_mojangsoncompoundparser.b.add(a(s2, flag)); + } + + if (s1.length() < s2.length() + 1) { + break; + } + + c0 = s1.charAt(s2.length()); + if (c0 != 44 && c0 != 123 && c0 != 125 && c0 != 91 && c0 != 93) { + throw new MojangsonParseException("Unexpected token \'" + c0 + "\' at: " + s1.substring(s2.length())); + } + } + + return mojangsonparser_mojangsoncompoundparser; + } else if (s1.startsWith("[") && !MojangsonParser.b.matcher(s1).matches()) { + s1 = s1.substring(1, s1.length() - 1); + + MojangsonParser.MojangsonListParser mojangsonparser_mojangsonlistparser; + + for (mojangsonparser_mojangsonlistparser = new MojangsonParser.MojangsonListParser(s); s1.length() > 0; s1 = s1.substring(s2.length() + 1)) { + s2 = b(s1, false); + if (s2.length() > 0) { + flag = true; + mojangsonparser_mojangsonlistparser.b.add(a(s2, flag)); + } + + if (s1.length() < s2.length() + 1) { + break; + } + + c0 = s1.charAt(s2.length()); + if (c0 != 44 && c0 != 123 && c0 != 125 && c0 != 91 && c0 != 93) { + throw new MojangsonParseException("Unexpected token \'" + c0 + "\' at: " + s1.substring(s2.length())); + } + } + + return mojangsonparser_mojangsonlistparser; + } else { + return new MojangsonParser.MojangsonPrimitiveParser(s, s1); + } + } + + private static MojangsonParser.MojangsonTypeParser a(String s, boolean flag) throws MojangsonParseException { + String s1 = c(s, flag); + String s2 = d(s, flag); + + return a(new String[] { s1, s2}); + } + + private static String b(String s, boolean flag) throws MojangsonParseException { + int i = a(s, ':'); + int j = a(s, ','); + + if (flag) { + if (i == -1) { + throw new MojangsonParseException("Unable to locate name/value separator for string: " + s); + } + + if (j != -1 && j < i) { + throw new MojangsonParseException("Name error at: " + s); + } + } else if (i == -1 || i > j) { + i = -1; + } + + return a(s, i); + } + + private static String a(String s, int i) throws MojangsonParseException { + Stack stack = new Stack(); + int j = i + 1; + boolean flag = false; + boolean flag1 = false; + boolean flag2 = false; + + for (int k = 0; j < s.length(); ++j) { + char c0 = s.charAt(j); + + if (c0 == 34) { + if (b(s, j)) { + if (!flag) { + throw new MojangsonParseException("Illegal use of \\\": " + s); + } + } else { + flag = !flag; + if (flag && !flag2) { + flag1 = true; + } + + if (!flag) { + k = j; + } + } + } else if (!flag) { + if (c0 != 123 && c0 != 91) { + if (c0 == 125 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 123)) { + throw new MojangsonParseException("Unbalanced curly brackets {}: " + s); + } + + if (c0 == 93 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 91)) { + throw new MojangsonParseException("Unbalanced square brackets []: " + s); + } + + if (c0 == 44 && stack.isEmpty()) { + return s.substring(0, j); + } + } else { + stack.push(Character.valueOf(c0)); + } + } + + if (!Character.isWhitespace(c0)) { + if (!flag && flag1 && k != j) { + return s.substring(0, k + 1); + } + + flag2 = true; + } + } + + return s.substring(0, j); + } + + private static String c(String s, boolean flag) throws MojangsonParseException { + if (flag) { + s = s.trim(); + if (s.startsWith("{") || s.startsWith("[")) { + return ""; + } + } + + int i = a(s, ':'); + + if (i == -1) { + if (flag) { + return ""; + } else { + throw new MojangsonParseException("Unable to locate name/value separator for string: " + s); + } + } else { + return s.substring(0, i).trim(); + } + } + + private static String d(String s, boolean flag) throws MojangsonParseException { + if (flag) { + s = s.trim(); + if (s.startsWith("{") || s.startsWith("[")) { + return s; + } + } + + int i = a(s, ':'); + + if (i == -1) { + if (flag) { + return s; + } else { + throw new MojangsonParseException("Unable to locate name/value separator for string: " + s); + } + } else { + return s.substring(i + 1).trim(); + } + } + + private static int a(String s, char c0) { + int i = 0; + + for (boolean flag = true; i < s.length(); ++i) { + char c1 = s.charAt(i); + + if (c1 == 34) { + if (!b(s, i)) { + flag = !flag; + } + } else if (flag) { + if (c1 == c0) { + return i; + } + + if (c1 == 123 || c1 == 91) { + return -1; + } + } + } + + return -1; + } + + private static boolean b(String s, int i) { + return i > 0 && s.charAt(i - 1) == 92 && !b(s, i - 1); + } + + static class MojangsonPrimitiveParser extends MojangsonParser.MojangsonTypeParser { + + private static final Pattern c = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+[d|D]"); + private static final Pattern d = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+[f|F]"); + private static final Pattern e = Pattern.compile("[-+]?[0-9]+[b|B]"); + private static final Pattern f = Pattern.compile("[-+]?[0-9]+[l|L]"); + private static final Pattern g = Pattern.compile("[-+]?[0-9]+[s|S]"); + private static final Pattern h = Pattern.compile("[-+]?[0-9]+"); + private static final Pattern i = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+"); + private static final Splitter j = Splitter.on(',').omitEmptyStrings(); + protected String b; + + public MojangsonPrimitiveParser(String s, String s1) { + this.a = s; + this.b = s1; + } + + public NBTBase a() throws MojangsonParseException { + try { + if (MojangsonParser.MojangsonPrimitiveParser.c.matcher(this.b).matches()) { + return new NBTTagDouble(Double.parseDouble(this.b.substring(0, this.b.length() - 1))); + } + + if (MojangsonParser.MojangsonPrimitiveParser.d.matcher(this.b).matches()) { + return new NBTTagFloat(Float.parseFloat(this.b.substring(0, this.b.length() - 1))); + } + + if (MojangsonParser.MojangsonPrimitiveParser.e.matcher(this.b).matches()) { + return new NBTTagByte(Byte.parseByte(this.b.substring(0, this.b.length() - 1))); + } + + if (MojangsonParser.MojangsonPrimitiveParser.f.matcher(this.b).matches()) { + return new NBTTagLong(Long.parseLong(this.b.substring(0, this.b.length() - 1))); + } + + if (MojangsonParser.MojangsonPrimitiveParser.g.matcher(this.b).matches()) { + return new NBTTagShort(Short.parseShort(this.b.substring(0, this.b.length() - 1))); + } + + if (MojangsonParser.MojangsonPrimitiveParser.h.matcher(this.b).matches()) { + return new NBTTagInt(Integer.parseInt(this.b)); + } + + if (MojangsonParser.MojangsonPrimitiveParser.i.matcher(this.b).matches()) { + return new NBTTagDouble(Double.parseDouble(this.b)); + } + + if (this.b.equalsIgnoreCase("true") || this.b.equalsIgnoreCase("false")) { + return new NBTTagByte((byte) (Boolean.parseBoolean(this.b) ? 1 : 0)); + } + } catch (NumberFormatException numberformatexception) { + this.b = this.b.replaceAll("\\\\\"", "\""); + return new NBTTagString(this.b); + } + + if (this.b.startsWith("[") && this.b.endsWith("]")) { + String s = this.b.substring(1, this.b.length() - 1); + String[] astring = (String[]) Iterables.toArray(MojangsonParser.MojangsonPrimitiveParser.j.split(s), String.class); + + try { + int[] aint = new int[astring.length]; + + for (int i = 0; i < astring.length; ++i) { + aint[i] = Integer.parseInt(astring[i].trim()); + } + + return new NBTTagIntArray(aint); + } catch (NumberFormatException numberformatexception1) { + return new NBTTagString(this.b); + } + } else { + if (this.b.startsWith("\"") && this.b.endsWith("\"")) { + this.b = this.b.substring(1, this.b.length() - 1); + } + + this.b = this.b.replaceAll("\\\\\"", "\""); + StringBuilder stringbuilder = new StringBuilder(); + + for (int j = 0; j < this.b.length(); ++j) { + if (j < this.b.length() - 1 && this.b.charAt(j) == 92 && this.b.charAt(j + 1) == 92) { + stringbuilder.append('\\'); + ++j; + } else { + stringbuilder.append(this.b.charAt(j)); + } + } + + return new NBTTagString(stringbuilder.toString()); + } + } + } + + static class MojangsonListParser extends MojangsonParser.MojangsonTypeParser { + + protected List b = Lists.newArrayList(); + + public MojangsonListParser(String s) { + this.a = s; + } + + public NBTBase a() throws MojangsonParseException { + NBTTagList nbttaglist = new NBTTagList(); + Iterator iterator = this.b.iterator(); + + while (iterator.hasNext()) { + MojangsonParser.MojangsonTypeParser mojangsonparser_mojangsontypeparser = (MojangsonParser.MojangsonTypeParser) iterator.next(); + + nbttaglist.add(mojangsonparser_mojangsontypeparser.a()); + } + + return nbttaglist; + } + } + + static class MojangsonCompoundParser extends MojangsonParser.MojangsonTypeParser { + + protected List b = Lists.newArrayList(); + + public MojangsonCompoundParser(String s) { + this.a = s; + } + + public NBTBase a() throws MojangsonParseException { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + Iterator iterator = this.b.iterator(); + + while (iterator.hasNext()) { + MojangsonParser.MojangsonTypeParser mojangsonparser_mojangsontypeparser = (MojangsonParser.MojangsonTypeParser) iterator.next(); + + nbttagcompound.set(mojangsonparser_mojangsontypeparser.a, mojangsonparser_mojangsontypeparser.a()); + } + + return nbttagcompound; + } + } + + abstract static class MojangsonTypeParser { + + protected String a; + + MojangsonTypeParser() {} + + public abstract NBTBase a() throws MojangsonParseException; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/MovingObjectPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/MovingObjectPosition.java new file mode 100644 index 0000000..a0438c5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/MovingObjectPosition.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +public class MovingObjectPosition { + + private BlockPosition e; + public MovingObjectPosition.EnumMovingObjectType type; + public EnumDirection direction; + public Vec3D pos; + public Entity entity; + + public MovingObjectPosition(Vec3D vec3d, EnumDirection enumdirection, BlockPosition blockposition) { + this(MovingObjectPosition.EnumMovingObjectType.BLOCK, vec3d, enumdirection, blockposition); + } + + public MovingObjectPosition(Vec3D vec3d, EnumDirection enumdirection) { + this(MovingObjectPosition.EnumMovingObjectType.BLOCK, vec3d, enumdirection, BlockPosition.ZERO); + } + + public MovingObjectPosition(Entity entity) { + this(entity, new Vec3D(entity.locX, entity.locY, entity.locZ)); + } + + public MovingObjectPosition(MovingObjectPosition.EnumMovingObjectType movingobjectposition_enummovingobjecttype, Vec3D vec3d, EnumDirection enumdirection, BlockPosition blockposition) { + this.type = movingobjectposition_enummovingobjecttype; + this.e = blockposition; + this.direction = enumdirection; + this.pos = new Vec3D(vec3d.a, vec3d.b, vec3d.c); + } + + public MovingObjectPosition(Entity entity, Vec3D vec3d) { + this.type = MovingObjectPosition.EnumMovingObjectType.ENTITY; + this.entity = entity; + this.pos = vec3d; + } + + public BlockPosition a() { + return this.e; + } + + public String toString() { + return "HitResult{type=" + this.type + ", blockpos=" + this.e + ", f=" + this.direction + ", pos=" + this.pos + ", entity=" + this.entity + '}'; + } + + public static enum EnumMovingObjectType { + + MISS, BLOCK, ENTITY; + + private EnumMovingObjectType() {} + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTBase.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTBase.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTBase.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTReadLimiter.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTReadLimiter.java new file mode 100644 index 0000000..58253cc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTReadLimiter.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +public class NBTReadLimiter { + + public static final NBTReadLimiter a = new NBTReadLimiter(0L) { + public void a(long i) {} + }; + private final long b; + private long c; + + public NBTReadLimiter(long i) { + this.b = i; + } + + public void a(long i) { + this.c += i / 8L; + if (this.c > this.b) { + throw new RuntimeException("Tried to read NBT tag that was too big; tried to allocate: " + this.c + "bytes where max allowed: " + this.b); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagByte.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagByte.java new file mode 100644 index 0000000..01c5afa --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagByte.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagByte extends NBTBase.NBTNumber { + + private byte data; + + NBTTagByte() {} + + public NBTTagByte(byte b0) { + this.data = b0; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeByte(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(72L); + this.data = datainput.readByte(); + } + + public byte getTypeId() { + return (byte) 1; + } + + public String toString() { + return "" + this.data + "b"; + } + + public NBTBase clone() { + return new NBTTagByte(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagByte nbttagbyte = (NBTTagByte) object; + + return this.data == nbttagbyte.data; + } else { + return false; + } + } + + public int hashCode() { + return super.hashCode() ^ this.data; + } + + public long c() { + return (long) this.data; + } + + public int d() { + return this.data; + } + + public short e() { + return (short) this.data; + } + + public byte f() { + return this.data; + } + + public double g() { + return (double) this.data; + } + + public float h() { + return (float) this.data; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagByteArray.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagByteArray.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagByteArray.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTTagByteArray.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagCompound.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagCompound.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagCompound.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTTagCompound.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagDouble.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagDouble.java new file mode 100644 index 0000000..cdd2019 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagDouble.java @@ -0,0 +1,77 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagDouble extends NBTBase.NBTNumber { + + private double data; + + NBTTagDouble() {} + + public NBTTagDouble(double d0) { + this.data = d0; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeDouble(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(128L); + this.data = datainput.readDouble(); + } + + public byte getTypeId() { + return (byte) 6; + } + + public String toString() { + return "" + this.data + "d"; + } + + public NBTBase clone() { + return new NBTTagDouble(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagDouble nbttagdouble = (NBTTagDouble) object; + + return this.data == nbttagdouble.data; + } else { + return false; + } + } + + public int hashCode() { + long i = Double.doubleToLongBits(this.data); + + return super.hashCode() ^ (int) (i ^ i >>> 32); + } + + public long c() { + return (long) Math.floor(this.data); + } + + public int d() { + return MathHelper.floor(this.data); + } + + public short e() { + return (short) (MathHelper.floor(this.data) & '\uffff'); + } + + public byte f() { + return (byte) (MathHelper.floor(this.data) & 255); + } + + public double g() { + return this.data; + } + + public float h() { + return (float) this.data; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagEnd.java new file mode 100644 index 0000000..376a5a4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagEnd.java @@ -0,0 +1,28 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagEnd extends NBTBase { + + NBTTagEnd() {} + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(64L); + } + + void write(DataOutput dataoutput) throws IOException {} + + public byte getTypeId() { + return (byte) 0; + } + + public String toString() { + return "END"; + } + + public NBTBase clone() { + return new NBTTagEnd(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagFloat.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagFloat.java new file mode 100644 index 0000000..af72960 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagFloat.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagFloat extends NBTBase.NBTNumber { + + private float data; + + NBTTagFloat() {} + + public NBTTagFloat(float f) { + this.data = f; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeFloat(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(96L); + this.data = datainput.readFloat(); + } + + public byte getTypeId() { + return (byte) 5; + } + + public String toString() { + return "" + this.data + "f"; + } + + public NBTBase clone() { + return new NBTTagFloat(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagFloat nbttagfloat = (NBTTagFloat) object; + + return this.data == nbttagfloat.data; + } else { + return false; + } + } + + public int hashCode() { + return super.hashCode() ^ Float.floatToIntBits(this.data); + } + + public long c() { + return (long) this.data; + } + + public int d() { + return MathHelper.d(this.data); + } + + public short e() { + return (short) (MathHelper.d(this.data) & '\uffff'); + } + + public byte f() { + return (byte) (MathHelper.d(this.data) & 255); + } + + public double g() { + return (double) this.data; + } + + public float h() { + return this.data; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagInt.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagInt.java new file mode 100644 index 0000000..9ff8991 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagInt.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagInt extends NBTBase.NBTNumber { + + private int data; + + NBTTagInt() {} + + public NBTTagInt(int i) { + this.data = i; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeInt(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(96L); + this.data = datainput.readInt(); + } + + public byte getTypeId() { + return (byte) 3; + } + + public String toString() { + return "" + this.data; + } + + public NBTBase clone() { + return new NBTTagInt(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagInt nbttagint = (NBTTagInt) object; + + return this.data == nbttagint.data; + } else { + return false; + } + } + + public int hashCode() { + return super.hashCode() ^ this.data; + } + + public long c() { + return (long) this.data; + } + + public int d() { + return this.data; + } + + public short e() { + return (short) (this.data & '\uffff'); + } + + public byte f() { + return (byte) (this.data & 255); + } + + public double g() { + return (double) this.data; + } + + public float h() { + return (float) this.data; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagIntArray.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagIntArray.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagIntArray.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTTagIntArray.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagList.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTTagList.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagLong.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagLong.java new file mode 100644 index 0000000..84b871d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagLong.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagLong extends NBTBase.NBTNumber { + + private long data; + + NBTTagLong() {} + + public NBTTagLong(long i) { + this.data = i; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeLong(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(128L); + this.data = datainput.readLong(); + } + + public byte getTypeId() { + return (byte) 4; + } + + public String toString() { + return "" + this.data + "L"; + } + + public NBTBase clone() { + return new NBTTagLong(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagLong nbttaglong = (NBTTagLong) object; + + return this.data == nbttaglong.data; + } else { + return false; + } + } + + public int hashCode() { + return super.hashCode() ^ (int) (this.data ^ this.data >>> 32); + } + + public long c() { + return this.data; + } + + public int d() { + return (int) (this.data & -1L); + } + + public short e() { + return (short) ((int) (this.data & 65535L)); + } + + public byte f() { + return (byte) ((int) (this.data & 255L)); + } + + public double g() { + return (double) this.data; + } + + public float h() { + return (float) this.data; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagShort.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagShort.java new file mode 100644 index 0000000..690371d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagShort.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public class NBTTagShort extends NBTBase.NBTNumber { + + private short data; + + public NBTTagShort() {} + + public NBTTagShort(short short0) { + this.data = short0; + } + + void write(DataOutput dataoutput) throws IOException { + dataoutput.writeShort(this.data); + } + + void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException { + nbtreadlimiter.a(80L); + this.data = datainput.readShort(); + } + + public byte getTypeId() { + return (byte) 2; + } + + public String toString() { + return "" + this.data + "s"; + } + + public NBTBase clone() { + return new NBTTagShort(this.data); + } + + public boolean equals(Object object) { + if (super.equals(object)) { + NBTTagShort nbttagshort = (NBTTagShort) object; + + return this.data == nbttagshort.data; + } else { + return false; + } + } + + public int hashCode() { + return super.hashCode() ^ this.data; + } + + public long c() { + return (long) this.data; + } + + public int d() { + return this.data; + } + + public short e() { + return this.data; + } + + public byte f() { + return (byte) (this.data & 255); + } + + public double g() { + return (double) this.data; + } + + public float h() { + return (float) this.data; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagString.java b/eSpigot-Server/src/main/java/net/minecraft/server/NBTTagString.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NBTTagString.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NBTTagString.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NPC.java b/eSpigot-Server/src/main/java/net/minecraft/server/NPC.java new file mode 100644 index 0000000..d5cac48 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NPC.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface NPC extends IAnimal {} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/eSpigot-Server/src/main/java/net/minecraft/server/NameReferencingFileConverter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NameReferencingFileConverter.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NameReferencingFileConverter.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Navigation.java b/eSpigot-Server/src/main/java/net/minecraft/server/Navigation.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Navigation.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Navigation.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NavigationAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/NavigationAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NavigationAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NavigationAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NavigationGuardian.java b/eSpigot-Server/src/main/java/net/minecraft/server/NavigationGuardian.java new file mode 100644 index 0000000..b7e8867 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NavigationGuardian.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +public class NavigationGuardian extends NavigationAbstract { + + public NavigationGuardian(EntityInsentient entityinsentient, World world) { + super(entityinsentient, world); + } + + protected Pathfinder a() { + return new Pathfinder(new PathfinderWater()); + } + + protected boolean b() { + return this.o(); + } + + protected Vec3D c() { + return new Vec3D(this.b.locX, this.b.locY + (double) this.b.length * 0.5D, this.b.locZ); + } + + protected void l() { + Vec3D vec3d = this.c(); + float f = this.b.width * this.b.width; + byte b0 = 6; + + if (vec3d.distanceSquared(this.d.a(this.b, this.d.e())) < (double) f) { + this.d.a(); + } + + for (int i = Math.min(this.d.e() + b0, this.d.d() - 1); i > this.d.e(); --i) { + Vec3D vec3d1 = this.d.a(this.b, i); + + if (vec3d1.distanceSquared(vec3d) <= 36.0D && this.a(vec3d, vec3d1, 0, 0, 0)) { + this.d.c(i); + break; + } + } + + this.a(vec3d); + } + + protected void d() { + super.d(); + } + + protected boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k) { + MovingObjectPosition movingobjectposition = this.c.rayTrace(vec3d, new Vec3D(vec3d1.a, vec3d1.b + (double) this.b.length * 0.5D, vec3d1.c), false, true, false); + + return movingobjectposition == null || movingobjectposition.type == MovingObjectPosition.EnumMovingObjectType.MISS; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NavigationSpider.java b/eSpigot-Server/src/main/java/net/minecraft/server/NavigationSpider.java new file mode 100644 index 0000000..c061f58 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NavigationSpider.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +public class NavigationSpider extends Navigation { + + private BlockPosition f; + + public NavigationSpider(EntityInsentient entityinsentient, World world) { + super(entityinsentient, world); + } + + public PathEntity a(BlockPosition blockposition) { + this.f = blockposition; + return super.a(blockposition); + } + + public PathEntity a(Entity entity) { + this.f = new BlockPosition(entity); + return super.a(entity); + } + + public boolean a(Entity entity, double d0) { + PathEntity pathentity = this.a(entity); + + if (pathentity != null) { + return this.a(pathentity, d0); + } else { + this.f = new BlockPosition(entity); + this.e = d0; + return true; + } + } + + public void k() { + if (!this.m()) { + super.k(); + } else { + if (this.f != null) { + double d0 = (double) (this.b.width * this.b.width); + + if (this.b.c(this.f) >= d0 && (this.b.locY <= (double) this.f.getY() || this.b.c(new BlockPosition(this.f.getX(), MathHelper.floor(this.b.locY), this.f.getZ())) >= d0)) { + this.b.getControllerMove().a((double) this.f.getX(), (double) this.f.getY(), (double) this.f.getZ(), this.e); + } else { + this.f = null; + } + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java similarity index 92% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java index e113ef0..468734c 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NetworkManager.java @@ -275,35 +275,33 @@ public class NetworkManager extends SimpleChannelInboundHandler { channelfuture.addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); } else { - this.channel.eventLoop().execute(flush ? () -> { - if (enumprotocol != enumprotocol1) { - this.a(enumprotocol); - } - try { - ChannelFuture channelfuture1 = this.channel.writeAndFlush(packet); // Tuinity - add flush parameter - if (agenericfuturelistener != null) - channelfuture1.addListeners(agenericfuturelistener); + Runnable command = new Runnable() { // PandaSpigot - optimize packets that are not flushed + public void run() { + if (enumprotocol != enumprotocol1) { + NetworkManager.this.a(enumprotocol); + } + try { + ChannelFuture channelfuture1 = (flush) ? NetworkManager.this.channel.writeAndFlush(packet) : NetworkManager.this.channel.write(packet); // PandaSpigot - add flush parameter + if (agenericfuturelistener != null) + channelfuture1.addListeners(agenericfuturelistener); - channelfuture1.addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); - } catch (Exception e) { - g.error("NetworkException: ", e); - close(new ChatMessage("disconnect.genericReason", "Internal Exception: " + e.getMessage())); + channelfuture1.addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); + } catch (Exception e) { + g.error("NetworkException: ", e); + close(new ChatMessage("disconnect.genericReason", "Internal Exception: " + e.getMessage())); + } } - } : () -> { - if (enumprotocol != enumprotocol1) { - this.a(enumprotocol); - } - try { - ChannelFuture channelfuture1 = this.channel.write(packet); // Tuinity - add flush parameter - if (agenericfuturelistener != null) - channelfuture1.addListeners(agenericfuturelistener); - - channelfuture1.addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); - } catch (Exception e) { - g.error("NetworkException: ", e); - close(new ChatMessage("disconnect.genericReason", "Internal Exception: " + e.getMessage())); - } - }); + // PandaSpigot start - optimize packets that are not flushed + }; + if (!flush) { + // create a LazyRunnable that when executed, calls command.run() + io.netty.util.concurrent.AbstractEventExecutor.LazyRunnable run = command::run; + this.channel.eventLoop().execute(run); + } else { + // if flushing, just schedule like normal + this.channel.eventLoop().execute(command); + } + // PandaSpigot end } } diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NextTickListEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/NextTickListEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NextTickListEntry.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NextTickListEntry.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/NibbleArray.java b/eSpigot-Server/src/main/java/net/minecraft/server/NibbleArray.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/NibbleArray.java rename to eSpigot-Server/src/main/java/net/minecraft/server/NibbleArray.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator.java b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator.java new file mode 100644 index 0000000..07827ed --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public abstract class NoiseGenerator { + + public NoiseGenerator() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3.java b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3.java new file mode 100644 index 0000000..706b003 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3.java @@ -0,0 +1,56 @@ +package net.minecraft.server; + +import java.util.Random; + +public class NoiseGenerator3 extends NoiseGenerator { + + private NoiseGenerator3Handler[] a; + private int b; + + public NoiseGenerator3(Random random, int i) { + this.b = i; + this.a = new NoiseGenerator3Handler[i]; + + for (int j = 0; j < i; ++j) { + this.a[j] = new NoiseGenerator3Handler(random); + } + + } + + public double a(double d0, double d1) { + double d2 = 0.0D; + double d3 = 1.0D; + + for (int i = 0; i < this.b; ++i) { + d2 += this.a[i].a(d0 * d3, d1 * d3) / d3; + d3 /= 2.0D; + } + + return d2; + } + + public double[] a(double[] adouble, double d0, double d1, int i, int j, double d2, double d3, double d4) { + return this.a(adouble, d0, d1, i, j, d2, d3, d4, 0.5D); + } + + public double[] a(double[] adouble, double d0, double d1, int i, int j, double d2, double d3, double d4, double d5) { + if (adouble != null && adouble.length >= i * j) { + for (int k = 0; k < adouble.length; ++k) { + adouble[k] = 0.0D; + } + } else { + adouble = new double[i * j]; + } + + double d6 = 1.0D; + double d7 = 1.0D; + + for (int l = 0; l < this.b; ++l) { + this.a[l].a(adouble, d0, d1, i, j, d2 * d7 * d6, d3 * d7 * d6, 0.55D / d6); + d7 *= d4; + d6 *= d5; + } + + return adouble; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3Handler.java b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3Handler.java new file mode 100644 index 0000000..d86673f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGenerator3Handler.java @@ -0,0 +1,188 @@ +package net.minecraft.server; + +import java.util.Random; + +public class NoiseGenerator3Handler { + + private static int[][] e = new int[][] { { 1, 1, 0}, { -1, 1, 0}, { 1, -1, 0}, { -1, -1, 0}, { 1, 0, 1}, { -1, 0, 1}, { 1, 0, -1}, { -1, 0, -1}, { 0, 1, 1}, { 0, -1, 1}, { 0, 1, -1}, { 0, -1, -1}}; + public static final double a = Math.sqrt(3.0D); + private int[] f; + public double b; + public double c; + public double d; + private static final double g = 0.5D * (NoiseGenerator3Handler.a - 1.0D); + private static final double h = (3.0D - NoiseGenerator3Handler.a) / 6.0D; + + public NoiseGenerator3Handler() { + this(new Random()); + } + + public NoiseGenerator3Handler(Random random) { + this.f = new int[512]; + this.b = random.nextDouble() * 256.0D; + this.c = random.nextDouble() * 256.0D; + this.d = random.nextDouble() * 256.0D; + + int i; + + for (i = 0; i < 256; this.f[i] = i++) { + ; + } + + for (i = 0; i < 256; ++i) { + int j = random.nextInt(256 - i) + i; + int k = this.f[i]; + + this.f[i] = this.f[j]; + this.f[j] = k; + this.f[i + 256] = this.f[i]; + } + + } + + private static int a(double d0) { + return d0 > 0.0D ? (int) d0 : (int) d0 - 1; + } + + private static double a(int[] aint, double d0, double d1) { + return (double) aint[0] * d0 + (double) aint[1] * d1; + } + + public double a(double d0, double d1) { + double d2 = 0.5D * (NoiseGenerator3Handler.a - 1.0D); + double d3 = (d0 + d1) * d2; + int i = a(d0 + d3); + int j = a(d1 + d3); + double d4 = (3.0D - NoiseGenerator3Handler.a) / 6.0D; + double d5 = (double) (i + j) * d4; + double d6 = (double) i - d5; + double d7 = (double) j - d5; + double d8 = d0 - d6; + double d9 = d1 - d7; + byte b0; + byte b1; + + if (d8 > d9) { + b0 = 1; + b1 = 0; + } else { + b0 = 0; + b1 = 1; + } + + double d10 = d8 - (double) b0 + d4; + double d11 = d9 - (double) b1 + d4; + double d12 = d8 - 1.0D + 2.0D * d4; + double d13 = d9 - 1.0D + 2.0D * d4; + int k = i & 255; + int l = j & 255; + int i1 = this.f[k + this.f[l]] % 12; + int j1 = this.f[k + b0 + this.f[l + b1]] % 12; + int k1 = this.f[k + 1 + this.f[l + 1]] % 12; + double d14 = 0.5D - d8 * d8 - d9 * d9; + double d15; + + if (d14 < 0.0D) { + d15 = 0.0D; + } else { + d14 *= d14; + d15 = d14 * d14 * a(NoiseGenerator3Handler.e[i1], d8, d9); + } + + double d16 = 0.5D - d10 * d10 - d11 * d11; + double d17; + + if (d16 < 0.0D) { + d17 = 0.0D; + } else { + d16 *= d16; + d17 = d16 * d16 * a(NoiseGenerator3Handler.e[j1], d10, d11); + } + + double d18 = 0.5D - d12 * d12 - d13 * d13; + double d19; + + if (d18 < 0.0D) { + d19 = 0.0D; + } else { + d18 *= d18; + d19 = d18 * d18 * a(NoiseGenerator3Handler.e[k1], d12, d13); + } + + return 70.0D * (d15 + d17 + d19); + } + + public void a(double[] adouble, double d0, double d1, int i, int j, double d2, double d3, double d4) { + int k = 0; + + for (int l = 0; l < j; ++l) { + double d5 = (d1 + (double) l) * d3 + this.c; + + for (int i1 = 0; i1 < i; ++i1) { + double d6 = (d0 + (double) i1) * d2 + this.b; + double d7 = (d6 + d5) * NoiseGenerator3Handler.g; + int j1 = a(d6 + d7); + int k1 = a(d5 + d7); + double d8 = (double) (j1 + k1) * NoiseGenerator3Handler.h; + double d9 = (double) j1 - d8; + double d10 = (double) k1 - d8; + double d11 = d6 - d9; + double d12 = d5 - d10; + byte b0; + byte b1; + + if (d11 > d12) { + b0 = 1; + b1 = 0; + } else { + b0 = 0; + b1 = 1; + } + + double d13 = d11 - (double) b0 + NoiseGenerator3Handler.h; + double d14 = d12 - (double) b1 + NoiseGenerator3Handler.h; + double d15 = d11 - 1.0D + 2.0D * NoiseGenerator3Handler.h; + double d16 = d12 - 1.0D + 2.0D * NoiseGenerator3Handler.h; + int l1 = j1 & 255; + int i2 = k1 & 255; + int j2 = this.f[l1 + this.f[i2]] % 12; + int k2 = this.f[l1 + b0 + this.f[i2 + b1]] % 12; + int l2 = this.f[l1 + 1 + this.f[i2 + 1]] % 12; + double d17 = 0.5D - d11 * d11 - d12 * d12; + double d18; + + if (d17 < 0.0D) { + d18 = 0.0D; + } else { + d17 *= d17; + d18 = d17 * d17 * a(NoiseGenerator3Handler.e[j2], d11, d12); + } + + double d19 = 0.5D - d13 * d13 - d14 * d14; + double d20; + + if (d19 < 0.0D) { + d20 = 0.0D; + } else { + d19 *= d19; + d20 = d19 * d19 * a(NoiseGenerator3Handler.e[k2], d13, d14); + } + + double d21 = 0.5D - d15 * d15 - d16 * d16; + double d22; + + if (d21 < 0.0D) { + d22 = 0.0D; + } else { + d21 *= d21; + d22 = d21 * d21 * a(NoiseGenerator3Handler.e[l2], d15, d16); + } + + int i3 = k++; + + adouble[i3] += 70.0D * (d18 + d20 + d22) * d4; + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorOctaves.java b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorOctaves.java new file mode 100644 index 0000000..3392bf8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorOctaves.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import java.util.Random; + +public class NoiseGeneratorOctaves extends NoiseGenerator { + + private NoiseGeneratorPerlin[] a; + private int b; + + public NoiseGeneratorOctaves(Random random, int i) { + this.b = i; + this.a = new NoiseGeneratorPerlin[i]; + + for (int j = 0; j < i; ++j) { + this.a[j] = new NoiseGeneratorPerlin(random); + } + + } + + public double[] a(double[] adouble, int i, int j, int k, int l, int i1, int j1, double d0, double d1, double d2) { + if (adouble == null) { + adouble = new double[l * i1 * j1]; + } else { + for (int k1 = 0; k1 < adouble.length; ++k1) { + adouble[k1] = 0.0D; + } + } + + double d3 = 1.0D; + + for (int l1 = 0; l1 < this.b; ++l1) { + double d4 = (double) i * d3 * d0; + double d5 = (double) j * d3 * d1; + double d6 = (double) k * d3 * d2; + long i2 = MathHelper.d(d4); + long j2 = MathHelper.d(d6); + + d4 -= (double) i2; + d6 -= (double) j2; + i2 %= 16777216L; + j2 %= 16777216L; + d4 += (double) i2; + d6 += (double) j2; + this.a[l1].a(adouble, d4, d5, d6, l, i1, j1, d0 * d3, d1 * d3, d2 * d3, d3); + d3 /= 2.0D; + } + + return adouble; + } + + public double[] a(double[] adouble, int i, int j, int k, int l, double d0, double d1, double d2) { + return this.a(adouble, i, 10, j, k, 1, l, d0, 1.0D, d1); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorPerlin.java b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorPerlin.java new file mode 100644 index 0000000..fcc8111 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/NoiseGeneratorPerlin.java @@ -0,0 +1,204 @@ +package net.minecraft.server; + +import java.util.Random; + +public class NoiseGeneratorPerlin extends NoiseGenerator { + + private int[] d; + public double a; + public double b; + public double c; + private static final double[] e = new double[] { 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D, 0.0D, 0.0D, 0.0D, 0.0D, 1.0D, 0.0D, -1.0D, 0.0D}; + private static final double[] f = new double[] { 1.0D, 1.0D, -1.0D, -1.0D, 0.0D, 0.0D, 0.0D, 0.0D, 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D}; + private static final double[] g = new double[] { 0.0D, 0.0D, 0.0D, 0.0D, 1.0D, 1.0D, -1.0D, -1.0D, 1.0D, 1.0D, -1.0D, -1.0D, 0.0D, 1.0D, 0.0D, -1.0D}; + private static final double[] h = new double[] { 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D, 1.0D, -1.0D, 0.0D, 0.0D, 0.0D, 0.0D, 1.0D, 0.0D, -1.0D, 0.0D}; + private static final double[] i = new double[] { 0.0D, 0.0D, 0.0D, 0.0D, 1.0D, 1.0D, -1.0D, -1.0D, 1.0D, 1.0D, -1.0D, -1.0D, 0.0D, 1.0D, 0.0D, -1.0D}; + + public NoiseGeneratorPerlin() { + this(new Random()); + } + + public NoiseGeneratorPerlin(Random random) { + this.d = new int[512]; + this.a = random.nextDouble() * 256.0D; + this.b = random.nextDouble() * 256.0D; + this.c = random.nextDouble() * 256.0D; + + int i; + + for (i = 0; i < 256; this.d[i] = i++) { + ; + } + + for (i = 0; i < 256; ++i) { + int j = random.nextInt(256 - i) + i; + int k = this.d[i]; + + this.d[i] = this.d[j]; + this.d[j] = k; + this.d[i + 256] = this.d[i]; + } + + } + + public final double b(double d0, double d1, double d2) { + return d1 + d0 * (d2 - d1); + } + + public final double a(int i, double d0, double d1) { + int j = i & 15; + + return NoiseGeneratorPerlin.h[j] * d0 + NoiseGeneratorPerlin.i[j] * d1; + } + + public final double a(int i, double d0, double d1, double d2) { + int j = i & 15; + + return NoiseGeneratorPerlin.e[j] * d0 + NoiseGeneratorPerlin.f[j] * d1 + NoiseGeneratorPerlin.g[j] * d2; + } + + public void a(double[] adouble, double d0, double d1, double d2, int i, int j, int k, double d3, double d4, double d5, double d6) { + int l; + int i1; + double d7; + double d8; + int j1; + double d9; + int k1; + int l1; + double d10; + int i2; + int j2; + + if (j == 1) { + boolean flag = false; + boolean flag1 = false; + boolean flag2 = false; + boolean flag3 = false; + double d11 = 0.0D; + double d12 = 0.0D; + + i2 = 0; + double d13 = 1.0D / d6; + + for (int k2 = 0; k2 < i; ++k2) { + d7 = d0 + (double) k2 * d3 + this.a; + int l2 = (int) d7; + + if (d7 < (double) l2) { + --l2; + } + + int i3 = l2 & 255; + + d7 -= (double) l2; + d8 = d7 * d7 * d7 * (d7 * (d7 * 6.0D - 15.0D) + 10.0D); + + for (j1 = 0; j1 < k; ++j1) { + d9 = d2 + (double) j1 * d5 + this.c; + k1 = (int) d9; + if (d9 < (double) k1) { + --k1; + } + + l1 = k1 & 255; + d9 -= (double) k1; + d10 = d9 * d9 * d9 * (d9 * (d9 * 6.0D - 15.0D) + 10.0D); + l = this.d[i3] + 0; + int j3 = this.d[l] + l1; + int k3 = this.d[i3 + 1] + 0; + + i1 = this.d[k3] + l1; + d11 = this.b(d8, this.a(this.d[j3], d7, d9), this.a(this.d[i1], d7 - 1.0D, 0.0D, d9)); + d12 = this.b(d8, this.a(this.d[j3 + 1], d7, 0.0D, d9 - 1.0D), this.a(this.d[i1 + 1], d7 - 1.0D, 0.0D, d9 - 1.0D)); + double d14 = this.b(d10, d11, d12); + + j2 = i2++; + adouble[j2] += d14 * d13; + } + } + + } else { + l = 0; + double d15 = 1.0D / d6; + + i1 = -1; + boolean flag4 = false; + boolean flag5 = false; + boolean flag6 = false; + boolean flag7 = false; + boolean flag8 = false; + boolean flag9 = false; + double d16 = 0.0D; + + d7 = 0.0D; + double d17 = 0.0D; + + d8 = 0.0D; + + for (j1 = 0; j1 < i; ++j1) { + d9 = d0 + (double) j1 * d3 + this.a; + k1 = (int) d9; + if (d9 < (double) k1) { + --k1; + } + + l1 = k1 & 255; + d9 -= (double) k1; + d10 = d9 * d9 * d9 * (d9 * (d9 * 6.0D - 15.0D) + 10.0D); + + for (int l3 = 0; l3 < k; ++l3) { + double d18 = d2 + (double) l3 * d5 + this.c; + int i4 = (int) d18; + + if (d18 < (double) i4) { + --i4; + } + + int j4 = i4 & 255; + + d18 -= (double) i4; + double d19 = d18 * d18 * d18 * (d18 * (d18 * 6.0D - 15.0D) + 10.0D); + + for (int k4 = 0; k4 < j; ++k4) { + double d20 = d1 + (double) k4 * d4 + this.b; + int l4 = (int) d20; + + if (d20 < (double) l4) { + --l4; + } + + int i5 = l4 & 255; + + d20 -= (double) l4; + double d21 = d20 * d20 * d20 * (d20 * (d20 * 6.0D - 15.0D) + 10.0D); + + if (k4 == 0 || i5 != i1) { + i1 = i5; + int j5 = this.d[l1] + i5; + int k5 = this.d[j5] + j4; + int l5 = this.d[j5 + 1] + j4; + int i6 = this.d[l1 + 1] + i5; + + i2 = this.d[i6] + j4; + int j6 = this.d[i6 + 1] + j4; + + d16 = this.b(d10, this.a(this.d[k5], d9, d20, d18), this.a(this.d[i2], d9 - 1.0D, d20, d18)); + d7 = this.b(d10, this.a(this.d[l5], d9, d20 - 1.0D, d18), this.a(this.d[j6], d9 - 1.0D, d20 - 1.0D, d18)); + d17 = this.b(d10, this.a(this.d[k5 + 1], d9, d20, d18 - 1.0D), this.a(this.d[i2 + 1], d9 - 1.0D, d20, d18 - 1.0D)); + d8 = this.b(d10, this.a(this.d[l5 + 1], d9, d20 - 1.0D, d18 - 1.0D), this.a(this.d[j6 + 1], d9 - 1.0D, d20 - 1.0D, d18 - 1.0D)); + } + + double d22 = this.b(d21, d16, d7); + double d23 = this.b(d21, d17, d8); + double d24 = this.b(d19, d22, d23); + + j2 = l++; + adouble[j2] += d24 * d15; + } + } + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/OldChunkLoader.java b/eSpigot-Server/src/main/java/net/minecraft/server/OldChunkLoader.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/OldChunkLoader.java rename to eSpigot-Server/src/main/java/net/minecraft/server/OldChunkLoader.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/OldNibbleArray.java b/eSpigot-Server/src/main/java/net/minecraft/server/OldNibbleArray.java new file mode 100644 index 0000000..ed090ae --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/OldNibbleArray.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class OldNibbleArray { + + public final byte[] a; + private final int b; + private final int c; + + public OldNibbleArray(byte[] abyte, int i) { + this.a = abyte; + this.b = i; + this.c = i + 4; + } + + public int a(int i, int j, int k) { + int l = i << this.c | k << this.b | j; + int i1 = l >> 1; + int j1 = l & 1; + + return j1 == 0 ? this.a[i1] & 15 : this.a[i1] >> 4 & 15; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/OpList.java b/eSpigot-Server/src/main/java/net/minecraft/server/OpList.java new file mode 100644 index 0000000..c33b3f6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/OpList.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import java.io.File; +import java.util.Iterator; + +public class OpList extends JsonList { + + public OpList(File file) { + super(file); + } + + protected JsonListEntry a(JsonObject jsonobject) { + return new OpListEntry(jsonobject); + } + + public String[] getEntries() { + String[] astring = new String[this.e().size()]; + int i = 0; + + OpListEntry oplistentry; + + for (Iterator iterator = this.e().values().iterator(); iterator.hasNext(); astring[i++] = ((GameProfile) oplistentry.getKey()).getName()) { + oplistentry = (OpListEntry) iterator.next(); + } + + return astring; + } + + public boolean b(GameProfile gameprofile) { + OpListEntry oplistentry = (OpListEntry) this.get(gameprofile); + + return oplistentry != null ? oplistentry.b() : false; + } + + protected String c(GameProfile gameprofile) { + return gameprofile.getId().toString(); + } + + public GameProfile a(String s) { + Iterator iterator = this.e().values().iterator(); + + OpListEntry oplistentry; + + do { + if (!iterator.hasNext()) { + return null; + } + + oplistentry = (OpListEntry) iterator.next(); + } while (!s.equalsIgnoreCase(((GameProfile) oplistentry.getKey()).getName())); + + return (GameProfile) oplistentry.getKey(); + } + + protected String a(GameProfile object) { + return this.c(object); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/OpListEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/OpListEntry.java new file mode 100644 index 0000000..6fb9fef --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/OpListEntry.java @@ -0,0 +1,59 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import java.util.UUID; + +public class OpListEntry extends JsonListEntry { + + private final int a; + private final boolean b; + + public OpListEntry(GameProfile gameprofile, int i, boolean flag) { + super(gameprofile); + this.a = i; + this.b = flag; + } + + public OpListEntry(JsonObject jsonobject) { + super(b(jsonobject), jsonobject); + this.a = jsonobject.has("level") ? jsonobject.get("level").getAsInt() : 0; + this.b = jsonobject.has("bypassesPlayerLimit") && jsonobject.get("bypassesPlayerLimit").getAsBoolean(); + } + + public int a() { + return this.a; + } + + public boolean b() { + return this.b; + } + + protected void a(JsonObject jsonobject) { + if (this.getKey() != null) { + jsonobject.addProperty("uuid", ((GameProfile) this.getKey()).getId() == null ? "" : ((GameProfile) this.getKey()).getId().toString()); + jsonobject.addProperty("name", ((GameProfile) this.getKey()).getName()); + super.a(jsonobject); + jsonobject.addProperty("level", Integer.valueOf(this.a)); + jsonobject.addProperty("bypassesPlayerLimit", Boolean.valueOf(this.b)); + } + } + + private static GameProfile b(JsonObject jsonobject) { + if (jsonobject.has("uuid") && jsonobject.has("name")) { + String s = jsonobject.get("uuid").getAsString(); + + UUID uuid; + + try { + uuid = UUID.fromString(s); + } catch (Throwable throwable) { + return null; + } + + return new GameProfile(uuid, jsonobject.get("name").getAsString()); + } else { + return null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Packet.java b/eSpigot-Server/src/main/java/net/minecraft/server/Packet.java new file mode 100644 index 0000000..d60ec06 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Packet.java @@ -0,0 +1,45 @@ +package net.minecraft.server; + +import java.io.IOException; + +public interface Packet { + + void a(PacketDataSerializer packetdataserializer) throws IOException; + + void b(PacketDataSerializer packetdataserializer) throws IOException; + + void a(T t0); + + // PandaSpigot start + /** + * @param player {@code null} if not at {@link EnumProtocol#PLAY} yet. + */ + default void onPacketDispatch(EntityPlayer player) {} + + /** + * @param player {@code null} if not at {@link EnumProtocol#PLAY} yet. + * @param future Can be {@code null} if packet was cancelled. + */ + default void onPacketDispatchFinish(EntityPlayer player, io.netty.channel.ChannelFuture future) {} + + /** + * @return Whether {@link #onPacketDispatchFinish(EntityPlayer, io.netty.channel.ChannelFuture)} should + * be called after this packet has been dispatched. + */ + default boolean hasFinishListener() { return false; } + + /** + * Checks whether this packet is ready to be sent. + *

+ * If this returns {@code false}, the packet will be added to the queue, and checked every tick until it is ready. + * + * @return Whether this packet is ready. + */ + default boolean isReady() { return true; } + + /** + * @return A list of extra packets to be sent after this packet. + */ + default java.util.List> getExtraPackets() { return null; } + // PandaSpigot end +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketCompressor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketCompressor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketCompressor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketCompressor.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java similarity index 95% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java index 137d3e3..ba8a2b1 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDataSerializer.java @@ -1,5 +1,6 @@ package net.minecraft.server; +import com.elevatemc.spigot.network.VarIntUtil; import com.google.common.base.Charsets; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; @@ -106,16 +107,7 @@ public class PacketDataSerializer extends ByteBuf { } public int e() { - byte b0; - int i = 0; - int j = 0; - do { - b0 = readByte(); - i |= (b0 & Byte.MAX_VALUE) << j++ * 7; - if (j > 5) - throw new RuntimeException("VarInt too big"); - } while ((b0 & 0x80) == 128); - return i; + return VarIntUtil.readVarInt(this.a); // PandaSpigot - Optimize VarInt reading } public long f() { @@ -141,12 +133,7 @@ public class PacketDataSerializer extends ByteBuf { } public void b(int i) { - while ((i & -128) != 0) { - this.writeByte(i & 127 | 128); - i >>>= 7; - } - - this.writeByte(i); + VarIntUtil.writeVarInt(this.a, i); // PandaSpigot - Optimize VarInt writing } public void b(long i) { @@ -238,30 +225,17 @@ public class PacketDataSerializer extends ByteBuf { return s; } - public String readCappedString(int maxLength) { - int toRead = this.e(); - if (toRead > maxLength * 4) - throw new DecoderException("The received encoded string buffer length is longer than maximum allowed (" + toRead + " > " + (maxLength * 4) + ")"); - if (toRead < 0) - throw new DecoderException("The received encoded string buffer length is less than zero! Weird string!"); - int len = Math.min(toRead, maxLength); - String s = toString(readerIndex(), len, StandardCharsets.UTF_8); - readerIndex(readerIndex() + len); - if (s.length() > 0) - throw new DecoderException("The received string length is longer than maximum allowed (" + toRead + " > " + maxLength + ")"); - return s; - } - public PacketDataSerializer a(String s) { - byte[] abyte = s.getBytes(Charsets.UTF_8); - - if (abyte.length > 32767) { + // PandaSpigot start - Optimize string writing + int utf8Bytes = io.netty.buffer.ByteBufUtil.utf8Bytes(s); + if (utf8Bytes > 32767) { throw new EncoderException("String too big (was " + s.length() + " bytes encoded, max " + 32767 + ")"); } else { - this.b(abyte.length); - this.writeBytes(abyte); + this.b(utf8Bytes); + this.writeCharSequence(s, Charsets.UTF_8); return this; } + // PandaSpigot end } @Override diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketDecoder.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDecoder.java new file mode 100644 index 0000000..bbebe3a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDecoder.java @@ -0,0 +1,45 @@ +package net.minecraft.server; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; +import java.io.IOException; +import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; + +public class PacketDecoder extends ByteToMessageDecoder { + + private static final Logger a = LogManager.getLogger(); + private static final Marker b = MarkerManager.getMarker("PACKET_RECEIVED", NetworkManager.b); + private final EnumProtocolDirection c; + + public PacketDecoder(EnumProtocolDirection enumprotocoldirection) { + this.c = enumprotocoldirection; + } + + protected void decode(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf, List list) throws Exception { + if (bytebuf.readableBytes() != 0) { + PacketDataSerializer packetdataserializer = new PacketDataSerializer(bytebuf); + int i = packetdataserializer.e(); + Packet packet = ((EnumProtocol) channelhandlercontext.channel().attr(NetworkManager.c).get()).a(this.c, i); + + if (packet == null) { + throw new IOException("Bad packet id " + i); + } else { + packet.a(packetdataserializer); + if (packetdataserializer.readableBytes() > 0) { + throw new IOException("Packet " + ((EnumProtocol) channelhandlercontext.channel().attr(NetworkManager.c).get()).a() + "/" + i + " (" + packet.getClass().getSimpleName() + ") was larger than I expected, found " + packetdataserializer.readableBytes() + " bytes extra whilst reading packet " + i); + } else { + list.add(packet); + if (PacketDecoder.a.isDebugEnabled()) { + PacketDecoder.a.debug(PacketDecoder.b, " IN: [{}:{}] {}", new Object[] { channelhandlercontext.channel().attr(NetworkManager.c).get(), Integer.valueOf(i), packet.getClass().getName()}); + } + + } + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDecompressor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDecompressor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDecompressor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketDecompressor.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDecrypter.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketDecrypter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketDecrypter.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketDecrypter.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncoder.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncoder.java new file mode 100644 index 0000000..58214e1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncoder.java @@ -0,0 +1,52 @@ +package net.minecraft.server; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; +import java.io.IOException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; + +public class PacketEncoder extends MessageToByteEncoder { + + private static final Logger a = LogManager.getLogger(); + private static final Marker b = MarkerManager.getMarker("PACKET_SENT", NetworkManager.b); + private final EnumProtocolDirection c; + + public PacketEncoder(EnumProtocolDirection enumprotocoldirection) { + this.c = enumprotocoldirection; + } + + protected void a(ChannelHandlerContext channelhandlercontext, Packet packet, ByteBuf bytebuf) throws Exception { + Integer integer = ((EnumProtocol) channelhandlercontext.channel().attr(NetworkManager.c).get()).a(this.c, packet); + + if (PacketEncoder.a.isDebugEnabled()) { + PacketEncoder.a.debug(PacketEncoder.b, "OUT: [{}:{}] {}", new Object[] { channelhandlercontext.channel().attr(NetworkManager.c).get(), integer, packet.getClass().getName()}); + } + + if (integer == null) { + throw new IOException("Can\'t serialize unregistered packet"); + } else { + PacketDataSerializer packetdataserializer = new PacketDataSerializer(bytebuf); + + packetdataserializer.b(integer.intValue()); + + try { + if (packet instanceof PacketPlayOutNamedEntitySpawn) { + packet = packet; + } + + packet.b(packetdataserializer); + } catch (Throwable throwable) { + PacketEncoder.a.error(throwable); + } + + } + } + + protected void encode(ChannelHandlerContext channelhandlercontext, Packet object, ByteBuf bytebuf) throws Exception { + this.a(channelhandlercontext, object, bytebuf); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketEncrypter.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncrypter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketEncrypter.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketEncrypter.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncryptionHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncryptionHandler.java new file mode 100644 index 0000000..a919da0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketEncryptionHandler.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import javax.crypto.Cipher; +import javax.crypto.ShortBufferException; + +public class PacketEncryptionHandler { + + private final Cipher a; + private byte[] b = new byte[0]; + private byte[] c = new byte[0]; + + protected PacketEncryptionHandler(Cipher cipher) { + this.a = cipher; + } + + private byte[] a(ByteBuf bytebuf) { + int i = bytebuf.readableBytes(); + + if (this.b.length < i) { + this.b = new byte[i]; + } + + bytebuf.readBytes(this.b, 0, i); + return this.b; + } + + protected ByteBuf a(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf) throws ShortBufferException { + int i = bytebuf.readableBytes(); + byte[] abyte = this.a(bytebuf); + ByteBuf bytebuf1 = channelhandlercontext.alloc().heapBuffer(this.a.getOutputSize(i)); + + bytebuf1.writerIndex(this.a.update(abyte, 0, i, bytebuf1.array(), bytebuf1.arrayOffset())); + return bytebuf1; + } + + protected void a(ByteBuf bytebuf, ByteBuf bytebuf1) throws ShortBufferException { + int i = bytebuf.readableBytes(); + byte[] abyte = this.a(bytebuf); + int j = this.a.getOutputSize(i); + + if (this.c.length < j) { + this.c = new byte[j]; + } + + bytebuf1.writeBytes(this.c, 0, this.a.update(abyte, 0, i, this.c)); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInListener.java new file mode 100644 index 0000000..e91532b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInListener.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface PacketHandshakingInListener extends PacketListener { + + void a(PacketHandshakingInSetProtocol packethandshakinginsetprotocol); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListener.java new file mode 100644 index 0000000..b0014c6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListener.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public interface PacketListener { + + void a(IChatBaseComponent ichatbasecomponent); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayIn.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayIn.java new file mode 100644 index 0000000..5346a35 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayIn.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +public interface PacketListenerPlayIn extends PacketListener { + + void a(PacketPlayInArmAnimation packetplayinarmanimation); + + void a(PacketPlayInChat packetplayinchat); + + void a(PacketPlayInTabComplete packetplayintabcomplete); + + void a(PacketPlayInClientCommand packetplayinclientcommand); + + void a(PacketPlayInSettings packetplayinsettings); + + void a(PacketPlayInTransaction packetplayintransaction); + + void a(PacketPlayInEnchantItem packetplayinenchantitem); + + void a(PacketPlayInWindowClick packetplayinwindowclick); + + void a(PacketPlayInCloseWindow packetplayinclosewindow); + + void a(PacketPlayInCustomPayload packetplayincustompayload); + + void a(PacketPlayInUseEntity packetplayinuseentity); + + void a(PacketPlayInKeepAlive packetplayinkeepalive); + + void a(PacketPlayInFlying packetplayinflying); + + void a(PacketPlayInAbilities packetplayinabilities); + + void a(PacketPlayInBlockDig packetplayinblockdig); + + void a(PacketPlayInEntityAction packetplayinentityaction); + + void a(PacketPlayInSteerVehicle packetplayinsteervehicle); + + void a(PacketPlayInHeldItemSlot packetplayinhelditemslot); + + void a(PacketPlayInSetCreativeSlot packetplayinsetcreativeslot); + + void a(PacketPlayInUpdateSign packetplayinupdatesign); + + void a(PacketPlayInBlockPlace packetplayinblockplace); + + void a(PacketPlayInSpectate packetplayinspectate); + + void a(PacketPlayInResourcePackStatus packetplayinresourcepackstatus); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayOut.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayOut.java new file mode 100644 index 0000000..3d15eed --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketListenerPlayOut.java @@ -0,0 +1,146 @@ +package net.minecraft.server; + +public interface PacketListenerPlayOut extends PacketListener { + + void a(PacketPlayOutSpawnEntity packetplayoutspawnentity); + + void a(PacketPlayOutSpawnEntityExperienceOrb packetplayoutspawnentityexperienceorb); + + void a(PacketPlayOutSpawnEntityWeather packetplayoutspawnentityweather); + + void a(PacketPlayOutSpawnEntityLiving packetplayoutspawnentityliving); + + void a(PacketPlayOutScoreboardObjective packetplayoutscoreboardobjective); + + void a(PacketPlayOutSpawnEntityPainting packetplayoutspawnentitypainting); + + void a(PacketPlayOutNamedEntitySpawn packetplayoutnamedentityspawn); + + void a(PacketPlayOutAnimation packetplayoutanimation); + + void a(PacketPlayOutStatistic packetplayoutstatistic); + + void a(PacketPlayOutBlockBreakAnimation packetplayoutblockbreakanimation); + + void a(PacketPlayOutOpenSignEditor packetplayoutopensigneditor); + + void a(PacketPlayOutTileEntityData packetplayouttileentitydata); + + void a(PacketPlayOutBlockAction packetplayoutblockaction); + + void a(PacketPlayOutBlockChange packetplayoutblockchange); + + void a(PacketPlayOutChat packetplayoutchat); + + void a(PacketPlayOutTabComplete packetplayouttabcomplete); + + void a(PacketPlayOutMultiBlockChange packetplayoutmultiblockchange); + + void a(PacketPlayOutMap packetplayoutmap); + + void a(PacketPlayOutTransaction packetplayouttransaction); + + void a(PacketPlayOutCloseWindow packetplayoutclosewindow); + + void a(PacketPlayOutWindowItems packetplayoutwindowitems); + + void a(PacketPlayOutOpenWindow packetplayoutopenwindow); + + void a(PacketPlayOutWindowData packetplayoutwindowdata); + + void a(PacketPlayOutSetSlot packetplayoutsetslot); + + void a(PacketPlayOutCustomPayload packetplayoutcustompayload); + + void a(PacketPlayOutKickDisconnect packetplayoutkickdisconnect); + + void a(PacketPlayOutBed packetplayoutbed); + + void a(PacketPlayOutEntityStatus packetplayoutentitystatus); + + void a(PacketPlayOutAttachEntity packetplayoutattachentity); + + void a(PacketPlayOutExplosion packetplayoutexplosion); + + void a(PacketPlayOutGameStateChange packetplayoutgamestatechange); + + void a(PacketPlayOutKeepAlive packetplayoutkeepalive); + + void a(PacketPlayOutMapChunk packetplayoutmapchunk); + + void a(PacketPlayOutMapChunkBulk packetplayoutmapchunkbulk); + + void a(PacketPlayOutWorldEvent packetplayoutworldevent); + + void a(PacketPlayOutLogin packetplayoutlogin); + + void a(PacketPlayOutEntity packetplayoutentity); + + void a(PacketPlayOutPosition packetplayoutposition); + + void a(PacketPlayOutWorldParticles packetplayoutworldparticles); + + void a(PacketPlayOutAbilities packetplayoutabilities); + + void a(PacketPlayOutPlayerInfo packetplayoutplayerinfo); + + void a(PacketPlayOutEntityDestroy packetplayoutentitydestroy); + + void a(PacketPlayOutRemoveEntityEffect packetplayoutremoveentityeffect); + + void a(PacketPlayOutRespawn packetplayoutrespawn); + + void a(PacketPlayOutEntityHeadRotation packetplayoutentityheadrotation); + + void a(PacketPlayOutHeldItemSlot packetplayouthelditemslot); + + void a(PacketPlayOutScoreboardDisplayObjective packetplayoutscoreboarddisplayobjective); + + void a(PacketPlayOutEntityMetadata packetplayoutentitymetadata); + + void a(PacketPlayOutEntityVelocity packetplayoutentityvelocity); + + void a(PacketPlayOutEntityEquipment packetplayoutentityequipment); + + void a(PacketPlayOutExperience packetplayoutexperience); + + void a(PacketPlayOutUpdateHealth packetplayoutupdatehealth); + + void a(PacketPlayOutScoreboardTeam packetplayoutscoreboardteam); + + void a(PacketPlayOutScoreboardScore packetplayoutscoreboardscore); + + void a(PacketPlayOutSpawnPosition packetplayoutspawnposition); + + void a(PacketPlayOutUpdateTime packetplayoutupdatetime); + + void a(PacketPlayOutUpdateSign packetplayoutupdatesign); + + void a(PacketPlayOutNamedSoundEffect packetplayoutnamedsoundeffect); + + void a(PacketPlayOutCollect packetplayoutcollect); + + void a(PacketPlayOutEntityTeleport packetplayoutentityteleport); + + void a(PacketPlayOutUpdateAttributes packetplayoutupdateattributes); + + void a(PacketPlayOutEntityEffect packetplayoutentityeffect); + + void a(PacketPlayOutCombatEvent packetplayoutcombatevent); + + void a(PacketPlayOutServerDifficulty packetplayoutserverdifficulty); + + void a(PacketPlayOutCamera packetplayoutcamera); + + void a(PacketPlayOutWorldBorder packetplayoutworldborder); + + void a(PacketPlayOutTitle packetplayouttitle); + + void a(PacketPlayOutSetCompression packetplayoutsetcompression); + + void a(PacketPlayOutPlayerListHeaderFooter packetplayoutplayerlistheaderfooter); + + void a(PacketPlayOutResourcePackSend packetplayoutresourcepacksend); + + void a(PacketPlayOutUpdateEntityNBT packetplayoutupdateentitynbt); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInListener.java new file mode 100644 index 0000000..96689a0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInListener.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface PacketLoginInListener extends PacketListener { + + void a(PacketLoginInStart packetlogininstart); + + void a(PacketLoginInEncryptionBegin packetlogininencryptionbegin); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInStart.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInStart.java new file mode 100644 index 0000000..9236760 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginInStart.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.io.IOException; +import java.util.UUID; + +public class PacketLoginInStart implements Packet { + + private GameProfile a; + + public PacketLoginInStart() {} + + public PacketLoginInStart(GameProfile gameprofile) { + this.a = gameprofile; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = new GameProfile((UUID) null, packetdataserializer.c(16)); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a.getName()); + } + + public void a(PacketLoginInListener packetlogininlistener) { + packetlogininlistener.a(this); + } + + public GameProfile a() { + return this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutDisconnect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutDisconnect.java new file mode 100644 index 0000000..0589412 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutDisconnect.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketLoginOutDisconnect implements Packet { + + private IChatBaseComponent a; + + public PacketLoginOutDisconnect() {} + + public PacketLoginOutDisconnect(IChatBaseComponent ichatbasecomponent) { + this.a = ichatbasecomponent; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.d(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + } + + public void a(PacketLoginOutListener packetloginoutlistener) { + packetloginoutlistener.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutEncryptionBegin.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutEncryptionBegin.java new file mode 100644 index 0000000..6867c1f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutEncryptionBegin.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.security.PublicKey; + +public class PacketLoginOutEncryptionBegin implements Packet { + + private String a; + private PublicKey b; + private byte[] c; + + public PacketLoginOutEncryptionBegin() {} + + public PacketLoginOutEncryptionBegin(String s, PublicKey publickey, byte[] abyte) { + this.a = s; + this.b = publickey; + this.c = abyte; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(20); + this.b = MinecraftEncryption.a(packetdataserializer.a()); + this.c = packetdataserializer.a(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.a(this.b.getEncoded()); + packetdataserializer.a(this.c); + } + + public void a(PacketLoginOutListener packetloginoutlistener) { + packetloginoutlistener.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutListener.java new file mode 100644 index 0000000..2067b05 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutListener.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public interface PacketLoginOutListener extends PacketListener { + + void a(PacketLoginOutEncryptionBegin packetloginoutencryptionbegin); + + void a(PacketLoginOutSuccess packetloginoutsuccess); + + void a(PacketLoginOutDisconnect packetloginoutdisconnect); + + void a(PacketLoginOutSetCompression packetloginoutsetcompression); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSetCompression.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSetCompression.java new file mode 100644 index 0000000..cde95f4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSetCompression.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketLoginOutSetCompression implements Packet { + + private int a; + + public PacketLoginOutSetCompression() {} + + public PacketLoginOutSetCompression(int i) { + this.a = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } + + public void a(PacketLoginOutListener packetloginoutlistener) { + packetloginoutlistener.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSuccess.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSuccess.java new file mode 100644 index 0000000..c811dd6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketLoginOutSuccess.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +import com.mojang.authlib.GameProfile; +import java.io.IOException; +import java.util.UUID; + +public class PacketLoginOutSuccess implements Packet { + + private GameProfile a; + + public PacketLoginOutSuccess() {} + + public PacketLoginOutSuccess(GameProfile gameprofile) { + this.a = gameprofile; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + String s = packetdataserializer.c(36); + String s1 = packetdataserializer.c(16); + UUID uuid = UUID.fromString(s); + + this.a = new GameProfile(uuid, s1); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + UUID uuid = this.a.getId(); + + packetdataserializer.a(uuid == null ? "" : uuid.toString()); + packetdataserializer.a(this.a.getName()); + } + + public void a(PacketLoginOutListener packetloginoutlistener) { + packetloginoutlistener.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInAbilities.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInAbilities.java new file mode 100644 index 0000000..aac5a0c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInAbilities.java @@ -0,0 +1,103 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInAbilities implements Packet { + + private boolean a; + private boolean b; + private boolean c; + private boolean d; + private float e; + private float f; + + public PacketPlayInAbilities() {} + + public PacketPlayInAbilities(PlayerAbilities playerabilities) { + this.a(playerabilities.isInvulnerable); + this.b(playerabilities.isFlying); + this.c(playerabilities.canFly); + this.d(playerabilities.canInstantlyBuild); + this.a(playerabilities.a()); + this.b(playerabilities.b()); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + byte b0 = packetdataserializer.readByte(); + + this.a((b0 & 1) > 0); + this.b((b0 & 2) > 0); + this.c((b0 & 4) > 0); + this.d((b0 & 8) > 0); + this.a(packetdataserializer.readFloat()); + this.b(packetdataserializer.readFloat()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + byte b0 = 0; + + if (this.a()) { + b0 = (byte) (b0 | 1); + } + + if (this.isFlying()) { + b0 = (byte) (b0 | 2); + } + + if (this.c()) { + b0 = (byte) (b0 | 4); + } + + if (this.d()) { + b0 = (byte) (b0 | 8); + } + + packetdataserializer.writeByte(b0); + packetdataserializer.writeFloat(this.e); + packetdataserializer.writeFloat(this.f); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public boolean a() { + return this.a; + } + + public void a(boolean flag) { + this.a = flag; + } + + public boolean isFlying() { + return this.b; + } + + public void b(boolean flag) { + this.b = flag; + } + + public boolean c() { + return this.c; + } + + public void c(boolean flag) { + this.c = flag; + } + + public boolean d() { + return this.d; + } + + public void d(boolean flag) { + this.d = flag; + } + + public void a(float f) { + this.e = f; + } + + public void b(float f) { + this.f = f; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInArmAnimation.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInArmAnimation.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInArmAnimation.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInArmAnimation.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockDig.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockDig.java new file mode 100644 index 0000000..5b5e7a7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockDig.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInBlockDig implements Packet { + + private BlockPosition a; + private EnumDirection b; + private PacketPlayInBlockDig.EnumPlayerDigType c; + + public PacketPlayInBlockDig() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.c = (PacketPlayInBlockDig.EnumPlayerDigType) packetdataserializer.a(PacketPlayInBlockDig.EnumPlayerDigType.class); + this.a = packetdataserializer.c(); + this.b = EnumDirection.fromType1(packetdataserializer.readUnsignedByte()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a((Enum) this.c); + packetdataserializer.a(this.a); + packetdataserializer.writeByte(this.b.a()); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public BlockPosition a() { + return this.a; + } + + public EnumDirection b() { + return this.b; + } + + public PacketPlayInBlockDig.EnumPlayerDigType c() { + return this.c; + } + + public static enum EnumPlayerDigType { + + START_DESTROY_BLOCK, ABORT_DESTROY_BLOCK, STOP_DESTROY_BLOCK, DROP_ALL_ITEMS, DROP_ITEM, RELEASE_USE_ITEM; + + private EnumPlayerDigType() {} + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockPlace.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockPlace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockPlace.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInBlockPlace.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java similarity index 89% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java index b8ca315..884ac15 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInChat.java @@ -19,7 +19,7 @@ public class PacketPlayInChat implements Packet { } public void a(PacketDataSerializer packetdataserializer) throws IOException { - this.a = PaperSpigotConfig.kickChatMessageLength ? packetdataserializer.c(100) : packetdataserializer.readCappedString(100); // KigPaper + this.a = packetdataserializer.c(100); // KigPaper } public void b(PacketDataSerializer packetdataserializer) throws IOException { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInClientCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInClientCommand.java new file mode 100644 index 0000000..eea677c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInClientCommand.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInClientCommand implements Packet { + + private PacketPlayInClientCommand.EnumClientCommand a; + + public PacketPlayInClientCommand() {} + + public PacketPlayInClientCommand(PacketPlayInClientCommand.EnumClientCommand packetplayinclientcommand_enumclientcommand) { + this.a = packetplayinclientcommand_enumclientcommand; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = (PacketPlayInClientCommand.EnumClientCommand) packetdataserializer.a(PacketPlayInClientCommand.EnumClientCommand.class); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a((Enum) this.a); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public PacketPlayInClientCommand.EnumClientCommand a() { + return this.a; + } + + public static enum EnumClientCommand { + + PERFORM_RESPAWN, REQUEST_STATS, OPEN_INVENTORY_ACHIEVEMENT; + + private EnumClientCommand() {} + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCloseWindow.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCustomPayload.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCustomPayload.java new file mode 100644 index 0000000..d5d932c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInCustomPayload.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +import io.netty.buffer.ByteBuf; +import java.io.IOException; + +public class PacketPlayInCustomPayload implements Packet { + + private String a; + private PacketDataSerializer b; + + public PacketPlayInCustomPayload() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(20); + int i = packetdataserializer.readableBytes(); + + if (i >= 0 && i <= 32767) { + this.b = new PacketDataSerializer(packetdataserializer.readBytes(i)); + } else { + throw new IOException("Payload may not be larger than 32767 bytes"); + } + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeBytes((ByteBuf) this.b); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public String a() { + return this.a; + } + + public PacketDataSerializer b() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEnchantItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEnchantItem.java new file mode 100644 index 0000000..4aa39e5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEnchantItem.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInEnchantItem implements Packet { + + private int a; + private int b; + + public PacketPlayInEnchantItem() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + this.b = packetdataserializer.readByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeByte(this.b); + } + + public int a() { + return this.a; + } + + public int b() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEntityAction.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEntityAction.java new file mode 100644 index 0000000..d98ef82 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInEntityAction.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInEntityAction implements Packet { + + private int a; + private PacketPlayInEntityAction.EnumPlayerAction animation; + private int c; + + public PacketPlayInEntityAction() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.animation = (PacketPlayInEntityAction.EnumPlayerAction) packetdataserializer.a(PacketPlayInEntityAction.EnumPlayerAction.class); + this.c = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a((Enum) this.animation); + packetdataserializer.b(this.c); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public PacketPlayInEntityAction.EnumPlayerAction b() { + return this.animation; + } + + public int c() { + return this.c; + } + + public static enum EnumPlayerAction { + + START_SNEAKING, STOP_SNEAKING, STOP_SLEEPING, START_SPRINTING, STOP_SPRINTING, RIDING_JUMP, OPEN_INVENTORY; + + private EnumPlayerAction() {} + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInFlying.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInFlying.java new file mode 100644 index 0000000..91b7ded --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInFlying.java @@ -0,0 +1,131 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInFlying implements Packet { + + protected double x; + protected double y; + protected double z; + protected float yaw; + protected float pitch; + protected boolean f; + protected boolean hasPos; + protected boolean hasLook; + + public PacketPlayInFlying() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.f = packetdataserializer.readUnsignedByte() != 0; + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.f ? 1 : 0); + } + + public double a() { + return this.x; + } + + public double b() { + return this.y; + } + + public double c() { + return this.z; + } + + public float d() { + return this.yaw; + } + + public float e() { + return this.pitch; + } + + public boolean f() { + return this.f; + } + + public boolean g() { + return this.hasPos; + } + + public boolean h() { + return this.hasLook; + } + + public void a(boolean flag) { + this.hasPos = flag; + } + + public static class PacketPlayInLook extends PacketPlayInFlying { + + public PacketPlayInLook() { + this.hasLook = true; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.yaw = packetdataserializer.readFloat(); + this.pitch = packetdataserializer.readFloat(); + super.a(packetdataserializer); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeFloat(this.yaw); + packetdataserializer.writeFloat(this.pitch); + super.b(packetdataserializer); + } + } + + public static class PacketPlayInPosition extends PacketPlayInFlying { + + public PacketPlayInPosition() { + this.hasPos = true; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.x = packetdataserializer.readDouble(); + this.y = packetdataserializer.readDouble(); + this.z = packetdataserializer.readDouble(); + super.a(packetdataserializer); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeDouble(this.x); + packetdataserializer.writeDouble(this.y); + packetdataserializer.writeDouble(this.z); + super.b(packetdataserializer); + } + } + + public static class PacketPlayInPositionLook extends PacketPlayInFlying { + + public PacketPlayInPositionLook() { + this.hasPos = true; + this.hasLook = true; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.x = packetdataserializer.readDouble(); + this.y = packetdataserializer.readDouble(); + this.z = packetdataserializer.readDouble(); + this.yaw = packetdataserializer.readFloat(); + this.pitch = packetdataserializer.readFloat(); + super.a(packetdataserializer); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeDouble(this.x); + packetdataserializer.writeDouble(this.y); + packetdataserializer.writeDouble(this.z); + packetdataserializer.writeFloat(this.yaw); + packetdataserializer.writeFloat(this.pitch); + super.b(packetdataserializer); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInHeldItemSlot.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInHeldItemSlot.java new file mode 100644 index 0000000..7f93d77 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInHeldItemSlot.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInHeldItemSlot implements Packet { + + private int itemInHandIndex; + + public PacketPlayInHeldItemSlot() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.itemInHandIndex = packetdataserializer.readShort(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeShort(this.itemInHandIndex); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public int a() { + return this.itemInHandIndex; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInKeepAlive.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInKeepAlive.java new file mode 100644 index 0000000..fe5a6cf --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInKeepAlive.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInKeepAlive implements Packet { + + private int a; + + public PacketPlayInKeepAlive() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } + + public int a() { + return this.a; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSetCreativeSlot.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSetCreativeSlot.java new file mode 100644 index 0000000..e176c9c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSetCreativeSlot.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInSetCreativeSlot implements Packet { + + private int slot; + private ItemStack b; + + public PacketPlayInSetCreativeSlot() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.slot = packetdataserializer.readShort(); + this.b = packetdataserializer.i(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeShort(this.slot); + packetdataserializer.a(this.b); + } + + public int a() { + return this.slot; + } + + public ItemStack getItemStack() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSettings.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSettings.java new file mode 100644 index 0000000..6bf4c3d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSettings.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInSettings implements Packet { + + private String a; + private int b; + private EntityHuman.EnumChatVisibility c; + private boolean d; + private int e; + + public PacketPlayInSettings() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(7); + this.b = packetdataserializer.readByte(); + this.c = EntityHuman.EnumChatVisibility.a(packetdataserializer.readByte()); + this.d = packetdataserializer.readBoolean(); + this.e = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeByte(this.b); + packetdataserializer.writeByte(this.c.a()); + packetdataserializer.writeBoolean(this.d); + packetdataserializer.writeByte(this.e); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public String a() { + return this.a; + } + + public EntityHuman.EnumChatVisibility c() { + return this.c; + } + + public boolean d() { + return this.d; + } + + public int e() { + return this.e; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSpectate.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSpectate.java new file mode 100644 index 0000000..56a4208 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSpectate.java @@ -0,0 +1,31 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.util.UUID; + +public class PacketPlayInSpectate implements Packet { + + private UUID a; + + public PacketPlayInSpectate() {} + + public PacketPlayInSpectate(UUID uuid) { + this.a = uuid; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.g(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public Entity a(WorldServer worldserver) { + return worldserver.getEntity(this.a); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSteerVehicle.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSteerVehicle.java new file mode 100644 index 0000000..638e43c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInSteerVehicle.java @@ -0,0 +1,58 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInSteerVehicle implements Packet { + + private float a; + private float b; + private boolean c; + private boolean d; + + public PacketPlayInSteerVehicle() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readFloat(); + this.b = packetdataserializer.readFloat(); + byte b0 = packetdataserializer.readByte(); + + this.c = (b0 & 1) > 0; + this.d = (b0 & 2) > 0; + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeFloat(this.a); + packetdataserializer.writeFloat(this.b); + byte b0 = 0; + + if (this.c) { + b0 = (byte) (b0 | 1); + } + + if (this.d) { + b0 = (byte) (b0 | 2); + } + + packetdataserializer.writeByte(b0); + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public float a() { + return this.a; + } + + public float b() { + return this.b; + } + + public boolean c() { + return this.c; + } + + public boolean d() { + return this.d; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTabComplete.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTabComplete.java new file mode 100644 index 0000000..0d811e7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTabComplete.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import java.io.IOException; +import org.apache.commons.lang3.StringUtils; + +public class PacketPlayInTabComplete implements Packet { + + private String a; + private BlockPosition b; + + public PacketPlayInTabComplete() {} + + public PacketPlayInTabComplete(String s) { + this(s, (BlockPosition) null); + } + + public PacketPlayInTabComplete(String s, BlockPosition blockposition) { + this.a = s; + this.b = blockposition; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(32767); + boolean flag = packetdataserializer.readBoolean(); + + if (flag) { + this.b = packetdataserializer.c(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(StringUtils.substring(this.a, 0, 32767)); + boolean flag = this.b != null; + + packetdataserializer.writeBoolean(flag); + if (flag) { + packetdataserializer.a(this.b); + } + + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public String a() { + return this.a; + } + + public BlockPosition b() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTransaction.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTransaction.java new file mode 100644 index 0000000..2d3c885 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInTransaction.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInTransaction implements Packet { + + private int a; + private short b; + private boolean c; + + public PacketPlayInTransaction() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.readByte() != 0; + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.writeByte(this.c ? 1 : 0); + } + + public int a() { + return this.a; + } + + public short b() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUpdateSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUpdateSign.java new file mode 100644 index 0000000..703e47c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUpdateSign.java @@ -0,0 +1,48 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInUpdateSign implements Packet { + + private BlockPosition a; + private IChatBaseComponent[] b; + + public PacketPlayInUpdateSign() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(); + this.b = new IChatBaseComponent[4]; + + for (int i = 0; i < 4; ++i) { + String s = packetdataserializer.c(384); + IChatBaseComponent ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s); + + this.b[i] = ichatbasecomponent; + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + + for (int i = 0; i < 4; ++i) { + IChatBaseComponent ichatbasecomponent = this.b[i]; + String s = IChatBaseComponent.ChatSerializer.a(ichatbasecomponent); + + packetdataserializer.a(s); + } + + } + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public BlockPosition a() { + return this.a; + } + + public IChatBaseComponent[] b() { + return this.b; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInWindowClick.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInWindowClick.java new file mode 100644 index 0000000..a9a2a79 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayInWindowClick.java @@ -0,0 +1,61 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayInWindowClick implements Packet { + + private int a; + private int slot; + private int button; + private short d; + private ItemStack item; + private int shift; + + public PacketPlayInWindowClick() {} + + public void a(PacketListenerPlayIn packetlistenerplayin) { + packetlistenerplayin.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + this.slot = packetdataserializer.readShort(); + this.button = packetdataserializer.readByte(); + this.d = packetdataserializer.readShort(); + this.shift = packetdataserializer.readByte(); + this.item = packetdataserializer.i(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.slot); + packetdataserializer.writeByte(this.button); + packetdataserializer.writeShort(this.d); + packetdataserializer.writeByte(this.shift); + packetdataserializer.a(this.item); + } + + public int a() { + return this.a; + } + + public int b() { + return this.slot; + } + + public int c() { + return this.button; + } + + public short d() { + return this.d; + } + + public ItemStack e() { + return this.item; + } + + public int f() { + return this.shift; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAbilities.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAbilities.java new file mode 100644 index 0000000..5fb9e7e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAbilities.java @@ -0,0 +1,103 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutAbilities implements Packet { + + private boolean a; + private boolean b; + private boolean c; + private boolean d; + private float e; + private float f; + + public PacketPlayOutAbilities() {} + + public PacketPlayOutAbilities(PlayerAbilities playerabilities) { + this.a(playerabilities.isInvulnerable); + this.b(playerabilities.isFlying); + this.c(playerabilities.canFly); + this.d(playerabilities.canInstantlyBuild); + this.a(playerabilities.a()); + this.b(playerabilities.b()); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + byte b0 = packetdataserializer.readByte(); + + this.a((b0 & 1) > 0); + this.b((b0 & 2) > 0); + this.c((b0 & 4) > 0); + this.d((b0 & 8) > 0); + this.a(packetdataserializer.readFloat()); + this.b(packetdataserializer.readFloat()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + byte b0 = 0; + + if (this.a()) { + b0 = (byte) (b0 | 1); + } + + if (this.b()) { + b0 = (byte) (b0 | 2); + } + + if (this.c()) { + b0 = (byte) (b0 | 4); + } + + if (this.d()) { + b0 = (byte) (b0 | 8); + } + + packetdataserializer.writeByte(b0); + packetdataserializer.writeFloat(this.e); + packetdataserializer.writeFloat(this.f); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public boolean a() { + return this.a; + } + + public void a(boolean flag) { + this.a = flag; + } + + public boolean b() { + return this.b; + } + + public void b(boolean flag) { + this.b = flag; + } + + public boolean c() { + return this.c; + } + + public void c(boolean flag) { + this.c = flag; + } + + public boolean d() { + return this.d; + } + + public void d(boolean flag) { + this.d = flag; + } + + public void a(float f) { + this.e = f; + } + + public void b(float f) { + this.f = f; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java new file mode 100644 index 0000000..df44492 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAnimation.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutAnimation implements Packet { + + private int a; + private int b; + + public PacketPlayOutAnimation() {} + + public PacketPlayOutAnimation(Entity entity, int i) { + this.a = entity.getId(); + this.b = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeByte(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutAttachEntity.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBed.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBed.java new file mode 100644 index 0000000..cc21d80 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBed.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutBed implements Packet { + + private int a; + private BlockPosition b; + + public PacketPlayOutBed() {} + + public PacketPlayOutBed(EntityHuman entityhuman, BlockPosition blockposition) { + this.a = entityhuman.getId(); + this.b = blockposition; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.c(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockAction.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockAction.java new file mode 100644 index 0000000..c469208 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockAction.java @@ -0,0 +1,38 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutBlockAction implements Packet { + + private BlockPosition a; + private int b; + private int c; + private Block d; + + public PacketPlayOutBlockAction() {} + + public PacketPlayOutBlockAction(BlockPosition blockposition, Block block, int i, int j) { + this.a = blockposition; + this.b = i; + this.c = j; + this.d = block; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(); + this.b = packetdataserializer.readUnsignedByte(); + this.c = packetdataserializer.readUnsignedByte(); + this.d = Block.getById(packetdataserializer.e() & 4095); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeByte(this.b); + packetdataserializer.writeByte(this.c); + packetdataserializer.b(Block.getId(this.d) & 4095); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockBreakAnimation.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockBreakAnimation.java new file mode 100644 index 0000000..678e590 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockBreakAnimation.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutBlockBreakAnimation implements Packet { + + private int a; + private BlockPosition b; + private int c; + + public PacketPlayOutBlockBreakAnimation() {} + + public PacketPlayOutBlockBreakAnimation(int i, BlockPosition blockposition, int j) { + this.a = i; + this.b = blockposition; + this.c = j; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.c(); + this.c = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a(this.b); + packetdataserializer.writeByte(this.c); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockChange.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockChange.java new file mode 100644 index 0000000..00d7d30 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutBlockChange.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutBlockChange implements Packet { + + private BlockPosition a; + public IBlockData block; + + public PacketPlayOutBlockChange() {} + + public PacketPlayOutBlockChange(World world, BlockPosition blockposition) { + this.a = blockposition; + this.block = world.getType(blockposition); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(); + this.block = (IBlockData) Block.d.a(packetdataserializer.e()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.b(Block.d.b(this.block)); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCamera.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCamera.java new file mode 100644 index 0000000..80d4d6d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCamera.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutCamera implements Packet { + + public int a; + + public PacketPlayOutCamera() {} + + public PacketPlayOutCamera(Entity entity) { + this.a = entity.getId(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutChat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutChat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutChat.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCloseWindow.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCloseWindow.java new file mode 100644 index 0000000..cde2639 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCloseWindow.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutCloseWindow implements Packet { + + private int a; + + public PacketPlayOutCloseWindow() {} + + public PacketPlayOutCloseWindow(int i) { + this.a = i; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCollect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCollect.java new file mode 100644 index 0000000..8063f48 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCollect.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutCollect implements Packet { + + private int a; + private int b; + + public PacketPlayOutCollect() {} + + public PacketPlayOutCollect(int i, int j) { + this.a = i; + this.b = j; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.b(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCombatEvent.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCombatEvent.java new file mode 100644 index 0000000..a540ac3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCombatEvent.java @@ -0,0 +1,89 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutCombatEvent implements Packet { + + public PacketPlayOutCombatEvent.EnumCombatEventType a; + public int b; + public int c; + public int d; + public String e; + + public PacketPlayOutCombatEvent() {} + + public PacketPlayOutCombatEvent(CombatTracker combattracker, PacketPlayOutCombatEvent.EnumCombatEventType packetplayoutcombatevent_enumcombateventtype) { + this.a = packetplayoutcombatevent_enumcombateventtype; + EntityLiving entityliving = combattracker.c(); + + switch (PacketPlayOutCombatEvent.SyntheticClass_1.a[packetplayoutcombatevent_enumcombateventtype.ordinal()]) { + case 1: + this.d = combattracker.f(); + this.c = entityliving == null ? -1 : entityliving.getId(); + break; + + case 2: + this.b = combattracker.h().getId(); + this.c = entityliving == null ? -1 : entityliving.getId(); + this.e = combattracker.b().c(); + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = (PacketPlayOutCombatEvent.EnumCombatEventType) packetdataserializer.a(PacketPlayOutCombatEvent.EnumCombatEventType.class); + if (this.a == PacketPlayOutCombatEvent.EnumCombatEventType.END_COMBAT) { + this.d = packetdataserializer.e(); + this.c = packetdataserializer.readInt(); + } else if (this.a == PacketPlayOutCombatEvent.EnumCombatEventType.ENTITY_DIED) { + this.b = packetdataserializer.e(); + this.c = packetdataserializer.readInt(); + this.e = packetdataserializer.c(32767); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a((Enum) this.a); + if (this.a == PacketPlayOutCombatEvent.EnumCombatEventType.END_COMBAT) { + packetdataserializer.b(this.d); + packetdataserializer.writeInt(this.c); + } else if (this.a == PacketPlayOutCombatEvent.EnumCombatEventType.ENTITY_DIED) { + packetdataserializer.b(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.a(this.e); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[PacketPlayOutCombatEvent.EnumCombatEventType.values().length]; + + static { + try { + PacketPlayOutCombatEvent.SyntheticClass_1.a[PacketPlayOutCombatEvent.EnumCombatEventType.END_COMBAT.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + PacketPlayOutCombatEvent.SyntheticClass_1.a[PacketPlayOutCombatEvent.EnumCombatEventType.ENTITY_DIED.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + } + } + + public static enum EnumCombatEventType { + + ENTER_COMBAT, END_COMBAT, ENTITY_DIED; + + private EnumCombatEventType() {} + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCustomPayload.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCustomPayload.java new file mode 100644 index 0000000..35b2a86 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutCustomPayload.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +import io.netty.buffer.ByteBuf; +import java.io.IOException; + +public class PacketPlayOutCustomPayload implements Packet { + + private String a; + private PacketDataSerializer b; + + public PacketPlayOutCustomPayload() {} + + public PacketPlayOutCustomPayload(String s, PacketDataSerializer packetdataserializer) { + this.a = s; + this.b = packetdataserializer; + if (packetdataserializer.writerIndex() > 1048576) { + throw new IllegalArgumentException("Payload may not be larger than 1048576 bytes"); + } + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(20); + int i = packetdataserializer.readableBytes(); + + if (i >= 0 && i <= 1048576) { + this.b = new PacketDataSerializer(packetdataserializer.readBytes(i)); + } else { + throw new IOException("Payload may not be larger than 1048576 bytes"); + } + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeBytes((ByteBuf) this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntity.java new file mode 100644 index 0000000..6d0a90d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntity.java @@ -0,0 +1,133 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntity implements Packet { + + protected int a; + protected byte b; + protected byte c; + protected byte d; + protected byte e; + protected byte f; + protected boolean g; + protected boolean h; + + public PacketPlayOutEntity() {} + + public PacketPlayOutEntity(int i) { + this.a = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public String toString() { + return "Entity_" + super.toString(); + } + + public static class PacketPlayOutEntityLook extends PacketPlayOutEntity { + + public PacketPlayOutEntityLook() { + this.h = true; + } + + public PacketPlayOutEntityLook(int i, byte b0, byte b1, boolean flag) { + super(i); + this.e = b0; + this.f = b1; + this.h = true; + this.g = flag; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + super.a(packetdataserializer); + this.e = packetdataserializer.readByte(); + this.f = packetdataserializer.readByte(); + this.g = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + super.b(packetdataserializer); + packetdataserializer.writeByte(this.e); + packetdataserializer.writeByte(this.f); + packetdataserializer.writeBoolean(this.g); + } + } + + public static class PacketPlayOutRelEntityMove extends PacketPlayOutEntity { + + public PacketPlayOutRelEntityMove() {} + + public PacketPlayOutRelEntityMove(int i, byte b0, byte b1, byte b2, boolean flag) { + super(i); + this.b = b0; + this.c = b1; + this.d = b2; + this.g = flag; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + super.a(packetdataserializer); + this.b = packetdataserializer.readByte(); + this.c = packetdataserializer.readByte(); + this.d = packetdataserializer.readByte(); + this.g = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + super.b(packetdataserializer); + packetdataserializer.writeByte(this.b); + packetdataserializer.writeByte(this.c); + packetdataserializer.writeByte(this.d); + packetdataserializer.writeBoolean(this.g); + } + } + + public static class PacketPlayOutRelEntityMoveLook extends PacketPlayOutEntity { + + public PacketPlayOutRelEntityMoveLook() { + this.h = true; + } + + public PacketPlayOutRelEntityMoveLook(int i, byte b0, byte b1, byte b2, byte b3, byte b4, boolean flag) { + super(i); + this.b = b0; + this.c = b1; + this.d = b2; + this.e = b3; + this.f = b4; + this.g = flag; + this.h = true; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + super.a(packetdataserializer); + this.b = packetdataserializer.readByte(); + this.c = packetdataserializer.readByte(); + this.d = packetdataserializer.readByte(); + this.e = packetdataserializer.readByte(); + this.f = packetdataserializer.readByte(); + this.g = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + super.b(packetdataserializer); + packetdataserializer.writeByte(this.b); + packetdataserializer.writeByte(this.c); + packetdataserializer.writeByte(this.d); + packetdataserializer.writeByte(this.e); + packetdataserializer.writeByte(this.f); + packetdataserializer.writeBoolean(this.g); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityDestroy.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityDestroy.java new file mode 100644 index 0000000..f37a855 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityDestroy.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityDestroy implements Packet { + + private int[] a; + + public PacketPlayOutEntityDestroy() {} + + public PacketPlayOutEntityDestroy(int... aint) { + this.a = aint; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = new int[packetdataserializer.e()]; + + for (int i = 0; i < this.a.length; ++i) { + this.a[i] = packetdataserializer.e(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a.length); + + for (int i = 0; i < this.a.length; ++i) { + packetdataserializer.b(this.a[i]); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEffect.java new file mode 100644 index 0000000..74d1bda --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEffect.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityEffect implements Packet { + + private int a; + private byte b; + private byte c; + private int d; + private byte e; + + public PacketPlayOutEntityEffect() {} + + public PacketPlayOutEntityEffect(int i, MobEffect mobeffect) { + this.a = i; + this.b = (byte) (mobeffect.getEffectId() & 255); + this.c = (byte) (mobeffect.getAmplifier() & 255); + if (mobeffect.getDuration() > 32767) { + this.d = 32767; + } else { + this.d = mobeffect.getDuration(); + } + + this.e = (byte) (mobeffect.isShowParticles() ? 1 : 0); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readByte(); + this.c = packetdataserializer.readByte(); + this.d = packetdataserializer.e(); + this.e = packetdataserializer.readByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeByte(this.b); + packetdataserializer.writeByte(this.c); + packetdataserializer.b(this.d); + packetdataserializer.writeByte(this.e); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java new file mode 100644 index 0000000..b6124aa --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityEquipment.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityEquipment implements Packet { + + private int a; + private int b; + private ItemStack c; + + public PacketPlayOutEntityEquipment() {} + + public PacketPlayOutEntityEquipment(int i, int j, ItemStack itemstack) { + this.a = i; + this.b = j; + this.c = itemstack == null ? null : itemstack.cloneItemStack(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.i(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.a(this.c); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityHeadRotation.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityHeadRotation.java new file mode 100644 index 0000000..b8daa72 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityHeadRotation.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityHeadRotation implements Packet { + + private int a; + private byte b; + + public PacketPlayOutEntityHeadRotation() {} + + public PacketPlayOutEntityHeadRotation(Entity entity, byte b0) { + this.a = entity.getId(); + this.b = b0; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeByte(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityMetadata.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityStatus.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityStatus.java new file mode 100644 index 0000000..77ac1c7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityStatus.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityStatus implements Packet { + + private int a; + private byte b; + + public PacketPlayOutEntityStatus() {} + + public PacketPlayOutEntityStatus(Entity entity, byte b0) { + this.a = entity.getId(); + this.b = b0; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readInt(); + this.b = packetdataserializer.readByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeInt(this.a); + packetdataserializer.writeByte(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java new file mode 100644 index 0000000..ec9a077 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityTeleport implements Packet { + + private int a; + private int b; + private int c; + private int d; + private byte e; + private byte f; + private boolean g; + + public PacketPlayOutEntityTeleport() {} + + public PacketPlayOutEntityTeleport(Entity entity) { + this.a = entity.getId(); + this.b = MathHelper.floor(entity.locX * 32.0D); + this.c = MathHelper.floor(entity.locY * 32.0D); + this.d = MathHelper.floor(entity.locZ * 32.0D); + this.e = (byte) ((int) (entity.yaw * 256.0F / 360.0F)); + this.f = (byte) ((int) (entity.pitch * 256.0F / 360.0F)); + this.g = entity.onGround; + } + + public PacketPlayOutEntityTeleport(int i, int j, int k, int l, byte b0, byte b1, boolean flag) { + this.a = i; + this.b = j; + this.c = k; + this.d = l; + this.e = b0; + this.f = b1; + this.g = flag; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readInt(); + this.c = packetdataserializer.readInt(); + this.d = packetdataserializer.readInt(); + this.e = packetdataserializer.readByte(); + this.f = packetdataserializer.readByte(); + this.g = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeInt(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.writeInt(this.d); + packetdataserializer.writeByte(this.e); + packetdataserializer.writeByte(this.f); + packetdataserializer.writeBoolean(this.g); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java new file mode 100644 index 0000000..d8c0733 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutEntityVelocity.java @@ -0,0 +1,68 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutEntityVelocity implements Packet { + + private int a; + private int b; + private int c; + private int d; + + public PacketPlayOutEntityVelocity() {} + + public PacketPlayOutEntityVelocity(Entity entity) { + this(entity.getId(), entity.motX, entity.motY, entity.motZ); + } + + public PacketPlayOutEntityVelocity(int i, double d0, double d1, double d2) { + this.a = i; + double d3 = 3.9D; + + if (d0 < -d3) { + d0 = -d3; + } + + if (d1 < -d3) { + d1 = -d3; + } + + if (d2 < -d3) { + d2 = -d3; + } + + if (d0 > d3) { + d0 = d3; + } + + if (d1 > d3) { + d1 = d3; + } + + if (d2 > d3) { + d2 = d3; + } + + this.b = (int) (d0 * 8000.0D); + this.c = (int) (d1 * 8000.0D); + this.d = (int) (d2 * 8000.0D); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.readShort(); + this.d = packetdataserializer.readShort(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.writeShort(this.c); + packetdataserializer.writeShort(this.d); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExperience.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExperience.java new file mode 100644 index 0000000..2e78c10 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExperience.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutExperience implements Packet { + + private float a; + private int b; + private int c; + + public PacketPlayOutExperience() {} + + public PacketPlayOutExperience(float f, int i, int j) { + this.a = f; + this.b = i; + this.c = j; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readFloat(); + this.c = packetdataserializer.e(); + this.b = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeFloat(this.a); + packetdataserializer.b(this.c); + packetdataserializer.b(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExplosion.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExplosion.java new file mode 100644 index 0000000..98ee289 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutExplosion.java @@ -0,0 +1,90 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +public class PacketPlayOutExplosion implements Packet { + + private double a; + private double b; + private double c; + private float d; + private List e; + private float f; + private float g; + private float h; + + public PacketPlayOutExplosion() {} + + public PacketPlayOutExplosion(double d0, double d1, double d2, float f, List list, Vec3D vec3d) { + this.a = d0; + this.b = d1; + this.c = d2; + this.d = f; + this.e = Lists.newArrayList(list); + if (vec3d != null) { + this.f = (float) vec3d.a; + this.g = (float) vec3d.b; + this.h = (float) vec3d.c; + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = (double) packetdataserializer.readFloat(); + this.b = (double) packetdataserializer.readFloat(); + this.c = (double) packetdataserializer.readFloat(); + this.d = packetdataserializer.readFloat(); + int i = packetdataserializer.readInt(); + + this.e = Lists.newArrayListWithCapacity(i); + int j = (int) this.a; + int k = (int) this.b; + int l = (int) this.c; + + for (int i1 = 0; i1 < i; ++i1) { + int j1 = packetdataserializer.readByte() + j; + int k1 = packetdataserializer.readByte() + k; + int l1 = packetdataserializer.readByte() + l; + + this.e.add(new BlockPosition(j1, k1, l1)); + } + + this.f = packetdataserializer.readFloat(); + this.g = packetdataserializer.readFloat(); + this.h = packetdataserializer.readFloat(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeFloat((float) this.a); + packetdataserializer.writeFloat((float) this.b); + packetdataserializer.writeFloat((float) this.c); + packetdataserializer.writeFloat(this.d); + packetdataserializer.writeInt(this.e.size()); + int i = (int) this.a; + int j = (int) this.b; + int k = (int) this.c; + Iterator iterator = this.e.iterator(); + + while (iterator.hasNext()) { + BlockPosition blockposition = (BlockPosition) iterator.next(); + int l = blockposition.getX() - i; + int i1 = blockposition.getY() - j; + int j1 = blockposition.getZ() - k; + + packetdataserializer.writeByte(l); + packetdataserializer.writeByte(i1); + packetdataserializer.writeByte(j1); + } + + packetdataserializer.writeFloat(this.f); + packetdataserializer.writeFloat(this.g); + packetdataserializer.writeFloat(this.h); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java new file mode 100644 index 0000000..9313581 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java @@ -0,0 +1,31 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutGameStateChange implements Packet { + + public static final String[] a = new String[] { "tile.bed.notValid"}; + private int b; + private float c; + + public PacketPlayOutGameStateChange() {} + + public PacketPlayOutGameStateChange(int i, float f) { + this.b = i; + this.c = f; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.b = packetdataserializer.readUnsignedByte(); + this.c = packetdataserializer.readFloat(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.b); + packetdataserializer.writeFloat(this.c); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutHeldItemSlot.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutHeldItemSlot.java new file mode 100644 index 0000000..1f72b27 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutHeldItemSlot.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutHeldItemSlot implements Packet { + + private int a; + + public PacketPlayOutHeldItemSlot() {} + + public PacketPlayOutHeldItemSlot(int i) { + this.a = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKeepAlive.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKeepAlive.java new file mode 100644 index 0000000..06af093 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKeepAlive.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutKeepAlive implements Packet { + + private int a; + + public PacketPlayOutKeepAlive() {} + + public PacketPlayOutKeepAlive(int i) { + this.a = i; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKickDisconnect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKickDisconnect.java new file mode 100644 index 0000000..44d6f2d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutKickDisconnect.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutKickDisconnect implements Packet { + + private IChatBaseComponent a; + + public PacketPlayOutKickDisconnect() {} + + public PacketPlayOutKickDisconnect(IChatBaseComponent ichatbasecomponent) { + this.a = ichatbasecomponent; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.d(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutLogin.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutLogin.java new file mode 100644 index 0000000..1edea65 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutLogin.java @@ -0,0 +1,67 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutLogin implements Packet { + + private int a; + private boolean b; + private WorldSettings.EnumGamemode c; + private int d; + private EnumDifficulty e; + private int f; + private WorldType g; + private boolean h; + + public PacketPlayOutLogin() {} + + public PacketPlayOutLogin(int i, WorldSettings.EnumGamemode worldsettings_enumgamemode, boolean flag, int j, EnumDifficulty enumdifficulty, int k, WorldType worldtype, boolean flag1) { + this.a = i; + this.d = j; + this.e = enumdifficulty; + this.c = worldsettings_enumgamemode; + this.f = k; + this.b = flag; + this.g = worldtype; + this.h = flag1; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readInt(); + short short0 = packetdataserializer.readUnsignedByte(); + + this.b = (short0 & 8) == 8; + int i = short0 & -9; + + this.c = WorldSettings.EnumGamemode.getById(i); + this.d = packetdataserializer.readByte(); + this.e = EnumDifficulty.getById(packetdataserializer.readUnsignedByte()); + this.f = packetdataserializer.readUnsignedByte(); + this.g = WorldType.getType(packetdataserializer.c(16)); + if (this.g == null) { + this.g = WorldType.NORMAL; + } + + this.h = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeInt(this.a); + int i = this.c.getId(); + + if (this.b) { + i |= 8; + } + + packetdataserializer.writeByte(i); + packetdataserializer.writeByte(this.d); + packetdataserializer.writeByte(this.e.a()); + packetdataserializer.writeByte(this.f); + packetdataserializer.a(this.g.name()); + packetdataserializer.writeBoolean(this.h); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMap.java new file mode 100644 index 0000000..57a6ed9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMap.java @@ -0,0 +1,86 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.util.Collection; + +public class PacketPlayOutMap implements Packet { + + private int a; + private byte b; + private MapIcon[] c; + private int d; + private int e; + private int f; + private int g; + private byte[] h; + + public PacketPlayOutMap() {} + + public PacketPlayOutMap(int i, byte b0, Collection collection, byte[] abyte, int j, int k, int l, int i1) { + this.a = i; + this.b = b0; + this.c = (MapIcon[]) collection.toArray(new MapIcon[collection.size()]); + this.d = j; + this.e = k; + this.f = l; + this.g = i1; + this.h = new byte[l * i1]; + + for (int j1 = 0; j1 < l; ++j1) { + for (int k1 = 0; k1 < i1; ++k1) { + this.h[j1 + k1 * l] = abyte[j + j1 + (k + k1) * 128]; + } + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readByte(); + this.c = new MapIcon[packetdataserializer.e()]; + + for (int i = 0; i < this.c.length; ++i) { + short short0 = (short) packetdataserializer.readByte(); + + this.c[i] = new MapIcon((byte) (short0 >> 4 & 15), packetdataserializer.readByte(), packetdataserializer.readByte(), (byte) (short0 & 15)); + } + + this.f = packetdataserializer.readUnsignedByte(); + if (this.f > 0) { + this.g = packetdataserializer.readUnsignedByte(); + this.d = packetdataserializer.readUnsignedByte(); + this.e = packetdataserializer.readUnsignedByte(); + this.h = packetdataserializer.a(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeByte(this.b); + packetdataserializer.b(this.c.length); + MapIcon[] amapicon = this.c; + int i = amapicon.length; + + for (int j = 0; j < i; ++j) { + MapIcon mapicon = amapicon[j]; + + packetdataserializer.writeByte((mapicon.getType() & 15) << 4 | mapicon.getRotation() & 15); + packetdataserializer.writeByte(mapicon.getX()); + packetdataserializer.writeByte(mapicon.getY()); + } + + packetdataserializer.writeByte(this.f); + if (this.f > 0) { + packetdataserializer.writeByte(this.g); + packetdataserializer.writeByte(this.d); + packetdataserializer.writeByte(this.e); + packetdataserializer.a(this.h); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java new file mode 100644 index 0000000..40a60fe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutMultiBlockChange.java @@ -0,0 +1,79 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutMultiBlockChange implements Packet { + + private ChunkCoordIntPair a; + private PacketPlayOutMultiBlockChange.MultiBlockChangeInfo[] b; + + public PacketPlayOutMultiBlockChange() {} + + public PacketPlayOutMultiBlockChange(int i, short[] ashort, Chunk chunk) { + this.a = new ChunkCoordIntPair(chunk.locX, chunk.locZ); + this.b = new PacketPlayOutMultiBlockChange.MultiBlockChangeInfo[i]; + + for (int j = 0; j < this.b.length; ++j) { + this.b[j] = new PacketPlayOutMultiBlockChange.MultiBlockChangeInfo(ashort[j], chunk); + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = new ChunkCoordIntPair(packetdataserializer.readInt(), packetdataserializer.readInt()); + this.b = new PacketPlayOutMultiBlockChange.MultiBlockChangeInfo[packetdataserializer.e()]; + + for (int i = 0; i < this.b.length; ++i) { + this.b[i] = new PacketPlayOutMultiBlockChange.MultiBlockChangeInfo(packetdataserializer.readShort(), (IBlockData) Block.d.a(packetdataserializer.e())); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeInt(this.a.x); + packetdataserializer.writeInt(this.a.z); + packetdataserializer.b(this.b.length); + PacketPlayOutMultiBlockChange.MultiBlockChangeInfo[] apacketplayoutmultiblockchange_multiblockchangeinfo = this.b; + int i = apacketplayoutmultiblockchange_multiblockchangeinfo.length; + + for (int j = 0; j < i; ++j) { + PacketPlayOutMultiBlockChange.MultiBlockChangeInfo packetplayoutmultiblockchange_multiblockchangeinfo = apacketplayoutmultiblockchange_multiblockchangeinfo[j]; + + packetdataserializer.writeShort(packetplayoutmultiblockchange_multiblockchangeinfo.b()); + packetdataserializer.b(Block.d.b(packetplayoutmultiblockchange_multiblockchangeinfo.c())); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public class MultiBlockChangeInfo { + + private final short b; + private final IBlockData c; + + public MultiBlockChangeInfo(short short0, IBlockData iblockdata) { + this.b = short0; + this.c = iblockdata; + } + + public MultiBlockChangeInfo(short short0, Chunk chunk) { + this.b = short0; + this.c = chunk.getBlockData(this.a()); + } + + public BlockPosition a() { + return new BlockPosition(PacketPlayOutMultiBlockChange.this.a.a(this.b >> 12 & 15, this.b & 255, this.b >> 8 & 15)); + } + + public short b() { + return this.b; + } + + public IBlockData c() { + return this.c; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java new file mode 100644 index 0000000..17c304e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedEntitySpawn.java @@ -0,0 +1,63 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.util.List; +import java.util.UUID; + +public class PacketPlayOutNamedEntitySpawn implements Packet { + + private int a; + private UUID b; + private int c; + private int d; + private int e; + private byte f; + private byte g; + private int h; + private DataWatcher i; + private List j; + + public PacketPlayOutNamedEntitySpawn() {} + + public PacketPlayOutNamedEntitySpawn(EntityHuman entityhuman) { + this.a = entityhuman.getId(); + this.b = entityhuman.getProfile().getId(); + this.c = MathHelper.floor(entityhuman.locX * 32.0D); + this.d = MathHelper.floor(entityhuman.locY * 32.0D); + this.e = MathHelper.floor(entityhuman.locZ * 32.0D); + this.f = (byte) ((int) (entityhuman.yaw * 256.0F / 360.0F)); + this.g = (byte) ((int) (entityhuman.pitch * 256.0F / 360.0F)); + ItemStack itemstack = entityhuman.inventory.getItemInHand(); + + this.h = itemstack == null ? 0 : Item.getId(itemstack.getItem()); + this.i = entityhuman.getDataWatcher(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.g(); + this.c = packetdataserializer.readInt(); + this.d = packetdataserializer.readInt(); + this.e = packetdataserializer.readInt(); + this.f = packetdataserializer.readByte(); + this.g = packetdataserializer.readByte(); + this.h = packetdataserializer.readShort(); + this.j = DataWatcher.b(packetdataserializer); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.writeInt(this.d); + packetdataserializer.writeInt(this.e); + packetdataserializer.writeByte(this.f); + packetdataserializer.writeByte(this.g); + packetdataserializer.writeShort(this.h); + this.i.a(packetdataserializer); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedSoundEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedSoundEffect.java new file mode 100644 index 0000000..369b6a1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutNamedSoundEffect.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +import java.io.IOException; +import org.apache.commons.lang3.Validate; + +public class PacketPlayOutNamedSoundEffect implements Packet { + + private String a; + private int b; + private int c = Integer.MAX_VALUE; + private int d; + private float e; + private int f; + + public PacketPlayOutNamedSoundEffect() {} + + public PacketPlayOutNamedSoundEffect(String s, double d0, double d1, double d2, float f, float f1) { + Validate.notNull(s, "name", new Object[0]); + this.a = s; + this.b = (int) (d0 * 8.0D); + this.c = (int) (d1 * 8.0D); + this.d = (int) (d2 * 8.0D); + this.e = f; + this.f = (int) (f1 * 63.0F); + f1 = MathHelper.a(f1, 0.0F, 255.0F); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(256); + this.b = packetdataserializer.readInt(); + this.c = packetdataserializer.readInt(); + this.d = packetdataserializer.readInt(); + this.e = packetdataserializer.readFloat(); + this.f = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeInt(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.writeInt(this.d); + packetdataserializer.writeFloat(this.e); + packetdataserializer.writeByte(this.f); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenSignEditor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenSignEditor.java new file mode 100644 index 0000000..aa1a9c0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenSignEditor.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutOpenSignEditor implements Packet { + + private BlockPosition a; + + public PacketPlayOutOpenSignEditor() {} + + public PacketPlayOutOpenSignEditor(BlockPosition blockposition) { + this.a = blockposition; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenWindow.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenWindow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenWindow.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutOpenWindow.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java similarity index 98% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java index 2a56728..ad4d641 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerInfo.java @@ -1,6 +1,6 @@ package net.minecraft.server; -import com.google.common.base.Objects; +import com.google.common.base.MoreObjects; import com.google.common.collect.Lists; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; @@ -208,7 +208,7 @@ public class PacketPlayOutPlayerInfo implements Packet { } public String toString() { - return Objects.toStringHelper(this).add("action", this.a).add("entries", this.b).toString(); + return MoreObjects.toStringHelper(this).add("action", this.a).add("entries", this.b).toString(); } @@ -276,7 +276,7 @@ public class PacketPlayOutPlayerInfo implements Packet { } public String toString() { - return Objects.toStringHelper(this) + return MoreObjects.toStringHelper(this) .add("latency", this.b) .add("gameMode", this.c) .add("profile", this.d) diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPosition.java new file mode 100644 index 0000000..ce0d872 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutPosition.java @@ -0,0 +1,96 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.util.EnumSet; +import java.util.Iterator; +import java.util.Set; + +public class PacketPlayOutPosition implements Packet { + + private double a; + private double b; + private double c; + private float d; + private float e; + private Set f; + + public PacketPlayOutPosition() {} + + public PacketPlayOutPosition(double d0, double d1, double d2, float f, float f1, Set set) { + this.a = d0; + this.b = d1; + this.c = d2; + this.d = f; + this.e = f1; + this.f = set; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readDouble(); + this.b = packetdataserializer.readDouble(); + this.c = packetdataserializer.readDouble(); + this.d = packetdataserializer.readFloat(); + this.e = packetdataserializer.readFloat(); + this.f = PacketPlayOutPosition.EnumPlayerTeleportFlags.a(packetdataserializer.readUnsignedByte()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeDouble(this.a); + packetdataserializer.writeDouble(this.b); + packetdataserializer.writeDouble(this.c); + packetdataserializer.writeFloat(this.d); + packetdataserializer.writeFloat(this.e); + packetdataserializer.writeByte(PacketPlayOutPosition.EnumPlayerTeleportFlags.a(this.f)); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public static enum EnumPlayerTeleportFlags { + + X(0), Y(1), Z(2), Y_ROT(3), X_ROT(4); + + private int f; + + private EnumPlayerTeleportFlags(int i) { + this.f = i; + } + + private int a() { + return 1 << this.f; + } + + private boolean b(int i) { + return (i & this.a()) == this.a(); + } + + public static Set a(int i) { + EnumSet enumset = EnumSet.noneOf(PacketPlayOutPosition.EnumPlayerTeleportFlags.class); + PacketPlayOutPosition.EnumPlayerTeleportFlags[] apacketplayoutposition_enumplayerteleportflags = values(); + int j = apacketplayoutposition_enumplayerteleportflags.length; + + for (int k = 0; k < j; ++k) { + PacketPlayOutPosition.EnumPlayerTeleportFlags packetplayoutposition_enumplayerteleportflags = apacketplayoutposition_enumplayerteleportflags[k]; + + if (packetplayoutposition_enumplayerteleportflags.b(i)) { + enumset.add(packetplayoutposition_enumplayerteleportflags); + } + } + + return enumset; + } + + public static int a(Set set) { + int i = 0; + + PacketPlayOutPosition.EnumPlayerTeleportFlags packetplayoutposition_enumplayerteleportflags; + + for (Iterator iterator = set.iterator(); iterator.hasNext(); i |= packetplayoutposition_enumplayerteleportflags.a()) { + packetplayoutposition_enumplayerteleportflags = (PacketPlayOutPosition.EnumPlayerTeleportFlags) iterator.next(); + } + + return i; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRemoveEntityEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRemoveEntityEffect.java new file mode 100644 index 0000000..a435b75 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRemoveEntityEffect.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutRemoveEntityEffect implements Packet { + + private int a; + private int b; + + public PacketPlayOutRemoveEntityEffect() {} + + public PacketPlayOutRemoveEntityEffect(int i, MobEffect mobeffect) { + this.a = i; + this.b = mobeffect.getEffectId(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readUnsignedByte(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeByte(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutResourcePackSend.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutResourcePackSend.java new file mode 100644 index 0000000..5b464f1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutResourcePackSend.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutResourcePackSend implements Packet { + + private String a; + private String b; + + public PacketPlayOutResourcePackSend() {} + + public PacketPlayOutResourcePackSend(String s, String s1) { + this.a = s; + this.b = s1; + if (s1.length() > 40) { + throw new IllegalArgumentException("Hash is too long (max 40, was " + s1.length() + ")"); + } + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(32767); + this.b = packetdataserializer.c(40); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.a(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRespawn.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRespawn.java new file mode 100644 index 0000000..8891198 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutRespawn.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutRespawn implements Packet { + + private int a; + private EnumDifficulty b; + private WorldSettings.EnumGamemode c; + private WorldType d; + + public PacketPlayOutRespawn() {} + + public PacketPlayOutRespawn(int i, EnumDifficulty enumdifficulty, WorldType worldtype, WorldSettings.EnumGamemode worldsettings_enumgamemode) { + this.a = i; + this.b = enumdifficulty; + this.c = worldsettings_enumgamemode; + this.d = worldtype; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readInt(); + this.b = EnumDifficulty.getById(packetdataserializer.readUnsignedByte()); + this.c = WorldSettings.EnumGamemode.getById(packetdataserializer.readUnsignedByte()); + this.d = WorldType.getType(packetdataserializer.c(16)); + if (this.d == null) { + this.d = WorldType.NORMAL; + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeInt(this.a); + packetdataserializer.writeByte(this.b.a()); + packetdataserializer.writeByte(this.c.getId()); + packetdataserializer.a(this.d.name()); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardDisplayObjective.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardDisplayObjective.java new file mode 100644 index 0000000..7842015 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardDisplayObjective.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutScoreboardDisplayObjective implements Packet { + + private int a; + private String b; + + public PacketPlayOutScoreboardDisplayObjective() {} + + public PacketPlayOutScoreboardDisplayObjective(int i, ScoreboardObjective scoreboardobjective) { + this.a = i; + if (scoreboardobjective == null) { + this.b = ""; + } else { + this.b = scoreboardobjective.getName(); + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + this.b = packetdataserializer.c(16); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.a(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardObjective.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardObjective.java new file mode 100644 index 0000000..fc1dcaf --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardObjective.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutScoreboardObjective implements Packet { + + private String a; + private String b; + private IScoreboardCriteria.EnumScoreboardHealthDisplay c; + private int d; + + public PacketPlayOutScoreboardObjective() {} + + public PacketPlayOutScoreboardObjective(ScoreboardObjective scoreboardobjective, int i) { + this.a = scoreboardobjective.getName(); + this.b = scoreboardobjective.getDisplayName(); + this.c = scoreboardobjective.getCriteria().c(); + this.d = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(16); + this.d = packetdataserializer.readByte(); + if (this.d == 0 || this.d == 2) { + this.b = packetdataserializer.c(32); + this.c = IScoreboardCriteria.EnumScoreboardHealthDisplay.a(packetdataserializer.c(16)); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeByte(this.d); + if (this.d == 0 || this.d == 2) { + packetdataserializer.a(this.b); + packetdataserializer.a(this.c.a()); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardScore.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardScore.java new file mode 100644 index 0000000..73227da --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardScore.java @@ -0,0 +1,65 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutScoreboardScore implements Packet { + + private String a = ""; + private String b = ""; + private int c; + private PacketPlayOutScoreboardScore.EnumScoreboardAction d; + + public PacketPlayOutScoreboardScore() {} + + public PacketPlayOutScoreboardScore(ScoreboardScore scoreboardscore) { + this.a = scoreboardscore.getPlayerName(); + this.b = scoreboardscore.getObjective().getName(); + this.c = scoreboardscore.getScore(); + this.d = PacketPlayOutScoreboardScore.EnumScoreboardAction.CHANGE; + } + + public PacketPlayOutScoreboardScore(String s) { + this.a = s; + this.b = ""; + this.c = 0; + this.d = PacketPlayOutScoreboardScore.EnumScoreboardAction.REMOVE; + } + + public PacketPlayOutScoreboardScore(String s, ScoreboardObjective scoreboardobjective) { + this.a = s; + this.b = scoreboardobjective.getName(); + this.c = 0; + this.d = PacketPlayOutScoreboardScore.EnumScoreboardAction.REMOVE; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(40); + this.d = (PacketPlayOutScoreboardScore.EnumScoreboardAction) packetdataserializer.a(PacketPlayOutScoreboardScore.EnumScoreboardAction.class); + this.b = packetdataserializer.c(16); + if (this.d != PacketPlayOutScoreboardScore.EnumScoreboardAction.REMOVE) { + this.c = packetdataserializer.e(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.a((Enum) this.d); + packetdataserializer.a(this.b); + if (this.d != PacketPlayOutScoreboardScore.EnumScoreboardAction.REMOVE) { + packetdataserializer.b(this.c); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public static enum EnumScoreboardAction { + + CHANGE, REMOVE; + + private EnumScoreboardAction() {} + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutServerDifficulty.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutServerDifficulty.java new file mode 100644 index 0000000..1462465 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutServerDifficulty.java @@ -0,0 +1,28 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutServerDifficulty implements Packet { + + private EnumDifficulty a; + private boolean b; + + public PacketPlayOutServerDifficulty() {} + + public PacketPlayOutServerDifficulty(EnumDifficulty enumdifficulty, boolean flag) { + this.a = enumdifficulty; + this.b = flag; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = EnumDifficulty.getById(packetdataserializer.readUnsignedByte()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a.a()); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetCompression.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetCompression.java new file mode 100644 index 0000000..d8e8e2d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetCompression.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutSetCompression implements Packet { + + private int a; + + public PacketPlayOutSetCompression() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetSlot.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetSlot.java new file mode 100644 index 0000000..e86e1f5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSetSlot.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutSetSlot implements Packet { + + private int a; + private int b; + private ItemStack c; + + public PacketPlayOutSetSlot() {} + + public PacketPlayOutSetSlot(int i, int j, ItemStack itemstack) { + this.a = i; + this.b = j; + this.c = itemstack == null ? null : itemstack.cloneItemStack(); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readByte(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.i(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.a(this.c); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityExperienceOrb.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityExperienceOrb.java new file mode 100644 index 0000000..3be5f77 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityExperienceOrb.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutSpawnEntityExperienceOrb implements Packet { + + private int a; + private int b; + private int c; + private int d; + private int e; + + public PacketPlayOutSpawnEntityExperienceOrb() {} + + public PacketPlayOutSpawnEntityExperienceOrb(EntityExperienceOrb entityexperienceorb) { + this.a = entityexperienceorb.getId(); + this.b = MathHelper.floor(entityexperienceorb.locX * 32.0D); + this.c = MathHelper.floor(entityexperienceorb.locY * 32.0D); + this.d = MathHelper.floor(entityexperienceorb.locZ * 32.0D); + this.e = entityexperienceorb.j(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.readInt(); + this.c = packetdataserializer.readInt(); + this.d = packetdataserializer.readInt(); + this.e = packetdataserializer.readShort(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeInt(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.writeInt(this.d); + packetdataserializer.writeShort(this.e); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityLiving.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityPainting.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityPainting.java new file mode 100644 index 0000000..2ebd80b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityPainting.java @@ -0,0 +1,38 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutSpawnEntityPainting implements Packet { + + private int a; + private BlockPosition b; + private EnumDirection c; + private String d; + + public PacketPlayOutSpawnEntityPainting() {} + + public PacketPlayOutSpawnEntityPainting(EntityPainting entitypainting) { + this.a = entitypainting.getId(); + this.b = entitypainting.getBlockPosition(); + this.c = entitypainting.direction; + this.d = entitypainting.art.B; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.d = packetdataserializer.c(EntityPainting.EnumArt.A); + this.b = packetdataserializer.c(); + this.c = EnumDirection.fromType2(packetdataserializer.readUnsignedByte()); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a(this.d); + packetdataserializer.a(this.b); + packetdataserializer.writeByte(this.c.b()); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityWeather.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityWeather.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityWeather.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntityWeather.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnPosition.java new file mode 100644 index 0000000..29a8b49 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutSpawnPosition.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutSpawnPosition implements Packet { + + public BlockPosition position; + + public PacketPlayOutSpawnPosition() {} + + public PacketPlayOutSpawnPosition(BlockPosition blockposition) { + this.position = blockposition; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.position = packetdataserializer.c(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.position); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutStatistic.java new file mode 100644 index 0000000..d10e94b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutStatistic.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.io.IOException; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public class PacketPlayOutStatistic implements Packet { + + private Map a; + + public PacketPlayOutStatistic() {} + + public PacketPlayOutStatistic(Map map) { + this.a = map; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + int i = packetdataserializer.e(); + + this.a = Maps.newHashMap(); + + for (int j = 0; j < i; ++j) { + Statistic statistic = StatisticList.getStatistic(packetdataserializer.c(32767)); + int k = packetdataserializer.e(); + + if (statistic != null) { + this.a.put(statistic, Integer.valueOf(k)); + } + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a.size()); + Iterator iterator = this.a.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + packetdataserializer.a(((Statistic) entry.getKey()).name); + packetdataserializer.b(((Integer) entry.getValue()).intValue()); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTabComplete.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTabComplete.java new file mode 100644 index 0000000..cad5566 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTabComplete.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutTabComplete implements Packet { + + private String[] a; + + public PacketPlayOutTabComplete() {} + + public PacketPlayOutTabComplete(String[] astring) { + this.a = astring; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = new String[packetdataserializer.e()]; + + for (int i = 0; i < this.a.length; ++i) { + this.a[i] = packetdataserializer.c(32767); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a.length); + String[] astring = this.a; + int i = astring.length; + + for (int j = 0; j < i; ++j) { + String s = astring[j]; + + packetdataserializer.a(s); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTileEntityData.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTileEntityData.java new file mode 100644 index 0000000..da8d9fd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTileEntityData.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutTileEntityData implements Packet { + + private BlockPosition a; + private int b; + private NBTTagCompound c; + + public PacketPlayOutTileEntityData() {} + + public PacketPlayOutTileEntityData(BlockPosition blockposition, int i, NBTTagCompound nbttagcompound) { + this.a = blockposition; + this.b = i; + this.c = nbttagcompound; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.c(); + this.b = packetdataserializer.readUnsignedByte(); + this.c = packetdataserializer.h(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.a); + packetdataserializer.writeByte((byte) this.b); + packetdataserializer.a(this.c); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTitle.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTitle.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTitle.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTransaction.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTransaction.java new file mode 100644 index 0000000..ad10a9f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutTransaction.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutTransaction implements Packet { + + private int a; + private short b; + private boolean c; + + public PacketPlayOutTransaction() {} + + public PacketPlayOutTransaction(int i, short short0, boolean flag) { + this.a = i; + this.b = short0; + this.c = flag; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readUnsignedByte(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.writeBoolean(this.c); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateAttributes.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateAttributes.java new file mode 100644 index 0000000..acd1ea0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateAttributes.java @@ -0,0 +1,103 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; + +public class PacketPlayOutUpdateAttributes implements Packet { + + private int a; + private final List b = Lists.newArrayList(); + + public PacketPlayOutUpdateAttributes() {} + + public PacketPlayOutUpdateAttributes(int i, Collection collection) { + this.a = i; + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + AttributeInstance attributeinstance = (AttributeInstance) iterator.next(); + + this.b.add(new PacketPlayOutUpdateAttributes.AttributeSnapshot(attributeinstance.getAttribute().getName(), attributeinstance.b(), attributeinstance.c())); + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + int i = packetdataserializer.readInt(); + + for (int j = 0; j < i; ++j) { + String s = packetdataserializer.c(64); + double d0 = packetdataserializer.readDouble(); + ArrayList arraylist = Lists.newArrayList(); + int k = packetdataserializer.e(); + + for (int l = 0; l < k; ++l) { + UUID uuid = packetdataserializer.g(); + + arraylist.add(new AttributeModifier(uuid, "Unknown synced attribute modifier", packetdataserializer.readDouble(), packetdataserializer.readByte())); + } + + this.b.add(new PacketPlayOutUpdateAttributes.AttributeSnapshot(s, d0, arraylist)); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.writeInt(this.b.size()); + Iterator iterator = this.b.iterator(); + + while (iterator.hasNext()) { + PacketPlayOutUpdateAttributes.AttributeSnapshot packetplayoutupdateattributes_attributesnapshot = (PacketPlayOutUpdateAttributes.AttributeSnapshot) iterator.next(); + + packetdataserializer.a(packetplayoutupdateattributes_attributesnapshot.a()); + packetdataserializer.writeDouble(packetplayoutupdateattributes_attributesnapshot.b()); + packetdataserializer.b(packetplayoutupdateattributes_attributesnapshot.c().size()); + Iterator iterator1 = packetplayoutupdateattributes_attributesnapshot.c().iterator(); + + while (iterator1.hasNext()) { + AttributeModifier attributemodifier = (AttributeModifier) iterator1.next(); + + packetdataserializer.a(attributemodifier.a()); + packetdataserializer.writeDouble(attributemodifier.d()); + packetdataserializer.writeByte(attributemodifier.c()); + } + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public class AttributeSnapshot { + + private final String b; + private final double c; + private final Collection d; + + public AttributeSnapshot(String s, double d0, Collection collection) { + this.b = s; + this.c = d0; + this.d = collection; + } + + public String a() { + return this.b; + } + + public double b() { + return this.c; + } + + public Collection c() { + return this.d; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateEntityNBT.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateEntityNBT.java new file mode 100644 index 0000000..2880a04 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateEntityNBT.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutUpdateEntityNBT implements Packet { + + private int a; + private NBTTagCompound b; + + public PacketPlayOutUpdateEntityNBT() {} + + public PacketPlayOutUpdateEntityNBT(int i, NBTTagCompound nbttagcompound) { + this.a = i; + this.b = nbttagcompound; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.e(); + this.b = packetdataserializer.h(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.b(this.a); + packetdataserializer.a(this.b); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateHealth.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateHealth.java new file mode 100644 index 0000000..0375da8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateHealth.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutUpdateHealth implements Packet { + + private float a; + private int b; + private float c; + + public PacketPlayOutUpdateHealth() {} + + public PacketPlayOutUpdateHealth(float f, int i, float f1) { + this.a = f; + this.b = i; + this.c = f1; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readFloat(); + this.b = packetdataserializer.e(); + this.c = packetdataserializer.readFloat(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeFloat(this.a); + packetdataserializer.b(this.b); + packetdataserializer.writeFloat(this.c); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateSign.java new file mode 100644 index 0000000..56291c1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateSign.java @@ -0,0 +1,41 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutUpdateSign implements Packet { + + private World a; + private BlockPosition b; + private IChatBaseComponent[] c; + + public PacketPlayOutUpdateSign() {} + + public PacketPlayOutUpdateSign(World world, BlockPosition blockposition, IChatBaseComponent[] aichatbasecomponent) { + this.a = world; + this.b = blockposition; + this.c = new IChatBaseComponent[] { aichatbasecomponent[0], aichatbasecomponent[1], aichatbasecomponent[2], aichatbasecomponent[3]}; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.b = packetdataserializer.c(); + this.c = new IChatBaseComponent[4]; + + for (int i = 0; i < 4; ++i) { + this.c[i] = packetdataserializer.d(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(this.b); + + for (int i = 0; i < 4; ++i) { + packetdataserializer.a(this.c[i]); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowData.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowData.java new file mode 100644 index 0000000..ee5add6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowData.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutWindowData implements Packet { + + private int a; + private int b; + private int c; + + public PacketPlayOutWindowData() {} + + public PacketPlayOutWindowData(int i, int j, int k) { + this.a = i; + this.b = j; + this.c = k; + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readUnsignedByte(); + this.b = packetdataserializer.readShort(); + this.c = packetdataserializer.readShort(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.b); + packetdataserializer.writeShort(this.c); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowItems.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowItems.java new file mode 100644 index 0000000..dcf7245 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWindowItems.java @@ -0,0 +1,54 @@ +package net.minecraft.server; + +import java.io.IOException; +import java.util.List; + +public class PacketPlayOutWindowItems implements Packet { + + private int a; + private ItemStack[] b; + + public PacketPlayOutWindowItems() {} + + public PacketPlayOutWindowItems(int i, List list) { + this.a = i; + this.b = new ItemStack[list.size()]; + + for (int j = 0; j < this.b.length; ++j) { + ItemStack itemstack = (ItemStack) list.get(j); + + this.b[j] = itemstack == null ? null : itemstack.cloneItemStack(); + } + + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readUnsignedByte(); + short short0 = packetdataserializer.readShort(); + + this.b = new ItemStack[short0]; + + for (int i = 0; i < short0; ++i) { + this.b[i] = packetdataserializer.i(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeByte(this.a); + packetdataserializer.writeShort(this.b.length); + ItemStack[] aitemstack = this.b; + int i = aitemstack.length; + + for (int j = 0; j < i; ++j) { + ItemStack itemstack = aitemstack[j]; + + packetdataserializer.a(itemstack); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldBorder.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldBorder.java new file mode 100644 index 0000000..b4d40af --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldBorder.java @@ -0,0 +1,163 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutWorldBorder implements Packet { + + private PacketPlayOutWorldBorder.EnumWorldBorderAction a; + private int b; + private double c; + private double d; + private double e; + private double f; + private long g; + private int h; + private int i; + + public PacketPlayOutWorldBorder() {} + + public PacketPlayOutWorldBorder(WorldBorder worldborder, PacketPlayOutWorldBorder.EnumWorldBorderAction packetplayoutworldborder_enumworldborderaction) { + this.a = packetplayoutworldborder_enumworldborderaction; + this.c = worldborder.getCenterX(); + this.d = worldborder.getCenterZ(); + this.f = worldborder.getSize(); + this.e = worldborder.j(); + this.g = worldborder.i(); + this.b = worldborder.l(); + this.i = worldborder.getWarningDistance(); + this.h = worldborder.getWarningTime(); + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = (PacketPlayOutWorldBorder.EnumWorldBorderAction) packetdataserializer.a(PacketPlayOutWorldBorder.EnumWorldBorderAction.class); + switch (PacketPlayOutWorldBorder.SyntheticClass_1.a[this.a.ordinal()]) { + case 1: + this.e = packetdataserializer.readDouble(); + break; + + case 2: + this.f = packetdataserializer.readDouble(); + this.e = packetdataserializer.readDouble(); + this.g = packetdataserializer.f(); + break; + + case 3: + this.c = packetdataserializer.readDouble(); + this.d = packetdataserializer.readDouble(); + break; + + case 4: + this.i = packetdataserializer.e(); + break; + + case 5: + this.h = packetdataserializer.e(); + break; + + case 6: + this.c = packetdataserializer.readDouble(); + this.d = packetdataserializer.readDouble(); + this.f = packetdataserializer.readDouble(); + this.e = packetdataserializer.readDouble(); + this.g = packetdataserializer.f(); + this.b = packetdataserializer.e(); + this.i = packetdataserializer.e(); + this.h = packetdataserializer.e(); + } + + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a((Enum) this.a); + switch (PacketPlayOutWorldBorder.SyntheticClass_1.a[this.a.ordinal()]) { + case 1: + packetdataserializer.writeDouble(this.e); + break; + + case 2: + packetdataserializer.writeDouble(this.f); + packetdataserializer.writeDouble(this.e); + packetdataserializer.b(this.g); + break; + + case 3: + packetdataserializer.writeDouble(this.c); + packetdataserializer.writeDouble(this.d); + break; + + case 4: + packetdataserializer.b(this.i); + break; + + case 5: + packetdataserializer.b(this.h); + break; + + case 6: + packetdataserializer.writeDouble(this.c); + packetdataserializer.writeDouble(this.d); + packetdataserializer.writeDouble(this.f); + packetdataserializer.writeDouble(this.e); + packetdataserializer.b(this.g); + packetdataserializer.b(this.b); + packetdataserializer.b(this.i); + packetdataserializer.b(this.h); + } + + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[PacketPlayOutWorldBorder.EnumWorldBorderAction.values().length]; + + static { + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.SET_SIZE.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.LERP_SIZE.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.SET_CENTER.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.SET_WARNING_BLOCKS.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.SET_WARNING_TIME.ordinal()] = 5; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + PacketPlayOutWorldBorder.SyntheticClass_1.a[PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE.ordinal()] = 6; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + } + } + + public static enum EnumWorldBorderAction { + + SET_SIZE, LERP_SIZE, SET_CENTER, INITIALIZE, SET_WARNING_TIME, SET_WARNING_BLOCKS; + + private EnumWorldBorderAction() {} + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldEvent.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldEvent.java new file mode 100644 index 0000000..0592729 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldEvent.java @@ -0,0 +1,38 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketPlayOutWorldEvent implements Packet { + + private int a; + private BlockPosition b; + private int c; + private boolean d; + + public PacketPlayOutWorldEvent() {} + + public PacketPlayOutWorldEvent(int i, BlockPosition blockposition, int j, boolean flag) { + this.a = i; + this.b = blockposition; + this.c = j; + this.d = flag; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readInt(); + this.b = packetdataserializer.c(); + this.c = packetdataserializer.readInt(); + this.d = packetdataserializer.readBoolean(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeInt(this.a); + packetdataserializer.a(this.b); + packetdataserializer.writeInt(this.c); + packetdataserializer.writeBoolean(this.d); + } + + public void a(PacketListenerPlayOut packetlistenerplayout) { + packetlistenerplayout.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldParticles.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldParticles.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldParticles.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketPlayOutWorldParticles.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketPrepender.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPrepender.java new file mode 100644 index 0000000..90240cc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketPrepender.java @@ -0,0 +1,33 @@ +package net.minecraft.server; + +import com.elevatemc.spigot.network.VarIntUtil; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; + +@io.netty.channel.ChannelHandler.Sharable // PandaSpigot +public class PacketPrepender extends MessageToByteEncoder { + + public static final PacketPrepender INSTANCE = new PacketPrepender(); // PandaSpigot + private PacketPrepender() {} // PandaSpigot - private + + protected void a(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf, ByteBuf bytebuf1) throws Exception { + // PandaSpigot start + VarIntUtil.writeVarInt(bytebuf1, bytebuf.readableBytes()); + bytebuf1.writeBytes(bytebuf); + // PandaSpigot end + } + + protected void encode(ChannelHandlerContext channelhandlercontext, ByteBuf object, ByteBuf bytebuf) throws Exception { + this.a(channelhandlercontext, (ByteBuf) object, bytebuf); + } + // PandaSpigot start + @Override + protected ByteBuf allocateBuffer(ChannelHandlerContext ctx, ByteBuf msg, boolean preferDirect) throws Exception { + int anticipatedRequiredCapacity = VarIntUtil.varIntBytes(msg.readableBytes()) + + msg.readableBytes(); + + return ctx.alloc().directBuffer(anticipatedRequiredCapacity); + } + // PandaSpigot end +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java new file mode 100644 index 0000000..8a69a1c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketSplitter.java @@ -0,0 +1,59 @@ +package net.minecraft.server; + +import com.elevatemc.spigot.network.VarIntByteDecoder; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; +import io.netty.handler.codec.CorruptedFrameException; +import java.util.List; + +public class PacketSplitter extends ByteToMessageDecoder { + + public PacketSplitter() {} + + protected void decode(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf, List list) throws Exception { + // PandaSpigot start + if (!channelhandlercontext.channel().isActive()) { + bytebuf.clear(); + return; + } + + final VarIntByteDecoder reader = new VarIntByteDecoder(); + int varIntEnd = bytebuf.forEachByte(reader); + + if (varIntEnd == -1) { + // We tried to go beyond the end of the buffer. This is probably a good sign that the + // buffer was too short to hold a proper varint. + if (reader.getResult() == VarIntByteDecoder.DecodeResult.RUN_OF_ZEROES) { + // Special case where the entire packet is just a run of zeroes. We ignore them all. + bytebuf.clear(); + } + return; + } + + if (reader.getResult() == VarIntByteDecoder.DecodeResult.RUN_OF_ZEROES) { + // this will return to the point where the next varint starts + bytebuf.readerIndex(varIntEnd); + } else if (reader.getResult() == VarIntByteDecoder.DecodeResult.SUCCESS) { + int readVarint = reader.getReadVarint(); + int bytesRead = reader.getBytesRead(); + if (readVarint < 0) { + bytebuf.clear(); + throw new CorruptedFrameException("Bad packet length"); + } else if (readVarint == 0) { + // skip over the empty packet(s) and ignore it + bytebuf.readerIndex(varIntEnd + 1); + } else { + int minimumRead = bytesRead + readVarint; + if (bytebuf.isReadable(minimumRead)) { + list.add(bytebuf.retainedSlice(varIntEnd + 1, readVarint)); + bytebuf.skipBytes(minimumRead); + } + } + } else if (reader.getResult() == VarIntByteDecoder.DecodeResult.TOO_BIG) { + bytebuf.clear(); + throw new CorruptedFrameException("VarInt too big"); + } + // PandaSpigot end + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInListener.java new file mode 100644 index 0000000..fb53dbe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInListener.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface PacketStatusInListener extends PacketListener { + + void a(PacketStatusInPing packetstatusinping); + + void a(PacketStatusInStart packetstatusinstart); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInPing.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInPing.java new file mode 100644 index 0000000..1a5e7a6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInPing.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketStatusInPing implements Packet { + + private long a; + + public PacketStatusInPing() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readLong(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeLong(this.a); + } + + public void a(PacketStatusInListener packetstatusinlistener) { + packetstatusinlistener.a(this); + } + + public long a() { + return this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInStart.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInStart.java new file mode 100644 index 0000000..7859b13 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusInStart.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketStatusInStart implements Packet { + + public PacketStatusInStart() {} + + public void a(PacketDataSerializer packetdataserializer) throws IOException {} + + public void b(PacketDataSerializer packetdataserializer) throws IOException {} + + public void a(PacketStatusInListener packetstatusinlistener) { + packetstatusinlistener.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PacketStatusListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusListener.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PacketStatusListener.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusListener.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutListener.java new file mode 100644 index 0000000..12d7a72 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutListener.java @@ -0,0 +1,8 @@ +package net.minecraft.server; + +public interface PacketStatusOutListener extends PacketListener { + + void a(PacketStatusOutServerInfo packetstatusoutserverinfo); + + void a(PacketStatusOutPong packetstatusoutpong); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutPong.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutPong.java new file mode 100644 index 0000000..e873de6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutPong.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.io.IOException; + +public class PacketStatusOutPong implements Packet { + + private long a; + + public PacketStatusOutPong() {} + + public PacketStatusOutPong(long i) { + this.a = i; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.a = packetdataserializer.readLong(); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.writeLong(this.a); + } + + public void a(PacketStatusOutListener packetstatusoutlistener) { + packetstatusoutlistener.a(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java new file mode 100644 index 0000000..7a106e4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PacketStatusOutServerInfo.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.io.IOException; + +public class PacketStatusOutServerInfo implements Packet { + + private static final Gson a = (new GsonBuilder()).registerTypeAdapter(ServerPing.ServerData.class, new ServerPing.ServerData.Serializer()).registerTypeAdapter(ServerPing.ServerPingPlayerSample.class, new ServerPing.ServerPingPlayerSample.Serializer()).registerTypeAdapter(ServerPing.class, new ServerPing.Serializer()).registerTypeHierarchyAdapter(IChatBaseComponent.class, new IChatBaseComponent.ChatSerializer()).registerTypeHierarchyAdapter(ChatModifier.class, new ChatModifier.ChatModifierSerializer()).registerTypeAdapterFactory(new ChatTypeAdapterFactory()).create(); + private ServerPing b; + + public PacketStatusOutServerInfo() {} + + public PacketStatusOutServerInfo(ServerPing serverping) { + this.b = serverping; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { + this.b = (ServerPing) PacketStatusOutServerInfo.a.fromJson(packetdataserializer.c(32767), ServerPing.class); + } + + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a(PacketStatusOutServerInfo.a.toJson(this.b)); + } + + public void a(PacketStatusOutListener packetstatusoutlistener) { + packetstatusoutlistener.a(this); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Path.java b/eSpigot-Server/src/main/java/net/minecraft/server/Path.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Path.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Path.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathEntity.java new file mode 100644 index 0000000..65f5c51 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathEntity.java @@ -0,0 +1,79 @@ +package net.minecraft.server; + +public class PathEntity { + + private final PathPoint[] a; + private int b; + private int c; + + public PathEntity(PathPoint[] apathpoint) { + this.a = apathpoint; + this.c = apathpoint.length; + } + + public void a() { + ++this.b; + } + + public boolean b() { + return this.b >= this.c; + } + + public PathPoint c() { + return this.c > 0 ? this.a[this.c - 1] : null; + } + + public PathPoint a(int i) { + return this.a[i]; + } + + public int d() { + return this.c; + } + + public void b(int i) { + this.c = i; + } + + public int e() { + return this.b; + } + + public void c(int i) { + this.b = i; + } + + public Vec3D a(Entity entity, int i) { + double d0 = (double) this.a[i].a + (double) ((int) (entity.width + 1.0F)) * 0.5D; + double d1 = (double) this.a[i].b; + double d2 = (double) this.a[i].c + (double) ((int) (entity.width + 1.0F)) * 0.5D; + + return new Vec3D(d0, d1, d2); + } + + public Vec3D a(Entity entity) { + return this.a(entity, this.b); + } + + public boolean a(PathEntity pathentity) { + if (pathentity == null) { + return false; + } else if (pathentity.a.length != this.a.length) { + return false; + } else { + for (int i = 0; i < this.a.length; ++i) { + if (this.a[i].a != pathentity.a[i].a || this.a[i].b != pathentity.a[i].b || this.a[i].c != pathentity.a[i].c) { + return false; + } + } + + return true; + } + } + + public boolean b(Vec3D vec3d) { + PathPoint pathpoint = this.c(); + + return pathpoint == null ? false : pathpoint.a == (int) vec3d.a && pathpoint.c == (int) vec3d.c; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathPoint.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathPoint.java new file mode 100644 index 0000000..4d48e88 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathPoint.java @@ -0,0 +1,64 @@ +package net.minecraft.server; + +public class PathPoint { + + public final int a; + public final int b; + public final int c; + private final int j; + int d = -1; + float e; + float f; + float g; + PathPoint h; + public boolean i; + + public PathPoint(int i, int j, int k) { + this.a = i; + this.b = j; + this.c = k; + this.j = a(i, j, k); + } + + public static int a(int i, int j, int k) { + return j & 255 | (i & 32767) << 8 | (k & 32767) << 24 | (i < 0 ? Integer.MIN_VALUE : 0) | (k < 0 ? '\u8000' : 0); + } + + public float a(PathPoint pathpoint) { + float f = (float) (pathpoint.a - this.a); + float f1 = (float) (pathpoint.b - this.b); + float f2 = (float) (pathpoint.c - this.c); + + return MathHelper.c(f * f + f1 * f1 + f2 * f2); + } + + public float b(PathPoint pathpoint) { + float f = (float) (pathpoint.a - this.a); + float f1 = (float) (pathpoint.b - this.b); + float f2 = (float) (pathpoint.c - this.c); + + return f * f + f1 * f1 + f2 * f2; + } + + public boolean equals(Object object) { + if (!(object instanceof PathPoint)) { + return false; + } else { + PathPoint pathpoint = (PathPoint) object; + + return this.j == pathpoint.j && this.a == pathpoint.a && this.b == pathpoint.b && this.c == pathpoint.c; + } + } + + public int hashCode() { + return this.j; + } + + public boolean a() { + return this.d >= 0; + } + + public String toString() { + return this.a + ", " + this.b + ", " + this.c; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Pathfinder.java b/eSpigot-Server/src/main/java/net/minecraft/server/Pathfinder.java new file mode 100644 index 0000000..450df83 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Pathfinder.java @@ -0,0 +1,100 @@ +package net.minecraft.server; + +public class Pathfinder { + + private Path a = new Path(); + private PathPoint[] b = new PathPoint[32]; + private PathfinderAbstract c; + + public Pathfinder(PathfinderAbstract pathfinderabstract) { + this.c = pathfinderabstract; + } + + public PathEntity a(IBlockAccess iblockaccess, Entity entity, Entity entity1, float f) { + return this.a(iblockaccess, entity, entity1.locX, entity1.getBoundingBox().b, entity1.locZ, f); + } + + public PathEntity a(IBlockAccess iblockaccess, Entity entity, BlockPosition blockposition, float f) { + return this.a(iblockaccess, entity, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), f); + } + + private PathEntity a(IBlockAccess iblockaccess, Entity entity, double d0, double d1, double d2, float f) { + this.a.a(); + this.c.a(iblockaccess, entity); + PathPoint pathpoint = this.c.a(entity); + PathPoint pathpoint1 = this.c.a(entity, d0, d1, d2); + PathEntity pathentity = this.a(entity, pathpoint, pathpoint1, f); + + this.c.a(); + return pathentity; + } + + private PathEntity a(Entity entity, PathPoint pathpoint, PathPoint pathpoint1, float f) { + pathpoint.e = 0.0F; + pathpoint.f = pathpoint.b(pathpoint1); + pathpoint.g = pathpoint.f; + this.a.a(); + this.a.a(pathpoint); + PathPoint pathpoint2 = pathpoint; + + while (!this.a.e()) { + PathPoint pathpoint3 = this.a.c(); + + if (pathpoint3.equals(pathpoint1)) { + return this.a(pathpoint, pathpoint1); + } + + if (pathpoint3.b(pathpoint1) < pathpoint2.b(pathpoint1)) { + pathpoint2 = pathpoint3; + } + + pathpoint3.i = true; + int i = this.c.a(this.b, entity, pathpoint3, pathpoint1, f); + + for (int j = 0; j < i; ++j) { + PathPoint pathpoint4 = this.b[j]; + float f1 = pathpoint3.e + pathpoint3.b(pathpoint4); + + if (f1 < f * 2.0F && (!pathpoint4.a() || f1 < pathpoint4.e)) { + pathpoint4.h = pathpoint3; + pathpoint4.e = f1; + pathpoint4.f = pathpoint4.b(pathpoint1); + if (pathpoint4.a()) { + this.a.a(pathpoint4, pathpoint4.e + pathpoint4.f); + } else { + pathpoint4.g = pathpoint4.e + pathpoint4.f; + this.a.a(pathpoint4); + } + } + } + } + + if (pathpoint2 == pathpoint) { + return null; + } else { + return this.a(pathpoint, pathpoint2); + } + } + + private PathEntity a(PathPoint pathpoint, PathPoint pathpoint1) { + int i = 1; + + PathPoint pathpoint2; + + for (pathpoint2 = pathpoint1; pathpoint2.h != null; pathpoint2 = pathpoint2.h) { + ++i; + } + + PathPoint[] apathpoint = new PathPoint[i]; + + pathpoint2 = pathpoint1; + --i; + + for (apathpoint[i] = pathpoint1; pathpoint2.h != null; apathpoint[i] = pathpoint2) { + pathpoint2 = pathpoint2.h; + --i; + } + + return new PathEntity(apathpoint); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderAbstract.java new file mode 100644 index 0000000..04a80d6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderAbstract.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +public abstract class PathfinderAbstract { + + protected IBlockAccess a; + protected IntHashMap b = new IntHashMap(); + protected int c; + protected int d; + protected int e; + + public PathfinderAbstract() {} + + public void a(IBlockAccess iblockaccess, Entity entity) { + this.a = iblockaccess; + this.b.c(); + this.c = MathHelper.d(entity.width + 1.0F); + this.d = MathHelper.d(entity.length + 1.0F); + this.e = MathHelper.d(entity.width + 1.0F); + } + + public void a() {} + + protected PathPoint a(int i, int j, int k) { + int l = PathPoint.a(i, j, k); + PathPoint pathpoint = (PathPoint) this.b.get(l); + + if (pathpoint == null) { + pathpoint = new PathPoint(i, j, k); + this.b.a(l, pathpoint); + } + + return pathpoint; + } + + public abstract PathPoint a(Entity entity); + + public abstract PathPoint a(Entity entity, double d0, double d1, double d2); + + public abstract int a(PathPoint[] apathpoint, Entity entity, PathPoint pathpoint, PathPoint pathpoint1, float f); +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoal.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoal.java new file mode 100644 index 0000000..19a1fb2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoal.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +public abstract class PathfinderGoal { + + private int a; + + public PathfinderGoal() {} + + public abstract boolean a(); + + public boolean b() { + return this.a(); + } + + public boolean i() { + return true; + } + + public void c() {} + + public void d() {} + + public void e() {} + + public void a(int i) { + this.a = i; + } + + public int j() { + return this.a; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java new file mode 100644 index 0000000..42ee4e7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java @@ -0,0 +1,92 @@ +package net.minecraft.server; + +public class PathfinderGoalArrowAttack extends PathfinderGoal { + + private final EntityInsentient a; + private final IRangedEntity b; + private EntityLiving c; + private int d; + private double e; + private int f; + private int g; + private int h; + private float i; + private float j; + + public PathfinderGoalArrowAttack(IRangedEntity irangedentity, double d0, int i, float f) { + this(irangedentity, d0, i, i, f); + } + + public PathfinderGoalArrowAttack(IRangedEntity irangedentity, double d0, int i, int j, float f) { + this.d = -1; + if (!(irangedentity instanceof EntityLiving)) { + throw new IllegalArgumentException("ArrowAttackGoal requires Mob implements RangedAttackMob"); + } else { + this.b = irangedentity; + this.a = (EntityInsentient) irangedentity; + this.e = d0; + this.g = i; + this.h = j; + this.i = f; + this.j = f * f; + this.a(3); + } + } + + public boolean a() { + EntityLiving entityliving = this.a.getGoalTarget(); + + if (entityliving == null) { + return false; + } else { + this.c = entityliving; + return true; + } + } + + public boolean b() { + return this.a() || !this.a.getNavigation().m(); + } + + public void d() { + this.c = null; + this.f = 0; + this.d = -1; + } + + public void e() { + double d0 = this.a.e(this.c.locX, this.c.getBoundingBox().b, this.c.locZ); + boolean flag = this.a.getEntitySenses().a(this.c); + + if (flag) { + ++this.f; + } else { + this.f = 0; + } + + if (d0 <= (double) this.j && this.f >= 20) { + this.a.getNavigation().n(); + } else { + this.a.getNavigation().a((Entity) this.c, this.e); + } + + this.a.getControllerLook().a(this.c, 30.0F, 30.0F); + float f; + + if (--this.d == 0) { + if (d0 > (double) this.j || !flag) { + return; + } + + f = MathHelper.sqrt(d0) / this.i; + float f1 = MathHelper.a(f, 0.1F, 1.0F); + + this.b.a(this.c, f1); + this.d = MathHelper.d(f * (float) (this.h - this.g) + (float) this.g); + } else if (this.d < 0) { + f = MathHelper.sqrt(d0) / this.i; + this.d = MathHelper.d(f * (float) (this.h - this.g) + (float) this.g); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBeg.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBeg.java new file mode 100644 index 0000000..950486a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBeg.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +public class PathfinderGoalBeg extends PathfinderGoal { + + private EntityWolf a; + private EntityHuman b; + private World c; + private float d; + private int e; + + public PathfinderGoalBeg(EntityWolf entitywolf, float f) { + this.a = entitywolf; + this.c = entitywolf.world; + this.d = f; + this.a(2); + } + + public boolean a() { + this.b = this.c.findNearbyPlayer(this.a, (double) this.d); + return this.b == null ? false : this.a(this.b); + } + + public boolean b() { + return !this.b.isAlive() ? false : (this.a.h(this.b) > (double) (this.d * this.d) ? false : this.e > 0 && this.a(this.b)); + } + + public void c() { + this.a.p(true); + this.e = 40 + this.a.bc().nextInt(40); + } + + public void d() { + this.a.p(false); + this.b = null; + } + + public void e() { + this.a.getControllerLook().a(this.b.locX, this.b.locY + (double) this.b.getHeadHeight(), this.b.locZ, 10.0F, (float) this.a.bQ()); + --this.e; + } + + private boolean a(EntityHuman entityhuman) { + ItemStack itemstack = entityhuman.inventory.getItemInHand(); + + return itemstack == null ? false : (!this.a.isTamed() && itemstack.getItem() == Items.BONE ? true : this.a.d(itemstack)); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreed.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreed.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreed.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalBreed.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDefendVillage.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDefendVillage.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDefendVillage.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDefendVillage.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java new file mode 100644 index 0000000..67f9846 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public abstract class PathfinderGoalDoorInteract extends PathfinderGoal { + + protected EntityInsentient a; + protected BlockPosition b; + protected BlockDoor c; + boolean d; + float e; + float f; + + public PathfinderGoalDoorInteract(EntityInsentient entityinsentient) { + this.b = BlockPosition.ZERO; + this.a = entityinsentient; + if (!(entityinsentient.getNavigation() instanceof Navigation)) { + throw new IllegalArgumentException("Unsupported mob type for DoorInteractGoal"); + } + } + + public boolean a() { + if (!this.a.positionChanged) { + return false; + } else { + Navigation navigation = (Navigation) this.a.getNavigation(); + PathEntity pathentity = navigation.j(); + + if (pathentity != null && !pathentity.b() && navigation.g()) { + for (int i = 0; i < Math.min(pathentity.e() + 2, pathentity.d()); ++i) { + PathPoint pathpoint = pathentity.a(i); + + this.b = new BlockPosition(pathpoint.a, pathpoint.b + 1, pathpoint.c); + if (this.a.e((double) this.b.getX(), this.a.locY, (double) this.b.getZ()) <= 2.25D) { + this.c = this.a(this.b); + if (this.c != null) { + return true; + } + } + } + + this.b = (new BlockPosition(this.a)).up(); + this.c = this.a(this.b); + return this.c != null; + } else { + return false; + } + } + } + + public boolean b() { + return !this.d; + } + + public void c() { + this.d = false; + this.e = (float) ((double) ((float) this.b.getX() + 0.5F) - this.a.locX); + this.f = (float) ((double) ((float) this.b.getZ() + 0.5F) - this.a.locZ); + } + + public void e() { + float f = (float) ((double) ((float) this.b.getX() + 0.5F) - this.a.locX); + float f1 = (float) ((double) ((float) this.b.getZ() + 0.5F) - this.a.locZ); + float f2 = this.e * f + this.f * f1; + + if (f2 < 0.0F) { + this.d = true; + } + + } + + private BlockDoor a(BlockPosition blockposition) { + Block block = this.a.world.getType(blockposition).getBlock(); + + return block instanceof BlockDoor && block.getMaterial() == Material.WOOD ? (BlockDoor) block : null; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java new file mode 100644 index 0000000..3d83cc3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java @@ -0,0 +1,64 @@ +package net.minecraft.server; + +import java.util.Random; + +public class PathfinderGoalFleeSun extends PathfinderGoal { + + private EntityCreature a; + private double b; + private double c; + private double d; + private double e; + private World f; + + public PathfinderGoalFleeSun(EntityCreature entitycreature, double d0) { + this.a = entitycreature; + this.e = d0; + this.f = entitycreature.world; + this.a(1); + } + + public boolean a() { + if (!this.f.w()) { + return false; + } else if (!this.a.isBurning()) { + return false; + } else if (!this.f.i(new BlockPosition(this.a.locX, this.a.getBoundingBox().b, this.a.locZ))) { + return false; + } else { + Vec3D vec3d = this.f(); + + if (vec3d == null) { + return false; + } else { + this.b = vec3d.a; + this.c = vec3d.b; + this.d = vec3d.c; + return true; + } + } + } + + public boolean b() { + return !this.a.getNavigation().m(); + } + + public void c() { + this.a.getNavigation().a(this.b, this.c, this.d, this.e); + } + + private Vec3D f() { + Random random = this.a.bc(); + BlockPosition blockposition = new BlockPosition(this.a.locX, this.a.getBoundingBox().b, this.a.locZ); + + for (int i = 0; i < 10; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(20) - 10, random.nextInt(6) - 3, random.nextInt(20) - 10); + + if (!this.f.i(blockposition1) && this.a.a(blockposition1) < 0.0F) { + return new Vec3D((double) blockposition1.getX(), (double) blockposition1.getY(), (double) blockposition1.getZ()); + } + } + + return null; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFloat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFloat.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFloat.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java new file mode 100644 index 0000000..c6a0cd7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java @@ -0,0 +1,96 @@ +package net.minecraft.server; + +public class PathfinderGoalFollowOwner extends PathfinderGoal { + + private EntityTameableAnimal d; + private EntityLiving e; + World a; + private double f; + private NavigationAbstract g; + private int h; + float b; + float c; + private boolean i; + + public PathfinderGoalFollowOwner(EntityTameableAnimal entitytameableanimal, double d0, float f, float f1) { + this.d = entitytameableanimal; + this.a = entitytameableanimal.world; + this.f = d0; + this.g = entitytameableanimal.getNavigation(); + this.c = f; + this.b = f1; + this.a(3); + if (!(entitytameableanimal.getNavigation() instanceof Navigation)) { + throw new IllegalArgumentException("Unsupported mob type for FollowOwnerGoal"); + } + } + + public boolean a() { + EntityLiving entityliving = this.d.getOwner(); + + if (entityliving == null) { + return false; + } else if (entityliving instanceof EntityHuman && ((EntityHuman) entityliving).isSpectator()) { + return false; + } else if (this.d.isSitting()) { + return false; + } else if (this.d.h(entityliving) < (double) (this.c * this.c)) { + return false; + } else { + this.e = entityliving; + return true; + } + } + + public boolean b() { + return !this.g.m() && this.d.h(this.e) > (double) (this.b * this.b) && !this.d.isSitting(); + } + + public void c() { + this.h = 0; + this.i = ((Navigation) this.d.getNavigation()).e(); + ((Navigation) this.d.getNavigation()).a(false); + } + + public void d() { + this.e = null; + this.g.n(); + ((Navigation) this.d.getNavigation()).a(true); + } + + private boolean a(BlockPosition blockposition) { + IBlockData iblockdata = this.a.getType(blockposition); + Block block = iblockdata.getBlock(); + + return block == Blocks.AIR ? true : !block.d(); + } + + public void e() { + this.d.getControllerLook().a(this.e, 10.0F, (float) this.d.bQ()); + if (!this.d.isSitting()) { + if (--this.h <= 0) { + this.h = 10; + if (!this.g.a((Entity) this.e, this.f)) { + if (!this.d.cc()) { + if (this.d.h(this.e) >= 144.0D) { + int i = MathHelper.floor(this.e.locX) - 2; + int j = MathHelper.floor(this.e.locZ) - 2; + int k = MathHelper.floor(this.e.getBoundingBox().b); + + for (int l = 0; l <= 4; ++l) { + for (int i1 = 0; i1 <= 4; ++i1) { + if ((l < 1 || i1 < 1 || l > 3 || i1 > 3) && World.a((IBlockAccess) this.a, new BlockPosition(i + l, k - 1, j + i1)) && this.a(new BlockPosition(i + l, k, j + i1)) && this.a(new BlockPosition(i + l, k + 1, j + i1))) { + this.d.setPositionRotation((double) ((float) (i + l) + 0.5F), (double) k, (double) ((float) (j + i1) + 0.5F), this.d.yaw, this.d.pitch); + this.g.n(); + return; + } + } + } + + } + } + } + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java new file mode 100644 index 0000000..d043e3f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java @@ -0,0 +1,77 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; + +public class PathfinderGoalFollowParent extends PathfinderGoal { + + EntityAnimal a; + EntityAnimal b; + double c; + private int d; + + public PathfinderGoalFollowParent(EntityAnimal entityanimal, double d0) { + this.a = entityanimal; + this.c = d0; + } + + public boolean a() { + if (this.a.getAge() >= 0) { + return false; + } else { + List list = this.a.world.a(this.a.getClass(), this.a.getBoundingBox().grow(8.0D, 4.0D, 8.0D)); + EntityAnimal entityanimal = null; + double d0 = Double.MAX_VALUE; + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + EntityAnimal entityanimal1 = (EntityAnimal) iterator.next(); + + if (entityanimal1.getAge() >= 0) { + double d1 = this.a.h(entityanimal1); + + if (d1 <= d0) { + d0 = d1; + entityanimal = entityanimal1; + } + } + } + + if (entityanimal == null) { + return false; + } else if (d0 < 9.0D) { + return false; + } else { + this.b = entityanimal; + return true; + } + } + } + + public boolean b() { + if (this.a.getAge() >= 0) { + return false; + } else if (!this.b.isAlive()) { + return false; + } else { + double d0 = this.a.h(this.b); + + return d0 >= 9.0D && d0 <= 256.0D; + } + } + + public void c() { + this.d = 0; + } + + public void d() { + this.b = null; + } + + public void e() { + if (--this.d <= 0) { + this.d = 10; + this.a.getNavigation().a((Entity) this.b, this.c); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java new file mode 100644 index 0000000..3d19e52 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java @@ -0,0 +1,86 @@ +package net.minecraft.server; + +public abstract class PathfinderGoalGotoTarget extends PathfinderGoal { + + private final EntityCreature c; + private final double d; + protected int a; + private int e; + private int f; + protected BlockPosition b; + private boolean g; + private int h; + + public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i) { + this.b = BlockPosition.ZERO; + this.c = entitycreature; + this.d = d0; + this.h = i; + this.a(5); + } + + public boolean a() { + if (this.a > 0) { + --this.a; + return false; + } else { + this.a = 200 + this.c.bc().nextInt(200); + return this.g(); + } + } + + public boolean b() { + return this.e >= -this.f && this.e <= 1200 && this.a(this.c.world, this.b); + } + + public void c() { + this.c.getNavigation().a((double) ((float) this.b.getX()) + 0.5D, (double) (this.b.getY() + 1), (double) ((float) this.b.getZ()) + 0.5D, this.d); + this.e = 0; + this.f = this.c.bc().nextInt(this.c.bc().nextInt(1200) + 1200) + 1200; + } + + public void d() {} + + public void e() { + if (this.c.c(this.b.up()) > 1.0D) { + this.g = false; + ++this.e; + if (this.e % 40 == 0) { + this.c.getNavigation().a((double) ((float) this.b.getX()) + 0.5D, (double) (this.b.getY() + 1), (double) ((float) this.b.getZ()) + 0.5D, this.d); + } + } else { + this.g = true; + --this.e; + } + + } + + protected boolean f() { + return this.g; + } + + private boolean g() { + int i = this.h; + boolean flag = true; + BlockPosition blockposition = new BlockPosition(this.c); + + for (int j = 0; j <= 1; j = j > 0 ? -j : 1 - j) { + for (int k = 0; k < i; ++k) { + for (int l = 0; l <= k; l = l > 0 ? -l : 1 - l) { + for (int i1 = l < k && l > -k ? k : 0; i1 <= k; i1 = i1 > 0 ? -i1 : 1 - i1) { + BlockPosition blockposition1 = blockposition.a(l, j - 1, i1); + + if (this.c.e(blockposition1) && this.a(this.c.world, blockposition1)) { + this.b = blockposition1; + return true; + } + } + } + } + } + + return false; + } + + protected abstract boolean a(World world, BlockPosition blockposition); +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteract.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteract.java new file mode 100644 index 0000000..154bcef --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteract.java @@ -0,0 +1,9 @@ +package net.minecraft.server; + +public class PathfinderGoalInteract extends PathfinderGoalLookAtPlayer { + + public PathfinderGoalInteract(EntityInsentient entityinsentient, Class oclass, float f, float f1) { + super(entityinsentient, oclass, f, f1); + this.a(3); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteractVillagers.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteractVillagers.java new file mode 100644 index 0000000..34e5453 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalInteractVillagers.java @@ -0,0 +1,74 @@ +package net.minecraft.server; + +public class PathfinderGoalInteractVillagers extends PathfinderGoalInteract { + + private int e; + private EntityVillager f; + + public PathfinderGoalInteractVillagers(EntityVillager entityvillager) { + super(entityvillager, EntityVillager.class, 3.0F, 0.02F); + this.f = entityvillager; + } + + public void c() { + super.c(); + if (this.f.cs() && this.b instanceof EntityVillager && ((EntityVillager) this.b).ct()) { + this.e = 10; + } else { + this.e = 0; + } + + } + + public void e() { + super.e(); + if (this.e > 0) { + --this.e; + if (this.e == 0) { + InventorySubcontainer inventorysubcontainer = this.f.cq(); + + for (int i = 0; i < inventorysubcontainer.getSize(); ++i) { + ItemStack itemstack = inventorysubcontainer.getItem(i); + ItemStack itemstack1 = null; + + if (itemstack != null) { + Item item = itemstack.getItem(); + int j; + + if ((item == Items.BREAD || item == Items.POTATO || item == Items.CARROT) && itemstack.count > 3) { + j = itemstack.count / 2; + itemstack.count -= j; + itemstack1 = new ItemStack(item, j, itemstack.getData()); + } else if (item == Items.WHEAT && itemstack.count > 5) { + j = itemstack.count / 2 / 3 * 3; + int k = j / 3; + + itemstack.count -= j; + itemstack1 = new ItemStack(Items.BREAD, k, 0); + } + + if (itemstack.count <= 0) { + inventorysubcontainer.setItem(i, (ItemStack) null); + } + } + + if (itemstack1 != null) { + double d0 = this.f.locY - 0.30000001192092896D + (double) this.f.getHeadHeight(); + EntityItem entityitem = new EntityItem(this.f.world, this.f.locX, d0, this.f.locZ, itemstack1); + float f = 0.3F; + float f1 = this.f.aK; + float f2 = this.f.pitch; + + entityitem.motX = (double) (-MathHelper.sin(f1 / 180.0F * 3.1415927F) * MathHelper.cos(f2 / 180.0F * 3.1415927F) * f); + entityitem.motZ = (double) (MathHelper.cos(f1 / 180.0F * 3.1415927F) * MathHelper.cos(f2 / 180.0F * 3.1415927F) * f); + entityitem.motY = (double) (-MathHelper.sin(f2 / 180.0F * 3.1415927F) * f + 0.1F); + entityitem.p(); + this.f.world.addEntity(entityitem); + break; + } + } + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java new file mode 100644 index 0000000..f635c86 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java @@ -0,0 +1,67 @@ +package net.minecraft.server; + +public class PathfinderGoalJumpOnBlock extends PathfinderGoalGotoTarget { + + private final EntityOcelot c; + + public PathfinderGoalJumpOnBlock(EntityOcelot entityocelot, double d0) { + super(entityocelot, d0, 8); + this.c = entityocelot; + } + + public boolean a() { + return this.c.isTamed() && !this.c.isSitting() && super.a(); + } + + public boolean b() { + return super.b(); + } + + public void c() { + super.c(); + this.c.getGoalSit().setSitting(false); + } + + public void d() { + super.d(); + this.c.setSitting(false); + } + + public void e() { + super.e(); + this.c.getGoalSit().setSitting(false); + if (!this.f()) { + this.c.setSitting(false); + } else if (!this.c.isSitting()) { + this.c.setSitting(true); + } + + } + + protected boolean a(World world, BlockPosition blockposition) { + if (!world.isEmpty(blockposition.up())) { + return false; + } else { + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + + if (block == Blocks.CHEST) { + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityChest && ((TileEntityChest) tileentity).l < 1) { + return true; + } + } else { + if (block == Blocks.LIT_FURNACE) { + return true; + } + + if (block == Blocks.BED && iblockdata.get(BlockBed.PART) != BlockBed.EnumBedPart.HEAD) { + return true; + } + } + + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java new file mode 100644 index 0000000..7a14c7c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +public class PathfinderGoalLeapAtTarget extends PathfinderGoal { + + EntityInsentient a; + EntityLiving b; + float c; + + public PathfinderGoalLeapAtTarget(EntityInsentient entityinsentient, float f) { + this.a = entityinsentient; + this.c = f; + this.a(5); + } + + public boolean a() { + this.b = this.a.getGoalTarget(); + if (this.b == null) { + return false; + } else { + double d0 = this.a.h(this.b); + + return d0 >= 4.0D && d0 <= 16.0D ? (!this.a.onGround ? false : this.a.bc().nextInt(5) == 0) : false; + } + } + + public boolean b() { + return !this.a.onGround; + } + + public void c() { + double d0 = this.b.locX - this.a.locX; + double d1 = this.b.locZ - this.a.locZ; + float f = MathHelper.sqrt(d0 * d0 + d1 * d1); + + this.a.motX += d0 / (double) f * 0.5D * 0.800000011920929D + this.a.motX * 0.20000000298023224D; + this.a.motZ += d1 / (double) f * 0.5D * 0.800000011920929D + this.a.motZ * 0.20000000298023224D; + this.a.motY = (double) this.c; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java new file mode 100644 index 0000000..890734a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +public class PathfinderGoalLookAtPlayer extends PathfinderGoal { + + protected EntityInsentient a; + protected Entity b; + protected float c; + private int e; + private float f; + protected Class d; + + public PathfinderGoalLookAtPlayer(EntityInsentient entityinsentient, Class oclass, float f) { + this.a = entityinsentient; + this.d = oclass; + this.c = f; + this.f = 0.02F; + this.a(2); + } + + public PathfinderGoalLookAtPlayer(EntityInsentient entityinsentient, Class oclass, float f, float f1) { + this.a = entityinsentient; + this.d = oclass; + this.c = f; + this.f = f1; + this.a(2); + } + + public boolean a() { + if (this.a.bc().nextFloat() >= this.f) { + return false; + } else { + if (this.a.getGoalTarget() != null) { + this.b = this.a.getGoalTarget(); + } + + if (this.d == EntityHuman.class) { + this.b = this.a.world.findNearbyPlayer(this.a, (double) this.c); + } else { + this.b = this.a.world.a(this.d, this.a.getBoundingBox().grow((double) this.c, 3.0D, (double) this.c), (Entity) this.a); + } + + return this.b != null; + } + } + + public boolean b() { + return !this.b.isAlive() ? false : (this.a.h(this.b) > (double) (this.c * this.c) ? false : this.e > 0); + } + + public void c() { + this.e = 40 + this.a.bc().nextInt(40); + } + + public void d() { + this.b = null; + } + + public void e() { + this.a.getControllerLook().a(this.b.locX, this.b.locY + (double) this.b.getHeadHeight(), this.b.locZ, 10.0F, (float) this.a.bQ()); + --this.e; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java new file mode 100644 index 0000000..2ff106c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class PathfinderGoalLookAtTradingPlayer extends PathfinderGoalLookAtPlayer { + + private final EntityVillager e; + + public PathfinderGoalLookAtTradingPlayer(EntityVillager entityvillager) { + super(entityvillager, EntityHuman.class, 8.0F); + this.e = entityvillager; + } + + public boolean a() { + if (this.e.co()) { + this.b = this.e.v_(); + return true; + } else { + return false; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMakeLove.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMakeLove.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMakeLove.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMakeLove.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java new file mode 100644 index 0000000..8e27d58 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java @@ -0,0 +1,99 @@ +package net.minecraft.server; + +public class PathfinderGoalMeleeAttack extends PathfinderGoal { + + World a; + protected EntityCreature b; + int c; + double d; + boolean e; + PathEntity f; + Class g; + private int h; + private double i; + private double j; + private double k; + + public PathfinderGoalMeleeAttack(EntityCreature entitycreature, Class oclass, double d0, boolean flag) { + this(entitycreature, d0, flag); + this.g = oclass; + } + + public PathfinderGoalMeleeAttack(EntityCreature entitycreature, double d0, boolean flag) { + this.b = entitycreature; + this.a = entitycreature.world; + this.d = d0; + this.e = flag; + this.a(3); + } + + public boolean a() { + EntityLiving entityliving = this.b.getGoalTarget(); + + if (entityliving == null) { + return false; + } else if (!entityliving.isAlive()) { + return false; + } else if (this.g != null && !this.g.isAssignableFrom(entityliving.getClass())) { + return false; + } else { + this.f = this.b.getNavigation().a((Entity) entityliving); + return this.f != null; + } + } + + public boolean b() { + EntityLiving entityliving = this.b.getGoalTarget(); + + return entityliving == null ? false : (!entityliving.isAlive() ? false : (!this.e ? !this.b.getNavigation().m() : this.b.e(new BlockPosition(entityliving)))); + } + + public void c() { + this.b.getNavigation().a(this.f, this.d); + this.h = 0; + } + + public void d() { + this.b.getNavigation().n(); + } + + public void e() { + EntityLiving entityliving = this.b.getGoalTarget(); + + this.b.getControllerLook().a(entityliving, 30.0F, 30.0F); + double d0 = this.b.e(entityliving.locX, entityliving.getBoundingBox().b, entityliving.locZ); + double d1 = this.a(entityliving); + + --this.h; + if ((this.e || this.b.getEntitySenses().a(entityliving)) && this.h <= 0 && (this.i == 0.0D && this.j == 0.0D && this.k == 0.0D || entityliving.e(this.i, this.j, this.k) >= 1.0D || this.b.bc().nextFloat() < 0.05F)) { + this.i = entityliving.locX; + this.j = entityliving.getBoundingBox().b; + this.k = entityliving.locZ; + this.h = 4 + this.b.bc().nextInt(7); + if (d0 > 1024.0D) { + this.h += 10; + } else if (d0 > 256.0D) { + this.h += 5; + } + + if (!this.b.getNavigation().a((Entity) entityliving, this.d)) { + this.h += 15; + } + } + + this.c = Math.max(this.c - 1, 0); + if (d0 <= d1 && this.c <= 0) { + this.c = 20; + if (this.b.bA() != null) { + this.b.bw(); + } + + this.b.r(entityliving); + } + + } + + protected double a(EntityLiving entityliving) { + return (double) (this.b.width * 2.0F * this.b.width * 2.0F + entityliving.width); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveIndoors.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveIndoors.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveIndoors.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveIndoors.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java new file mode 100644 index 0000000..3755944 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java @@ -0,0 +1,127 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; + +public class PathfinderGoalMoveThroughVillage extends PathfinderGoal { + + private EntityCreature a; + private double b; + private PathEntity c; + private VillageDoor d; + private boolean e; + private List f = Lists.newArrayList(); + + public PathfinderGoalMoveThroughVillage(EntityCreature entitycreature, double d0, boolean flag) { + this.a = entitycreature; + this.b = d0; + this.e = flag; + this.a(1); + if (!(entitycreature.getNavigation() instanceof Navigation)) { + throw new IllegalArgumentException("Unsupported mob for MoveThroughVillageGoal"); + } + } + + public boolean a() { + this.f(); + if (this.e && this.a.world.w()) { + return false; + } else { + Village village = this.a.world.ae().getClosestVillage(new BlockPosition(this.a), 0); + + if (village == null) { + return false; + } else { + this.d = this.a(village); + if (this.d == null) { + return false; + } else { + Navigation navigation = (Navigation) this.a.getNavigation(); + boolean flag = navigation.g(); + + navigation.b(false); + this.c = navigation.a(this.d.d()); + navigation.b(flag); + if (this.c != null) { + return true; + } else { + Vec3D vec3d = RandomPositionGenerator.a(this.a, 10, 7, new Vec3D((double) this.d.d().getX(), (double) this.d.d().getY(), (double) this.d.d().getZ())); + + if (vec3d == null) { + return false; + } else { + navigation.b(false); + this.c = this.a.getNavigation().a(vec3d.a, vec3d.b, vec3d.c); + navigation.b(flag); + return this.c != null; + } + } + } + } + } + } + + public boolean b() { + if (this.a.getNavigation().m()) { + return false; + } else { + float f = this.a.width + 4.0F; + + return this.a.b(this.d.d()) > (double) (f * f); + } + } + + public void c() { + this.a.getNavigation().a(this.c, this.b); + } + + public void d() { + if (this.a.getNavigation().m() || this.a.b(this.d.d()) < 16.0D) { + this.f.add(this.d); + } + + } + + private VillageDoor a(Village village) { + VillageDoor villagedoor = null; + int i = Integer.MAX_VALUE; + List list = village.f(); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + VillageDoor villagedoor1 = (VillageDoor) iterator.next(); + int j = villagedoor1.b(MathHelper.floor(this.a.locX), MathHelper.floor(this.a.locY), MathHelper.floor(this.a.locZ)); + + if (j < i && !this.a(villagedoor1)) { + villagedoor = villagedoor1; + i = j; + } + } + + return villagedoor; + } + + private boolean a(VillageDoor villagedoor) { + Iterator iterator = this.f.iterator(); + + VillageDoor villagedoor1; + + do { + if (!iterator.hasNext()) { + return false; + } + + villagedoor1 = (VillageDoor) iterator.next(); + } while (!villagedoor.d().equals(villagedoor1.d())); + + return true; + } + + private void f() { + if (this.f.size() > 15) { + this.f.remove(0); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java new file mode 100644 index 0000000..97bf754 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +public class PathfinderGoalMoveTowardsTarget extends PathfinderGoal { + + private EntityCreature a; + private EntityLiving b; + private double c; + private double d; + private double e; + private double f; + private float g; + + public PathfinderGoalMoveTowardsTarget(EntityCreature entitycreature, double d0, float f) { + this.a = entitycreature; + this.f = d0; + this.g = f; + this.a(1); + } + + public boolean a() { + this.b = this.a.getGoalTarget(); + if (this.b == null) { + return false; + } else if (this.b.h(this.a) > (double) (this.g * this.g)) { + return false; + } else { + Vec3D vec3d = RandomPositionGenerator.a(this.a, 16, 7, new Vec3D(this.b.locX, this.b.locY, this.b.locZ)); + + if (vec3d == null) { + return false; + } else { + this.c = vec3d.a; + this.d = vec3d.b; + this.e = vec3d.c; + return true; + } + } + } + + public boolean b() { + return !this.a.getNavigation().m() && this.b.isAlive() && this.b.h(this.a) < (double) (this.g * this.g); + } + + public void d() { + this.b = null; + } + + public void c() { + this.a.getNavigation().a(this.c, this.d, this.e, this.f); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetInsentient.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetInsentient.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetInsentient.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetInsentient.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java new file mode 100644 index 0000000..a37dae4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java @@ -0,0 +1,57 @@ +package net.minecraft.server; + +public class PathfinderGoalOcelotAttack extends PathfinderGoal { + + World a; + EntityInsentient b; + EntityLiving c; + int d; + + public PathfinderGoalOcelotAttack(EntityInsentient entityinsentient) { + this.b = entityinsentient; + this.a = entityinsentient.world; + this.a(3); + } + + public boolean a() { + EntityLiving entityliving = this.b.getGoalTarget(); + + if (entityliving == null) { + return false; + } else { + this.c = entityliving; + return true; + } + } + + public boolean b() { + return !this.c.isAlive() ? false : (this.b.h(this.c) > 225.0D ? false : !this.b.getNavigation().m() || this.a()); + } + + public void d() { + this.c = null; + this.b.getNavigation().n(); + } + + public void e() { + this.b.getControllerLook().a(this.c, 30.0F, 30.0F); + double d0 = (double) (this.b.width * 2.0F * this.b.width * 2.0F); + double d1 = this.b.e(this.c.locX, this.c.getBoundingBox().b, this.c.locZ); + double d2 = 0.8D; + + if (d1 > d0 && d1 < 16.0D) { + d2 = 1.33D; + } else if (d1 < 225.0D) { + d2 = 0.6D; + } + + this.b.getNavigation().a((Entity) this.c, d2); + this.d = Math.max(this.d - 1, 0); + if (d1 <= d0) { + if (this.d <= 0) { + this.d = 20; + this.b.r(this.c); + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java new file mode 100644 index 0000000..c5469e4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +public class PathfinderGoalOfferFlower extends PathfinderGoal { + + private EntityIronGolem a; + private EntityVillager b; + private int c; + + public PathfinderGoalOfferFlower(EntityIronGolem entityirongolem) { + this.a = entityirongolem; + this.a(3); + } + + public boolean a() { + if (!this.a.world.w()) { + return false; + } else if (this.a.bc().nextInt(8000) != 0) { + return false; + } else { + this.b = (EntityVillager) this.a.world.a(EntityVillager.class, this.a.getBoundingBox().grow(6.0D, 2.0D, 6.0D), (Entity) this.a); + return this.b != null; + } + } + + public boolean b() { + return this.c > 0; + } + + public void c() { + this.c = 400; + this.a.a(true); + } + + public void d() { + this.a.a(false); + this.b = null; + } + + public void e() { + this.a.getControllerLook().a(this.b, 30.0F, 30.0F); + --this.c; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOpenDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOpenDoor.java new file mode 100644 index 0000000..b0759b1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOpenDoor.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +public class PathfinderGoalOpenDoor extends PathfinderGoalDoorInteract { + + boolean g; + int h; + + public PathfinderGoalOpenDoor(EntityInsentient entityinsentient, boolean flag) { + super(entityinsentient); + this.a = entityinsentient; + this.g = flag; + } + + public boolean b() { + return this.g && this.h > 0 && super.b(); + } + + public void c() { + this.h = 20; + this.c.setDoor(this.a.world, this.b, true); + } + + public void d() { + if (this.g) { + this.c.setDoor(this.a.world, this.b, false); + } + + } + + public void e() { + --this.h; + super.e(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPanic.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPanic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPanic.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPanic.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPassengerCarrotStick.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPassengerCarrotStick.java new file mode 100644 index 0000000..482a8f8 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPassengerCarrotStick.java @@ -0,0 +1,153 @@ +package net.minecraft.server; + +public class PathfinderGoalPassengerCarrotStick extends PathfinderGoal { + + private final EntityInsentient a; + private final float b; + private float c; + private boolean d; + private int e; + private int f; + + public PathfinderGoalPassengerCarrotStick(EntityInsentient entityinsentient, float f) { + this.a = entityinsentient; + this.b = f; + this.a(7); + } + + public void c() { + this.c = 0.0F; + } + + public void d() { + this.d = false; + this.c = 0.0F; + } + + public boolean a() { + return this.a.isAlive() && this.a.passenger != null && this.a.passenger instanceof EntityHuman && (this.d || this.a.bW()); + } + + public void e() { + EntityHuman entityhuman = (EntityHuman) this.a.passenger; + EntityCreature entitycreature = (EntityCreature) this.a; + float f = MathHelper.g(entityhuman.yaw - this.a.yaw) * 0.5F; + + if (f > 5.0F) { + f = 5.0F; + } + + if (f < -5.0F) { + f = -5.0F; + } + + this.a.yaw = MathHelper.g(this.a.yaw + f); + if (this.c < this.b) { + this.c += (this.b - this.c) * 0.01F; + } + + if (this.c > this.b) { + this.c = this.b; + } + + int i = MathHelper.floor(this.a.locX); + int j = MathHelper.floor(this.a.locY); + int k = MathHelper.floor(this.a.locZ); + float f1 = this.c; + + if (this.d) { + if (this.e++ > this.f) { + this.d = false; + } + + f1 += f1 * 1.15F * MathHelper.sin((float) this.e / (float) this.f * 3.1415927F); + } + + float f2 = 0.91F; + + if (this.a.onGround) { + f2 = this.a.world.getType(new BlockPosition(MathHelper.d((float) i), MathHelper.d((float) j) - 1, MathHelper.d((float) k))).getBlock().frictionFactor * 0.91F; + } + + float f3 = 0.16277136F / (f2 * f2 * f2); + float f4 = MathHelper.sin(entitycreature.yaw * 3.1415927F / 180.0F); + float f5 = MathHelper.cos(entitycreature.yaw * 3.1415927F / 180.0F); + float f6 = entitycreature.bI() * f3; + float f7 = Math.max(f1, 1.0F); + + f7 = f6 / f7; + float f8 = f1 * f7; + float f9 = -(f8 * f4); + float f10 = f8 * f5; + + if (MathHelper.e(f9) > MathHelper.e(f10)) { + if (f9 < 0.0F) { + f9 -= this.a.width / 2.0F; + } + + if (f9 > 0.0F) { + f9 += this.a.width / 2.0F; + } + + f10 = 0.0F; + } else { + f9 = 0.0F; + if (f10 < 0.0F) { + f10 -= this.a.width / 2.0F; + } + + if (f10 > 0.0F) { + f10 += this.a.width / 2.0F; + } + } + + int l = MathHelper.floor(this.a.locX + (double) f9); + int i1 = MathHelper.floor(this.a.locZ + (double) f10); + int j1 = MathHelper.d(this.a.width + 1.0F); + int k1 = MathHelper.d(this.a.length + entityhuman.length + 1.0F); + int l1 = MathHelper.d(this.a.width + 1.0F); + + if (i != l || k != i1) { + Block block = this.a.world.getType(new BlockPosition(i, j, k)).getBlock(); + boolean flag = !this.a(block) && (block.getMaterial() != Material.AIR || !this.a(this.a.world.getType(new BlockPosition(i, j - 1, k)).getBlock())); + + if (flag && 0 == PathfinderNormal.a(this.a.world, this.a, l, j, i1, j1, k1, l1, false, false, true) && 1 == PathfinderNormal.a(this.a.world, this.a, i, j + 1, k, j1, k1, l1, false, false, true) && 1 == PathfinderNormal.a(this.a.world, this.a, l, j + 1, i1, j1, k1, l1, false, false, true)) { + entitycreature.getControllerJump().a(); + } + } + + if (!entityhuman.abilities.canInstantlyBuild && this.c >= this.b * 0.5F && this.a.bc().nextFloat() < 0.006F && !this.d) { + ItemStack itemstack = entityhuman.bA(); + + if (itemstack != null && itemstack.getItem() == Items.CARROT_ON_A_STICK) { + itemstack.damage(1, entityhuman); + if (itemstack.count == 0) { + ItemStack itemstack1 = new ItemStack(Items.FISHING_ROD); + + itemstack1.setTag(itemstack.getTag()); + entityhuman.inventory.items[entityhuman.inventory.itemInHandIndex] = itemstack1; + } + } + } + + this.a.g(0.0F, f1); + } + + private boolean a(Block block) { + return block instanceof BlockStairs || block instanceof BlockStepAbstract; + } + + public boolean f() { + return this.d; + } + + public void g() { + this.d = true; + this.e = 0; + this.f = this.a.bc().nextInt(841) + 140; + } + + public boolean h() { + return !this.f() && this.c > this.b * 0.3F; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPlay.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPlay.java new file mode 100644 index 0000000..fc2f47b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalPlay.java @@ -0,0 +1,88 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; + +public class PathfinderGoalPlay extends PathfinderGoal { + + private EntityVillager a; + private EntityLiving b; + private double c; + private int d; + + public PathfinderGoalPlay(EntityVillager entityvillager, double d0) { + this.a = entityvillager; + this.c = d0; + this.a(1); + } + + public boolean a() { + if (this.a.getAge() >= 0) { + return false; + } else if (this.a.bc().nextInt(400) != 0) { + return false; + } else { + List list = this.a.world.a(EntityVillager.class, this.a.getBoundingBox().grow(6.0D, 3.0D, 6.0D)); + double d0 = Double.MAX_VALUE; + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + EntityVillager entityvillager = (EntityVillager) iterator.next(); + + if (entityvillager != this.a && !entityvillager.cn() && entityvillager.getAge() < 0) { + double d1 = entityvillager.h(this.a); + + if (d1 <= d0) { + d0 = d1; + this.b = entityvillager; + } + } + } + + if (this.b == null) { + Vec3D vec3d = RandomPositionGenerator.a(this.a, 16, 3); + + if (vec3d == null) { + return false; + } + } + + return true; + } + } + + public boolean b() { + return this.d > 0; + } + + public void c() { + if (this.b != null) { + this.a.m(true); + } + + this.d = 1000; + } + + public void d() { + this.a.m(false); + this.b = null; + } + + public void e() { + --this.d; + if (this.b != null) { + if (this.a.h(this.b) > 4.0D) { + this.a.getNavigation().a((Entity) this.b, this.c); + } + } else if (this.a.getNavigation().m()) { + Vec3D vec3d = RandomPositionGenerator.a(this.a, 16, 3); + + if (vec3d == null) { + return; + } + + this.a.getNavigation().a(vec3d.a, vec3d.b, vec3d.c, this.c); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java new file mode 100644 index 0000000..938490b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +public class PathfinderGoalRandomLookaround extends PathfinderGoal { + + private EntityInsentient a; + private double b; + private double c; + private int d; + + public PathfinderGoalRandomLookaround(EntityInsentient entityinsentient) { + this.a = entityinsentient; + this.a(3); + } + + public boolean a() { + return this.a.bc().nextFloat() < 0.02F; + } + + public boolean b() { + return this.d >= 0; + } + + public void c() { + double d0 = 6.283185307179586D * this.a.bc().nextDouble(); + + this.b = Math.cos(d0); + this.c = Math.sin(d0); + this.d = 20 + this.a.bc().nextInt(20); + } + + public void e() { + --this.d; + this.a.getControllerLook().a(this.a.locX + this.b, this.a.locY + (double) this.a.getHeadHeight(), this.a.locZ + this.c, 10.0F, (float) this.a.bQ()); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java new file mode 100644 index 0000000..3abf6d5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java @@ -0,0 +1,17 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class PathfinderGoalRandomTargetNonTamed extends PathfinderGoalNearestAttackableTarget { + + private EntityTameableAnimal g; + + public PathfinderGoalRandomTargetNonTamed(EntityTameableAnimal entitytameableanimal, Class oclass, boolean flag, Predicate predicate) { + super(entitytameableanimal, oclass, 10, flag, false, predicate); + this.g = entitytameableanimal; + } + + public boolean a() { + return !this.g.isTamed() && super.a(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictOpenDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictOpenDoor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictOpenDoor.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictOpenDoor.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java new file mode 100644 index 0000000..d9f2165 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class PathfinderGoalRestrictSun extends PathfinderGoal { + + private EntityCreature a; + + public PathfinderGoalRestrictSun(EntityCreature entitycreature) { + this.a = entitycreature; + } + + public boolean a() { + return this.a.world.w(); + } + + public void c() { + ((Navigation) this.a.getNavigation()).e(true); + } + + public void d() { + ((Navigation) this.a.getNavigation()).e(false); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSelector.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSelector.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSelector.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSit.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSit.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSit.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSit.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSwell.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSwell.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalSwell.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTakeFlower.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTakeFlower.java new file mode 100644 index 0000000..1d94671 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTakeFlower.java @@ -0,0 +1,73 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; + +public class PathfinderGoalTakeFlower extends PathfinderGoal { + + private EntityVillager a; + private EntityIronGolem b; + private int c; + private boolean d; + + public PathfinderGoalTakeFlower(EntityVillager entityvillager) { + this.a = entityvillager; + this.a(3); + } + + public boolean a() { + if (this.a.getAge() >= 0) { + return false; + } else if (!this.a.world.w()) { + return false; + } else { + List list = this.a.world.a(EntityIronGolem.class, this.a.getBoundingBox().grow(6.0D, 2.0D, 6.0D)); + + if (list.isEmpty()) { + return false; + } else { + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + EntityIronGolem entityirongolem = (EntityIronGolem) iterator.next(); + + if (entityirongolem.cm() > 0) { + this.b = entityirongolem; + break; + } + } + + return this.b != null; + } + } + } + + public boolean b() { + return this.b.cm() > 0; + } + + public void c() { + this.c = this.a.bc().nextInt(320); + this.d = false; + this.b.getNavigation().n(); + } + + public void d() { + this.b = null; + this.a.getNavigation().n(); + } + + public void e() { + this.a.getControllerLook().a(this.b, 30.0F, 30.0F); + if (this.b.cm() == this.c) { + this.a.getNavigation().a((Entity) this.b, 0.5D); + this.d = true; + } + + if (this.d && this.a.h(this.b) < 4.0D) { + this.b.a(false); + this.a.getNavigation().n(); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTame.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTame.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTame.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTame.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTarget.java new file mode 100644 index 0000000..7e21ef6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTarget.java @@ -0,0 +1,149 @@ +package net.minecraft.server; + +import org.apache.commons.lang3.StringUtils; + +public abstract class PathfinderGoalTarget extends PathfinderGoal { + + protected final EntityCreature e; + protected boolean f; + private boolean a; + private int b; + private int c; + private int d; + + public PathfinderGoalTarget(EntityCreature entitycreature, boolean flag) { + this(entitycreature, flag, false); + } + + public PathfinderGoalTarget(EntityCreature entitycreature, boolean flag, boolean flag1) { + this.e = entitycreature; + this.f = flag; + this.a = flag1; + } + + public boolean b() { + EntityLiving entityliving = this.e.getGoalTarget(); + + if (entityliving == null) { + return false; + } else if (!entityliving.isAlive()) { + return false; + } else { + ScoreboardTeamBase scoreboardteambase = this.e.getScoreboardTeam(); + ScoreboardTeamBase scoreboardteambase1 = entityliving.getScoreboardTeam(); + + if (scoreboardteambase != null && scoreboardteambase1 == scoreboardteambase) { + return false; + } else { + double d0 = this.f(); + + if (this.e.h(entityliving) > d0 * d0) { + return false; + } else { + if (this.f) { + if (this.e.getEntitySenses().a(entityliving)) { + this.d = 0; + } else if (++this.d > 60) { + return false; + } + } + + return !(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.isInvulnerable; + } + } + } + } + + protected double f() { + AttributeInstance attributeinstance = this.e.getAttributeInstance(GenericAttributes.FOLLOW_RANGE); + + return attributeinstance == null ? 16.0D : attributeinstance.getValue(); + } + + public void c() { + this.b = 0; + this.c = 0; + this.d = 0; + } + + public void d() { + this.e.setGoalTarget((EntityLiving) null); + } + + public static boolean a(EntityInsentient entityinsentient, EntityLiving entityliving, boolean flag, boolean flag1) { + if (entityliving == null) { + return false; + } else if (entityliving == entityinsentient) { + return false; + } else if (!entityliving.isAlive()) { + return false; + } else if (!entityinsentient.a(entityliving.getClass())) { + return false; + } else { + ScoreboardTeamBase scoreboardteambase = entityinsentient.getScoreboardTeam(); + ScoreboardTeamBase scoreboardteambase1 = entityliving.getScoreboardTeam(); + + if (scoreboardteambase != null && scoreboardteambase1 == scoreboardteambase) { + return false; + } else { + if (entityinsentient instanceof EntityOwnable && StringUtils.isNotEmpty(((EntityOwnable) entityinsentient).getOwnerUUID())) { + if (entityliving instanceof EntityOwnable && ((EntityOwnable) entityinsentient).getOwnerUUID().equals(((EntityOwnable) entityliving).getOwnerUUID())) { + return false; + } + + if (entityliving == ((EntityOwnable) entityinsentient).getOwner()) { + return false; + } + } else if (entityliving instanceof EntityHuman && !flag && ((EntityHuman) entityliving).abilities.isInvulnerable) { + return false; + } + + return !flag1 || entityinsentient.getEntitySenses().a(entityliving); + } + } + } + + protected boolean a(EntityLiving entityliving, boolean flag) { + if (!a(this.e, entityliving, flag, this.f)) { + return false; + } else if (!this.e.e(new BlockPosition(entityliving))) { + return false; + } else { + if (this.a) { + if (--this.c <= 0) { + this.b = 0; + } + + if (this.b == 0) { + this.b = this.a(entityliving) ? 1 : 2; + } + + if (this.b == 2) { + return false; + } + } + + return true; + } + } + + private boolean a(EntityLiving entityliving) { + this.c = 10 + this.e.bc().nextInt(5); + PathEntity pathentity = this.e.getNavigation().a((Entity) entityliving); + + if (pathentity == null) { + return false; + } else { + PathPoint pathpoint = pathentity.c(); + + if (pathpoint == null) { + return false; + } else { + int i = pathpoint.a - MathHelper.floor(entityliving.locX); + int j = pathpoint.c - MathHelper.floor(entityliving.locZ); + + return (double) (i * i + j * j) <= 2.25D; + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTargetNearestPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTargetNearestPlayer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTargetNearestPlayer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTargetNearestPlayer.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTempt.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTempt.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTempt.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTempt.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java new file mode 100644 index 0000000..6868640 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +public class PathfinderGoalTradeWithPlayer extends PathfinderGoal { + + private EntityVillager a; + + public PathfinderGoalTradeWithPlayer(EntityVillager entityvillager) { + this.a = entityvillager; + this.a(5); + } + + public boolean a() { + if (!this.a.isAlive()) { + return false; + } else if (this.a.V()) { + return false; + } else if (!this.a.onGround) { + return false; + } else if (this.a.velocityChanged) { + return false; + } else { + EntityHuman entityhuman = this.a.v_(); + + return entityhuman == null ? false : (this.a.h(entityhuman) > 16.0D ? false : entityhuman.activeContainer instanceof Container); + } + } + + public void c() { + this.a.getNavigation().n(); + } + + public void d() { + this.a.a_((EntityHuman) null); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalVillagerFarm.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalVillagerFarm.java new file mode 100644 index 0000000..e895b2a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderGoalVillagerFarm.java @@ -0,0 +1,109 @@ +package net.minecraft.server; + +public class PathfinderGoalVillagerFarm extends PathfinderGoalGotoTarget { + + private final EntityVillager c; + private boolean d; + private boolean e; + private int f; + + public PathfinderGoalVillagerFarm(EntityVillager entityvillager, double d0) { + super(entityvillager, d0, 16); + this.c = entityvillager; + } + + public boolean a() { + if (this.a <= 0) { + if (!this.c.world.getGameRules().getBoolean("mobGriefing")) { + return false; + } + + this.f = -1; + this.d = this.c.cu(); + this.e = this.c.ct(); + } + + return super.a(); + } + + public boolean b() { + return this.f >= 0 && super.b(); + } + + public void c() { + super.c(); + } + + public void d() { + super.d(); + } + + public void e() { + super.e(); + this.c.getControllerLook().a((double) this.b.getX() + 0.5D, (double) (this.b.getY() + 1), (double) this.b.getZ() + 0.5D, 10.0F, (float) this.c.bQ()); + if (this.f()) { + World world = this.c.world; + BlockPosition blockposition = this.b.up(); + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + + if (this.f == 0 && block instanceof BlockCrops && ((Integer) iblockdata.get(BlockCrops.AGE)).intValue() == 7) { + world.setAir(blockposition, true); + } else if (this.f == 1 && block == Blocks.AIR) { + InventorySubcontainer inventorysubcontainer = this.c.cq(); + + for (int i = 0; i < inventorysubcontainer.getSize(); ++i) { + ItemStack itemstack = inventorysubcontainer.getItem(i); + boolean flag = false; + + if (itemstack != null) { + if (itemstack.getItem() == Items.WHEAT_SEEDS) { + world.setTypeAndData(blockposition, Blocks.WHEAT.getBlockData(), 3); + flag = true; + } else if (itemstack.getItem() == Items.POTATO) { + world.setTypeAndData(blockposition, Blocks.POTATOES.getBlockData(), 3); + flag = true; + } else if (itemstack.getItem() == Items.CARROT) { + world.setTypeAndData(blockposition, Blocks.CARROTS.getBlockData(), 3); + flag = true; + } + } + + if (flag) { + --itemstack.count; + if (itemstack.count <= 0) { + inventorysubcontainer.setItem(i, (ItemStack) null); + } + break; + } + } + } + + this.f = -1; + this.a = 10; + } + + } + + protected boolean a(World world, BlockPosition blockposition) { + Block block = world.getType(blockposition).getBlock(); + + if (block == Blocks.FARMLAND) { + blockposition = blockposition.up(); + IBlockData iblockdata = world.getType(blockposition); + + block = iblockdata.getBlock(); + if (block instanceof BlockCrops && ((Integer) iblockdata.get(BlockCrops.AGE)).intValue() == 7 && this.e && (this.f == 0 || this.f < 0)) { + this.f = 0; + return true; + } + + if (block == Blocks.AIR && this.d && (this.f == 1 || this.f < 0)) { + this.f = 1; + return true; + } + } + + return false; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderNormal.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderNormal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PathfinderNormal.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PathfinderNormal.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderWater.java b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderWater.java new file mode 100644 index 0000000..2f9a0e4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PathfinderWater.java @@ -0,0 +1,63 @@ +package net.minecraft.server; + +public class PathfinderWater extends PathfinderAbstract { + + public PathfinderWater() {} + + public void a(IBlockAccess iblockaccess, Entity entity) { + super.a(iblockaccess, entity); + } + + public void a() { + super.a(); + } + + public PathPoint a(Entity entity) { + return this.a(MathHelper.floor(entity.getBoundingBox().a), MathHelper.floor(entity.getBoundingBox().b + 0.5D), MathHelper.floor(entity.getBoundingBox().c)); + } + + public PathPoint a(Entity entity, double d0, double d1, double d2) { + return this.a(MathHelper.floor(d0 - (double) (entity.width / 2.0F)), MathHelper.floor(d1 + 0.5D), MathHelper.floor(d2 - (double) (entity.width / 2.0F))); + } + + public int a(PathPoint[] apathpoint, Entity entity, PathPoint pathpoint, PathPoint pathpoint1, float f) { + int i = 0; + EnumDirection[] aenumdirection = EnumDirection.values(); + int j = aenumdirection.length; + + for (int k = 0; k < j; ++k) { + EnumDirection enumdirection = aenumdirection[k]; + PathPoint pathpoint2 = this.a(entity, pathpoint.a + enumdirection.getAdjacentX(), pathpoint.b + enumdirection.getAdjacentY(), pathpoint.c + enumdirection.getAdjacentZ()); + + if (pathpoint2 != null && !pathpoint2.i && pathpoint2.a(pathpoint1) < f) { + apathpoint[i++] = pathpoint2; + } + } + + return i; + } + + private PathPoint a(Entity entity, int i, int j, int k) { + int l = this.b(entity, i, j, k); + + return l == -1 ? this.a(i, j, k) : null; + } + + private int b(Entity entity, int i, int j, int k) { + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (int l = i; l < i + this.c; ++l) { + for (int i1 = j; i1 < j + this.d; ++i1) { + for (int j1 = k; j1 < k + this.e; ++j1) { + Block block = this.a.getType(blockposition_mutableblockposition.c(l, i1, j1)).getBlock(); + + if (block.getMaterial() != Material.WATER) { + return 0; + } + } + } + } + + return -1; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PersistentBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentBase.java new file mode 100644 index 0000000..d88fa51 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentBase.java @@ -0,0 +1,27 @@ +package net.minecraft.server; + +public abstract class PersistentBase { + + public final String id; + private boolean b; + + public PersistentBase(String s) { + this.id = s; + } + + public abstract void a(NBTTagCompound nbttagcompound); + + public abstract void b(NBTTagCompound nbttagcompound); + + public void c() { + this.a(true); + } + + public void a(boolean flag) { + this.b = flag; + } + + public boolean d() { + return this.b; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PersistentCollection.java b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentCollection.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PersistentCollection.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PersistentCollection.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PersistentScoreboard.java b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentScoreboard.java new file mode 100644 index 0000000..370c1b3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentScoreboard.java @@ -0,0 +1,269 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.Iterator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class PersistentScoreboard extends PersistentBase { + + private static final Logger b = LogManager.getLogger(); + private Scoreboard c; + private NBTTagCompound d; + + public PersistentScoreboard() { + this("scoreboard"); + } + + public PersistentScoreboard(String s) { + super(s); + } + + public void a(Scoreboard scoreboard) { + this.c = scoreboard; + if (this.d != null) { + this.a(this.d); + } + + } + + public void a(NBTTagCompound nbttagcompound) { + if (this.c == null) { + this.d = nbttagcompound; + } else { + this.b(nbttagcompound.getList("Objectives", 10)); + this.c(nbttagcompound.getList("PlayerScores", 10)); + if (nbttagcompound.hasKeyOfType("DisplaySlots", 10)) { + this.c(nbttagcompound.getCompound("DisplaySlots")); + } + + if (nbttagcompound.hasKeyOfType("Teams", 9)) { + this.a(nbttagcompound.getList("Teams", 10)); + } + + } + } + + protected void a(NBTTagList nbttaglist) { + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.get(i); + String s = nbttagcompound.getString("Name"); + + if (s.length() > 16) { + s = s.substring(0, 16); + } + + ScoreboardTeam scoreboardteam = this.c.createTeam(s); + String s1 = nbttagcompound.getString("DisplayName"); + + if (s1.length() > 32) { + s1 = s1.substring(0, 32); + } + + scoreboardteam.setDisplayName(s1); + if (nbttagcompound.hasKeyOfType("TeamColor", 8)) { + scoreboardteam.a(EnumChatFormat.b(nbttagcompound.getString("TeamColor"))); + } + + scoreboardteam.setPrefix(nbttagcompound.getString("Prefix")); + scoreboardteam.setSuffix(nbttagcompound.getString("Suffix")); + if (nbttagcompound.hasKeyOfType("AllowFriendlyFire", 99)) { + scoreboardteam.setAllowFriendlyFire(nbttagcompound.getBoolean("AllowFriendlyFire")); + } + + if (nbttagcompound.hasKeyOfType("SeeFriendlyInvisibles", 99)) { + scoreboardteam.setCanSeeFriendlyInvisibles(nbttagcompound.getBoolean("SeeFriendlyInvisibles")); + } + + ScoreboardTeamBase.EnumNameTagVisibility scoreboardteambase_enumnametagvisibility; + + if (nbttagcompound.hasKeyOfType("NameTagVisibility", 8)) { + scoreboardteambase_enumnametagvisibility = ScoreboardTeamBase.EnumNameTagVisibility.a(nbttagcompound.getString("NameTagVisibility")); + if (scoreboardteambase_enumnametagvisibility != null) { + scoreboardteam.setNameTagVisibility(scoreboardteambase_enumnametagvisibility); + } + } + + if (nbttagcompound.hasKeyOfType("DeathMessageVisibility", 8)) { + scoreboardteambase_enumnametagvisibility = ScoreboardTeamBase.EnumNameTagVisibility.a(nbttagcompound.getString("DeathMessageVisibility")); + if (scoreboardteambase_enumnametagvisibility != null) { + scoreboardteam.b(scoreboardteambase_enumnametagvisibility); + } + } + + this.a(scoreboardteam, nbttagcompound.getList("Players", 8)); + } + + } + + protected void a(ScoreboardTeam scoreboardteam, NBTTagList nbttaglist) { + for (int i = 0; i < nbttaglist.size(); ++i) { + this.c.addPlayerToTeam(nbttaglist.getString(i), scoreboardteam.getName()); + } + + } + + protected void c(NBTTagCompound nbttagcompound) { + for (int i = 0; i < 19; ++i) { + if (nbttagcompound.hasKeyOfType("slot_" + i, 8)) { + String s = nbttagcompound.getString("slot_" + i); + ScoreboardObjective scoreboardobjective = this.c.getObjective(s); + + this.c.setDisplaySlot(i, scoreboardobjective); + } + } + + } + + protected void b(NBTTagList nbttaglist) { + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.get(i); + IScoreboardCriteria iscoreboardcriteria = (IScoreboardCriteria) IScoreboardCriteria.criteria.get(nbttagcompound.getString("CriteriaName")); + + if (iscoreboardcriteria != null) { + String s = nbttagcompound.getString("Name"); + + if (s.length() > 16) { + s = s.substring(0, 16); + } + + ScoreboardObjective scoreboardobjective = this.c.registerObjective(s, iscoreboardcriteria); + + scoreboardobjective.setDisplayName(nbttagcompound.getString("DisplayName")); + scoreboardobjective.a(IScoreboardCriteria.EnumScoreboardHealthDisplay.a(nbttagcompound.getString("RenderType"))); + } + } + + } + + protected void c(NBTTagList nbttaglist) { + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound = nbttaglist.get(i); + ScoreboardObjective scoreboardobjective = this.c.getObjective(nbttagcompound.getString("Objective")); + String s = nbttagcompound.getString("Name"); + + if (s.length() > 40) { + s = s.substring(0, 40); + } + + ScoreboardScore scoreboardscore = this.c.getPlayerScoreForObjective(s, scoreboardobjective); + + scoreboardscore.setScore(nbttagcompound.getInt("Score")); + if (nbttagcompound.hasKey("Locked")) { + scoreboardscore.a(nbttagcompound.getBoolean("Locked")); + } + } + + } + + public void b(NBTTagCompound nbttagcompound) { + if (this.c == null) { + PersistentScoreboard.b.warn("Tried to save scoreboard without having a scoreboard..."); + } else { + nbttagcompound.set("Objectives", this.b()); + nbttagcompound.set("PlayerScores", this.e()); + nbttagcompound.set("Teams", this.a()); + this.d(nbttagcompound); + } + } + + protected NBTTagList a() { + NBTTagList nbttaglist = new NBTTagList(); + Collection collection = this.c.getTeams(); + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + ScoreboardTeam scoreboardteam = (ScoreboardTeam) iterator.next(); + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.setString("Name", scoreboardteam.getName()); + nbttagcompound.setString("DisplayName", scoreboardteam.getDisplayName()); + if (scoreboardteam.l().b() >= 0) { + nbttagcompound.setString("TeamColor", scoreboardteam.l().e()); + } + + nbttagcompound.setString("Prefix", scoreboardteam.getPrefix()); + nbttagcompound.setString("Suffix", scoreboardteam.getSuffix()); + nbttagcompound.setBoolean("AllowFriendlyFire", scoreboardteam.allowFriendlyFire()); + nbttagcompound.setBoolean("SeeFriendlyInvisibles", scoreboardteam.canSeeFriendlyInvisibles()); + nbttagcompound.setString("NameTagVisibility", scoreboardteam.getNameTagVisibility().e); + nbttagcompound.setString("DeathMessageVisibility", scoreboardteam.j().e); + NBTTagList nbttaglist1 = new NBTTagList(); + Iterator iterator1 = scoreboardteam.getPlayerNameSet().iterator(); + + while (iterator1.hasNext()) { + String s = (String) iterator1.next(); + + nbttaglist1.add(new NBTTagString(s)); + } + + nbttagcompound.set("Players", nbttaglist1); + nbttaglist.add(nbttagcompound); + } + + return nbttaglist; + } + + protected void d(NBTTagCompound nbttagcompound) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + boolean flag = false; + + for (int i = 0; i < 19; ++i) { + ScoreboardObjective scoreboardobjective = this.c.getObjectiveForSlot(i); + + if (scoreboardobjective != null) { + nbttagcompound1.setString("slot_" + i, scoreboardobjective.getName()); + flag = true; + } + } + + if (flag) { + nbttagcompound.set("DisplaySlots", nbttagcompound1); + } + + } + + protected NBTTagList b() { + NBTTagList nbttaglist = new NBTTagList(); + Collection collection = this.c.getObjectives(); + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next(); + + if (scoreboardobjective.getCriteria() != null) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.setString("Name", scoreboardobjective.getName()); + nbttagcompound.setString("CriteriaName", scoreboardobjective.getCriteria().getName()); + nbttagcompound.setString("DisplayName", scoreboardobjective.getDisplayName()); + nbttagcompound.setString("RenderType", scoreboardobjective.e().a()); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } + + protected NBTTagList e() { + NBTTagList nbttaglist = new NBTTagList(); + Collection collection = this.c.getScores(); + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + ScoreboardScore scoreboardscore = (ScoreboardScore) iterator.next(); + + if (scoreboardscore.getObjective() != null) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.setString("Name", scoreboardscore.getPlayerName()); + nbttagcompound.setString("Objective", scoreboardscore.getObjective().getName()); + nbttagcompound.setInt("Score", scoreboardscore.getScore()); + nbttagcompound.setBoolean("Locked", scoreboardscore.g()); + nbttaglist.add(nbttagcompound); + } + } + + return nbttaglist; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PersistentStructure.java b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentStructure.java new file mode 100644 index 0000000..6351bb0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentStructure.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +public class PersistentStructure extends PersistentBase { + + private NBTTagCompound b = new NBTTagCompound(); + + public PersistentStructure(String s) { + super(s); + } + + public void a(NBTTagCompound nbttagcompound) { + this.b = nbttagcompound.getCompound("Features"); + } + + public void b(NBTTagCompound nbttagcompound) { + nbttagcompound.set("Features", this.b); + } + + public void a(NBTTagCompound nbttagcompound, int i, int j) { + this.b.set(b(i, j), nbttagcompound); + } + + public static String b(int i, int j) { + return "[" + i + "," + j + "]"; + } + + public NBTTagCompound a() { + return this.b; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PersistentVillage.java b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentVillage.java new file mode 100644 index 0000000..ed5f8b6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PersistentVillage.java @@ -0,0 +1,265 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; + +public class PersistentVillage extends PersistentBase { + + private World world; + private final List c = Lists.newArrayList(); + private final List d = Lists.newArrayList(); + private final List villages = Lists.newArrayList(); + private int time; + + public PersistentVillage(String s) { + super(s); + } + + public PersistentVillage(World world) { + super(a(world.worldProvider)); + this.world = world; + this.c(); + } + + public void a(World world) { + this.world = world; + Iterator iterator = this.villages.iterator(); + + while (iterator.hasNext()) { + Village village = (Village) iterator.next(); + + village.a(world); + } + + } + + public void a(BlockPosition blockposition) { + if (this.c.size() <= 64) { + if (!this.e(blockposition)) { + this.c.add(blockposition); + } + + } + } + + public void tick() { + ++this.time; + Iterator iterator = this.villages.iterator(); + + while (iterator.hasNext()) { + Village village = (Village) iterator.next(); + + village.a(this.time); + } + + this.e(); + this.f(); + this.g(); + if (this.time % 400 == 0) { + this.c(); + } + + } + + private void e() { + Iterator iterator = this.villages.iterator(); + + while (iterator.hasNext()) { + Village village = (Village) iterator.next(); + + if (village.g()) { + iterator.remove(); + this.c(); + } + } + + } + + public List getVillages() { + return this.villages; + } + + public Village getClosestVillage(BlockPosition blockposition, int i) { + Village village = null; + double d0 = 3.4028234663852886E38D; + Iterator iterator = this.villages.iterator(); + + while (iterator.hasNext()) { + Village village1 = (Village) iterator.next(); + double d1 = village1.a().i(blockposition); + + if (d1 < d0) { + float f = (float) (i + village1.b()); + + if (d1 <= (double) (f * f)) { + village = village1; + d0 = d1; + } + } + } + + return village; + } + + private void f() { + if (!this.c.isEmpty()) { + this.b((BlockPosition) this.c.remove(0)); + } + } + + private void g() { + for (int i = 0; i < this.d.size(); ++i) { + VillageDoor villagedoor = (VillageDoor) this.d.get(i); + Village village = this.getClosestVillage(villagedoor.d(), 32); + + if (village == null) { + village = new Village(this.world); + this.villages.add(village); + this.c(); + } + + village.a(villagedoor); + } + + this.d.clear(); + } + + private void b(BlockPosition blockposition) { + byte b0 = 16; + byte b1 = 4; + byte b2 = 16; + + for (int i = -b0; i < b0; ++i) { + for (int j = -b1; j < b1; ++j) { + for (int k = -b2; k < b2; ++k) { + BlockPosition blockposition1 = blockposition.a(i, j, k); + + if (this.f(blockposition1)) { + VillageDoor villagedoor = this.c(blockposition1); + + if (villagedoor == null) { + this.d(blockposition1); + } else { + villagedoor.a(this.time); + } + } + } + } + } + + } + + private VillageDoor c(BlockPosition blockposition) { + Iterator iterator = this.d.iterator(); + + VillageDoor villagedoor; + + do { + if (!iterator.hasNext()) { + iterator = this.villages.iterator(); + + VillageDoor villagedoor1; + + do { + if (!iterator.hasNext()) { + return null; + } + + Village village = (Village) iterator.next(); + + villagedoor1 = village.e(blockposition); + } while (villagedoor1 == null); + + return villagedoor1; + } + + villagedoor = (VillageDoor) iterator.next(); + } while (villagedoor.d().getX() != blockposition.getX() || villagedoor.d().getZ() != blockposition.getZ() || Math.abs(villagedoor.d().getY() - blockposition.getY()) > 1); + + return villagedoor; + } + + private void d(BlockPosition blockposition) { + EnumDirection enumdirection = BlockDoor.h(this.world, blockposition); + EnumDirection enumdirection1 = enumdirection.opposite(); + int i = this.a(blockposition, enumdirection, 5); + int j = this.a(blockposition, enumdirection1, i + 1); + + if (i != j) { + this.d.add(new VillageDoor(blockposition, i < j ? enumdirection : enumdirection1, this.time)); + } + + } + + private int a(BlockPosition blockposition, EnumDirection enumdirection, int i) { + int j = 0; + + for (int k = 1; k <= 5; ++k) { + if (this.world.i(blockposition.shift(enumdirection, k))) { + ++j; + if (j >= i) { + return j; + } + } + } + + return j; + } + + private boolean e(BlockPosition blockposition) { + Iterator iterator = this.c.iterator(); + + BlockPosition blockposition1; + + do { + if (!iterator.hasNext()) { + return false; + } + + blockposition1 = (BlockPosition) iterator.next(); + } while (!blockposition1.equals(blockposition)); + + return true; + } + + private boolean f(BlockPosition blockposition) { + Block block = this.world.getType(blockposition).getBlock(); + + return block instanceof BlockDoor ? block.getMaterial() == Material.WOOD : false; + } + + public void a(NBTTagCompound nbttagcompound) { + this.time = nbttagcompound.getInt("Tick"); + NBTTagList nbttaglist = nbttagcompound.getList("Villages", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.get(i); + Village village = new Village(); + + village.a(nbttagcompound1); + this.villages.add(village); + } + + } + + public void b(NBTTagCompound nbttagcompound) { + nbttagcompound.setInt("Tick", this.time); + NBTTagList nbttaglist = new NBTTagList(); + Iterator iterator = this.villages.iterator(); + + while (iterator.hasNext()) { + Village village = (Village) iterator.next(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + village.b(nbttagcompound1); + nbttaglist.add(nbttagcompound1); + } + + nbttagcompound.set("Villages", nbttaglist); + } + + public static String a(WorldProvider worldprovider) { + return "villages" + worldprovider.getSuffix(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PistonExtendsChecker.java b/eSpigot-Server/src/main/java/net/minecraft/server/PistonExtendsChecker.java new file mode 100644 index 0000000..a18fb5e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PistonExtendsChecker.java @@ -0,0 +1,178 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.List; + +public class PistonExtendsChecker { + + private final World a; + private final BlockPosition b; + private final BlockPosition c; + private final EnumDirection d; + private final List e = Lists.newArrayList(); + private final List f = Lists.newArrayList(); + + public PistonExtendsChecker(World world, BlockPosition blockposition, EnumDirection enumdirection, boolean flag) { + this.a = world; + this.b = blockposition; + if (flag) { + this.d = enumdirection; + this.c = blockposition.shift(enumdirection); + } else { + this.d = enumdirection.opposite(); + this.c = blockposition.shift(enumdirection, 2); + } + + } + + public boolean a() { + this.e.clear(); + this.f.clear(); + Block block = this.a.getType(this.c).getBlock(); + + if (!BlockPiston.a(block, this.a, this.c, this.d, false)) { + if (block.k() != 1) { + return false; + } else { + this.f.add(this.c); + return true; + } + } else if (!this.a(this.c)) { + return false; + } else { + for (int i = 0; i < this.e.size(); ++i) { + BlockPosition blockposition = (BlockPosition) this.e.get(i); + + if (this.a.getType(blockposition).getBlock() == Blocks.SLIME && !this.b(blockposition)) { + return false; + } + } + + return true; + } + } + + private boolean a(BlockPosition blockposition) { + Block block = this.a.getType(blockposition).getBlock(); + + if (block.getMaterial() == Material.AIR) { + return true; + } else if (!BlockPiston.a(block, this.a, blockposition, this.d, false)) { + return true; + } else if (blockposition.equals(this.b)) { + return true; + } else if (this.e.contains(blockposition)) { + return true; + } else { + int i = 1; + + if (i + this.e.size() > 12) { + return false; + } else { + while (block == Blocks.SLIME) { + BlockPosition blockposition1 = blockposition.shift(this.d.opposite(), i); + + block = this.a.getType(blockposition1).getBlock(); + if (block.getMaterial() == Material.AIR || !BlockPiston.a(block, this.a, blockposition1, this.d, false) || blockposition1.equals(this.b)) { + break; + } + + ++i; + if (i + this.e.size() > 12) { + return false; + } + } + + int j = 0; + + int k; + + for (k = i - 1; k >= 0; --k) { + this.e.add(blockposition.shift(this.d.opposite(), k)); + ++j; + } + + k = 1; + + while (true) { + BlockPosition blockposition2 = blockposition.shift(this.d, k); + int l = this.e.indexOf(blockposition2); + + if (l > -1) { + this.a(j, l); + + for (int i1 = 0; i1 <= l + j; ++i1) { + BlockPosition blockposition3 = (BlockPosition) this.e.get(i1); + + if (this.a.getType(blockposition3).getBlock() == Blocks.SLIME && !this.b(blockposition3)) { + return false; + } + } + + return true; + } + + block = this.a.getType(blockposition2).getBlock(); + if (block.getMaterial() == Material.AIR) { + return true; + } + + if (!BlockPiston.a(block, this.a, blockposition2, this.d, true) || blockposition2.equals(this.b)) { + return false; + } + + if (block.k() == 1) { + this.f.add(blockposition2); + return true; + } + + if (this.e.size() >= 12) { + return false; + } + + this.e.add(blockposition2); + ++j; + ++k; + } + } + } + } + + private void a(int i, int j) { + ArrayList arraylist = Lists.newArrayList(); + ArrayList arraylist1 = Lists.newArrayList(); + ArrayList arraylist2 = Lists.newArrayList(); + + arraylist.addAll(this.e.subList(0, j)); + arraylist1.addAll(this.e.subList(this.e.size() - i, this.e.size())); + arraylist2.addAll(this.e.subList(j, this.e.size() - i)); + this.e.clear(); + this.e.addAll(arraylist); + this.e.addAll(arraylist1); + this.e.addAll(arraylist2); + } + + private boolean b(BlockPosition blockposition) { + EnumDirection[] aenumdirection = EnumDirection.values(); + int i = aenumdirection.length; + + for (int j = 0; j < i; ++j) { + EnumDirection enumdirection = aenumdirection[j]; + + if (enumdirection.k() != this.d.k() && !this.a(blockposition.shift(enumdirection))) { + return false; + } + } + + return true; + } + + public List getMovedBlocks() { + return this.e; + } + + public List getBrokenBlocks() { + return this.f; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerAbilities.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerAbilities.java new file mode 100644 index 0000000..b04b9e6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerAbilities.java @@ -0,0 +1,55 @@ +package net.minecraft.server; + +public class PlayerAbilities { + + public boolean isInvulnerable; + public boolean isFlying; + public boolean canFly; + public boolean canInstantlyBuild; + public boolean mayBuild = true; + public float flySpeed = 0.05F; + public float walkSpeed = 0.1F; + + public PlayerAbilities() {} + + public void a(NBTTagCompound nbttagcompound) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound1.setBoolean("invulnerable", this.isInvulnerable); + nbttagcompound1.setBoolean("flying", this.isFlying); + nbttagcompound1.setBoolean("mayfly", this.canFly); + nbttagcompound1.setBoolean("instabuild", this.canInstantlyBuild); + nbttagcompound1.setBoolean("mayBuild", this.mayBuild); + nbttagcompound1.setFloat("flySpeed", this.flySpeed); + nbttagcompound1.setFloat("walkSpeed", this.walkSpeed); + nbttagcompound.set("abilities", nbttagcompound1); + } + + public void b(NBTTagCompound nbttagcompound) { + if (nbttagcompound.hasKeyOfType("abilities", 10)) { + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("abilities"); + + this.isInvulnerable = nbttagcompound1.getBoolean("invulnerable"); + this.isFlying = nbttagcompound1.getBoolean("flying"); + this.canFly = nbttagcompound1.getBoolean("mayfly"); + this.canInstantlyBuild = nbttagcompound1.getBoolean("instabuild"); + if (nbttagcompound1.hasKeyOfType("flySpeed", 99)) { + this.flySpeed = nbttagcompound1.getFloat("flySpeed"); + this.walkSpeed = nbttagcompound1.getFloat("walkSpeed"); + } + + if (nbttagcompound1.hasKeyOfType("mayBuild", 1)) { + this.mayBuild = nbttagcompound1.getBoolean("mayBuild"); + } + } + + } + + public float a() { + return this.flySpeed; + } + + public float b() { + return this.walkSpeed; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerChunkMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerChunkMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerChunkMap.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PlayerChunkMap.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java similarity index 98% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java index b29c5dc..703f6ed 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java @@ -2254,19 +2254,36 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList } // CraftBukkit start else if (packetplayincustompayload.a().equals("REGISTER")) { - String channels = packetplayincustompayload.b().toString(com.google.common.base.Charsets.UTF_8); - for (String channel : channels.split("\0")) { - getPlayer().addChannel(channel); + // PandaSpigot start - Disconnect for payload errors + try { + String channels = packetplayincustompayload.b().toString(com.google.common.base.Charsets.UTF_8); + for (String channel : channels.split("\0")) { + getPlayer().addChannel(channel); + } + } catch (Exception ex) { + PlayerConnection.c.error("Couldn\'t register custom payload", ex); + this.disconnect("Invalid payload REGISTER!"); } } else if (packetplayincustompayload.a().equals("UNREGISTER")) { - String channels = packetplayincustompayload.b().toString(com.google.common.base.Charsets.UTF_8); - for (String channel : channels.split("\0")) { - getPlayer().removeChannel(channel); + try { + String channels = packetplayincustompayload.b().toString(com.google.common.base.Charsets.UTF_8); + for (String channel : channels.split("\0")) { + getPlayer().removeChannel(channel); + } + } catch (Exception ex) { + PlayerConnection.c.error("Couldn\'t register custom payload", ex); + this.disconnect("Invalid payload UNREGISTER!"); } } else { - byte[] data = new byte[packetplayincustompayload.b().readableBytes()]; - packetplayincustompayload.b().readBytes(data); - server.getMessenger().dispatchIncomingMessage(player.getBukkitEntity(), packetplayincustompayload.a(), data); + try { + byte[] data = new byte[packetplayincustompayload.b().readableBytes()]; + packetplayincustompayload.b().readBytes(data); + server.getMessenger().dispatchIncomingMessage(player.getBukkitEntity(), packetplayincustompayload.a(), data); + } catch (Exception ex) { + PlayerConnection.c.error("Couldn\'t register custom payload", ex); + this.disconnect("Invalid custom payload!"); + } + // PandaSpigot end - Disconnect for payload errors } // CraftBukkit end // CraftBukkit start diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnectionUtils.java new file mode 100644 index 0000000..87c066c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -0,0 +1,15 @@ +package net.minecraft.server; + +public class PlayerConnectionUtils { + + public static void ensureMainThread(final Packet packet, final T packetlistener, IAsyncTaskHandler iasynctaskhandler) throws CancelledPacketHandleException { + if (!iasynctaskhandler.isMainThread()) { + iasynctaskhandler.postToMainThread(new Runnable() { + public void run() { + packet.a(packetlistener); + } + }); + throw CancelledPacketHandleException.INSTANCE; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerInteractManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerInteractManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerInteractManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PlayerInteractManager.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerInventory.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerInventory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerInventory.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PlayerInventory.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java similarity index 99% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java index 41f2cd5..39f90e3 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerList.java @@ -1,5 +1,6 @@ package net.minecraft.server; +import com.elevatemc.spigot.console.PandaConsoleCommandSender; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -11,7 +12,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; @@ -73,8 +73,7 @@ public abstract class PlayerList { public PlayerList(MinecraftServer minecraftserver) { this.cserver = minecraftserver.server = new CraftServer(minecraftserver, this); - minecraftserver.console = org.bukkit.craftbukkit.command.ColouredConsoleSender.getInstance(); - minecraftserver.reader.addCompleter(new org.bukkit.craftbukkit.command.ConsoleCommandCompleter(minecraftserver.server)); + minecraftserver.console = new PandaConsoleCommandSender(); // CraftBukkit end this.k = new GameProfileBanList(PlayerList.a); diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerListBox.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerListBox.java new file mode 100644 index 0000000..46a762a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerListBox.java @@ -0,0 +1,28 @@ +package net.minecraft.server; + +import java.util.Vector; +import javax.swing.JList; + +public class PlayerListBox extends JList implements IUpdatePlayerListBox { + + private MinecraftServer a; + private int b; + + public PlayerListBox(MinecraftServer minecraftserver) { + this.a = minecraftserver; + minecraftserver.a((IUpdatePlayerListBox) this); + } + + public void c() { + if (this.b++ % 20 == 0) { + Vector vector = new Vector(); + + for (int i = 0; i < this.a.getPlayerList().v().size(); ++i) { + vector.add(((EntityPlayer) this.a.getPlayerList().v().get(i)).getName()); + } + + this.setListData(vector); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerSelector.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerSelector.java new file mode 100644 index 0000000..7b48073 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerSelector.java @@ -0,0 +1,628 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.ComparisonChain; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PlayerSelector { + + private static final Pattern a = Pattern.compile("^@([pare])(?:\\[([\\w=,!-]*)\\])?$"); + private static final Pattern b = Pattern.compile("\\G([-!]?[\\w-]*)(?:$|,)"); + private static final Pattern c = Pattern.compile("\\G(\\w+)=([-!]?[\\w-]*)(?:$|,)"); + private static final Set d = Sets.newHashSet(new String[] { "x", "y", "z", "dx", "dy", "dz", "rm", "r"}); + + public static EntityPlayer getPlayer(ICommandListener icommandlistener, String s) { + return (EntityPlayer) getEntity(icommandlistener, s, EntityPlayer.class); + } + + public static T getEntity(ICommandListener icommandlistener, String s, Class oclass) { + List list = getPlayers(icommandlistener, s, oclass); + + return list.size() == 1 ? list.get(0) : null; + } + + public static IChatBaseComponent getPlayerNames(ICommandListener icommandlistener, String s) { + List list = getPlayers(icommandlistener, s, Entity.class); + + if (list.isEmpty()) { + return null; + } else { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + Entity entity = (Entity) iterator.next(); + + arraylist.add(entity.getScoreboardDisplayName()); + } + + return CommandAbstract.a(arraylist); + } + } + + public static List getPlayers(ICommandListener icommandlistener, String s, Class oclass) { + Matcher matcher = PlayerSelector.a.matcher(s); + + if (matcher.matches() && icommandlistener.a(1, "@")) { + Map map = c(matcher.group(2)); + + if (!b(icommandlistener, map)) { + return Collections.emptyList(); + } else { + String s1 = matcher.group(1); + BlockPosition blockposition = b(map, icommandlistener.getChunkCoordinates()); + List list = a(icommandlistener, map); + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + World world = (World) iterator.next(); + + if (world != null) { + ArrayList arraylist1 = Lists.newArrayList(); + + arraylist1.addAll(a(map, s1)); + arraylist1.addAll(b(map)); + arraylist1.addAll(c(map)); + arraylist1.addAll(d(map)); + arraylist1.addAll(e(map)); + arraylist1.addAll(f(map)); + arraylist1.addAll(a(map, blockposition)); + arraylist1.addAll(g(map)); + arraylist.addAll(a(map, oclass, (List) arraylist1, s1, world, blockposition)); + } + } + + return a((List) arraylist, map, icommandlistener, oclass, s1, blockposition); + } + } else { + return Collections.emptyList(); + } + } + + private static List a(ICommandListener icommandlistener, Map map) { + ArrayList arraylist = Lists.newArrayList(); + + if (h(map)) { + arraylist.add(icommandlistener.getWorld()); + } else { + Collections.addAll(arraylist, MinecraftServer.getServer().worldServer); + } + + return arraylist; + } + + private static boolean b(ICommandListener icommandlistener, Map map) { + String s = b(map, "type"); + + s = s != null && s.startsWith("!") ? s.substring(1) : s; + if (s != null && !EntityTypes.b(s)) { + ChatMessage chatmessage = new ChatMessage("commands.generic.entity.invalidType", new Object[] { s}); + + chatmessage.getChatModifier().setColor(EnumChatFormat.RED); + icommandlistener.sendMessage(chatmessage); + return false; + } else { + return true; + } + } + + private static List> a(Map map, String s) { + ArrayList arraylist = Lists.newArrayList(); + String s1 = b(map, "type"); + final boolean flag = s1 != null && s1.startsWith("!"); + + if (flag) { + s1 = s1.substring(1); + } + + boolean flag1 = !s.equals("e"); + boolean flag2 = s.equals("r") && s1 != null; + + if ((s1 == null || !s.equals("e")) && !flag2) { + if (flag1) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + return entity instanceof EntityHuman; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + } else { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + return EntityTypes.a(entity, s) != flag; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> b(Map map) { + ArrayList arraylist = Lists.newArrayList(); + final int i = a(map, "lm", -1); + final int j = a(map, "l", -1); + + if (i > -1 || j > -1) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + if (!(entity instanceof EntityPlayer)) { + return false; + } else { + EntityPlayer entityplayer = (EntityPlayer) entity; + + return (i <= -1 || entityplayer.expLevel >= i) && (j <= -1 || entityplayer.expLevel <= j); + } + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> c(Map map) { + ArrayList arraylist = Lists.newArrayList(); + final int i = a(map, "m", WorldSettings.EnumGamemode.NOT_SET.getId()); + + if (i != WorldSettings.EnumGamemode.NOT_SET.getId()) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + if (!(entity instanceof EntityPlayer)) { + return false; + } else { + EntityPlayer entityplayer = (EntityPlayer) entity; + + return entityplayer.playerInteractManager.getGameMode().getId() == i; + } + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> d(Map map) { + ArrayList arraylist = Lists.newArrayList(); + String s = b(map, "team"); + final boolean flag = s != null && s.startsWith("!"); + + if (flag) { + s = s.substring(1); + } + final String sFinal = s; // required to use in anonymous class below + + if (s != null) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + if (!(entity instanceof EntityLiving)) { + return false; + } else { + EntityLiving entityliving = (EntityLiving) entity; + ScoreboardTeamBase scoreboardteambase = entityliving.getScoreboardTeam(); + String s1 = scoreboardteambase == null ? "" : scoreboardteambase.getName(); + + return sFinal.equals(s1) != flag; + } + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> e(Map map) { + ArrayList arraylist = Lists.newArrayList(); + final Map map1 = a(map); + + if (map1 != null && map1.size() > 0) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + Scoreboard scoreboard = MinecraftServer.getServer().getWorldServer(0).getScoreboard(); + Iterator iterator = map.entrySet().iterator(); + + Entry entry; + boolean flag; + int i; + + do { + if (!iterator.hasNext()) { + return true; + } + + entry = (Entry) iterator.next(); + String s = (String) entry.getKey(); + + flag = false; + if (s.endsWith("_min") && s.length() > 4) { + flag = true; + s = s.substring(0, s.length() - 4); + } + + ScoreboardObjective scoreboardobjective = scoreboard.getObjective(s); + + if (scoreboardobjective == null) { + return false; + } + + String s1 = entity instanceof EntityPlayer ? entity.getName() : entity.getUniqueID().toString(); + + if (!scoreboard.b(s1, scoreboardobjective)) { + return false; + } + + ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(s1, scoreboardobjective); + + i = scoreboardscore.getScore(); + if (i < ((Integer) entry.getValue()).intValue() && flag) { + return false; + } + } while (i <= ((Integer) entry.getValue()).intValue() || flag); + + return false; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> f(Map map) { + ArrayList arraylist = Lists.newArrayList(); + String s = b(map, "name"); + final boolean flag = s != null && s.startsWith("!"); + + if (flag) { + s = s.substring(1); + } + final String sFinal = s; // required to use in anonymous class below + + if (s != null) { + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + return entity.getName().equals(sFinal) != flag; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> a(Map map, final BlockPosition blockposition) { + ArrayList arraylist = Lists.newArrayList(); + final int i = a(map, "rm", -1); + final int j = a(map, "r", -1); + + if (blockposition != null && (i >= 0 || j >= 0)) { + final int k = i * i; + final int l = j * j; + + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + int i1 = (int) entity.c(blockposition); + + return (j < 0 || i >= k) && (l < 0 || i <= i1); + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List> g(Map map) { + ArrayList arraylist = Lists.newArrayList(); + + if (map.containsKey("rym") || map.containsKey("ry")) { + final int k = a(a(map, "rym", 0)); + final int j = a(a(map, "ry", 359)); + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + int i = PlayerSelector.a((int) Math.floor((double) entity.yaw)); + + return j > k ? i >= j || i <= k : i >= j && i <= k; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + if (map.containsKey("rxm") || map.containsKey("rx")) { + final int k = a(a(map, "rxm", 0));; + final int j = a(a(map, "rx", 359)); + arraylist.add(new Predicate() { + public boolean a(Entity entity) { + int i = PlayerSelector.a((int) Math.floor((double) entity.pitch)); + + return j > k ? i >= j || i <= k : i >= j && i <= k; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }); + } + + return arraylist; + } + + private static List a(Map map, Class oclass, List> list, String s, World world, BlockPosition blockposition) { + ArrayList arraylist = Lists.newArrayList(); + String s1 = b(map, "type"); + + s1 = s1 != null && s1.startsWith("!") ? s1.substring(1) : s1; + boolean flag = !s.equals("e"); + boolean flag1 = s.equals("r") && s1 != null; + int i = a(map, "dx", 0); + int j = a(map, "dy", 0); + int k = a(map, "dz", 0); + int l = a(map, "r", -1); + Predicate predicate = Predicates.and(list); + Predicate predicate1 = Predicates.and(IEntitySelector.a, predicate); + + if (blockposition != null) { + int i1 = world.players.size(); + int j1 = world.entityList.size(); + boolean flag2 = i1 < j1 / 16; + final AxisAlignedBB axisalignedbb; + + if (!map.containsKey("dx") && !map.containsKey("dy") && !map.containsKey("dz")) { + if (l >= 0) { + axisalignedbb = new AxisAlignedBB((double) (blockposition.getX() - l), (double) (blockposition.getY() - l), (double) (blockposition.getZ() - l), (double) (blockposition.getX() + l + 1), (double) (blockposition.getY() + l + 1), (double) (blockposition.getZ() + l + 1)); + if (flag && flag2 && !flag1) { + arraylist.addAll(world.b(oclass, predicate1)); + } else { + arraylist.addAll(world.a(oclass, axisalignedbb, predicate1)); + } + } else if (s.equals("a")) { + arraylist.addAll(world.b(oclass, predicate)); + } else if (!s.equals("p") && (!s.equals("r") || flag1)) { + arraylist.addAll(world.a(oclass, predicate1)); + } else { + arraylist.addAll(world.b(oclass, predicate1)); + } + } else { + axisalignedbb = a(blockposition, i, j, k); + if (flag && flag2 && !flag1) { + Predicate predicate2 = new Predicate() { + public boolean a(Entity entity) { + return entity.locX >= axisalignedbb.a && entity.locY >= axisalignedbb.b && entity.locZ >= axisalignedbb.c ? entity.locX < axisalignedbb.d && entity.locY < axisalignedbb.e && entity.locZ < axisalignedbb.f : false; + } + + public boolean apply(Object object) { + return this.a((Entity) object); + } + }; + + arraylist.addAll(world.b(oclass, Predicates.and(predicate1, predicate2))); + } else { + arraylist.addAll(world.a(oclass, axisalignedbb, predicate1)); + } + } + } else if (s.equals("a")) { + arraylist.addAll(world.b(oclass, predicate)); + } else if (!s.equals("p") && (!s.equals("r") || flag1)) { + arraylist.addAll(world.a(oclass, predicate1)); + } else { + arraylist.addAll(world.b(oclass, predicate1)); + } + + return arraylist; + } + + private static List a(List list, Map map, ICommandListener icommandlistener, Class oclass, String s, final BlockPosition blockposition) { + int i = a(map, "c", !s.equals("a") && !s.equals("e") ? 1 : 0); + + if (!s.equals("p") && !s.equals("a") && !s.equals("e")) { + if (s.equals("r")) { + Collections.shuffle((List) list); + } + } else if (blockposition != null) { + Collections.sort((List) list, new Comparator() { + public int a(Entity entity, Entity entity1) { + return ComparisonChain.start().compare(entity.b(blockposition), entity1.b(blockposition)).result(); + } + + public int compare(Object object, Object object1) { + return this.a((Entity) object, (Entity) object1); + } + }); + } + + Entity entity = icommandlistener.f(); + + if (entity != null && oclass.isAssignableFrom(entity.getClass()) && i == 1 && ((List) list).contains(entity) && !"r".equals(s)) { + list = (List) Lists.newArrayList(entity); + } + + if (i != 0) { + if (i < 0) { + Collections.reverse((List) list); + } + + list = ((List) list).subList(0, Math.min(Math.abs(i), ((List) list).size())); + } + + return (List) list; + } + + private static AxisAlignedBB a(BlockPosition blockposition, int i, int j, int k) { + boolean flag = i < 0; + boolean flag1 = j < 0; + boolean flag2 = k < 0; + int l = blockposition.getX() + (flag ? i : 0); + int i1 = blockposition.getY() + (flag1 ? j : 0); + int j1 = blockposition.getZ() + (flag2 ? k : 0); + int k1 = blockposition.getX() + (flag ? 0 : i) + 1; + int l1 = blockposition.getY() + (flag1 ? 0 : j) + 1; + int i2 = blockposition.getZ() + (flag2 ? 0 : k) + 1; + + return new AxisAlignedBB((double) l, (double) i1, (double) j1, (double) k1, (double) l1, (double) i2); + } + + public static int a(int i) { + i %= 360; + if (i >= 160) { + i -= 360; + } + + if (i < 0) { + i += 360; + } + + return i; + } + + private static BlockPosition b(Map map, BlockPosition blockposition) { + return new BlockPosition(a(map, "x", blockposition.getX()), a(map, "y", blockposition.getY()), a(map, "z", blockposition.getZ())); + } + + private static boolean h(Map map) { + Iterator iterator = PlayerSelector.d.iterator(); + + String s; + + do { + if (!iterator.hasNext()) { + return false; + } + + s = (String) iterator.next(); + } while (!map.containsKey(s)); + + return true; + } + + private static int a(Map map, String s, int i) { + return map.containsKey(s) ? MathHelper.a((String) map.get(s), i) : i; + } + + private static String b(Map map, String s) { + return (String) map.get(s); + } + + public static Map a(Map map) { + HashMap hashmap = Maps.newHashMap(); + Iterator iterator = map.keySet().iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + + if (s.startsWith("score_") && s.length() > "score_".length()) { + hashmap.put(s.substring("score_".length()), Integer.valueOf(MathHelper.a((String) map.get(s), 1))); + } + } + + return hashmap; + } + + public static boolean isList(String s) { + Matcher matcher = PlayerSelector.a.matcher(s); + + if (!matcher.matches()) { + return false; + } else { + Map map = c(matcher.group(2)); + String s1 = matcher.group(1); + int i = !"a".equals(s1) && !"e".equals(s1) ? 1 : 0; + + return a(map, "c", i) != 1; + } + } + + public static boolean isPattern(String s) { + return PlayerSelector.a.matcher(s).matches(); + } + + private static Map c(String s) { + HashMap hashmap = Maps.newHashMap(); + + if (s == null) { + return hashmap; + } else { + int i = 0; + int j = -1; + + for (Matcher matcher = PlayerSelector.b.matcher(s); matcher.find(); j = matcher.end()) { + String s1 = null; + + switch (i++) { + case 0: + s1 = "x"; + break; + + case 1: + s1 = "y"; + break; + + case 2: + s1 = "z"; + break; + + case 3: + s1 = "r"; + } + + if (s1 != null && matcher.group(1).length() > 0) { + hashmap.put(s1, matcher.group(1)); + } + } + + if (j < s.length()) { + Matcher matcher1 = PlayerSelector.c.matcher(j == -1 ? s : s.substring(j)); + + while (matcher1.find()) { + hashmap.put(matcher1.group(1), matcher1.group(2)); + } + } + + return hashmap; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PortalTravelAgent.java b/eSpigot-Server/src/main/java/net/minecraft/server/PortalTravelAgent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PortalTravelAgent.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PortalTravelAgent.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Position.java b/eSpigot-Server/src/main/java/net/minecraft/server/Position.java new file mode 100644 index 0000000..6c40cc1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Position.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public class Position implements IPosition { + + protected final double a; + protected final double b; + protected final double c; + + public Position(double d0, double d1, double d2) { + this.a = d0; + this.b = d1; + this.c = d2; + } + + public double getX() { + return this.a; + } + + public double getY() { + return this.b; + } + + public double getZ() { + return this.c; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PossibleFishingResult.java b/eSpigot-Server/src/main/java/net/minecraft/server/PossibleFishingResult.java new file mode 100644 index 0000000..2e7f861 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PossibleFishingResult.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +import java.util.Random; + +public class PossibleFishingResult extends WeightedRandom.WeightedRandomChoice { + + private final ItemStack b; + private float c; + private boolean d; + + public PossibleFishingResult(ItemStack itemstack, int i) { + super(i); + this.b = itemstack; + } + + public ItemStack a(Random random) { + ItemStack itemstack = this.b.cloneItemStack(); + + if (this.c > 0.0F) { + int i = (int) (this.c * (float) this.b.j()); + int j = itemstack.j() - random.nextInt(random.nextInt(i) + 1); + + if (j > i) { + j = i; + } + + if (j < 1) { + j = 1; + } + + itemstack.setData(j); + } + + if (this.d) { + EnchantmentManager.a(random, itemstack, 30); + } + + return itemstack; + } + + public PossibleFishingResult a(float f) { + this.c = f; + return this; + } + + public PossibleFishingResult a() { + this.d = true; + return this; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PotionBrewer.java b/eSpigot-Server/src/main/java/net/minecraft/server/PotionBrewer.java new file mode 100644 index 0000000..a6bf653 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PotionBrewer.java @@ -0,0 +1,456 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class PotionBrewer { + + public static final String a = null; + public static final String b; + public static final String c = "+0-1-2-3&4-4+13"; + public static final String d; + public static final String e; + public static final String f; + public static final String g; + public static final String h; + public static final String i; + public static final String j; + public static final String k; + public static final String l; + public static final String m; + public static final String n; + private static final Map effectDurations = Maps.newHashMap(); + private static final Map effectAmplifiers = Maps.newHashMap(); + private static final Map q; + private static final String[] appearances; + + public static boolean a(int i, int j) { + return (i & 1 << j) != 0; + } + + private static int c(int i, int j) { + return a(i, j) ? 1 : 0; + } + + private static int d(int i, int j) { + return a(i, j) ? 0 : 1; + } + + public static int a(int i) { + return a(i, 5, 4, 3, 2, 1); + } + + public static int a(Collection collection) { + int i = 3694022; + + if (collection != null && !collection.isEmpty()) { + float f = 0.0F; + float f1 = 0.0F; + float f2 = 0.0F; + float f3 = 0.0F; + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + MobEffect mobeffect = (MobEffect) iterator.next(); + + if (mobeffect.isShowParticles()) { + int j = MobEffectList.byId[mobeffect.getEffectId()].k(); + + for (int k = 0; k <= mobeffect.getAmplifier(); ++k) { + f += (float) (j >> 16 & 255) / 255.0F; + f1 += (float) (j >> 8 & 255) / 255.0F; + f2 += (float) (j >> 0 & 255) / 255.0F; + ++f3; + } + } + } + + if (f3 == 0.0F) { + return 0; + } else { + f = f / f3 * 255.0F; + f1 = f1 / f3 * 255.0F; + f2 = f2 / f3 * 255.0F; + return (int) f << 16 | (int) f1 << 8 | (int) f2; + } + } else { + return i; + } + } + + public static boolean b(Collection collection) { + Iterator iterator = collection.iterator(); + + MobEffect mobeffect; + + do { + if (!iterator.hasNext()) { + return true; + } + + mobeffect = (MobEffect) iterator.next(); + } while (mobeffect.isAmbient()); + + return false; + } + + public static String c(int i) { + int j = a(i); + + return PotionBrewer.appearances[j]; + } + + private static int a(boolean flag, boolean flag1, boolean flag2, int i, int j, int k, int l) { + int i1 = 0; + + if (flag) { + i1 = d(l, j); + } else if (i != -1) { + if (i == 0 && h(l) == j) { + i1 = 1; + } else if (i == 1 && h(l) > j) { + i1 = 1; + } else if (i == 2 && h(l) < j) { + i1 = 1; + } + } else { + i1 = c(l, j); + } + + if (flag1) { + i1 *= k; + } + + if (flag2) { + i1 *= -1; + } + + return i1; + } + + private static int h(int i) { + int j; + + for (j = 0; i > 0; ++j) { + i &= i - 1; + } + + return j; + } + + private static int a(String s, int i, int j, int k) { + if (i < s.length() && j >= 0 && i < j) { + int l = s.indexOf(124, i); + int i1; + int j1; + + if (l >= 0 && l < j) { + i1 = a(s, i, l - 1, k); + if (i1 > 0) { + return i1; + } else { + j1 = a(s, l + 1, j, k); + return j1 > 0 ? j1 : 0; + } + } else { + i1 = s.indexOf(38, i); + if (i1 >= 0 && i1 < j) { + j1 = a(s, i, i1 - 1, k); + if (j1 <= 0) { + return 0; + } else { + int k1 = a(s, i1 + 1, j, k); + + return k1 <= 0 ? 0 : (j1 > k1 ? j1 : k1); + } + } else { + boolean flag = false; + boolean flag1 = false; + boolean flag2 = false; + boolean flag3 = false; + boolean flag4 = false; + byte b0 = -1; + int l1 = 0; + int i2 = 0; + int j2 = 0; + + for (int k2 = i; k2 < j; ++k2) { + char c0 = s.charAt(k2); + + if (c0 >= 48 && c0 <= 57) { + if (flag) { + i2 = c0 - 48; + flag1 = true; + } else { + l1 *= 10; + l1 += c0 - 48; + flag2 = true; + } + } else if (c0 == 42) { + flag = true; + } else if (c0 == 33) { + if (flag2) { + j2 += a(flag3, flag1, flag4, b0, l1, i2, k); + flag3 = false; + flag4 = false; + flag = false; + flag1 = false; + flag2 = false; + i2 = 0; + l1 = 0; + b0 = -1; + } + + flag3 = true; + } else if (c0 == 45) { + if (flag2) { + j2 += a(flag3, flag1, flag4, b0, l1, i2, k); + flag3 = false; + flag4 = false; + flag = false; + flag1 = false; + flag2 = false; + i2 = 0; + l1 = 0; + b0 = -1; + } + + flag4 = true; + } else if (c0 != 61 && c0 != 60 && c0 != 62) { + if (c0 == 43 && flag2) { + j2 += a(flag3, flag1, flag4, b0, l1, i2, k); + flag3 = false; + flag4 = false; + flag = false; + flag1 = false; + flag2 = false; + i2 = 0; + l1 = 0; + b0 = -1; + } + } else { + if (flag2) { + j2 += a(flag3, flag1, flag4, b0, l1, i2, k); + flag3 = false; + flag4 = false; + flag = false; + flag1 = false; + flag2 = false; + i2 = 0; + l1 = 0; + b0 = -1; + } + + if (c0 == 61) { + b0 = 0; + } else if (c0 == 60) { + b0 = 2; + } else if (c0 == 62) { + b0 = 1; + } + } + } + + if (flag2) { + j2 += a(flag3, flag1, flag4, b0, l1, i2, k); + } + + return j2; + } + } + } else { + return 0; + } + } + + public static List getEffects(int i, boolean flag) { + ArrayList arraylist = null; + MobEffectList[] amobeffectlist = MobEffectList.byId; + int j = amobeffectlist.length; + + for (int k = 0; k < j; ++k) { + MobEffectList mobeffectlist = amobeffectlist[k]; + + if (mobeffectlist != null && (!mobeffectlist.j() || flag)) { + String s = (String) PotionBrewer.effectDurations.get(Integer.valueOf(mobeffectlist.getId())); + + if (s != null) { + int l = a(s, 0, s.length(), i); + + if (l > 0) { + int i1 = 0; + String s1 = (String) PotionBrewer.effectAmplifiers.get(Integer.valueOf(mobeffectlist.getId())); + + if (s1 != null) { + i1 = a(s1, 0, s1.length(), i); + if (i1 < 0) { + i1 = 0; + } + } + + if (mobeffectlist.isInstant()) { + l = 1; + } else { + l = 1200 * (l * 3 + (l - 1) * 2); + l >>= i1; + l = (int) Math.round((double) l * mobeffectlist.getDurationModifier()); + if ((i & 16384) != 0) { + l = (int) Math.round((double) l * 0.75D + 0.5D); + } + } + + if (arraylist == null) { + arraylist = Lists.newArrayList(); + } + + MobEffect mobeffect = new MobEffect(mobeffectlist.getId(), l, i1); + + if ((i & 16384) != 0) { + mobeffect.setSplash(true); + } + + arraylist.add(mobeffect); + } + } + } + } + + return arraylist; + } + + private static int a(int i, int j, boolean flag, boolean flag1, boolean flag2) { + if (flag2) { + if (!a(i, j)) { + return 0; + } + } else if (flag) { + i &= ~(1 << j); + } else if (flag1) { + if ((i & 1 << j) == 0) { + i |= 1 << j; + } else { + i &= ~(1 << j); + } + } else { + i |= 1 << j; + } + + return i; + } + + public static int a(int i, String s) { + byte b0 = 0; + int j = s.length(); + boolean flag = false; + boolean flag1 = false; + boolean flag2 = false; + boolean flag3 = false; + int k = 0; + + for (int l = b0; l < j; ++l) { + char c0 = s.charAt(l); + + if (c0 >= 48 && c0 <= 57) { + k *= 10; + k += c0 - 48; + flag = true; + } else if (c0 == 33) { + if (flag) { + i = a(i, k, flag2, flag1, flag3); + flag3 = false; + flag1 = false; + flag2 = false; + flag = false; + k = 0; + } + + flag1 = true; + } else if (c0 == 45) { + if (flag) { + i = a(i, k, flag2, flag1, flag3); + flag3 = false; + flag1 = false; + flag2 = false; + flag = false; + k = 0; + } + + flag2 = true; + } else if (c0 == 43) { + if (flag) { + i = a(i, k, flag2, flag1, flag3); + flag3 = false; + flag1 = false; + flag2 = false; + flag = false; + k = 0; + } + } else if (c0 == 38) { + if (flag) { + i = a(i, k, flag2, flag1, flag3); + flag3 = false; + flag1 = false; + flag2 = false; + flag = false; + k = 0; + } + + flag3 = true; + } + } + + if (flag) { + i = a(i, k, flag2, flag1, flag3); + } + + return i & 32767; + } + + public static int a(int i, int j, int k, int l, int i1, int j1) { + return (a(i, j) ? 16 : 0) | (a(i, k) ? 8 : 0) | (a(i, l) ? 4 : 0) | (a(i, i1) ? 2 : 0) | (a(i, j1) ? 1 : 0); + } + + static { + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.REGENERATION.getId()), "0 & !1 & !2 & !3 & 0+6"); + b = "-0+1-2-3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.FASTER_MOVEMENT.getId()), "!0 & 1 & !2 & !3 & 1+6"); + h = "+0+1-2-3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.FIRE_RESISTANCE.getId()), "0 & 1 & !2 & !3 & 0+6"); + f = "+0-1+2-3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.HEAL.getId()), "0 & !1 & 2 & !3"); + d = "-0-1+2-3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.POISON.getId()), "!0 & !1 & 2 & !3 & 2+6"); + e = "-0+3-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.WEAKNESS.getId()), "!0 & !1 & !2 & 3 & 3+6"); + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.HARM.getId()), "!0 & !1 & 2 & 3"); + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.SLOWER_MOVEMENT.getId()), "!0 & 1 & !2 & 3 & 3+6"); + g = "+0-1-2+3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.INCREASE_DAMAGE.getId()), "0 & !1 & !2 & 3 & 3+6"); + l = "-0+1+2-3+13&4-4"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.NIGHT_VISION.getId()), "!0 & 1 & 2 & !3 & 2+6"); + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.INVISIBILITY.getId()), "!0 & 1 & 2 & 3 & 2+6"); + m = "+0-1+2+3+13&4-4"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.WATER_BREATHING.getId()), "0 & !1 & 2 & 3 & 2+6"); + n = "+0+1-2+3&4-4+13"; + PotionBrewer.effectDurations.put(Integer.valueOf(MobEffectList.JUMP.getId()), "0 & 1 & !2 & 3 & 3+6"); + j = "+5-6-7"; + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.FASTER_MOVEMENT.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.FASTER_DIG.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.INCREASE_DAMAGE.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.REGENERATION.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.HARM.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.HEAL.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.RESISTANCE.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.POISON.getId()), "5"); + PotionBrewer.effectAmplifiers.put(Integer.valueOf(MobEffectList.JUMP.getId()), "5"); + i = "-5+6-7"; + k = "+14&13-13"; + q = Maps.newHashMap(); + appearances = new String[] { "potion.prefix.mundane", "potion.prefix.uninteresting", "potion.prefix.bland", "potion.prefix.clear", "potion.prefix.milky", "potion.prefix.diffuse", "potion.prefix.artless", "potion.prefix.thin", "potion.prefix.awkward", "potion.prefix.flat", "potion.prefix.bulky", "potion.prefix.bungling", "potion.prefix.buttered", "potion.prefix.smooth", "potion.prefix.suave", "potion.prefix.debonair", "potion.prefix.thick", "potion.prefix.elegant", "potion.prefix.fancy", "potion.prefix.charming", "potion.prefix.dashing", "potion.prefix.refined", "potion.prefix.cordial", "potion.prefix.sparkling", "potion.prefix.potent", "potion.prefix.foul", "potion.prefix.odorless", "potion.prefix.rank", "potion.prefix.harsh", "potion.prefix.acrid", "potion.prefix.gross", "potion.prefix.stinky"}; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/PropertyManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/PropertyManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/PropertyManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/PropertyManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RandomPositionGenerator.java b/eSpigot-Server/src/main/java/net/minecraft/server/RandomPositionGenerator.java new file mode 100644 index 0000000..17fe75f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RandomPositionGenerator.java @@ -0,0 +1,88 @@ +package net.minecraft.server; + +import java.util.Random; + +public class RandomPositionGenerator { + + private static Vec3D a = new Vec3D(0.0D, 0.0D, 0.0D); + + public static Vec3D a(EntityCreature entitycreature, int i, int j) { + return c(entitycreature, i, j, (Vec3D) null); + } + + public static Vec3D a(EntityCreature entitycreature, int i, int j, Vec3D vec3d) { + RandomPositionGenerator.a = vec3d.a(entitycreature.locX, entitycreature.locY, entitycreature.locZ); + return c(entitycreature, i, j, RandomPositionGenerator.a); + } + + public static Vec3D b(EntityCreature entitycreature, int i, int j, Vec3D vec3d) { + RandomPositionGenerator.a = (new Vec3D(entitycreature.locX, entitycreature.locY, entitycreature.locZ)).d(vec3d); + return c(entitycreature, i, j, RandomPositionGenerator.a); + } + + private static Vec3D c(EntityCreature entitycreature, int i, int j, Vec3D vec3d) { + Random random = entitycreature.bc(); + boolean flag = false; + int k = 0; + int l = 0; + int i1 = 0; + float f = -99999.0F; + boolean flag1; + + if (entitycreature.ck()) { + double d0 = entitycreature.ch().c((double) MathHelper.floor(entitycreature.locX), (double) MathHelper.floor(entitycreature.locY), (double) MathHelper.floor(entitycreature.locZ)) + 4.0D; + double d1 = (double) (entitycreature.ci() + (float) i); + + flag1 = d0 < d1 * d1; + } else { + flag1 = false; + } + + for (int j1 = 0; j1 < 10; ++j1) { + int k1 = random.nextInt(2 * i + 1) - i; + int l1 = random.nextInt(2 * j + 1) - j; + int i2 = random.nextInt(2 * i + 1) - i; + + if (vec3d == null || (double) k1 * vec3d.a + (double) i2 * vec3d.c >= 0.0D) { + BlockPosition blockposition; + + if (entitycreature.ck() && i > 1) { + blockposition = entitycreature.ch(); + if (entitycreature.locX > (double) blockposition.getX()) { + k1 -= random.nextInt(i / 2); + } else { + k1 += random.nextInt(i / 2); + } + + if (entitycreature.locZ > (double) blockposition.getZ()) { + i2 -= random.nextInt(i / 2); + } else { + i2 += random.nextInt(i / 2); + } + } + + k1 += MathHelper.floor(entitycreature.locX); + l1 += MathHelper.floor(entitycreature.locY); + i2 += MathHelper.floor(entitycreature.locZ); + blockposition = new BlockPosition(k1, l1, i2); + if (!flag1 || entitycreature.e(blockposition)) { + float f1 = entitycreature.a(blockposition); + + if (f1 > f) { + f = f1; + k = k1; + l = l1; + i1 = i2; + flag = true; + } + } + } + } + + if (flag) { + return new Vec3D((double) k, (double) l, (double) i1); + } else { + return null; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeArmorDye.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeArmorDye.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeArmorDye.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipeArmorDye.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeBookClone.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeBookClone.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeBookClone.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipeBookClone.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeFireworks.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeFireworks.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeFireworks.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipeFireworks.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipeIngots.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeIngots.java new file mode 100644 index 0000000..01c8bfd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeIngots.java @@ -0,0 +1,23 @@ +package net.minecraft.server; + +public class RecipeIngots { + + private Object[][] a; + + public RecipeIngots() { + this.a = new Object[][] { { Blocks.GOLD_BLOCK, new ItemStack(Items.GOLD_INGOT, 9)}, { Blocks.IRON_BLOCK, new ItemStack(Items.IRON_INGOT, 9)}, { Blocks.DIAMOND_BLOCK, new ItemStack(Items.DIAMOND, 9)}, { Blocks.EMERALD_BLOCK, new ItemStack(Items.EMERALD, 9)}, { Blocks.LAPIS_BLOCK, new ItemStack(Items.DYE, 9, EnumColor.BLUE.getInvColorIndex())}, { Blocks.REDSTONE_BLOCK, new ItemStack(Items.REDSTONE, 9)}, { Blocks.COAL_BLOCK, new ItemStack(Items.COAL, 9, 0)}, { Blocks.HAY_BLOCK, new ItemStack(Items.WHEAT, 9)}, { Blocks.SLIME, new ItemStack(Items.SLIME, 9)}}; + } + + public void a(CraftingManager craftingmanager) { + for (int i = 0; i < this.a.length; ++i) { + Block block = (Block) this.a[i][0]; + ItemStack itemstack = (ItemStack) this.a[i][1]; + + craftingmanager.registerShapedRecipe(new ItemStack(block), new Object[] { "###", "###", "###", Character.valueOf('#'), itemstack}); + craftingmanager.registerShapedRecipe(itemstack, new Object[] { "#", Character.valueOf('#'), block}); + } + + craftingmanager.registerShapedRecipe(new ItemStack(Items.GOLD_INGOT), new Object[] { "###", "###", "###", Character.valueOf('#'), Items.GOLD_NUGGET}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.GOLD_NUGGET, 9), new Object[] { "#", Character.valueOf('#'), Items.GOLD_INGOT}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeMapClone.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeMapClone.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeMapClone.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipeMapClone.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipeMapExtend.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeMapExtend.java new file mode 100644 index 0000000..accac7a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeMapExtend.java @@ -0,0 +1,53 @@ +package net.minecraft.server; + +public class RecipeMapExtend extends ShapedRecipes { + + public RecipeMapExtend() { + super(3, 3, new ItemStack[] { new ItemStack(Items.PAPER), new ItemStack(Items.PAPER), new ItemStack(Items.PAPER), new ItemStack(Items.PAPER), new ItemStack(Items.FILLED_MAP, 0, 32767), new ItemStack(Items.PAPER), new ItemStack(Items.PAPER), new ItemStack(Items.PAPER), new ItemStack(Items.PAPER)}, new ItemStack(Items.MAP, 0, 0)); + } + + public boolean a(InventoryCrafting inventorycrafting, World world) { + if (!super.a(inventorycrafting, world)) { + return false; + } else { + ItemStack itemstack = null; + + for (int i = 0; i < inventorycrafting.getSize() && itemstack == null; ++i) { + ItemStack itemstack1 = inventorycrafting.getItem(i); + + if (itemstack1 != null && itemstack1.getItem() == Items.FILLED_MAP) { + itemstack = itemstack1; + } + } + + if (itemstack == null) { + return false; + } else { + WorldMap worldmap = Items.FILLED_MAP.getSavedMap(itemstack, world); + + return worldmap == null ? false : worldmap.scale < 4; + } + } + } + + public ItemStack craftItem(InventoryCrafting inventorycrafting) { + ItemStack itemstack = null; + + for (int i = 0; i < inventorycrafting.getSize() && itemstack == null; ++i) { + ItemStack itemstack1 = inventorycrafting.getItem(i); + + if (itemstack1 != null && itemstack1.getItem() == Items.FILLED_MAP) { + itemstack = itemstack1; + } + } + + itemstack = itemstack.cloneItemStack(); + itemstack.count = 1; + if (itemstack.getTag() == null) { + itemstack.setTag(new NBTTagCompound()); + } + + itemstack.getTag().setBoolean("map_is_scaling", true); + return itemstack; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeRepair.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipeRepair.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipeRepair.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipeRepair.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesArmor.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesArmor.java new file mode 100644 index 0000000..e922f16 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesArmor.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +public class RecipesArmor { + + private String[][] a = new String[][] { { "XXX", "X X"}, { "X X", "XXX", "XXX"}, { "XXX", "X X", "X X"}, { "X X", "X X"}}; + private Item[][] b; + + public RecipesArmor() { + this.b = new Item[][] { { Items.LEATHER, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT}, { Items.LEATHER_HELMET, Items.IRON_HELMET, Items.DIAMOND_HELMET, Items.GOLDEN_HELMET}, { Items.LEATHER_CHESTPLATE, Items.IRON_CHESTPLATE, Items.DIAMOND_CHESTPLATE, Items.GOLDEN_CHESTPLATE}, { Items.LEATHER_LEGGINGS, Items.IRON_LEGGINGS, Items.DIAMOND_LEGGINGS, Items.GOLDEN_LEGGINGS}, { Items.LEATHER_BOOTS, Items.IRON_BOOTS, Items.DIAMOND_BOOTS, Items.GOLDEN_BOOTS}}; + } + + public void a(CraftingManager craftingmanager) { + for (int i = 0; i < this.b[0].length; ++i) { + Item item = this.b[0][i]; + + for (int j = 0; j < this.b.length - 1; ++j) { + Item item1 = this.b[j + 1][i]; + + craftingmanager.registerShapedRecipe(new ItemStack(item1), new Object[] { this.a[j], Character.valueOf('X'), item}); + } + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipesBanner.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesBanner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipesBanner.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipesBanner.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesCrafting.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesCrafting.java new file mode 100644 index 0000000..e64aebe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesCrafting.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +public class RecipesCrafting { + + public RecipesCrafting() {} + + public void a(CraftingManager craftingmanager) { + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.CHEST), new Object[] { "###", "# #", "###", Character.valueOf('#'), Blocks.PLANKS}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.TRAPPED_CHEST), new Object[] { "#-", Character.valueOf('#'), Blocks.CHEST, Character.valueOf('-'), Blocks.TRIPWIRE_HOOK}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.ENDER_CHEST), new Object[] { "###", "#E#", "###", Character.valueOf('#'), Blocks.OBSIDIAN, Character.valueOf('E'), Items.ENDER_EYE}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.FURNACE), new Object[] { "###", "# #", "###", Character.valueOf('#'), Blocks.COBBLESTONE}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.CRAFTING_TABLE), new Object[] { "##", "##", Character.valueOf('#'), Blocks.PLANKS}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.SANDSTONE), new Object[] { "##", "##", Character.valueOf('#'), new ItemStack(Blocks.SAND, 1, BlockSand.EnumSandVariant.SAND.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.RED_SANDSTONE), new Object[] { "##", "##", Character.valueOf('#'), new ItemStack(Blocks.SAND, 1, BlockSand.EnumSandVariant.RED_SAND.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.SANDSTONE, 4, BlockSandStone.EnumSandstoneVariant.SMOOTH.a()), new Object[] { "##", "##", Character.valueOf('#'), new ItemStack(Blocks.SANDSTONE, 1, BlockSandStone.EnumSandstoneVariant.DEFAULT.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.RED_SANDSTONE, 4, BlockRedSandstone.EnumRedSandstoneVariant.SMOOTH.a()), new Object[] { "##", "##", Character.valueOf('#'), new ItemStack(Blocks.RED_SANDSTONE, 1, BlockRedSandstone.EnumRedSandstoneVariant.DEFAULT.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.SANDSTONE, 1, BlockSandStone.EnumSandstoneVariant.CHISELED.a()), new Object[] { "#", "#", Character.valueOf('#'), new ItemStack(Blocks.STONE_SLAB, 1, BlockDoubleStepAbstract.EnumStoneSlabVariant.SAND.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.RED_SANDSTONE, 1, BlockRedSandstone.EnumRedSandstoneVariant.CHISELED.a()), new Object[] { "#", "#", Character.valueOf('#'), new ItemStack(Blocks.STONE_SLAB2, 1, BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.RED_SANDSTONE.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.QUARTZ_BLOCK, 1, BlockQuartz.EnumQuartzVariant.CHISELED.a()), new Object[] { "#", "#", Character.valueOf('#'), new ItemStack(Blocks.STONE_SLAB, 1, BlockDoubleStepAbstract.EnumStoneSlabVariant.QUARTZ.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.QUARTZ_BLOCK, 2, BlockQuartz.EnumQuartzVariant.LINES_Y.a()), new Object[] { "#", "#", Character.valueOf('#'), new ItemStack(Blocks.QUARTZ_BLOCK, 1, BlockQuartz.EnumQuartzVariant.DEFAULT.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONEBRICK, 4), new Object[] { "##", "##", Character.valueOf('#'), new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.STONE.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONEBRICK, 1, BlockSmoothBrick.P), new Object[] { "#", "#", Character.valueOf('#'), new ItemStack(Blocks.STONE_SLAB, 1, BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Blocks.STONEBRICK, 1, BlockSmoothBrick.N), new Object[] { Blocks.STONEBRICK, Blocks.VINE}); + craftingmanager.registerShapelessRecipe(new ItemStack(Blocks.MOSSY_COBBLESTONE, 1), new Object[] { Blocks.COBBLESTONE, Blocks.VINE}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.IRON_BARS, 16), new Object[] { "###", "###", Character.valueOf('#'), Items.IRON_INGOT}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.GLASS_PANE, 16), new Object[] { "###", "###", Character.valueOf('#'), Blocks.GLASS}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.REDSTONE_LAMP, 1), new Object[] { " R ", "RGR", " R ", Character.valueOf('R'), Items.REDSTONE, Character.valueOf('G'), Blocks.GLOWSTONE}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.BEACON, 1), new Object[] { "GGG", "GSG", "OOO", Character.valueOf('G'), Blocks.GLASS, Character.valueOf('S'), Items.NETHER_STAR, Character.valueOf('O'), Blocks.OBSIDIAN}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.NETHER_BRICK, 1), new Object[] { "NN", "NN", Character.valueOf('N'), Items.NETHERBRICK}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONE, 2, BlockStone.EnumStoneVariant.DIORITE.a()), new Object[] { "CQ", "QC", Character.valueOf('C'), Blocks.COBBLESTONE, Character.valueOf('Q'), Items.QUARTZ}); + craftingmanager.registerShapelessRecipe(new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.GRANITE.a()), new Object[] { new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.DIORITE.a()), Items.QUARTZ}); + craftingmanager.registerShapelessRecipe(new ItemStack(Blocks.STONE, 2, BlockStone.EnumStoneVariant.ANDESITE.a()), new Object[] { new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.DIORITE.a()), Blocks.COBBLESTONE}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.DIRT, 4, BlockDirt.EnumDirtVariant.COARSE_DIRT.a()), new Object[] { "DG", "GD", Character.valueOf('D'), new ItemStack(Blocks.DIRT, 1, BlockDirt.EnumDirtVariant.DIRT.a()), Character.valueOf('G'), Blocks.GRAVEL}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONE, 4, BlockStone.EnumStoneVariant.DIORITE_SMOOTH.a()), new Object[] { "SS", "SS", Character.valueOf('S'), new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.DIORITE.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONE, 4, BlockStone.EnumStoneVariant.GRANITE_SMOOTH.a()), new Object[] { "SS", "SS", Character.valueOf('S'), new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.GRANITE.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STONE, 4, BlockStone.EnumStoneVariant.ANDESITE_SMOOTH.a()), new Object[] { "SS", "SS", Character.valueOf('S'), new ItemStack(Blocks.STONE, 1, BlockStone.EnumStoneVariant.ANDESITE.a())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.PRISMARINE, 1, BlockPrismarine.b), new Object[] { "SS", "SS", Character.valueOf('S'), Items.PRISMARINE_SHARD}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.PRISMARINE, 1, BlockPrismarine.N), new Object[] { "SSS", "SSS", "SSS", Character.valueOf('S'), Items.PRISMARINE_SHARD}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.PRISMARINE, 1, BlockPrismarine.O), new Object[] { "SSS", "SIS", "SSS", Character.valueOf('S'), Items.PRISMARINE_SHARD, Character.valueOf('I'), new ItemStack(Items.DYE, 1, EnumColor.BLACK.getInvColorIndex())}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.SEA_LANTERN, 1, 0), new Object[] { "SCS", "CCC", "SCS", Character.valueOf('S'), Items.PRISMARINE_SHARD, Character.valueOf('C'), Items.PRISMARINE_CRYSTALS}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesDyes.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesDyes.java new file mode 100644 index 0000000..48a08c1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesDyes.java @@ -0,0 +1,50 @@ +package net.minecraft.server; + +public class RecipesDyes { + + public RecipesDyes() {} + + public void a(CraftingManager craftingmanager) { + int i; + + for (i = 0; i < 16; ++i) { + craftingmanager.registerShapelessRecipe(new ItemStack(Blocks.WOOL, 1, i), new Object[] { new ItemStack(Items.DYE, 1, 15 - i), new ItemStack(Item.getItemOf(Blocks.WOOL), 1, 0)}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STAINED_HARDENED_CLAY, 8, 15 - i), new Object[] { "###", "#X#", "###", Character.valueOf('#'), new ItemStack(Blocks.HARDENED_CLAY), Character.valueOf('X'), new ItemStack(Items.DYE, 1, i)}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STAINED_GLASS, 8, 15 - i), new Object[] { "###", "#X#", "###", Character.valueOf('#'), new ItemStack(Blocks.GLASS), Character.valueOf('X'), new ItemStack(Items.DYE, 1, i)}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.STAINED_GLASS_PANE, 16, i), new Object[] { "###", "###", Character.valueOf('#'), new ItemStack(Blocks.STAINED_GLASS, 1, i)}); + } + + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.YELLOW.getInvColorIndex()), new Object[] { new ItemStack(Blocks.YELLOW_FLOWER, 1, BlockFlowers.EnumFlowerVarient.DANDELION.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.POPPY.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 3, EnumColor.WHITE.getInvColorIndex()), new Object[] { Items.BONE}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.PINK.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.ORANGE.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.YELLOW.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.LIME.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.GREEN.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.GRAY.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLACK.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.SILVER.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.GRAY.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 3, EnumColor.SILVER.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLACK.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.LIGHT_BLUE.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLUE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.CYAN.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLUE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.GREEN.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.PURPLE.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLUE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.MAGENTA.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.PURPLE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.PINK.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 3, EnumColor.MAGENTA.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLUE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.PINK.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 4, EnumColor.MAGENTA.getInvColorIndex()), new Object[] { new ItemStack(Items.DYE, 1, EnumColor.BLUE.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new ItemStack(Items.DYE, 1, EnumColor.WHITE.getInvColorIndex())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.LIGHT_BLUE.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.BLUE_ORCHID.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.MAGENTA.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.ALLIUM.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.SILVER.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.HOUSTONIA.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.RED.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.RED_TULIP.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.ORANGE.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.ORANGE_TULIP.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.SILVER.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.WHITE_TULIP.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.PINK.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.PINK_TULIP.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 1, EnumColor.SILVER.getInvColorIndex()), new Object[] { new ItemStack(Blocks.RED_FLOWER, 1, BlockFlowers.EnumFlowerVarient.OXEYE_DAISY.b())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.YELLOW.getInvColorIndex()), new Object[] { new ItemStack(Blocks.DOUBLE_PLANT, 1, BlockTallPlant.EnumTallFlowerVariants.SUNFLOWER.a())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.MAGENTA.getInvColorIndex()), new Object[] { new ItemStack(Blocks.DOUBLE_PLANT, 1, BlockTallPlant.EnumTallFlowerVariants.SYRINGA.a())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.RED.getInvColorIndex()), new Object[] { new ItemStack(Blocks.DOUBLE_PLANT, 1, BlockTallPlant.EnumTallFlowerVariants.ROSE.a())}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.DYE, 2, EnumColor.PINK.getInvColorIndex()), new Object[] { new ItemStack(Blocks.DOUBLE_PLANT, 1, BlockTallPlant.EnumTallFlowerVariants.PAEONIA.a())}); + + for (i = 0; i < 16; ++i) { + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.CARPET, 3, i), new Object[] { "##", Character.valueOf('#'), new ItemStack(Blocks.WOOL, 1, i)}); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesFood.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesFood.java new file mode 100644 index 0000000..66e99e7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesFood.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class RecipesFood { + + public RecipesFood() {} + + public void a(CraftingManager craftingmanager) { + craftingmanager.registerShapelessRecipe(new ItemStack(Items.MUSHROOM_STEW), new Object[] { Blocks.BROWN_MUSHROOM, Blocks.RED_MUSHROOM, Items.BOWL}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.COOKIE, 8), new Object[] { "#X#", Character.valueOf('X'), new ItemStack(Items.DYE, 1, EnumColor.BROWN.getInvColorIndex()), Character.valueOf('#'), Items.WHEAT}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.RABBIT_STEW), new Object[] { " R ", "CPM", " B ", Character.valueOf('R'), new ItemStack(Items.COOKED_RABBIT), Character.valueOf('C'), Items.CARROT, Character.valueOf('P'), Items.BAKED_POTATO, Character.valueOf('M'), Blocks.BROWN_MUSHROOM, Character.valueOf('B'), Items.BOWL}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.RABBIT_STEW), new Object[] { " R ", "CPD", " B ", Character.valueOf('R'), new ItemStack(Items.COOKED_RABBIT), Character.valueOf('C'), Items.CARROT, Character.valueOf('P'), Items.BAKED_POTATO, Character.valueOf('D'), Blocks.RED_MUSHROOM, Character.valueOf('B'), Items.BOWL}); + craftingmanager.registerShapedRecipe(new ItemStack(Blocks.MELON_BLOCK), new Object[] { "MMM", "MMM", "MMM", Character.valueOf('M'), Items.MELON}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.MELON_SEEDS), new Object[] { "M", Character.valueOf('M'), Items.MELON}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.PUMPKIN_SEEDS, 4), new Object[] { "M", Character.valueOf('M'), Blocks.PUMPKIN}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.PUMPKIN_PIE), new Object[] { Blocks.PUMPKIN, Items.SUGAR, Items.EGG}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.FERMENTED_SPIDER_EYE), new Object[] { Items.SPIDER_EYE, Blocks.BROWN_MUSHROOM, Items.SUGAR}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.BLAZE_POWDER, 2), new Object[] { Items.BLAZE_ROD}); + craftingmanager.registerShapelessRecipe(new ItemStack(Items.MAGMA_CREAM), new Object[] { Items.BLAZE_POWDER, Items.SLIME}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RecipesFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RecipesFurnace.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RecipesFurnace.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesTools.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesTools.java new file mode 100644 index 0000000..5f23f6c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesTools.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +public class RecipesTools { + + private String[][] a = new String[][] { { "XXX", " # ", " # "}, { "X", "#", "#"}, { "XX", "X#", " #"}, { "XX", " #", " #"}}; + private Object[][] b; + + public RecipesTools() { + this.b = new Object[][] { { Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT}, { Items.WOODEN_PICKAXE, Items.STONE_PICKAXE, Items.IRON_PICKAXE, Items.DIAMOND_PICKAXE, Items.GOLDEN_PICKAXE}, { Items.WOODEN_SHOVEL, Items.STONE_SHOVEL, Items.IRON_SHOVEL, Items.DIAMOND_SHOVEL, Items.GOLDEN_SHOVEL}, { Items.WOODEN_AXE, Items.STONE_AXE, Items.IRON_AXE, Items.DIAMOND_AXE, Items.GOLDEN_AXE}, { Items.WOODEN_HOE, Items.STONE_HOE, Items.IRON_HOE, Items.DIAMOND_HOE, Items.GOLDEN_HOE}}; + } + + public void a(CraftingManager craftingmanager) { + for (int i = 0; i < this.b[0].length; ++i) { + Object object = this.b[0][i]; + + for (int j = 0; j < this.b.length - 1; ++j) { + Item item = (Item) this.b[j + 1][i]; + + craftingmanager.registerShapedRecipe(new ItemStack(item), new Object[] { this.a[j], Character.valueOf('#'), Items.STICK, Character.valueOf('X'), object}); + } + } + + craftingmanager.registerShapedRecipe(new ItemStack(Items.SHEARS), new Object[] { " #", "# ", Character.valueOf('#'), Items.IRON_INGOT}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RecipesWeapons.java b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesWeapons.java new file mode 100644 index 0000000..d06b602 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RecipesWeapons.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public class RecipesWeapons { + + private String[][] a = new String[][] { { "X", "X", "#"}}; + private Object[][] b; + + public RecipesWeapons() { + this.b = new Object[][] { { Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT}, { Items.WOODEN_SWORD, Items.STONE_SWORD, Items.IRON_SWORD, Items.DIAMOND_SWORD, Items.GOLDEN_SWORD}}; + } + + public void a(CraftingManager craftingmanager) { + for (int i = 0; i < this.b[0].length; ++i) { + Object object = this.b[0][i]; + + for (int j = 0; j < this.b.length - 1; ++j) { + Item item = (Item) this.b[j + 1][i]; + + craftingmanager.registerShapedRecipe(new ItemStack(item), new Object[] { this.a[j], Character.valueOf('#'), Items.STICK, Character.valueOf('X'), object}); + } + } + + craftingmanager.registerShapedRecipe(new ItemStack(Items.BOW, 1), new Object[] { " #X", "# X", " #X", Character.valueOf('X'), Items.STRING, Character.valueOf('#'), Items.STICK}); + craftingmanager.registerShapedRecipe(new ItemStack(Items.ARROW, 4), new Object[] { "X", "#", "Y", Character.valueOf('Y'), Items.FEATHER, Character.valueOf('X'), Items.FLINT, Character.valueOf('#'), Items.STICK}); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RedirectStream.java b/eSpigot-Server/src/main/java/net/minecraft/server/RedirectStream.java new file mode 100644 index 0000000..2bd51d5 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RedirectStream.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +import java.io.OutputStream; +import java.io.PrintStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class RedirectStream extends PrintStream { + + private static final Logger a = LogManager.getLogger(); + private final String b; + + public RedirectStream(String s, OutputStream outputstream) { + super(outputstream); + this.b = s; + } + + public void println(String s) { + this.a(s); + } + + public void println(Object object) { + this.a(String.valueOf(object)); + } + + private void a(String s) { + StackTraceElement[] astacktraceelement = Thread.currentThread().getStackTrace(); + StackTraceElement stacktraceelement = astacktraceelement[Math.min(3, astacktraceelement.length)]; + + RedirectStream.a.info("[{}]@.({}:{}): {}", new Object[] { this.b, stacktraceelement.getFileName(), Integer.valueOf(stacktraceelement.getLineNumber()), s}); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RegionFile.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegionFile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RegionFile.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RegionFile.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RegionFileCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegionFileCache.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RegionFileCache.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RegionFileCache.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Registry.java b/eSpigot-Server/src/main/java/net/minecraft/server/Registry.java new file mode 100644 index 0000000..44f52d1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Registry.java @@ -0,0 +1,3 @@ +package net.minecraft.server; + +public interface Registry extends Iterable {} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RegistryBlocks.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryBlocks.java new file mode 100644 index 0000000..fa0c450 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryBlocks.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +import org.apache.commons.lang3.Validate; + +public class RegistryBlocks extends RegistryMaterials { + + private final K d; + private V e; + + public RegistryBlocks(K k0) { + this.d = k0; + } + + public void a(int i, K k0, V v0) { + if (this.d.equals(k0)) { + this.e = v0; + } + + super.a(i, k0, v0); + } + + public void a() { + Validate.notNull(this.d); + } + + public V get(K k0) { + V object = super.get(k0); + + return object == null ? this.e : object; + } + + public V a(int i) { + V object = super.a(i); + + return object == null ? this.e : object; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RegistryDefault.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryDefault.java new file mode 100644 index 0000000..0988617 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryDefault.java @@ -0,0 +1,16 @@ +package net.minecraft.server; + +public class RegistryDefault extends RegistrySimple { + + private final V a; + + public RegistryDefault(V v0) { + this.a = v0; + } + + public V get(K k0) { + V object = super.get(k0); + + return object == null ? this.a : object; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RegistryID.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryID.java new file mode 100644 index 0000000..d9d4582 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryID.java @@ -0,0 +1,40 @@ +package net.minecraft.server; + +import com.google.common.base.Predicates; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; + +public class RegistryID implements Registry { + + private final IdentityHashMap a = new IdentityHashMap(512); + private final List b = Lists.newArrayList(); + + public RegistryID() {} + + public void a(T t0, int i) { + this.a.put(t0, Integer.valueOf(i)); + + while (this.b.size() <= i) { + this.b.add(null); + } + + this.b.set(i, t0); + } + + public int b(T t0) { + Integer integer = (Integer) this.a.get(t0); + + return integer == null ? -1 : integer.intValue(); + } + + public final T a(int i) { + return i >= 0 && i < this.b.size() ? this.b.get(i) : null; + } + + public Iterator iterator() { + return Iterators.filter(this.b.iterator(), Predicates.notNull()); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RegistryMaterials.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryMaterials.java new file mode 100644 index 0000000..936a6e3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RegistryMaterials.java @@ -0,0 +1,49 @@ +package net.minecraft.server; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import java.util.Iterator; +import java.util.Map; + +public class RegistryMaterials extends RegistrySimple implements Registry { + + protected final RegistryID a = new RegistryID(); + protected final Map b; + + public RegistryMaterials() { + this.b = ((BiMap) this.c).inverse(); + } + + public void a(int i, K k0, V v0) { + this.a.a(v0, i); + this.a(k0, v0); + } + + protected Map b() { + return HashBiMap.create(); + } + + public V get(K k0) { + return super.get(k0); + } + + public K c(V v0) { + return this.b.get(v0); + } + + public boolean d(K k0) { + return super.d(k0); + } + + public int b(V v0) { + return this.a.b(v0); + } + + public V a(int i) { + return this.a.a(i); + } + + public Iterator iterator() { + return this.a.iterator(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RegistrySimple.java b/eSpigot-Server/src/main/java/net/minecraft/server/RegistrySimple.java new file mode 100644 index 0000000..e76cb6e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RegistrySimple.java @@ -0,0 +1,48 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Collections; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import org.apache.commons.lang3.Validate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class RegistrySimple implements IRegistry { + + private static final Logger a = LogManager.getLogger(); + protected final Map c = this.b(); + + public RegistrySimple() {} + + protected Map b() { + return Maps.newHashMap(); + } + + public V get(K k0) { + return this.c.get(k0); + } + + public void a(K k0, V v0) { + Validate.notNull(k0); + Validate.notNull(v0); + if (this.c.containsKey(k0)) { + RegistrySimple.a.debug("Adding duplicate key \'" + k0 + "\' to registry"); + } + + this.c.put(k0, v0); + } + + public Set keySet() { + return Collections.unmodifiableSet(this.c.keySet()); + } + + public boolean d(K k0) { + return this.c.containsKey(k0); + } + + public Iterator iterator() { + return this.c.values().iterator(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RemoteConnectionThread.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteConnectionThread.java new file mode 100644 index 0000000..6109842 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteConnectionThread.java @@ -0,0 +1,147 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.io.IOException; +import java.net.DatagramSocket; +import java.net.ServerSocket; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public abstract class RemoteConnectionThread implements Runnable { + + private static final AtomicInteger h = new AtomicInteger(0); + protected boolean a; + protected IMinecraftServer b; + protected final String c; + protected Thread d; + protected int e = 5; + protected List f = Lists.newArrayList(); + protected List g = Lists.newArrayList(); + + protected RemoteConnectionThread(IMinecraftServer iminecraftserver, String s) { + this.b = iminecraftserver; + this.c = s; + if (this.b.isDebugging()) { + this.c("Debugging is enabled, performance maybe reduced!"); + } + + } + + public synchronized void a() { + this.d = new Thread(this, this.c + " #" + RemoteConnectionThread.h.incrementAndGet()); + this.d.start(); + this.a = true; + } + + public boolean c() { + return this.a; + } + + protected void a(String s) { + this.b.h(s); + } + + protected void b(String s) { + this.b.info(s); + } + + protected void c(String s) { + this.b.warning(s); + } + + protected void d(String s) { + this.b.g(s); + } + + protected int d() { + return this.b.I(); + } + + protected void a(DatagramSocket datagramsocket) { + this.a("registerSocket: " + datagramsocket); + this.f.add(datagramsocket); + } + + protected boolean a(DatagramSocket datagramsocket, boolean flag) { + this.a("closeSocket: " + datagramsocket); + if (null == datagramsocket) { + return false; + } else { + boolean flag1 = false; + + if (!datagramsocket.isClosed()) { + datagramsocket.close(); + flag1 = true; + } + + if (flag) { + this.f.remove(datagramsocket); + } + + return flag1; + } + } + + protected boolean b(ServerSocket serversocket) { + return this.a(serversocket, true); + } + + protected boolean a(ServerSocket serversocket, boolean flag) { + this.a("closeSocket: " + serversocket); + if (null == serversocket) { + return false; + } else { + boolean flag1 = false; + + try { + if (!serversocket.isClosed()) { + serversocket.close(); + flag1 = true; + } + } catch (IOException ioexception) { + this.c("IO: " + ioexception.getMessage()); + } + + if (flag) { + this.g.remove(serversocket); + } + + return flag1; + } + } + + protected void e() { + this.a(false); + } + + protected void a(boolean flag) { + int i = 0; + Iterator iterator = this.f.iterator(); + + while (iterator.hasNext()) { + DatagramSocket datagramsocket = (DatagramSocket) iterator.next(); + + if (this.a(datagramsocket, false)) { + ++i; + } + } + + this.f.clear(); + iterator = this.g.iterator(); + + while (iterator.hasNext()) { + ServerSocket serversocket = (ServerSocket) iterator.next(); + + if (this.a(serversocket, false)) { + ++i; + } + } + + this.g.clear(); + if (flag && 0 < i) { + this.c("Force closed " + i + " sockets"); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/RemoteControlCommandListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlCommandListener.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/RemoteControlCommandListener.java rename to eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlCommandListener.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlListener.java new file mode 100644 index 0000000..a4da2b4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlListener.java @@ -0,0 +1,111 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketTimeoutException; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public class RemoteControlListener extends RemoteConnectionThread { + + private int h; + private int i; + private String j; + private ServerSocket k; + private String l; + private Map m; + + public RemoteControlListener(IMinecraftServer iminecraftserver) { + super(iminecraftserver, "RCON Listener"); + this.h = iminecraftserver.a("rcon.port", 0); + this.l = iminecraftserver.a("rcon.password", ""); + this.j = iminecraftserver.E(); + this.i = iminecraftserver.F(); + if (0 == this.h) { + this.h = this.i + 10; + this.b("Setting default rcon port to " + this.h); + iminecraftserver.a("rcon.port", (Object) Integer.valueOf(this.h)); + if (0 == this.l.length()) { + iminecraftserver.a("rcon.password", (Object) ""); + } + + iminecraftserver.a(); + } + + if (0 == this.j.length()) { + this.j = "0.0.0.0"; + } + + this.f(); + this.k = null; + } + + private void f() { + this.m = Maps.newHashMap(); + } + + private void g() { + Iterator iterator = this.m.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (!((RemoteControlSession) entry.getValue()).c()) { + iterator.remove(); + } + } + + } + + public void run() { + this.b("RCON running on " + this.j + ":" + this.h); + + try { + while (this.a) { + try { + Socket socket = this.k.accept(); + + socket.setSoTimeout(500); + RemoteControlSession remotecontrolsession = new RemoteControlSession(this.b, socket); + + remotecontrolsession.a(); + this.m.put(socket.getRemoteSocketAddress(), remotecontrolsession); + this.g(); + } catch (SocketTimeoutException sockettimeoutexception) { + this.g(); + } catch (IOException ioexception) { + if (this.a) { + this.b("IO: " + ioexception.getMessage()); + } + } + } + } finally { + this.b(this.k); + } + + } + + public void a() { + if (0 == this.l.length()) { + this.c("No rcon password set in \'" + this.b.b() + "\', rcon disabled!"); + } else if (0 < this.h && '\uffff' >= this.h) { + if (!this.a) { + try { + this.k = new ServerSocket(this.h, 0, InetAddress.getByName(this.j)); + this.k.setSoTimeout(500); + super.a(); + } catch (IOException ioexception) { + this.c("Unable to initialise rcon on " + this.j + ":" + this.h + " : " + ioexception.getMessage()); + } + + } + } else { + this.c("Invalid rcon port " + this.h + " found in \'" + this.b.b() + "\', rcon disabled!"); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlSession.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlSession.java new file mode 100644 index 0000000..1b45f81 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteControlSession.java @@ -0,0 +1,152 @@ +package net.minecraft.server; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.net.SocketTimeoutException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class RemoteControlSession extends RemoteConnectionThread { + + private static final Logger h = LogManager.getLogger(); + private boolean i; + private Socket j; + private byte[] k = new byte[1460]; + private String l; + + RemoteControlSession(IMinecraftServer iminecraftserver, Socket socket) { + super(iminecraftserver, "RCON Client"); + this.j = socket; + + try { + this.j.setSoTimeout(0); + } catch (Exception exception) { + this.a = false; + } + + this.l = iminecraftserver.a("rcon.password", ""); + this.b("Rcon connection from: " + socket.getInetAddress()); + } + + public void run() { + while (true) { + try { + if (!this.a) { + break; + } + + BufferedInputStream bufferedinputstream = new BufferedInputStream(this.j.getInputStream()); + int i = bufferedinputstream.read(this.k, 0, 1460); + + if (10 <= i) { + byte b0 = 0; + int j = StatusChallengeUtils.b(this.k, 0, i); + + if (j != i - 4) { + return; + } + + int k = b0 + 4; + int l = StatusChallengeUtils.b(this.k, k, i); + + k += 4; + int i1 = StatusChallengeUtils.b(this.k, k); + + k += 4; + switch (i1) { + case 2: + if (this.i) { + String s = StatusChallengeUtils.a(this.k, k, i); + + try { + this.a(l, this.b.executeRemoteCommand(s)); + } catch (Exception exception) { + this.a(l, "Error executing: " + s + " (" + exception.getMessage() + ")"); + } + continue; + } + + this.f(); + continue; + + case 3: + String s1 = StatusChallengeUtils.a(this.k, k, i); + int j1 = k + s1.length(); + + if (0 != s1.length() && s1.equals(this.l)) { + this.i = true; + this.a(l, 2, ""); + continue; + } + + this.i = false; + this.f(); + continue; + + default: + this.a(l, String.format("Unknown request %s", new Object[] { Integer.toHexString(i1)})); + continue; + } + } + } catch (SocketTimeoutException sockettimeoutexception) { + break; + } catch (IOException ioexception) { + break; + } catch (Exception exception1) { + RemoteControlSession.h.error("Exception whilst parsing RCON input", exception1); + break; + } finally { + this.g(); + } + + return; + } + + } + + private void a(int i, int j, String s) throws IOException { + ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(1248); + DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream); + byte[] abyte = s.getBytes("UTF-8"); + + dataoutputstream.writeInt(Integer.reverseBytes(abyte.length + 10)); + dataoutputstream.writeInt(Integer.reverseBytes(i)); + dataoutputstream.writeInt(Integer.reverseBytes(j)); + dataoutputstream.write(abyte); + dataoutputstream.write(0); + dataoutputstream.write(0); + this.j.getOutputStream().write(bytearrayoutputstream.toByteArray()); + } + + private void f() throws IOException { + this.a(-1, 2, ""); + } + + private void a(int i, String s) throws IOException { + int j = s.length(); + + do { + int k = 4096 <= j ? 4096 : j; + + this.a(i, 0, s.substring(0, k)); + s = s.substring(k); + j = s.length(); + } while (0 != j); + + } + + private void g() { + if (null != this.j) { + try { + this.j.close(); + } catch (IOException ioexception) { + this.c("IO: " + ioexception.getMessage()); + } + + this.j = null; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusListener.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusListener.java new file mode 100644 index 0000000..82c97f2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusListener.java @@ -0,0 +1,331 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.PortUnreachableException; +import java.net.SocketAddress; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.util.Date; +import java.util.Iterator; +import java.util.Map; +import java.util.Random; +import java.util.Map.Entry; + +public class RemoteStatusListener extends RemoteConnectionThread { + + private long h; + private int i; + private int j; + private int k; + private String l; + private String m; + private DatagramSocket n; + private byte[] o = new byte[1460]; + private DatagramPacket p; + private Map q; + private String r; + private String s; + private Map t; + private long u; + private RemoteStatusReply v; + private long w; + + public RemoteStatusListener(IMinecraftServer iminecraftserver) { + super(iminecraftserver, "Query Listener"); + this.i = iminecraftserver.a("query.port", 0); + this.s = iminecraftserver.E(); + this.j = iminecraftserver.F(); + this.l = iminecraftserver.G(); + this.k = iminecraftserver.J(); + this.m = iminecraftserver.U(); + this.w = 0L; + this.r = "0.0.0.0"; + if (0 != this.s.length() && !this.r.equals(this.s)) { + this.r = this.s; + } else { + this.s = "0.0.0.0"; + + try { + InetAddress inetaddress = InetAddress.getLocalHost(); + + this.r = inetaddress.getHostAddress(); + } catch (UnknownHostException unknownhostexception) { + this.c("Unable to determine local host IP, please set server-ip in \'" + iminecraftserver.b() + "\' : " + unknownhostexception.getMessage()); + } + } + + if (0 == this.i) { + this.i = this.j; + this.b("Setting default query port to " + this.i); + iminecraftserver.a("query.port", (Object) Integer.valueOf(this.i)); + iminecraftserver.a("debug", (Object) Boolean.valueOf(false)); + iminecraftserver.a(); + } + + this.q = Maps.newHashMap(); + this.v = new RemoteStatusReply(1460); + this.t = Maps.newHashMap(); + this.u = (new Date()).getTime(); + } + + private void a(byte[] abyte, DatagramPacket datagrampacket) throws IOException { + this.n.send(new DatagramPacket(abyte, abyte.length, datagrampacket.getSocketAddress())); + } + + private boolean a(DatagramPacket datagrampacket) throws IOException { + byte[] abyte = datagrampacket.getData(); + int i = datagrampacket.getLength(); + SocketAddress socketaddress = datagrampacket.getSocketAddress(); + + this.a("Packet len " + i + " [" + socketaddress + "]"); + if (3 <= i && -2 == abyte[0] && -3 == abyte[1]) { + this.a("Packet \'" + StatusChallengeUtils.a(abyte[2]) + "\' [" + socketaddress + "]"); + switch (abyte[2]) { + case 0: + if (!this.c(datagrampacket).booleanValue()) { + this.a("Invalid challenge [" + socketaddress + "]"); + return false; + } else if (15 == i) { + this.a(this.b(datagrampacket), datagrampacket); + this.a("Rules [" + socketaddress + "]"); + } else { + RemoteStatusReply remotestatusreply = new RemoteStatusReply(1460); + + remotestatusreply.a((int) 0); + remotestatusreply.a(this.a(datagrampacket.getSocketAddress())); + remotestatusreply.a(this.l); + remotestatusreply.a("SMP"); + remotestatusreply.a(this.m); + remotestatusreply.a(Integer.toString(this.d())); + remotestatusreply.a(Integer.toString(this.k)); + remotestatusreply.a((short) this.j); + remotestatusreply.a(this.r); + this.a(remotestatusreply.a(), datagrampacket); + this.a("Status [" + socketaddress + "]"); + } + + default: + return true; + + case 9: + this.d(datagrampacket); + this.a("Challenge [" + socketaddress + "]"); + return true; + } + } else { + this.a("Invalid packet [" + socketaddress + "]"); + return false; + } + } + + private byte[] b(DatagramPacket datagrampacket) throws IOException { + long i = MinecraftServer.az(); + + if (i < this.w + 5000L) { + byte[] abyte = this.v.a(); + byte[] abyte1 = this.a(datagrampacket.getSocketAddress()); + + abyte[1] = abyte1[0]; + abyte[2] = abyte1[1]; + abyte[3] = abyte1[2]; + abyte[4] = abyte1[3]; + return abyte; + } else { + this.w = i; + this.v.b(); + this.v.a((int) 0); + this.v.a(this.a(datagrampacket.getSocketAddress())); + this.v.a("splitnum"); + this.v.a((int) 128); + this.v.a((int) 0); + this.v.a("hostname"); + this.v.a(this.l); + this.v.a("gametype"); + this.v.a("SMP"); + this.v.a("game_id"); + this.v.a("MINECRAFT"); + this.v.a("version"); + this.v.a(this.b.getVersion()); + this.v.a("plugins"); + this.v.a(this.b.getPlugins()); + this.v.a("map"); + this.v.a(this.m); + this.v.a("numplayers"); + this.v.a("" + this.d()); + this.v.a("maxplayers"); + this.v.a("" + this.k); + this.v.a("hostport"); + this.v.a("" + this.j); + this.v.a("hostip"); + this.v.a(this.r); + this.v.a((int) 0); + this.v.a((int) 1); + this.v.a("player_"); + this.v.a((int) 0); + String[] astring = this.b.getPlayers(); + String[] astring1 = astring; + int j = astring.length; + + for (int k = 0; k < j; ++k) { + String s = astring1[k]; + + this.v.a(s); + } + + this.v.a((int) 0); + return this.v.a(); + } + } + + private byte[] a(SocketAddress socketaddress) { + return ((RemoteStatusListener.RemoteStatusChallenge) this.t.get(socketaddress)).c(); + } + + private Boolean c(DatagramPacket datagrampacket) { + SocketAddress socketaddress = datagrampacket.getSocketAddress(); + + if (!this.t.containsKey(socketaddress)) { + return Boolean.valueOf(false); + } else { + byte[] abyte = datagrampacket.getData(); + + return ((RemoteStatusListener.RemoteStatusChallenge) this.t.get(socketaddress)).a() != StatusChallengeUtils.c(abyte, 7, datagrampacket.getLength()) ? Boolean.valueOf(false) : Boolean.valueOf(true); + } + } + + private void d(DatagramPacket datagrampacket) throws IOException { + RemoteStatusListener.RemoteStatusChallenge remotestatuslistener_remotestatuschallenge = new RemoteStatusListener.RemoteStatusChallenge(datagrampacket); + + this.t.put(datagrampacket.getSocketAddress(), remotestatuslistener_remotestatuschallenge); + this.a(remotestatuslistener_remotestatuschallenge.b(), datagrampacket); + } + + private void f() { + if (this.a) { + long i = MinecraftServer.az(); + + if (i >= this.h + 30000L) { + this.h = i; + Iterator iterator = this.t.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (((RemoteStatusListener.RemoteStatusChallenge) entry.getValue()).a(i).booleanValue()) { + iterator.remove(); + } + } + + } + } + } + + public void run() { + this.b("Query running on " + this.s + ":" + this.i); + this.h = MinecraftServer.az(); + this.p = new DatagramPacket(this.o, this.o.length); + + try { + while (this.a) { + try { + this.n.receive(this.p); + this.f(); + this.a(this.p); + } catch (SocketTimeoutException sockettimeoutexception) { + this.f(); + } catch (PortUnreachableException portunreachableexception) { + ; + } catch (IOException ioexception) { + this.a((Exception) ioexception); + } + } + } finally { + this.e(); + } + + } + + public void a() { + if (!this.a) { + if (0 < this.i && '\uffff' >= this.i) { + if (this.g()) { + super.a(); + } + + } else { + this.c("Invalid query port " + this.i + " found in \'" + this.b.b() + "\' (queries disabled)"); + } + } + } + + private void a(Exception exception) { + if (this.a) { + this.c("Unexpected exception, buggy JRE? (" + exception.toString() + ")"); + if (!this.g()) { + this.d("Failed to recover from buggy JRE, shutting down!"); + this.a = false; + } + + } + } + + private boolean g() { + try { + this.n = new DatagramSocket(this.i, InetAddress.getByName(this.s)); + this.a(this.n); + this.n.setSoTimeout(500); + return true; + } catch (SocketException socketexception) { + this.c("Unable to initialise query system on " + this.s + ":" + this.i + " (Socket): " + socketexception.getMessage()); + } catch (UnknownHostException unknownhostexception) { + this.c("Unable to initialise query system on " + this.s + ":" + this.i + " (Unknown Host): " + unknownhostexception.getMessage()); + } catch (Exception exception) { + this.c("Unable to initialise query system on " + this.s + ":" + this.i + " (E): " + exception.getMessage()); + } + + return false; + } + + class RemoteStatusChallenge { + + private long time = (new Date()).getTime(); + private int token; + private byte[] identity; + private byte[] response; + private String f; + + public RemoteStatusChallenge(DatagramPacket datagrampacket) { + byte[] abyte = datagrampacket.getData(); + + this.identity = new byte[4]; + this.identity[0] = abyte[3]; + this.identity[1] = abyte[4]; + this.identity[2] = abyte[5]; + this.identity[3] = abyte[6]; + this.f = new String(this.identity); + this.token = (new Random()).nextInt(16777216); + this.response = String.format("\t%s%d\u0000", new Object[] { this.f, Integer.valueOf(this.token)}).getBytes(); + } + + public Boolean a(long i) { + return Boolean.valueOf(this.time < i); + } + + public int a() { + return this.token; + } + + public byte[] b() { + return this.response; + } + + public byte[] c() { + return this.identity; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusReply.java b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusReply.java new file mode 100644 index 0000000..a1dbd1e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/RemoteStatusReply.java @@ -0,0 +1,41 @@ +package net.minecraft.server; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class RemoteStatusReply { + + private ByteArrayOutputStream buffer; + private DataOutputStream stream; + + public RemoteStatusReply(int i) { + this.buffer = new ByteArrayOutputStream(i); + this.stream = new DataOutputStream(this.buffer); + } + + public void a(byte[] abyte) throws IOException { + this.stream.write(abyte, 0, abyte.length); + } + + public void a(String s) throws IOException { + this.stream.writeBytes(s); + this.stream.write(0); + } + + public void a(int i) throws IOException { + this.stream.write(i); + } + + public void a(short short0) throws IOException { + this.stream.writeShort(Short.reverseBytes(short0)); + } + + public byte[] a() { + return this.buffer.toByteArray(); + } + + public void b() { + this.buffer.reset(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ReportedException.java b/eSpigot-Server/src/main/java/net/minecraft/server/ReportedException.java new file mode 100644 index 0000000..434854e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ReportedException.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +public class ReportedException extends RuntimeException { + + private final CrashReport a; + + public ReportedException(CrashReport crashreport) { + this.a = crashreport; + } + + public CrashReport a() { + return this.a; + } + + public Throwable getCause() { + return this.a.b(); + } + + public String getMessage() { + return this.a.a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Scoreboard.java b/eSpigot-Server/src/main/java/net/minecraft/server/Scoreboard.java new file mode 100644 index 0000000..5ec2075 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Scoreboard.java @@ -0,0 +1,353 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class Scoreboard { + + private final Map objectivesByName = Maps.newHashMap(); + private final Map> objectivesByCriteria = Maps.newHashMap(); + private final Map> playerScores = Maps.newHashMap(); + private final ScoreboardObjective[] displaySlots = new ScoreboardObjective[19]; + private final Map teamsByName = Maps.newHashMap(); + private final Map teamsByPlayer = Maps.newHashMap(); + private static String[] g = null; + + public Scoreboard() {} + + public ScoreboardObjective getObjective(String s) { + return (ScoreboardObjective) this.objectivesByName.get(s); + } + + public ScoreboardObjective registerObjective(String s, IScoreboardCriteria iscoreboardcriteria) { + if (s.length() > 16) { + throw new IllegalArgumentException("The objective name \'" + s + "\' is too long!"); + } else { + ScoreboardObjective scoreboardobjective = this.getObjective(s); + + if (scoreboardobjective != null) { + throw new IllegalArgumentException("An objective with the name \'" + s + "\' already exists!"); + } else { + scoreboardobjective = new ScoreboardObjective(this, s, iscoreboardcriteria); + List list = this.objectivesByCriteria.computeIfAbsent(iscoreboardcriteria, k -> Lists.newArrayList()); + + list.add(scoreboardobjective); + this.objectivesByName.put(s, scoreboardobjective); + this.handleObjectiveAdded(scoreboardobjective); + return scoreboardobjective; + } + } + } + + public Collection getObjectivesForCriteria(IScoreboardCriteria iscoreboardcriteria) { + Collection collection = (Collection) this.objectivesByCriteria.get(iscoreboardcriteria); + + return collection == null ? Lists.newArrayList() : Lists.newArrayList(collection); + } + + public boolean b(String s, ScoreboardObjective scoreboardobjective) { + Map map = (Map) this.playerScores.get(s); + + if (map == null) { + return false; + } else { + ScoreboardScore scoreboardscore = (ScoreboardScore) map.get(scoreboardobjective); + + return scoreboardscore != null; + } + } + + public ScoreboardScore getPlayerScoreForObjective(String s, ScoreboardObjective scoreboardobjective) { + if (s.length() > 40) { + throw new IllegalArgumentException("The player name \'" + s + "\' is too long!"); + } else { + Map map = this.playerScores.computeIfAbsent(s, k -> Maps.newHashMap()); + + return map.computeIfAbsent(scoreboardobjective, k -> new ScoreboardScore(this, scoreboardobjective, s)); + } + } + + public Collection getScoresForObjective(ScoreboardObjective scoreboardobjective) { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = this.playerScores.values().iterator(); + + while (iterator.hasNext()) { + Map map = (Map) iterator.next(); + ScoreboardScore scoreboardscore = (ScoreboardScore) map.get(scoreboardobjective); + + if (scoreboardscore != null) { + arraylist.add(scoreboardscore); + } + } + + Collections.sort(arraylist, ScoreboardScore.a); + return arraylist; + } + + public Collection getObjectives() { + return this.objectivesByName.values(); + } + + public Collection getPlayers() { + return this.playerScores.keySet(); + } + + public void resetPlayerScores(String s, ScoreboardObjective scoreboardobjective) { + Map map; + + if (scoreboardobjective == null) { + map = (Map) this.playerScores.remove(s); + if (map != null) { + this.handlePlayerRemoved(s); + } + } else { + map = (Map) this.playerScores.get(s); + if (map != null) { + ScoreboardScore scoreboardscore = (ScoreboardScore) map.remove(scoreboardobjective); + + if (map.size() < 1) { + Map map1 = (Map) this.playerScores.remove(s); + + if (map1 != null) { + this.handlePlayerRemoved(s); + } + } else if (scoreboardscore != null) { + this.a(s, scoreboardobjective); + } + } + } + + } + + public Collection getScores() { + Collection collection = this.playerScores.values(); + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = collection.iterator(); + + while (iterator.hasNext()) { + Map map = (Map) iterator.next(); + + arraylist.addAll(map.values()); + } + + return arraylist; + } + + public Map getPlayerObjectives(String s) { + Object object = (Map) this.playerScores.get(s); + + if (object == null) { + object = Maps.newHashMap(); + } + + return (Map) object; + } + + public void unregisterObjective(ScoreboardObjective scoreboardobjective) { + this.objectivesByName.remove(scoreboardobjective.getName()); + + for (int i = 0; i < 19; ++i) { + if (this.getObjectiveForSlot(i) == scoreboardobjective) { + this.setDisplaySlot(i, (ScoreboardObjective) null); + } + } + + List list = (List) this.objectivesByCriteria.get(scoreboardobjective.getCriteria()); + + if (list != null) { + list.remove(scoreboardobjective); + } + + Iterator iterator = this.playerScores.values().iterator(); + + while (iterator.hasNext()) { + Map map = (Map) iterator.next(); + + map.remove(scoreboardobjective); + } + + this.handleObjectiveRemoved(scoreboardobjective); + } + + public void setDisplaySlot(int i, ScoreboardObjective scoreboardobjective) { + this.displaySlots[i] = scoreboardobjective; + } + + public ScoreboardObjective getObjectiveForSlot(int i) { + return this.displaySlots[i]; + } + + public ScoreboardTeam getTeam(String s) { + return (ScoreboardTeam) this.teamsByName.get(s); + } + + public ScoreboardTeam createTeam(String s) { + if (s.length() > 16) { + throw new IllegalArgumentException("The team name \'" + s + "\' is too long!"); + } else { + ScoreboardTeam scoreboardteam = this.getTeam(s); + + if (scoreboardteam != null) { + throw new IllegalArgumentException("A team with the name \'" + s + "\' already exists!"); + } else { + scoreboardteam = new ScoreboardTeam(this, s); + this.teamsByName.put(s, scoreboardteam); + this.handleTeamAdded(scoreboardteam); + return scoreboardteam; + } + } + } + + public void removeTeam(ScoreboardTeam scoreboardteam) { + this.teamsByName.remove(scoreboardteam.getName()); + Iterator iterator = scoreboardteam.getPlayerNameSet().iterator(); + + while (iterator.hasNext()) { + String s = (String) iterator.next(); + + this.teamsByPlayer.remove(s); + } + + this.handleTeamRemoved(scoreboardteam); + } + + public boolean addPlayerToTeam(String s, String s1) { + if (s.length() > 40) { + throw new IllegalArgumentException("The player name \'" + s + "\' is too long!"); + } else if (!this.teamsByName.containsKey(s1)) { + return false; + } else { + ScoreboardTeam scoreboardteam = this.getTeam(s1); + + if (this.getPlayerTeam(s) != null) { + this.removePlayerFromTeam(s); + } + + this.teamsByPlayer.put(s, scoreboardteam); + scoreboardteam.getPlayerNameSet().add(s); + return true; + } + } + + public boolean removePlayerFromTeam(String s) { + ScoreboardTeam scoreboardteam = this.getPlayerTeam(s); + + if (scoreboardteam != null) { + this.removePlayerFromTeam(s, scoreboardteam); + return true; + } else { + return false; + } + } + + public void removePlayerFromTeam(String s, ScoreboardTeam scoreboardteam) { + if (this.getPlayerTeam(s) != scoreboardteam) { + throw new IllegalStateException("Player is either on another team or not on any team. Cannot remove from team \'" + scoreboardteam.getName() + "\'."); + } else { + this.teamsByPlayer.remove(s); + scoreboardteam.getPlayerNameSet().remove(s); + } + } + + public Collection getTeamNames() { + return this.teamsByName.keySet(); + } + + public Collection getTeams() { + return this.teamsByName.values(); + } + + public ScoreboardTeam getPlayerTeam(String s) { + return (ScoreboardTeam) this.teamsByPlayer.get(s); + } + + public void handleObjectiveAdded(ScoreboardObjective scoreboardobjective) {} + + public void handleObjectiveChanged(ScoreboardObjective scoreboardobjective) {} + + public void handleObjectiveRemoved(ScoreboardObjective scoreboardobjective) {} + + public void handleScoreChanged(ScoreboardScore scoreboardscore) {} + + public void handlePlayerRemoved(String s) {} + + public void a(String s, ScoreboardObjective scoreboardobjective) {} + + public void handleTeamAdded(ScoreboardTeam scoreboardteam) {} + + public void handleTeamChanged(ScoreboardTeam scoreboardteam) {} + + public void handleTeamRemoved(ScoreboardTeam scoreboardteam) {} + + public static String getSlotName(int i) { + switch (i) { + case 0: + return "list"; + + case 1: + return "sidebar"; + + case 2: + return "belowName"; + + default: + if (i >= 3 && i <= 18) { + EnumChatFormat enumchatformat = EnumChatFormat.a(i - 3); + + if (enumchatformat != null && enumchatformat != EnumChatFormat.RESET) { + return "sidebar.team." + enumchatformat.e(); + } + } + + return null; + } + } + + public static int getSlotForName(String s) { + if (s.equalsIgnoreCase("list")) { + return 0; + } else if (s.equalsIgnoreCase("sidebar")) { + return 1; + } else if (s.equalsIgnoreCase("belowName")) { + return 2; + } else { + if (s.startsWith("sidebar.team.")) { + String s1 = s.substring("sidebar.team.".length()); + EnumChatFormat enumchatformat = EnumChatFormat.b(s1); + + if (enumchatformat != null && enumchatformat.b() >= 0) { + return enumchatformat.b() + 3; + } + } + + return -1; + } + } + + public static String[] h() { + if (Scoreboard.g == null) { + Scoreboard.g = new String[19]; + + for (int i = 0; i < 19; ++i) { + Scoreboard.g[i] = getSlotName(i); + } + } + + return Scoreboard.g; + } + + public void a(Entity entity) { + if (entity != null && !(entity instanceof EntityHuman) && !entity.isAlive()) { + String s = entity.getUniqueID().toString(); + + this.resetPlayerScores(s, (ScoreboardObjective) null); + this.removePlayerFromTeam(s); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardBaseCriteria.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardBaseCriteria.java new file mode 100644 index 0000000..72422ec --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardBaseCriteria.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +import java.util.List; + +public class ScoreboardBaseCriteria implements IScoreboardCriteria { + + private final String j; + + public ScoreboardBaseCriteria(String s) { + this.j = s; + IScoreboardCriteria.criteria.put(s, this); + } + + public String getName() { + return this.j; + } + + public int getScoreModifier(List list) { + return 0; + } + + public boolean isReadOnly() { + return false; + } + + public IScoreboardCriteria.EnumScoreboardHealthDisplay c() { + return IScoreboardCriteria.EnumScoreboardHealthDisplay.INTEGER; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardCriteriaInteger.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardCriteriaInteger.java new file mode 100644 index 0000000..9e8111d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardCriteriaInteger.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +import java.util.List; + +public class ScoreboardCriteriaInteger implements IScoreboardCriteria { + + private final String j; + + public ScoreboardCriteriaInteger(String s, EnumChatFormat enumchatformat) { + this.j = s + enumchatformat.e(); + IScoreboardCriteria.criteria.put(this.j, this); + } + + public String getName() { + return this.j; + } + + public int getScoreModifier(List list) { + return 0; + } + + public boolean isReadOnly() { + return false; + } + + public IScoreboardCriteria.EnumScoreboardHealthDisplay c() { + return IScoreboardCriteria.EnumScoreboardHealthDisplay.INTEGER; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardHealthCriteria.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardHealthCriteria.java new file mode 100644 index 0000000..18d489a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardHealthCriteria.java @@ -0,0 +1,35 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; + +public class ScoreboardHealthCriteria extends ScoreboardBaseCriteria { + + public ScoreboardHealthCriteria(String s) { + super(s); + } + + public int getScoreModifier(List list) { + float f = 0.0F; + + EntityHuman entityhuman; + + for (Iterator iterator = list.iterator(); iterator.hasNext(); f += entityhuman.getHealth() + entityhuman.getAbsorptionHearts()) { + entityhuman = (EntityHuman) iterator.next(); + } + + if (list.size() > 0) { + f /= (float) list.size(); + } + + return MathHelper.f(f); + } + + public boolean isReadOnly() { + return true; + } + + public IScoreboardCriteria.EnumScoreboardHealthDisplay c() { + return IScoreboardCriteria.EnumScoreboardHealthDisplay.HEARTS; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardObjective.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardObjective.java new file mode 100644 index 0000000..791fc18 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardObjective.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +public class ScoreboardObjective { + + private final Scoreboard a; + private final String b; + private final IScoreboardCriteria c; + private IScoreboardCriteria.EnumScoreboardHealthDisplay d; + private String e; + + public ScoreboardObjective(Scoreboard scoreboard, String s, IScoreboardCriteria iscoreboardcriteria) { + this.a = scoreboard; + this.b = s; + this.c = iscoreboardcriteria; + this.e = s; + this.d = iscoreboardcriteria.c(); + } + + public String getName() { + return this.b; + } + + public IScoreboardCriteria getCriteria() { + return this.c; + } + + public String getDisplayName() { + return this.e; + } + + public void setDisplayName(String s) { + this.e = s; + this.a.handleObjectiveChanged(this); + } + + public IScoreboardCriteria.EnumScoreboardHealthDisplay e() { + return this.d; + } + + public void a(IScoreboardCriteria.EnumScoreboardHealthDisplay iscoreboardcriteria_enumscoreboardhealthdisplay) { + this.d = iscoreboardcriteria_enumscoreboardhealthdisplay; + this.a.handleObjectiveChanged(this); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardScore.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardScore.java new file mode 100644 index 0000000..79e98df --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardScore.java @@ -0,0 +1,93 @@ +package net.minecraft.server; + +import java.util.Comparator; +import java.util.List; + +public class ScoreboardScore { + + public static final Comparator a = new Comparator() { + public int a(ScoreboardScore scoreboardscore, ScoreboardScore scoreboardscore1) { + return scoreboardscore.getScore() > scoreboardscore1.getScore() ? 1 : (scoreboardscore.getScore() < scoreboardscore1.getScore() ? -1 : scoreboardscore1.getPlayerName().compareToIgnoreCase(scoreboardscore.getPlayerName())); + } + + public int compare(Object object, Object object1) { + return this.a((ScoreboardScore) object, (ScoreboardScore) object1); + } + }; + private final Scoreboard b; + private final ScoreboardObjective c; + private final String playerName; + private int score; + private boolean f; + private boolean g; + + public ScoreboardScore(Scoreboard scoreboard, ScoreboardObjective scoreboardobjective, String s) { + this.b = scoreboard; + this.c = scoreboardobjective; + this.playerName = s; + this.g = true; + } + + public void addScore(int i) { + if (this.c.getCriteria().isReadOnly()) { + throw new IllegalStateException("Cannot modify read-only score"); + } else { + this.setScore(this.getScore() + i); + } + } + + public void removeScore(int i) { + if (this.c.getCriteria().isReadOnly()) { + throw new IllegalStateException("Cannot modify read-only score"); + } else { + this.setScore(this.getScore() - i); + } + } + + public void incrementScore() { + if (this.c.getCriteria().isReadOnly()) { + throw new IllegalStateException("Cannot modify read-only score"); + } else { + this.addScore(1); + } + } + + public int getScore() { + return this.score; + } + + public void setScore(int i) { + int j = this.score; + + this.score = i; + if (j != i || this.g) { + this.g = false; + this.f().handleScoreChanged(this); + } + + } + + public ScoreboardObjective getObjective() { + return this.c; + } + + public String getPlayerName() { + return this.playerName; + } + + public Scoreboard f() { + return this.b; + } + + public boolean g() { + return this.f; + } + + public void a(boolean flag) { + this.f = flag; + } + + public void updateForList(List list) { + this.setScore(this.c.getCriteria().getScoreModifier(list)); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ScoreboardServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardServer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ScoreboardServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardServer.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardStatisticCriteria.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardStatisticCriteria.java new file mode 100644 index 0000000..e1e3bc0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardStatisticCriteria.java @@ -0,0 +1,11 @@ +package net.minecraft.server; + +public class ScoreboardStatisticCriteria extends ScoreboardBaseCriteria { + + private final Statistic j; + + public ScoreboardStatisticCriteria(Statistic statistic) { + super(statistic.name); + this.j = statistic; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeam.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeam.java new file mode 100644 index 0000000..302c53b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeam.java @@ -0,0 +1,138 @@ +package net.minecraft.server; + +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Set; + +public class ScoreboardTeam extends ScoreboardTeamBase { + + private final Scoreboard a; + private final String b; + private final Set c = Sets.newHashSet(); + private String d; + private String e = ""; + private String f = ""; + private boolean g = true; + private boolean h = true; + private ScoreboardTeamBase.EnumNameTagVisibility i; + private ScoreboardTeamBase.EnumNameTagVisibility j; + private EnumChatFormat k; + + public ScoreboardTeam(Scoreboard scoreboard, String s) { + this.i = ScoreboardTeamBase.EnumNameTagVisibility.ALWAYS; + this.j = ScoreboardTeamBase.EnumNameTagVisibility.ALWAYS; + this.k = EnumChatFormat.RESET; + this.a = scoreboard; + this.b = s; + this.d = s; + } + + public String getName() { + return this.b; + } + + public String getDisplayName() { + return this.d; + } + + public void setDisplayName(String s) { + if (s == null) { + throw new IllegalArgumentException("Name cannot be null"); + } else { + this.d = s; + this.a.handleTeamChanged(this); + } + } + + public Collection getPlayerNameSet() { + return this.c; + } + + public String getPrefix() { + return this.e; + } + + public void setPrefix(String s) { + if (s == null) { + throw new IllegalArgumentException("Prefix cannot be null"); + } else { + this.e = s; + this.a.handleTeamChanged(this); + } + } + + public String getSuffix() { + return this.f; + } + + public void setSuffix(String s) { + this.f = s; + this.a.handleTeamChanged(this); + } + + public String getFormattedName(String s) { + return this.getPrefix() + s + this.getSuffix(); + } + + public static String getPlayerDisplayName(ScoreboardTeamBase scoreboardteambase, String s) { + return scoreboardteambase == null ? s : scoreboardteambase.getFormattedName(s); + } + + public boolean allowFriendlyFire() { + return this.g; + } + + public void setAllowFriendlyFire(boolean flag) { + this.g = flag; + this.a.handleTeamChanged(this); + } + + public boolean canSeeFriendlyInvisibles() { + return this.h; + } + + public void setCanSeeFriendlyInvisibles(boolean flag) { + this.h = flag; + this.a.handleTeamChanged(this); + } + + public ScoreboardTeamBase.EnumNameTagVisibility getNameTagVisibility() { + return this.i; + } + + public ScoreboardTeamBase.EnumNameTagVisibility j() { + return this.j; + } + + public void setNameTagVisibility(ScoreboardTeamBase.EnumNameTagVisibility scoreboardteambase_enumnametagvisibility) { + this.i = scoreboardteambase_enumnametagvisibility; + this.a.handleTeamChanged(this); + } + + public void b(ScoreboardTeamBase.EnumNameTagVisibility scoreboardteambase_enumnametagvisibility) { + this.j = scoreboardteambase_enumnametagvisibility; + this.a.handleTeamChanged(this); + } + + public int packOptionData() { + int i = 0; + + if (this.allowFriendlyFire()) { + i |= 1; + } + + if (this.canSeeFriendlyInvisibles()) { + i |= 2; + } + + return i; + } + + public void a(EnumChatFormat enumchatformat) { + this.k = enumchatformat; + } + + public EnumChatFormat l() { + return this.k; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeamBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeamBase.java new file mode 100644 index 0000000..b31f9dc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ScoreboardTeamBase.java @@ -0,0 +1,58 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Collection; +import java.util.Map; + +public abstract class ScoreboardTeamBase { + + public ScoreboardTeamBase() {} + + public boolean isAlly(ScoreboardTeamBase scoreboardteambase) { + return scoreboardteambase == null ? false : this == scoreboardteambase; + } + + public abstract String getName(); + + public abstract String getFormattedName(String s); + + public abstract boolean allowFriendlyFire(); + + public abstract Collection getPlayerNameSet(); + + public abstract ScoreboardTeamBase.EnumNameTagVisibility j(); + + public static enum EnumNameTagVisibility { + + ALWAYS("always", 0), NEVER("never", 1), HIDE_FOR_OTHER_TEAMS("hideForOtherTeams", 2), HIDE_FOR_OWN_TEAM("hideForOwnTeam", 3); + + private static Map g = Maps.newHashMap(); + public final String e; + public final int f; + + public static String[] a() { + return (String[]) ScoreboardTeamBase.EnumNameTagVisibility.g.keySet().toArray(new String[ScoreboardTeamBase.EnumNameTagVisibility.g.size()]); + } + + public static ScoreboardTeamBase.EnumNameTagVisibility a(String s) { + return (ScoreboardTeamBase.EnumNameTagVisibility) ScoreboardTeamBase.EnumNameTagVisibility.g.get(s); + } + + private EnumNameTagVisibility(String s, int i) { + this.e = s; + this.f = i; + } + + static { + ScoreboardTeamBase.EnumNameTagVisibility[] ascoreboardteambase_enumnametagvisibility = values(); + int i = ascoreboardteambase_enumnametagvisibility.length; + + for (int j = 0; j < i; ++j) { + ScoreboardTeamBase.EnumNameTagVisibility scoreboardteambase_enumnametagvisibility = ascoreboardteambase_enumnametagvisibility[j]; + + ScoreboardTeamBase.EnumNameTagVisibility.g.put(scoreboardteambase_enumnametagvisibility.e, scoreboardteambase_enumnametagvisibility); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldData.java b/eSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldData.java new file mode 100644 index 0000000..d1d4ecd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldData.java @@ -0,0 +1,134 @@ +package net.minecraft.server; + +public class SecondaryWorldData extends WorldData { + + private final WorldData b; + + public SecondaryWorldData(WorldData worlddata) { + this.b = worlddata; + } + + public NBTTagCompound a() { + return this.b.a(); + } + + public NBTTagCompound a(NBTTagCompound nbttagcompound) { + return this.b.a(nbttagcompound); + } + + public long getSeed() { + return this.b.getSeed(); + } + + public double c() { + return this.b.c(); + } + + public double d() { + return this.b.d(); + } + + public double e() { + return this.b.e(); + } + + public long getTime() { + return this.b.getTime(); + } + + public long getDayTime() { + return this.b.getDayTime(); + } + + public NBTTagCompound i() { + return this.b.i(); + } + + public String getName() { + return this.b.getName(); + } + + public int l() { + return this.b.l(); + } + + public boolean isThundering() { + return this.b.isThundering(); + } + + public int getThunderDuration() { + return this.b.getThunderDuration(); + } + + public boolean hasStorm() { + return this.b.hasStorm(); + } + + public int getWeatherDuration() { + return this.b.getWeatherDuration(); + } + + public WorldSettings.EnumGamemode getGameType() { + return this.b.getGameType(); + } + + public void setTime(long i) {} + + public void setDayTime(long i) {} + + public void setSpawn(BlockPosition blockposition) {} + + public void a(String s) {} + + public void e(int i) {} + + public void setThundering(boolean flag) {} + + public void setThunderDuration(int i) {} + + public void setStorm(boolean flag) {} + + public void setWeatherDuration(int i) {} + + public boolean shouldGenerateMapFeatures() { + return this.b.shouldGenerateMapFeatures(); + } + + public boolean isHardcore() { + return this.b.isHardcore(); + } + + public WorldType getType() { + return this.b.getType(); + } + + public void a(WorldType worldtype) {} + + public boolean v() { + return this.b.v(); + } + + public void c(boolean flag) {} + + public boolean w() { + return this.b.w(); + } + + public void d(boolean flag) {} + + public GameRules x() { + return this.b.x(); + } + + public EnumDifficulty getDifficulty() { + return this.b.getDifficulty(); + } + + public void setDifficulty(EnumDifficulty enumdifficulty) {} + + public boolean isDifficultyLocked() { + return this.b.isDifficultyLocked(); + } + + public void e(boolean flag) {} +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldServer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/SecondaryWorldServer.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ServerCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerCommand.java new file mode 100644 index 0000000..c8232f6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ServerCommand.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public class ServerCommand { + + public final String command; + public final ICommandListener source; + + public ServerCommand(String s, ICommandListener icommandlistener) { + this.command = s; + this.source = icommandlistener; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java similarity index 87% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java index 2c2665e..c32f4e7 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ServerConnection.java @@ -80,7 +80,12 @@ public class ServerConnection { } // Paper end + // PandaSpigot start public void a(InetAddress inetaddress, int i) throws IOException { + bind(new java.net.InetSocketAddress(inetaddress, i)); + } + public void bind(java.net.SocketAddress address) throws IOException { + // PandaSpigot end List list = this.g; synchronized (this.g) { @@ -88,7 +93,13 @@ public class ServerConnection { LazyInitVar lazyinitvar; if (Epoll.isAvailable() && this.f.ai()) { - oclass = EpollServerSocketChannel.class; + // PandaSpigot start - Unix domain socket support + if (address instanceof io.netty.channel.unix.DomainSocketAddress) { + oclass = io.netty.channel.epoll.EpollServerDomainSocketChannel.class; + } else { + oclass = EpollServerSocketChannel.class; + } + // PandaSpigot end lazyinitvar = ServerConnection.b; ServerConnection.e.info("Using epoll channel type"); } else { @@ -112,7 +123,14 @@ public class ServerConnection { // KigPaper start if(PaperSpigotConfig.nettyReadTimeout) channel.pipeline().addLast("timeout", new ReadTimeoutHandler(30)); // KigPaper end - channel.pipeline().addLast("legacy_query", new LegacyPingHandler(ServerConnection.this)).addLast("splitter", new PacketSplitter()).addLast("decoder", new PacketDecoder(EnumProtocolDirection.SERVERBOUND)).addLast("prepender", new PacketPrepender()).addLast("encoder", new PacketEncoder(EnumProtocolDirection.CLIENTBOUND)); + // PandaSpigot start - newlines + channel.pipeline() + .addLast("legacy_query", new LegacyPingHandler(ServerConnection.this)) + .addLast("splitter", new PacketSplitter()) + .addLast("decoder", new PacketDecoder(EnumProtocolDirection.SERVERBOUND)) + .addLast("prepender", PacketPrepender.INSTANCE) // PandaSpigot - Share PacketPrepender instance + .addLast("encoder", new PacketEncoder(EnumProtocolDirection.CLIENTBOUND)); + // PandaSpigot end NetworkManager networkmanager = new NetworkManager(EnumProtocolDirection.SERVERBOUND); //ServerConnection.this.h.add(networkmanager); @@ -120,7 +138,7 @@ public class ServerConnection { channel.pipeline().addLast("packet_handler", networkmanager); networkmanager.a(new HandshakeListener(ServerConnection.this.f, networkmanager)); } - }).group((EventLoopGroup) lazyinitvar.c()).localAddress(inetaddress, i).bind().syncUninterruptibly()); + }).group((EventLoopGroup) lazyinitvar.c()).localAddress(address).bind().syncUninterruptibly()); } } diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ServerGUI.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerGUI.java new file mode 100644 index 0000000..cf4ff0e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ServerGUI.java @@ -0,0 +1,169 @@ +package net.minecraft.server; + +import com.mojang.util.QueueLogAppender; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.border.EtchedBorder; +import javax.swing.border.TitledBorder; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class ServerGUI extends JComponent { + + private static final Font a = new Font("Monospaced", 0, 12); + private static final Logger b = LogManager.getLogger(); + private DedicatedServer c; + + public static void a(final DedicatedServer dedicatedserver) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception exception) { + ; + } + + ServerGUI servergui = new ServerGUI(dedicatedserver); + JFrame jframe = new JFrame("Minecraft server"); + + jframe.add(servergui); + jframe.pack(); + jframe.setLocationRelativeTo((Component) null); + jframe.setVisible(true); + jframe.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent windowevent) { + dedicatedserver.safeShutdown(); + + while (!dedicatedserver.isStopped()) { + try { + Thread.sleep(100L); + } catch (InterruptedException interruptedexception) { + interruptedexception.printStackTrace(); + } + } + + System.exit(0); + } + }); + } + + public ServerGUI(DedicatedServer dedicatedserver) { + this.c = dedicatedserver; + this.setPreferredSize(new Dimension(854, 480)); + this.setLayout(new BorderLayout()); + + try { + this.add(this.c(), "Center"); + this.add(this.a(), "West"); + } catch (Exception exception) { + ServerGUI.b.error("Couldn\'t build server GUI", exception); + } + + } + + private JComponent a() throws Exception { + JPanel jpanel = new JPanel(new BorderLayout()); + + jpanel.add(new GuiStatsComponent(this.c), "North"); + jpanel.add(this.b(), "Center"); + jpanel.setBorder(new TitledBorder(new EtchedBorder(), "Stats")); + return jpanel; + } + + private JComponent b() throws Exception { + PlayerListBox playerlistbox = new PlayerListBox(this.c); + JScrollPane jscrollpane = new JScrollPane(playerlistbox, 22, 30); + + jscrollpane.setBorder(new TitledBorder(new EtchedBorder(), "Players")); + return jscrollpane; + } + + private JComponent c() throws Exception { + JPanel jpanel = new JPanel(new BorderLayout()); + final JTextArea jtextarea = new JTextArea(); + final JScrollPane jscrollpane = new JScrollPane(jtextarea, 22, 30); + + jtextarea.setEditable(false); + jtextarea.setFont(ServerGUI.a); + final JTextField jtextfield = new JTextField(); + + jtextfield.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent actionevent) { + String s = jtextfield.getText().trim(); + + if (s.length() > 0) { + ServerGUI.this.c.issueCommand(s, MinecraftServer.getServer()); + } + + jtextfield.setText(""); + } + }); + jtextarea.addFocusListener(new FocusAdapter() { + public void focusGained(FocusEvent focusevent) {} + }); + jpanel.add(jscrollpane, "Center"); + jpanel.add(jtextfield, "South"); + jpanel.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat")); + Thread thread = new Thread(new Runnable() { + public void run() { + String s; + + while ((s = QueueLogAppender.getNextLogEvent("ServerGuiConsole")) != null) { + ServerGUI.this.a(jtextarea, jscrollpane, s); + } + + } + }); + + thread.setDaemon(true); + thread.start(); + return jpanel; + } + + public void a(final JTextArea jtextarea, final JScrollPane jscrollpane, final String s) { + if (!SwingUtilities.isEventDispatchThread()) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + ServerGUI.this.a(jtextarea, jscrollpane, s); + } + }); + } else { + Document document = jtextarea.getDocument(); + JScrollBar jscrollbar = jscrollpane.getVerticalScrollBar(); + boolean flag = false; + + if (jscrollpane.getViewport().getView() == jtextarea) { + flag = (double) jscrollbar.getValue() + jscrollbar.getSize().getHeight() + (double) (ServerGUI.a.getSize() * 4) > (double) jscrollbar.getMaximum(); + } + + try { + document.insertString(document.getLength(), s, (AttributeSet) null); + } catch (BadLocationException badlocationexception) { + ; + } + + if (flag) { + jscrollbar.setValue(Integer.MAX_VALUE); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ServerNBTManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerNBTManager.java new file mode 100644 index 0000000..7b3985f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ServerNBTManager.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import java.io.File; + +public class ServerNBTManager extends WorldNBTStorage { + + public ServerNBTManager(File file, String s, boolean flag) { + super(file, s, flag); + } + + public IChunkLoader createChunkLoader(WorldProvider worldprovider) { + File file = this.getDirectory(); + File file1; + + if (worldprovider instanceof WorldProviderHell) { + file1 = new File(file, "DIM-1"); + file1.mkdirs(); + return new ChunkRegionLoader(file1); + } else if (worldprovider instanceof WorldProviderTheEnd) { + file1 = new File(file, "DIM1"); + file1.mkdirs(); + return new ChunkRegionLoader(file1); + } else { + return new ChunkRegionLoader(file); + } + } + + public void saveWorldData(WorldData worlddata, NBTTagCompound nbttagcompound) { + worlddata.e(19133); + super.saveWorldData(worlddata, nbttagcompound); + } + + public void a() { + try { + FileIOThread.a().b(); + } catch (InterruptedException interruptedexception) { + interruptedexception.printStackTrace(); + } + + RegionFileCache.a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ServerPing.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerPing.java new file mode 100644 index 0000000..eeb8100 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ServerPing.java @@ -0,0 +1,247 @@ +package net.minecraft.server; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.mojang.authlib.GameProfile; +import java.lang.reflect.Type; +import java.util.UUID; + +public class ServerPing { + + private IChatBaseComponent a; + private ServerPing.ServerPingPlayerSample b; + private ServerPing.ServerData c; + private String d; + + public ServerPing() {} + + public IChatBaseComponent a() { + return this.a; + } + + public void setMOTD(IChatBaseComponent ichatbasecomponent) { + this.a = ichatbasecomponent; + } + + public ServerPing.ServerPingPlayerSample b() { + return this.b; + } + + public void setPlayerSample(ServerPing.ServerPingPlayerSample serverping_serverpingplayersample) { + this.b = serverping_serverpingplayersample; + } + + public ServerPing.ServerData c() { + return this.c; + } + + public void setServerInfo(ServerPing.ServerData serverping_serverdata) { + this.c = serverping_serverdata; + } + + public void setFavicon(String s) { + this.d = s; + } + + public String d() { + return this.d; + } + + public static class Serializer implements JsonDeserializer, JsonSerializer { + + public Serializer() {} + + public ServerPing a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + JsonObject jsonobject = ChatDeserializer.l(jsonelement, "status"); + ServerPing serverping = new ServerPing(); + + if (jsonobject.has("description")) { + serverping.setMOTD((IChatBaseComponent) jsondeserializationcontext.deserialize(jsonobject.get("description"), IChatBaseComponent.class)); + } + + if (jsonobject.has("players")) { + serverping.setPlayerSample((ServerPing.ServerPingPlayerSample) jsondeserializationcontext.deserialize(jsonobject.get("players"), ServerPing.ServerPingPlayerSample.class)); + } + + if (jsonobject.has("version")) { + serverping.setServerInfo((ServerPing.ServerData) jsondeserializationcontext.deserialize(jsonobject.get("version"), ServerPing.ServerData.class)); + } + + if (jsonobject.has("favicon")) { + serverping.setFavicon(ChatDeserializer.h(jsonobject, "favicon")); + } + + return serverping; + } + + public JsonElement a(ServerPing serverping, Type type, JsonSerializationContext jsonserializationcontext) { + JsonObject jsonobject = new JsonObject(); + + if (serverping.a() != null) { + jsonobject.add("description", jsonserializationcontext.serialize(serverping.a())); + } + + if (serverping.b() != null) { + jsonobject.add("players", jsonserializationcontext.serialize(serverping.b())); + } + + if (serverping.c() != null) { + jsonobject.add("version", jsonserializationcontext.serialize(serverping.c())); + } + + if (serverping.d() != null) { + jsonobject.addProperty("favicon", serverping.d()); + } + + return jsonobject; + } + + public JsonElement serialize(ServerPing object, Type type, JsonSerializationContext jsonserializationcontext) { + return this.a(object, type, jsonserializationcontext); + } + + public ServerPing deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + } + + public static class ServerData { + + private final String a; + private final int b; + + public ServerData(String s, int i) { + this.a = s; + this.b = i; + } + + public String a() { + return this.a; + } + + public int b() { + return this.b; + } + + public static class Serializer implements JsonDeserializer, JsonSerializer { + + public Serializer() {} + + public ServerPing.ServerData a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + JsonObject jsonobject = ChatDeserializer.l(jsonelement, "version"); + + return new ServerPing.ServerData(ChatDeserializer.h(jsonobject, "name"), ChatDeserializer.m(jsonobject, "protocol")); + } + + public JsonElement a(ServerPing.ServerData serverping_serverdata, Type type, JsonSerializationContext jsonserializationcontext) { + JsonObject jsonobject = new JsonObject(); + + jsonobject.addProperty("name", serverping_serverdata.a()); + jsonobject.addProperty("protocol", Integer.valueOf(serverping_serverdata.b())); + return jsonobject; + } + + public JsonElement serialize(ServerPing.ServerData object, Type type, JsonSerializationContext jsonserializationcontext) { + return this.a(object, type, jsonserializationcontext); + } + + public ServerPing.ServerData deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + } + } + + public static class ServerPingPlayerSample { + + private final int a; + private final int b; + private GameProfile[] c; + + public ServerPingPlayerSample(int i, int j) { + this.a = i; + this.b = j; + } + + public int a() { + return this.a; + } + + public int b() { + return this.b; + } + + public GameProfile[] c() { + return this.c; + } + + public void a(GameProfile[] agameprofile) { + this.c = agameprofile; + } + + public static class Serializer implements JsonDeserializer, JsonSerializer { + + public Serializer() {} + + public ServerPing.ServerPingPlayerSample a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + JsonObject jsonobject = ChatDeserializer.l(jsonelement, "players"); + ServerPing.ServerPingPlayerSample serverping_serverpingplayersample = new ServerPing.ServerPingPlayerSample(ChatDeserializer.m(jsonobject, "max"), ChatDeserializer.m(jsonobject, "online")); + + if (ChatDeserializer.d(jsonobject, "sample")) { + JsonArray jsonarray = ChatDeserializer.t(jsonobject, "sample"); + + if (jsonarray.size() > 0) { + GameProfile[] agameprofile = new GameProfile[jsonarray.size()]; + + for (int i = 0; i < agameprofile.length; ++i) { + JsonObject jsonobject1 = ChatDeserializer.l(jsonarray.get(i), "player[" + i + "]"); + String s = ChatDeserializer.h(jsonobject1, "id"); + + agameprofile[i] = new GameProfile(UUID.fromString(s), ChatDeserializer.h(jsonobject1, "name")); + } + + serverping_serverpingplayersample.a(agameprofile); + } + } + + return serverping_serverpingplayersample; + } + + public JsonElement a(ServerPing.ServerPingPlayerSample serverping_serverpingplayersample, Type type, JsonSerializationContext jsonserializationcontext) { + JsonObject jsonobject = new JsonObject(); + + jsonobject.addProperty("max", Integer.valueOf(serverping_serverpingplayersample.a())); + jsonobject.addProperty("online", Integer.valueOf(serverping_serverpingplayersample.b())); + if (serverping_serverpingplayersample.c() != null && serverping_serverpingplayersample.c().length > 0) { + JsonArray jsonarray = new JsonArray(); + + for (int i = 0; i < serverping_serverpingplayersample.c().length; ++i) { + JsonObject jsonobject1 = new JsonObject(); + UUID uuid = serverping_serverpingplayersample.c()[i].getId(); + + jsonobject1.addProperty("id", uuid == null ? "" : uuid.toString()); + jsonobject1.addProperty("name", serverping_serverpingplayersample.c()[i].getName()); + jsonarray.add(jsonobject1); + } + + jsonobject.add("sample", jsonarray); + } + + return jsonobject; + } + + public JsonElement serialize(ServerPing.ServerPingPlayerSample object, Type type, JsonSerializationContext jsonserializationcontext) { + return this.a(object, type, jsonserializationcontext); + } + + public ServerPing.ServerPingPlayerSample deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ServerStatisticManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/ServerStatisticManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ServerStatisticManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ServerStatisticManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetector.java new file mode 100644 index 0000000..d455629 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetector.java @@ -0,0 +1,171 @@ +package net.minecraft.server; + +import com.google.common.base.MoreObjects; +import com.google.common.base.Predicate; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import java.util.Iterator; + +public class ShapeDetector { + + private final Predicate[][][] a; + private final int b; + private final int c; + private final int d; + + public ShapeDetector(Predicate[][][] apredicate) { + this.a = apredicate; + this.b = apredicate.length; + if (this.b > 0) { + this.c = apredicate[0].length; + if (this.c > 0) { + this.d = apredicate[0][0].length; + } else { + this.d = 0; + } + } else { + this.c = 0; + this.d = 0; + } + + } + + public int b() { + return this.c; + } + + public int c() { + return this.d; + } + + private ShapeDetector.ShapeDetectorCollection a(BlockPosition blockposition, EnumDirection enumdirection, EnumDirection enumdirection1, LoadingCache loadingcache) { + for (int i = 0; i < this.d; ++i) { + for (int j = 0; j < this.c; ++j) { + for (int k = 0; k < this.b; ++k) { + if (!this.a[k][j][i].apply(loadingcache.getUnchecked(a(blockposition, enumdirection, enumdirection1, i, j, k)))) { + return null; + } + } + } + } + + return new ShapeDetector.ShapeDetectorCollection(blockposition, enumdirection, enumdirection1, loadingcache, this.d, this.c, this.b); + } + + public ShapeDetector.ShapeDetectorCollection a(World world, BlockPosition blockposition) { + LoadingCache loadingcache = a(world, false); + int i = Math.max(Math.max(this.d, this.c), this.b); + Iterator iterator = BlockPosition.a(blockposition, blockposition.a(i - 1, i - 1, i - 1)).iterator(); + + while (iterator.hasNext()) { + BlockPosition blockposition1 = (BlockPosition) iterator.next(); + EnumDirection[] aenumdirection = EnumDirection.values(); + int j = aenumdirection.length; + + for (int k = 0; k < j; ++k) { + EnumDirection enumdirection = aenumdirection[k]; + EnumDirection[] aenumdirection1 = EnumDirection.values(); + int l = aenumdirection1.length; + + for (int i1 = 0; i1 < l; ++i1) { + EnumDirection enumdirection1 = aenumdirection1[i1]; + + if (enumdirection1 != enumdirection && enumdirection1 != enumdirection.opposite()) { + ShapeDetector.ShapeDetectorCollection shapedetector_shapedetectorcollection = this.a(blockposition1, enumdirection, enumdirection1, loadingcache); + + if (shapedetector_shapedetectorcollection != null) { + return shapedetector_shapedetectorcollection; + } + } + } + } + } + + return null; + } + + public static LoadingCache a(World world, boolean flag) { + return CacheBuilder.newBuilder().build(new ShapeDetector.BlockLoader(world, flag)); + } + + protected static BlockPosition a(BlockPosition blockposition, EnumDirection enumdirection, EnumDirection enumdirection1, int i, int j, int k) { + if (enumdirection != enumdirection1 && enumdirection != enumdirection1.opposite()) { + BaseBlockPosition baseblockposition = new BaseBlockPosition(enumdirection.getAdjacentX(), enumdirection.getAdjacentY(), enumdirection.getAdjacentZ()); + BaseBlockPosition baseblockposition1 = new BaseBlockPosition(enumdirection1.getAdjacentX(), enumdirection1.getAdjacentY(), enumdirection1.getAdjacentZ()); + BaseBlockPosition baseblockposition2 = baseblockposition.d(baseblockposition1); + + return blockposition.a(baseblockposition1.getX() * -j + baseblockposition2.getX() * i + baseblockposition.getX() * k, baseblockposition1.getY() * -j + baseblockposition2.getY() * i + baseblockposition.getY() * k, baseblockposition1.getZ() * -j + baseblockposition2.getZ() * i + baseblockposition.getZ() * k); + } else { + throw new IllegalArgumentException("Invalid forwards & up combination"); + } + } + + public static class ShapeDetectorCollection { + + private final BlockPosition a; + private final EnumDirection b; + private final EnumDirection c; + private final LoadingCache d; + private final int e; + private final int f; + private final int g; + + public ShapeDetectorCollection(BlockPosition blockposition, EnumDirection enumdirection, EnumDirection enumdirection1, LoadingCache loadingcache, int i, int j, int k) { + this.a = blockposition; + this.b = enumdirection; + this.c = enumdirection1; + this.d = loadingcache; + this.e = i; + this.f = j; + this.g = k; + } + + public BlockPosition a() { + return this.a; + } + + public EnumDirection b() { + return this.b; + } + + public EnumDirection c() { + return this.c; + } + + public int d() { + return this.e; + } + + public int e() { + return this.f; + } + + public ShapeDetectorBlock a(int i, int j, int k) { + return (ShapeDetectorBlock) this.d.getUnchecked(ShapeDetector.a(this.a, this.b(), this.c(), i, j, k)); + } + + public String toString() { + return MoreObjects.toStringHelper(this).add("up", this.c).add("forwards", this.b).add("frontTopLeft", this.a).toString(); + } + } + + static class BlockLoader extends CacheLoader { + + private final World a; + private final boolean b; + + public BlockLoader(World world, boolean flag) { + this.a = world; + this.b = flag; + } + + public ShapeDetectorBlock a(BlockPosition blockposition) throws Exception { + return new ShapeDetectorBlock(this.a, blockposition, this.b); + } + + public ShapeDetectorBlock load(BlockPosition object) throws Exception { + return this.a(object); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBlock.java new file mode 100644 index 0000000..3fe62af --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBlock.java @@ -0,0 +1,52 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; + +public class ShapeDetectorBlock { + + private final World a; + private final BlockPosition b; + private final boolean c; + private IBlockData d; + private TileEntity e; + private boolean f; + + public ShapeDetectorBlock(World world, BlockPosition blockposition, boolean flag) { + this.a = world; + this.b = blockposition; + this.c = flag; + } + + public IBlockData a() { + if (this.d == null && (this.c || this.a.isLoaded(this.b))) { + this.d = this.a.getType(this.b); + } + + return this.d; + } + + public TileEntity b() { + if (this.e == null && !this.f) { + this.e = this.a.getTileEntity(this.b); + this.f = true; + } + + return this.e; + } + + public BlockPosition getPosition() { + return this.b; + } + + public static Predicate a(final Predicate predicate) { + return new Predicate() { + public boolean a(ShapeDetectorBlock shapedetectorblock) { + return shapedetectorblock != null && predicate.apply(shapedetectorblock.a()); + } + + public boolean apply(Object object) { + return this.a((ShapeDetectorBlock) object); + } + }; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBuilder.java b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBuilder.java new file mode 100644 index 0000000..65b077d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ShapeDetectorBuilder.java @@ -0,0 +1,113 @@ +package net.minecraft.server; + +import com.google.common.base.Joiner; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; + +public class ShapeDetectorBuilder { + + private static final Joiner a = Joiner.on(","); + private final List b = Lists.newArrayList(); + private final Map> c = Maps.newHashMap(); + private int d; + private int e; + + private ShapeDetectorBuilder() { + this.c.put(Character.valueOf(' '), Predicates.alwaysTrue()); + } + + public ShapeDetectorBuilder a(String... astring) { + if (!ArrayUtils.isEmpty(astring) && !StringUtils.isEmpty(astring[0])) { + if (this.b.isEmpty()) { + this.d = astring.length; + this.e = astring[0].length(); + } + + if (astring.length != this.d) { + throw new IllegalArgumentException("Expected aisle with height of " + this.d + ", but was given one with a height of " + astring.length + ")"); + } else { + String[] astring1 = astring; + int i = astring.length; + + for (int j = 0; j < i; ++j) { + String s = astring1[j]; + + if (s.length() != this.e) { + throw new IllegalArgumentException("Not all rows in the given aisle are the correct width (expected " + this.e + ", found one with " + s.length() + ")"); + } + + char[] achar = s.toCharArray(); + int k = achar.length; + + for (int l = 0; l < k; ++l) { + char c0 = achar[l]; + + if (!this.c.containsKey(c0)) { + this.c.put(c0, null); + } + } + } + + this.b.add(astring); + return this; + } + } else { + throw new IllegalArgumentException("Empty pattern for aisle"); + } + } + + public static ShapeDetectorBuilder a() { + return new ShapeDetectorBuilder(); + } + + public ShapeDetectorBuilder a(char c0, Predicate predicate) { + this.c.put(Character.valueOf(c0), predicate); + return this; + } + + public ShapeDetector b() { + return new ShapeDetector(this.c()); + } + + private Predicate[][][] c() { + this.d(); + Predicate[][][] apredicate = (Predicate[][][]) ((Predicate[][][]) Array.newInstance(Predicate.class, new int[] { this.b.size(), this.d, this.e})); + + for (int i = 0; i < this.b.size(); ++i) { + for (int j = 0; j < this.d; ++j) { + for (int k = 0; k < this.e; ++k) { + apredicate[i][j][k] = (Predicate) this.c.get(Character.valueOf(((String[]) this.b.get(i))[j].charAt(k))); + } + } + } + + return apredicate; + } + + private void d() { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = this.c.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (entry.getValue() == null) { + arraylist.add(entry.getKey()); + } + } + + if (!arraylist.isEmpty()) { + throw new IllegalStateException("Predicates for character(s) " + ShapeDetectorBuilder.a.join(arraylist) + " are missing"); + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ShapedRecipes.java b/eSpigot-Server/src/main/java/net/minecraft/server/ShapedRecipes.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ShapedRecipes.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ShapedRecipes.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ShapelessRecipes.java b/eSpigot-Server/src/main/java/net/minecraft/server/ShapelessRecipes.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ShapelessRecipes.java rename to eSpigot-Server/src/main/java/net/minecraft/server/ShapelessRecipes.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SharedConstants.java b/eSpigot-Server/src/main/java/net/minecraft/server/SharedConstants.java new file mode 100644 index 0000000..fcf4c79 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SharedConstants.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public class SharedConstants { + + public static final char[] allowedCharacters = new char[] { '/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':'}; + + public static boolean isAllowedChatCharacter(char c0) { + return c0 != 167 && c0 >= 32 && c0 != 127; + } + + public static String a(String s) { + StringBuilder stringbuilder = new StringBuilder(); + char[] achar = s.toCharArray(); + int i = achar.length; + + for (int j = 0; j < i; ++j) { + char c0 = achar[j]; + + if (isAllowedChatCharacter(c0)) { + stringbuilder.append(c0); + } + } + + return stringbuilder.toString(); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Slot.java b/eSpigot-Server/src/main/java/net/minecraft/server/Slot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Slot.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Slot.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceFuel.java b/eSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceFuel.java new file mode 100644 index 0000000..2bbedad --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceFuel.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class SlotFurnaceFuel extends Slot { + + public SlotFurnaceFuel(IInventory iinventory, int i, int j, int k) { + super(iinventory, i, j, k); + } + + public boolean isAllowed(ItemStack itemstack) { + return TileEntityFurnace.isFuel(itemstack) || c_(itemstack); + } + + public int getMaxStackSize(ItemStack itemstack) { + return c_(itemstack) ? 1 : super.getMaxStackSize(itemstack); + } + + public static boolean c_(ItemStack itemstack) { + return itemstack != null && itemstack.getItem() != null && itemstack.getItem() == Items.BUCKET; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceResult.java b/eSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceResult.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceResult.java rename to eSpigot-Server/src/main/java/net/minecraft/server/SlotFurnaceResult.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SlotMerchantResult.java b/eSpigot-Server/src/main/java/net/minecraft/server/SlotMerchantResult.java new file mode 100644 index 0000000..468d3d2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SlotMerchantResult.java @@ -0,0 +1,84 @@ +package net.minecraft.server; + +public class SlotMerchantResult extends Slot { + + private final InventoryMerchant a; + private EntityHuman b; + private int c; + private final IMerchant h; + + public SlotMerchantResult(EntityHuman entityhuman, IMerchant imerchant, InventoryMerchant inventorymerchant, int i, int j, int k) { + super(inventorymerchant, i, j, k); + this.b = entityhuman; + this.h = imerchant; + this.a = inventorymerchant; + } + + public boolean isAllowed(ItemStack itemstack) { + return false; + } + + public ItemStack a(int i) { + if (this.hasItem()) { + this.c += Math.min(i, this.getItem().count); + } + + return super.a(i); + } + + protected void a(ItemStack itemstack, int i) { + this.c += i; + this.c(itemstack); + } + + protected void c(ItemStack itemstack) { + itemstack.a(this.b.world, this.b, this.c); + this.c = 0; + } + + public void a(EntityHuman entityhuman, ItemStack itemstack) { + this.c(itemstack); + MerchantRecipe merchantrecipe = this.a.getRecipe(); + + if (merchantrecipe != null) { + ItemStack itemstack1 = this.a.getItem(0); + ItemStack itemstack2 = this.a.getItem(1); + + if (this.a(merchantrecipe, itemstack1, itemstack2) || this.a(merchantrecipe, itemstack2, itemstack1)) { + this.h.a(merchantrecipe); + entityhuman.b(StatisticList.G); + if (itemstack1 != null && itemstack1.count <= 0) { + itemstack1 = null; + } + + if (itemstack2 != null && itemstack2.count <= 0) { + itemstack2 = null; + } + + this.a.setItem(0, itemstack1); + this.a.setItem(1, itemstack2); + } + } + + } + + private boolean a(MerchantRecipe merchantrecipe, ItemStack itemstack, ItemStack itemstack1) { + ItemStack itemstack2 = merchantrecipe.getBuyItem1(); + ItemStack itemstack3 = merchantrecipe.getBuyItem2(); + + if (itemstack != null && itemstack.getItem() == itemstack2.getItem()) { + if (itemstack3 != null && itemstack1 != null && itemstack3.getItem() == itemstack1.getItem()) { + itemstack.count -= itemstack2.count; + itemstack1.count -= itemstack3.count; + return true; + } + + if (itemstack3 == null && itemstack1 == null) { + itemstack.count -= itemstack2.count; + return true; + } + } + + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SlotResult.java b/eSpigot-Server/src/main/java/net/minecraft/server/SlotResult.java new file mode 100644 index 0000000..d2551cf --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SlotResult.java @@ -0,0 +1,106 @@ +package net.minecraft.server; + +public class SlotResult extends Slot { + + private final InventoryCrafting a; + private final EntityHuman b; + private int c; + + public SlotResult(EntityHuman entityhuman, InventoryCrafting inventorycrafting, IInventory iinventory, int i, int j, int k) { + super(iinventory, i, j, k); + this.b = entityhuman; + this.a = inventorycrafting; + } + + public boolean isAllowed(ItemStack itemstack) { + return false; + } + + public ItemStack a(int i) { + if (this.hasItem()) { + this.c += Math.min(i, this.getItem().count); + } + + return super.a(i); + } + + protected void a(ItemStack itemstack, int i) { + this.c += i; + this.c(itemstack); + } + + protected void c(ItemStack itemstack) { + if (this.c > 0) { + itemstack.a(this.b.world, this.b, this.c); + } + + this.c = 0; + if (itemstack.getItem() == Item.getItemOf(Blocks.CRAFTING_TABLE)) { + this.b.b((Statistic) AchievementList.h); + } + + if (itemstack.getItem() instanceof ItemPickaxe) { + this.b.b((Statistic) AchievementList.i); + } + + if (itemstack.getItem() == Item.getItemOf(Blocks.FURNACE)) { + this.b.b((Statistic) AchievementList.j); + } + + if (itemstack.getItem() instanceof ItemHoe) { + this.b.b((Statistic) AchievementList.l); + } + + if (itemstack.getItem() == Items.BREAD) { + this.b.b((Statistic) AchievementList.m); + } + + if (itemstack.getItem() == Items.CAKE) { + this.b.b((Statistic) AchievementList.n); + } + + if (itemstack.getItem() instanceof ItemPickaxe && ((ItemPickaxe) itemstack.getItem()).g() != Item.EnumToolMaterial.WOOD) { + this.b.b((Statistic) AchievementList.o); + } + + if (itemstack.getItem() instanceof ItemSword) { + this.b.b((Statistic) AchievementList.r); + } + + if (itemstack.getItem() == Item.getItemOf(Blocks.ENCHANTING_TABLE)) { + this.b.b((Statistic) AchievementList.E); + } + + if (itemstack.getItem() == Item.getItemOf(Blocks.BOOKSHELF)) { + this.b.b((Statistic) AchievementList.G); + } + + if (itemstack.getItem() == Items.GOLDEN_APPLE && itemstack.getData() == 1) { + this.b.b((Statistic) AchievementList.M); + } + + } + + public void a(EntityHuman entityhuman, ItemStack itemstack) { + this.c(itemstack); + ItemStack[] aitemstack = CraftingManager.getInstance().b(this.a, entityhuman.world); + + for (int i = 0; i < aitemstack.length; ++i) { + ItemStack itemstack1 = this.a.getItem(i); + ItemStack itemstack2 = aitemstack[i]; + + if (itemstack1 != null) { + this.a.splitStack(i, 1); + } + + if (itemstack2 != null) { + if (this.a.getItem(i) == null) { + this.a.setItem(i, itemstack2); + } else if (!this.b.inventory.pickup(itemstack2)) { + this.b.drop(itemstack2, false); + } + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SourceBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/SourceBlock.java new file mode 100644 index 0000000..7390678 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SourceBlock.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +public class SourceBlock implements ISourceBlock { + + private final World a; + private final BlockPosition b; + + public SourceBlock(World world, BlockPosition blockposition) { + this.a = world; + this.b = blockposition; + } + + public World getWorld() { + return this.a; + } + + public double getX() { + return (double) this.b.getX() + 0.5D; + } + + public double getY() { + return (double) this.b.getY() + 0.5D; + } + + public double getZ() { + return (double) this.b.getZ() + 0.5D; + } + + public BlockPosition getBlockPosition() { + return this.b; + } + + public int f() { + IBlockData iblockdata = this.a.getType(this.b); + + return iblockdata.getBlock().toLegacyData(iblockdata); + } + + public T getTileEntity() { + return (T) this.a.getTileEntity(this.b); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/SpawnerCreature.java b/eSpigot-Server/src/main/java/net/minecraft/server/SpawnerCreature.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/SpawnerCreature.java rename to eSpigot-Server/src/main/java/net/minecraft/server/SpawnerCreature.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Statistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/Statistic.java new file mode 100644 index 0000000..5be70d4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Statistic.java @@ -0,0 +1,105 @@ +package net.minecraft.server; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Locale; + +public class Statistic { + + public final String name; + private final IChatBaseComponent a; + public boolean f; + private final Counter b; + private final IScoreboardCriteria c; + private Class d; + private static NumberFormat k = NumberFormat.getIntegerInstance(Locale.US); + public static Counter g = new Counter() { + }; + private static DecimalFormat l = new DecimalFormat("########0.00"); + public static Counter h = new Counter() { + }; + public static Counter i = new Counter() { + }; + public static Counter j = new Counter() { + }; + + public Statistic(String s, IChatBaseComponent ichatbasecomponent, Counter counter) { + this.name = s; + this.a = ichatbasecomponent; + this.b = counter; + this.c = new ScoreboardStatisticCriteria(this); + IScoreboardCriteria.criteria.put(this.c.getName(), this.c); + } + + public Statistic(String s, IChatBaseComponent ichatbasecomponent) { + this(s, ichatbasecomponent, Statistic.g); + } + + public Statistic i() { + this.f = true; + return this; + } + + public Statistic h() { + if (StatisticList.a.containsKey(this.name)) { + throw new RuntimeException("Duplicate stat id: \"" + ((Statistic) StatisticList.a.get(this.name)).a + "\" and \"" + this.a + "\" at id " + this.name); + } else { + StatisticList.stats.add(this); + StatisticList.a.put(this.name, this); + return this; + } + } + + public boolean d() { + return false; + } + + public IChatBaseComponent e() { + IChatBaseComponent ichatbasecomponent = this.a.f(); + + ichatbasecomponent.getChatModifier().setColor(EnumChatFormat.GRAY); + ichatbasecomponent.getChatModifier().setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_ACHIEVEMENT, new ChatComponentText(this.name))); + return ichatbasecomponent; + } + + public IChatBaseComponent j() { + IChatBaseComponent ichatbasecomponent = this.e(); + IChatBaseComponent ichatbasecomponent1 = (new ChatComponentText("[")).addSibling(ichatbasecomponent).a("]"); + + ichatbasecomponent1.setChatModifier(ichatbasecomponent.getChatModifier()); + return ichatbasecomponent1; + } + + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (object != null && this.getClass() == object.getClass()) { + Statistic statistic = (Statistic) object; + + return this.name.equals(statistic.name); + } else { + return false; + } + } + + public int hashCode() { + return this.name.hashCode(); + } + + public String toString() { + return "Stat{id=" + this.name + ", nameId=" + this.a + ", awardLocallyOnly=" + this.f + ", formatter=" + this.b + ", objectiveCriteria=" + this.c + '}'; + } + + public IScoreboardCriteria k() { + return this.c; + } + + public Class l() { + return this.d; + } + + public Statistic b(Class oclass) { + this.d = oclass; + return this; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StatisticList.java b/eSpigot-Server/src/main/java/net/minecraft/server/StatisticList.java new file mode 100644 index 0000000..b5ceb9a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StatisticList.java @@ -0,0 +1,232 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class StatisticList { + + protected static Map a = Maps.newHashMap(); + public static List stats = Lists.newArrayList(); + public static List c = Lists.newArrayList(); + public static List d = Lists.newArrayList(); + public static List e = Lists.newArrayList(); + public static Statistic f = (new CounterStatistic("stat.leaveGame", new ChatMessage("stat.leaveGame", new Object[0]))).i().h(); + public static Statistic g = (new CounterStatistic("stat.playOneMinute", new ChatMessage("stat.playOneMinute", new Object[0]), Statistic.h)).i().h(); + public static Statistic h = (new CounterStatistic("stat.timeSinceDeath", new ChatMessage("stat.timeSinceDeath", new Object[0]), Statistic.h)).i().h(); + public static Statistic i = (new CounterStatistic("stat.walkOneCm", new ChatMessage("stat.walkOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic j = (new CounterStatistic("stat.crouchOneCm", new ChatMessage("stat.crouchOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic k = (new CounterStatistic("stat.sprintOneCm", new ChatMessage("stat.sprintOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic l = (new CounterStatistic("stat.swimOneCm", new ChatMessage("stat.swimOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic m = (new CounterStatistic("stat.fallOneCm", new ChatMessage("stat.fallOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic n = (new CounterStatistic("stat.climbOneCm", new ChatMessage("stat.climbOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic o = (new CounterStatistic("stat.flyOneCm", new ChatMessage("stat.flyOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic p = (new CounterStatistic("stat.diveOneCm", new ChatMessage("stat.diveOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic q = (new CounterStatistic("stat.minecartOneCm", new ChatMessage("stat.minecartOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic r = (new CounterStatistic("stat.boatOneCm", new ChatMessage("stat.boatOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic s = (new CounterStatistic("stat.pigOneCm", new ChatMessage("stat.pigOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic t = (new CounterStatistic("stat.horseOneCm", new ChatMessage("stat.horseOneCm", new Object[0]), Statistic.i)).i().h(); + public static Statistic u = (new CounterStatistic("stat.jump", new ChatMessage("stat.jump", new Object[0]))).i().h(); + public static Statistic v = (new CounterStatistic("stat.drop", new ChatMessage("stat.drop", new Object[0]))).i().h(); + public static Statistic w = (new CounterStatistic("stat.damageDealt", new ChatMessage("stat.damageDealt", new Object[0]), Statistic.j)).h(); + public static Statistic x = (new CounterStatistic("stat.damageTaken", new ChatMessage("stat.damageTaken", new Object[0]), Statistic.j)).h(); + public static Statistic y = (new CounterStatistic("stat.deaths", new ChatMessage("stat.deaths", new Object[0]))).h(); + public static Statistic z = (new CounterStatistic("stat.mobKills", new ChatMessage("stat.mobKills", new Object[0]))).h(); + public static Statistic A = (new CounterStatistic("stat.animalsBred", new ChatMessage("stat.animalsBred", new Object[0]))).h(); + public static Statistic B = (new CounterStatistic("stat.playerKills", new ChatMessage("stat.playerKills", new Object[0]))).h(); + public static Statistic C = (new CounterStatistic("stat.fishCaught", new ChatMessage("stat.fishCaught", new Object[0]))).h(); + public static Statistic D = (new CounterStatistic("stat.junkFished", new ChatMessage("stat.junkFished", new Object[0]))).h(); + public static Statistic E = (new CounterStatistic("stat.treasureFished", new ChatMessage("stat.treasureFished", new Object[0]))).h(); + public static Statistic F = (new CounterStatistic("stat.talkedToVillager", new ChatMessage("stat.talkedToVillager", new Object[0]))).h(); + public static Statistic G = (new CounterStatistic("stat.tradedWithVillager", new ChatMessage("stat.tradedWithVillager", new Object[0]))).h(); + public static Statistic H = (new CounterStatistic("stat.cakeSlicesEaten", new ChatMessage("stat.cakeSlicesEaten", new Object[0]))).h(); + public static Statistic I = (new CounterStatistic("stat.cauldronFilled", new ChatMessage("stat.cauldronFilled", new Object[0]))).h(); + public static Statistic J = (new CounterStatistic("stat.cauldronUsed", new ChatMessage("stat.cauldronUsed", new Object[0]))).h(); + public static Statistic K = (new CounterStatistic("stat.armorCleaned", new ChatMessage("stat.armorCleaned", new Object[0]))).h(); + public static Statistic L = (new CounterStatistic("stat.bannerCleaned", new ChatMessage("stat.bannerCleaned", new Object[0]))).h(); + public static Statistic M = (new CounterStatistic("stat.brewingstandInteraction", new ChatMessage("stat.brewingstandInteraction", new Object[0]))).h(); + public static Statistic N = (new CounterStatistic("stat.beaconInteraction", new ChatMessage("stat.beaconInteraction", new Object[0]))).h(); + public static Statistic O = (new CounterStatistic("stat.dropperInspected", new ChatMessage("stat.dropperInspected", new Object[0]))).h(); + public static Statistic P = (new CounterStatistic("stat.hopperInspected", new ChatMessage("stat.hopperInspected", new Object[0]))).h(); + public static Statistic Q = (new CounterStatistic("stat.dispenserInspected", new ChatMessage("stat.dispenserInspected", new Object[0]))).h(); + public static Statistic R = (new CounterStatistic("stat.noteblockPlayed", new ChatMessage("stat.noteblockPlayed", new Object[0]))).h(); + public static Statistic S = (new CounterStatistic("stat.noteblockTuned", new ChatMessage("stat.noteblockTuned", new Object[0]))).h(); + public static Statistic T = (new CounterStatistic("stat.flowerPotted", new ChatMessage("stat.flowerPotted", new Object[0]))).h(); + public static Statistic U = (new CounterStatistic("stat.trappedChestTriggered", new ChatMessage("stat.trappedChestTriggered", new Object[0]))).h(); + public static Statistic V = (new CounterStatistic("stat.enderchestOpened", new ChatMessage("stat.enderchestOpened", new Object[0]))).h(); + public static Statistic W = (new CounterStatistic("stat.itemEnchanted", new ChatMessage("stat.itemEnchanted", new Object[0]))).h(); + public static Statistic X = (new CounterStatistic("stat.recordPlayed", new ChatMessage("stat.recordPlayed", new Object[0]))).h(); + public static Statistic Y = (new CounterStatistic("stat.furnaceInteraction", new ChatMessage("stat.furnaceInteraction", new Object[0]))).h(); + public static Statistic Z = (new CounterStatistic("stat.craftingTableInteraction", new ChatMessage("stat.workbenchInteraction", new Object[0]))).h(); + public static Statistic aa = (new CounterStatistic("stat.chestOpened", new ChatMessage("stat.chestOpened", new Object[0]))).h(); + public static final Statistic[] MINE_BLOCK_COUNT = new Statistic[4096]; + public static final Statistic[] CRAFT_BLOCK_COUNT = new Statistic[32000]; + public static final Statistic[] USE_ITEM_COUNT = new Statistic[32000]; + public static final Statistic[] BREAK_ITEM_COUNT = new Statistic[32000]; + + public static void a() { + c(); + d(); + e(); + b(); + AchievementList.a(); + EntityTypes.a(); + } + + private static void b() { + HashSet hashset = Sets.newHashSet(); + Iterator iterator = CraftingManager.getInstance().getRecipes().iterator(); + + while (iterator.hasNext()) { + IRecipe irecipe = (IRecipe) iterator.next(); + + if (irecipe.b() != null) { + hashset.add(irecipe.b().getItem()); + } + } + + iterator = RecipesFurnace.getInstance().getRecipes().values().iterator(); + + while (iterator.hasNext()) { + ItemStack itemstack = (ItemStack) iterator.next(); + + hashset.add(itemstack.getItem()); + } + + iterator = hashset.iterator(); + + while (iterator.hasNext()) { + Item item = (Item) iterator.next(); + + if (item != null) { + int i = Item.getId(item); + String s = a(item); + + if (s != null) { + StatisticList.CRAFT_BLOCK_COUNT[i] = (new CraftingStatistic("stat.craftItem.", s, new ChatMessage("stat.craftItem", new Object[] { (new ItemStack(item)).C()}), item)).h(); + } + } + } + + a(StatisticList.CRAFT_BLOCK_COUNT); + } + + private static void c() { + Iterator iterator = Block.REGISTRY.iterator(); + + while (iterator.hasNext()) { + Block block = (Block) iterator.next(); + Item item = Item.getItemOf(block); + + if (item != null) { + int i = Block.getId(block); + String s = a(item); + + if (s != null && block.J()) { + StatisticList.MINE_BLOCK_COUNT[i] = (new CraftingStatistic("stat.mineBlock.", s, new ChatMessage("stat.mineBlock", new Object[] { (new ItemStack(block)).C()}), item)).h(); + StatisticList.e.add((CraftingStatistic) StatisticList.MINE_BLOCK_COUNT[i]); + } + } + } + + a(StatisticList.MINE_BLOCK_COUNT); + } + + private static void d() { + Iterator iterator = Item.REGISTRY.iterator(); + + while (iterator.hasNext()) { + Item item = (Item) iterator.next(); + + if (item != null) { + int i = Item.getId(item); + String s = a(item); + + if (s != null) { + StatisticList.USE_ITEM_COUNT[i] = (new CraftingStatistic("stat.useItem.", s, new ChatMessage("stat.useItem", new Object[] { (new ItemStack(item)).C()}), item)).h(); + if (!(item instanceof ItemBlock)) { + StatisticList.d.add((CraftingStatistic) StatisticList.USE_ITEM_COUNT[i]); + } + } + } + } + + a(StatisticList.USE_ITEM_COUNT); + } + + private static void e() { + Iterator iterator = Item.REGISTRY.iterator(); + + while (iterator.hasNext()) { + Item item = (Item) iterator.next(); + + if (item != null) { + int i = Item.getId(item); + String s = a(item); + + if (s != null && item.usesDurability()) { + StatisticList.BREAK_ITEM_COUNT[i] = (new CraftingStatistic("stat.breakItem.", s, new ChatMessage("stat.breakItem", new Object[] { (new ItemStack(item)).C()}), item)).h(); + } + } + } + + a(StatisticList.BREAK_ITEM_COUNT); + } + + private static String a(Item item) { + MinecraftKey minecraftkey = (MinecraftKey) Item.REGISTRY.c(item); + + return minecraftkey != null ? minecraftkey.toString().replace(':', '.') : null; + } + + private static void a(Statistic[] astatistic) { + a(astatistic, Blocks.WATER, Blocks.FLOWING_WATER); + a(astatistic, Blocks.LAVA, Blocks.FLOWING_LAVA); + a(astatistic, Blocks.LIT_PUMPKIN, Blocks.PUMPKIN); + a(astatistic, Blocks.LIT_FURNACE, Blocks.FURNACE); + a(astatistic, Blocks.LIT_REDSTONE_ORE, Blocks.REDSTONE_ORE); + a(astatistic, Blocks.POWERED_REPEATER, Blocks.UNPOWERED_REPEATER); + a(astatistic, Blocks.POWERED_COMPARATOR, Blocks.UNPOWERED_COMPARATOR); + a(astatistic, Blocks.REDSTONE_TORCH, Blocks.UNLIT_REDSTONE_TORCH); + a(astatistic, Blocks.LIT_REDSTONE_LAMP, Blocks.REDSTONE_LAMP); + a(astatistic, Blocks.DOUBLE_STONE_SLAB, Blocks.STONE_SLAB); + a(astatistic, Blocks.DOUBLE_WOODEN_SLAB, Blocks.WOODEN_SLAB); + a(astatistic, Blocks.DOUBLE_STONE_SLAB2, Blocks.STONE_SLAB2); + a(astatistic, Blocks.GRASS, Blocks.DIRT); + a(astatistic, Blocks.FARMLAND, Blocks.DIRT); + } + + private static void a(Statistic[] astatistic, Block block, Block block1) { + int i = Block.getId(block); + int j = Block.getId(block1); + + if (astatistic[i] != null && astatistic[j] == null) { + astatistic[j] = astatistic[i]; + } else { + StatisticList.stats.remove(astatistic[i]); + StatisticList.e.remove(astatistic[i]); + StatisticList.c.remove(astatistic[i]); + astatistic[i] = astatistic[j]; + } + } + + public static Statistic a(EntityTypes.MonsterEggInfo entitytypes_monsteregginfo) { + String s = EntityTypes.b(entitytypes_monsteregginfo.a); + + return s == null ? null : (new Statistic("stat.killEntity." + s, new ChatMessage("stat.entityKill", new Object[] { new ChatMessage("entity." + s + ".name", new Object[0])}))).h(); + } + + public static Statistic b(EntityTypes.MonsterEggInfo entitytypes_monsteregginfo) { + String s = EntityTypes.b(entitytypes_monsteregginfo.a); + + return s == null ? null : (new Statistic("stat.entityKilledBy." + s, new ChatMessage("stat.entityKilledBy", new Object[] { new ChatMessage("entity." + s + ".name", new Object[0])}))).h(); + } + + public static Statistic getStatistic(String s) { + return (Statistic) StatisticList.a.get(s); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/StatisticManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/StatisticManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/StatisticManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/StatisticManager.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StatisticWrapper.java b/eSpigot-Server/src/main/java/net/minecraft/server/StatisticWrapper.java new file mode 100644 index 0000000..906aa3d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StatisticWrapper.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +public class StatisticWrapper { + + private int a; + private IJsonStatistic b; + + public StatisticWrapper() {} + + public int a() { + return this.a; + } + + public void a(int i) { + this.a = i; + } + + public T b() { + return (T) this.b; + } + + public void a(IJsonStatistic ijsonstatistic) { + this.b = ijsonstatistic; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StatusChallengeUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/StatusChallengeUtils.java new file mode 100644 index 0000000..32dae8f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StatusChallengeUtils.java @@ -0,0 +1,36 @@ +package net.minecraft.server; + +import com.google.common.base.Charsets; + +public class StatusChallengeUtils { + + public static final char[] a = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + public static String a(byte[] abyte, int i, int j) { + int k = j - 1; + + int l; + + for (l = i > k ? k : i; 0 != abyte[l] && l < k; ++l) { + ; + } + + return new String(abyte, i, l - i, Charsets.UTF_8); + } + + public static int b(byte[] abyte, int i) { + return b(abyte, i, abyte.length); + } + + public static int b(byte[] abyte, int i, int j) { + return 0 > j - i - 4 ? 0 : abyte[i + 3] << 24 | (abyte[i + 2] & 255) << 16 | (abyte[i + 1] & 255) << 8 | abyte[i] & 255; + } + + public static int c(byte[] abyte, int i, int j) { + return 0 > j - i - 4 ? 0 : abyte[i] << 24 | (abyte[i + 1] & 255) << 16 | (abyte[i + 2] & 255) << 8 | abyte[i + 3] & 255; + } + + public static String a(byte b0) { + return "" + StatusChallengeUtils.a[(b0 & 240) >>> 4] + StatusChallengeUtils.a[b0 & 15]; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StructureBoundingBox.java b/eSpigot-Server/src/main/java/net/minecraft/server/StructureBoundingBox.java new file mode 100644 index 0000000..b59c059 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StructureBoundingBox.java @@ -0,0 +1,180 @@ +package net.minecraft.server; + +import com.google.common.base.MoreObjects; + +public class StructureBoundingBox { + + public int a; + public int b; + public int c; + public int d; + public int e; + public int f; + + public StructureBoundingBox() {} + + public StructureBoundingBox(int[] aint) { + if (aint.length == 6) { + this.a = aint[0]; + this.b = aint[1]; + this.c = aint[2]; + this.d = aint[3]; + this.e = aint[4]; + this.f = aint[5]; + } + + } + + public static StructureBoundingBox a() { + return new StructureBoundingBox(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE); + } + + public static StructureBoundingBox a(int i, int j, int k, int l, int i1, int j1, int k1, int l1, int i2, EnumDirection enumdirection) { + switch (StructureBoundingBox.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + return new StructureBoundingBox(i + l, j + i1, k - i2 + 1 + j1, i + k1 - 1 + l, j + l1 - 1 + i1, k + j1); + + case 2: + return new StructureBoundingBox(i + l, j + i1, k + j1, i + k1 - 1 + l, j + l1 - 1 + i1, k + i2 - 1 + j1); + + case 3: + return new StructureBoundingBox(i - i2 + 1 + j1, j + i1, k + l, i + j1, j + l1 - 1 + i1, k + k1 - 1 + l); + + case 4: + return new StructureBoundingBox(i + j1, j + i1, k + l, i + i2 - 1 + j1, j + l1 - 1 + i1, k + k1 - 1 + l); + + default: + return new StructureBoundingBox(i + l, j + i1, k + j1, i + k1 - 1 + l, j + l1 - 1 + i1, k + i2 - 1 + j1); + } + } + + public static StructureBoundingBox a(int i, int j, int k, int l, int i1, int j1) { + return new StructureBoundingBox(Math.min(i, l), Math.min(j, i1), Math.min(k, j1), Math.max(i, l), Math.max(j, i1), Math.max(k, j1)); + } + + public StructureBoundingBox(StructureBoundingBox structureboundingbox) { + this.a = structureboundingbox.a; + this.b = structureboundingbox.b; + this.c = structureboundingbox.c; + this.d = structureboundingbox.d; + this.e = structureboundingbox.e; + this.f = structureboundingbox.f; + } + + public StructureBoundingBox(int i, int j, int k, int l, int i1, int j1) { + this.a = i; + this.b = j; + this.c = k; + this.d = l; + this.e = i1; + this.f = j1; + } + + public StructureBoundingBox(BaseBlockPosition baseblockposition, BaseBlockPosition baseblockposition1) { + this.a = Math.min(baseblockposition.getX(), baseblockposition1.getX()); + this.b = Math.min(baseblockposition.getY(), baseblockposition1.getY()); + this.c = Math.min(baseblockposition.getZ(), baseblockposition1.getZ()); + this.d = Math.max(baseblockposition.getX(), baseblockposition1.getX()); + this.e = Math.max(baseblockposition.getY(), baseblockposition1.getY()); + this.f = Math.max(baseblockposition.getZ(), baseblockposition1.getZ()); + } + + public StructureBoundingBox(int i, int j, int k, int l) { + this.a = i; + this.c = j; + this.d = k; + this.f = l; + this.b = 1; + this.e = 512; + } + + public boolean a(StructureBoundingBox structureboundingbox) { + return this.d >= structureboundingbox.a && this.a <= structureboundingbox.d && this.f >= structureboundingbox.c && this.c <= structureboundingbox.f && this.e >= structureboundingbox.b && this.b <= structureboundingbox.e; + } + + public boolean a(int i, int j, int k, int l) { + return this.d >= i && this.a <= k && this.f >= j && this.c <= l; + } + + public void b(StructureBoundingBox structureboundingbox) { + this.a = Math.min(this.a, structureboundingbox.a); + this.b = Math.min(this.b, structureboundingbox.b); + this.c = Math.min(this.c, structureboundingbox.c); + this.d = Math.max(this.d, structureboundingbox.d); + this.e = Math.max(this.e, structureboundingbox.e); + this.f = Math.max(this.f, structureboundingbox.f); + } + + public void a(int i, int j, int k) { + this.a += i; + this.b += j; + this.c += k; + this.d += i; + this.e += j; + this.f += k; + } + + public boolean b(BaseBlockPosition baseblockposition) { + return baseblockposition.getX() >= this.a && baseblockposition.getX() <= this.d && baseblockposition.getZ() >= this.c && baseblockposition.getZ() <= this.f && baseblockposition.getY() >= this.b && baseblockposition.getY() <= this.e; + } + + public BaseBlockPosition b() { + return new BaseBlockPosition(this.d - this.a, this.e - this.b, this.f - this.c); + } + + public int c() { + return this.d - this.a + 1; + } + + public int d() { + return this.e - this.b + 1; + } + + public int e() { + return this.f - this.c + 1; + } + + public BaseBlockPosition f() { + return new BlockPosition(this.a + (this.d - this.a + 1) / 2, this.b + (this.e - this.b + 1) / 2, this.c + (this.f - this.c + 1) / 2); + } + + public String toString() { + return MoreObjects.toStringHelper(this).add("x0", this.a).add("y0", this.b).add("z0", this.c).add("x1", this.d).add("y1", this.e).add("z1", this.f).toString(); + } + + public NBTTagIntArray g() { + return new NBTTagIntArray(new int[] { this.a, this.b, this.c, this.d, this.e, this.f}); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + StructureBoundingBox.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + StructureBoundingBox.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + StructureBoundingBox.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + StructureBoundingBox.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/StructureGenerator.java b/eSpigot-Server/src/main/java/net/minecraft/server/StructureGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/StructureGenerator.java rename to eSpigot-Server/src/main/java/net/minecraft/server/StructureGenerator.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StructurePiece.java b/eSpigot-Server/src/main/java/net/minecraft/server/StructurePiece.java new file mode 100644 index 0000000..0f4a499 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StructurePiece.java @@ -0,0 +1,646 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public abstract class StructurePiece { + + protected StructureBoundingBox l; + protected EnumDirection m; + protected int n; + + public StructurePiece() {} + + protected StructurePiece(int i) { + this.n = i; + } + + public NBTTagCompound b() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.setString("id", WorldGenFactory.a(this)); + nbttagcompound.set("BB", this.l.g()); + nbttagcompound.setInt("O", this.m == null ? -1 : this.m.b()); + nbttagcompound.setInt("GD", this.n); + this.a(nbttagcompound); + return nbttagcompound; + } + + protected abstract void a(NBTTagCompound nbttagcompound); + + public void a(World world, NBTTagCompound nbttagcompound) { + if (nbttagcompound.hasKey("BB")) { + this.l = new StructureBoundingBox(nbttagcompound.getIntArray("BB")); + } + + int i = nbttagcompound.getInt("O"); + + this.m = i == -1 ? null : EnumDirection.fromType2(i); + this.n = nbttagcompound.getInt("GD"); + this.b(nbttagcompound); + } + + protected abstract void b(NBTTagCompound nbttagcompound); + + public void a(StructurePiece structurepiece, List list, Random random) {} + + public abstract boolean a(World world, Random random, StructureBoundingBox structureboundingbox); + + public StructureBoundingBox c() { + return this.l; + } + + public int d() { + return this.n; + } + + public static StructurePiece a(List list, StructureBoundingBox structureboundingbox) { + Iterator iterator = list.iterator(); + + StructurePiece structurepiece; + + do { + if (!iterator.hasNext()) { + return null; + } + + structurepiece = (StructurePiece) iterator.next(); + } while (structurepiece.c() == null || !structurepiece.c().a(structureboundingbox)); + + return structurepiece; + } + + public BlockPosition a() { + return new BlockPosition(this.l.f()); + } + + protected boolean a(World world, StructureBoundingBox structureboundingbox) { + int i = Math.max(this.l.a - 1, structureboundingbox.a); + int j = Math.max(this.l.b - 1, structureboundingbox.b); + int k = Math.max(this.l.c - 1, structureboundingbox.c); + int l = Math.min(this.l.d + 1, structureboundingbox.d); + int i1 = Math.min(this.l.e + 1, structureboundingbox.e); + int j1 = Math.min(this.l.f + 1, structureboundingbox.f); + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + int k1; + int l1; + + for (k1 = i; k1 <= l; ++k1) { + for (l1 = k; l1 <= j1; ++l1) { + if (world.getType(blockposition_mutableblockposition.c(k1, j, l1)).getBlock().getMaterial().isLiquid()) { + return true; + } + + if (world.getType(blockposition_mutableblockposition.c(k1, i1, l1)).getBlock().getMaterial().isLiquid()) { + return true; + } + } + } + + for (k1 = i; k1 <= l; ++k1) { + for (l1 = j; l1 <= i1; ++l1) { + if (world.getType(blockposition_mutableblockposition.c(k1, l1, k)).getBlock().getMaterial().isLiquid()) { + return true; + } + + if (world.getType(blockposition_mutableblockposition.c(k1, l1, j1)).getBlock().getMaterial().isLiquid()) { + return true; + } + } + } + + for (k1 = k; k1 <= j1; ++k1) { + for (l1 = j; l1 <= i1; ++l1) { + if (world.getType(blockposition_mutableblockposition.c(i, l1, k1)).getBlock().getMaterial().isLiquid()) { + return true; + } + + if (world.getType(blockposition_mutableblockposition.c(l, l1, k1)).getBlock().getMaterial().isLiquid()) { + return true; + } + } + } + + return false; + } + + protected int a(int i, int j) { + if (this.m == null) { + return i; + } else { + switch (StructurePiece.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + case 2: + return this.l.a + i; + + case 3: + return this.l.d - j; + + case 4: + return this.l.a + j; + + default: + return i; + } + } + } + + protected int d(int i) { + return this.m == null ? i : i + this.l.b; + } + + protected int b(int i, int j) { + if (this.m == null) { + return j; + } else { + switch (StructurePiece.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + return this.l.f - j; + + case 2: + return this.l.c + j; + + case 3: + case 4: + return this.l.c + i; + + default: + return j; + } + } + } + + protected int a(Block block, int i) { + if (block == Blocks.RAIL) { + if (this.m == EnumDirection.WEST || this.m == EnumDirection.EAST) { + if (i == 1) { + return 0; + } + + return 1; + } + } else if (block instanceof BlockDoor) { + if (this.m == EnumDirection.SOUTH) { + if (i == 0) { + return 2; + } + + if (i == 2) { + return 0; + } + } else { + if (this.m == EnumDirection.WEST) { + return i + 1 & 3; + } + + if (this.m == EnumDirection.EAST) { + return i + 3 & 3; + } + } + } else if (block != Blocks.STONE_STAIRS && block != Blocks.OAK_STAIRS && block != Blocks.NETHER_BRICK_STAIRS && block != Blocks.STONE_BRICK_STAIRS && block != Blocks.SANDSTONE_STAIRS) { + if (block == Blocks.LADDER) { + if (this.m == EnumDirection.SOUTH) { + if (i == EnumDirection.NORTH.a()) { + return EnumDirection.SOUTH.a(); + } + + if (i == EnumDirection.SOUTH.a()) { + return EnumDirection.NORTH.a(); + } + } else if (this.m == EnumDirection.WEST) { + if (i == EnumDirection.NORTH.a()) { + return EnumDirection.WEST.a(); + } + + if (i == EnumDirection.SOUTH.a()) { + return EnumDirection.EAST.a(); + } + + if (i == EnumDirection.WEST.a()) { + return EnumDirection.NORTH.a(); + } + + if (i == EnumDirection.EAST.a()) { + return EnumDirection.SOUTH.a(); + } + } else if (this.m == EnumDirection.EAST) { + if (i == EnumDirection.NORTH.a()) { + return EnumDirection.EAST.a(); + } + + if (i == EnumDirection.SOUTH.a()) { + return EnumDirection.WEST.a(); + } + + if (i == EnumDirection.WEST.a()) { + return EnumDirection.NORTH.a(); + } + + if (i == EnumDirection.EAST.a()) { + return EnumDirection.SOUTH.a(); + } + } + } else if (block == Blocks.STONE_BUTTON) { + if (this.m == EnumDirection.SOUTH) { + if (i == 3) { + return 4; + } + + if (i == 4) { + return 3; + } + } else if (this.m == EnumDirection.WEST) { + if (i == 3) { + return 1; + } + + if (i == 4) { + return 2; + } + + if (i == 2) { + return 3; + } + + if (i == 1) { + return 4; + } + } else if (this.m == EnumDirection.EAST) { + if (i == 3) { + return 2; + } + + if (i == 4) { + return 1; + } + + if (i == 2) { + return 3; + } + + if (i == 1) { + return 4; + } + } + } else if (block != Blocks.TRIPWIRE_HOOK && !(block instanceof BlockDirectional)) { + if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON || block == Blocks.LEVER || block == Blocks.DISPENSER) { + if (this.m == EnumDirection.SOUTH) { + if (i == EnumDirection.NORTH.a() || i == EnumDirection.SOUTH.a()) { + return EnumDirection.fromType1(i).opposite().a(); + } + } else if (this.m == EnumDirection.WEST) { + if (i == EnumDirection.NORTH.a()) { + return EnumDirection.WEST.a(); + } + + if (i == EnumDirection.SOUTH.a()) { + return EnumDirection.EAST.a(); + } + + if (i == EnumDirection.WEST.a()) { + return EnumDirection.NORTH.a(); + } + + if (i == EnumDirection.EAST.a()) { + return EnumDirection.SOUTH.a(); + } + } else if (this.m == EnumDirection.EAST) { + if (i == EnumDirection.NORTH.a()) { + return EnumDirection.EAST.a(); + } + + if (i == EnumDirection.SOUTH.a()) { + return EnumDirection.WEST.a(); + } + + if (i == EnumDirection.WEST.a()) { + return EnumDirection.NORTH.a(); + } + + if (i == EnumDirection.EAST.a()) { + return EnumDirection.SOUTH.a(); + } + } + } + } else { + EnumDirection enumdirection = EnumDirection.fromType2(i); + + if (this.m == EnumDirection.SOUTH) { + if (enumdirection == EnumDirection.SOUTH || enumdirection == EnumDirection.NORTH) { + return enumdirection.opposite().b(); + } + } else if (this.m == EnumDirection.WEST) { + if (enumdirection == EnumDirection.NORTH) { + return EnumDirection.WEST.b(); + } + + if (enumdirection == EnumDirection.SOUTH) { + return EnumDirection.EAST.b(); + } + + if (enumdirection == EnumDirection.WEST) { + return EnumDirection.NORTH.b(); + } + + if (enumdirection == EnumDirection.EAST) { + return EnumDirection.SOUTH.b(); + } + } else if (this.m == EnumDirection.EAST) { + if (enumdirection == EnumDirection.NORTH) { + return EnumDirection.EAST.b(); + } + + if (enumdirection == EnumDirection.SOUTH) { + return EnumDirection.WEST.b(); + } + + if (enumdirection == EnumDirection.WEST) { + return EnumDirection.NORTH.b(); + } + + if (enumdirection == EnumDirection.EAST) { + return EnumDirection.SOUTH.b(); + } + } + } + } else if (this.m == EnumDirection.SOUTH) { + if (i == 2) { + return 3; + } + + if (i == 3) { + return 2; + } + } else if (this.m == EnumDirection.WEST) { + if (i == 0) { + return 2; + } + + if (i == 1) { + return 3; + } + + if (i == 2) { + return 0; + } + + if (i == 3) { + return 1; + } + } else if (this.m == EnumDirection.EAST) { + if (i == 0) { + return 2; + } + + if (i == 1) { + return 3; + } + + if (i == 2) { + return 1; + } + + if (i == 3) { + return 0; + } + } + + return i; + } + + protected void a(World world, IBlockData iblockdata, int i, int j, int k, StructureBoundingBox structureboundingbox) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + world.setTypeAndData(blockposition, iblockdata, 2); + } + } + + protected IBlockData a(World world, int i, int j, int k, StructureBoundingBox structureboundingbox) { + int l = this.a(i, k); + int i1 = this.d(j); + int j1 = this.b(i, k); + BlockPosition blockposition = new BlockPosition(l, i1, j1); + + return !structureboundingbox.b((BaseBlockPosition) blockposition) ? Blocks.AIR.getBlockData() : world.getType(blockposition); + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + this.a(world, Blocks.AIR.getBlockData(), l1, k1, i2, structureboundingbox); + } + } + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1, IBlockData iblockdata, IBlockData iblockdata1, boolean flag) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + if (!flag || this.a(world, l1, k1, i2, structureboundingbox).getBlock().getMaterial() != Material.AIR) { + if (k1 != j && k1 != i1 && l1 != i && l1 != l && i2 != k && i2 != j1) { + this.a(world, iblockdata1, l1, k1, i2, structureboundingbox); + } else { + this.a(world, iblockdata, l1, k1, i2, structureboundingbox); + } + } + } + } + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1, boolean flag, Random random, StructurePiece.StructurePieceBlockSelector structurepiece_structurepieceblockselector) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + if (!flag || this.a(world, l1, k1, i2, structureboundingbox).getBlock().getMaterial() != Material.AIR) { + structurepiece_structurepieceblockselector.a(random, l1, k1, i2, k1 == j || k1 == i1 || l1 == i || l1 == l || i2 == k || i2 == j1); + this.a(world, structurepiece_structurepieceblockselector.a(), l1, k1, i2, structureboundingbox); + } + } + } + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, Random random, float f, int i, int j, int k, int l, int i1, int j1, IBlockData iblockdata, IBlockData iblockdata1, boolean flag) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + if (random.nextFloat() <= f && (!flag || this.a(world, l1, k1, i2, structureboundingbox).getBlock().getMaterial() != Material.AIR)) { + if (k1 != j && k1 != i1 && l1 != i && l1 != l && i2 != k && i2 != j1) { + this.a(world, iblockdata1, l1, k1, i2, structureboundingbox); + } else { + this.a(world, iblockdata, l1, k1, i2, structureboundingbox); + } + } + } + } + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, Random random, float f, int i, int j, int k, IBlockData iblockdata) { + if (random.nextFloat() < f) { + this.a(world, iblockdata, i, j, k, structureboundingbox); + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1, IBlockData iblockdata, boolean flag) { + float f = (float) (l - i + 1); + float f1 = (float) (i1 - j + 1); + float f2 = (float) (j1 - k + 1); + float f3 = (float) i + f / 2.0F; + float f4 = (float) k + f2 / 2.0F; + + for (int k1 = j; k1 <= i1; ++k1) { + float f5 = (float) (k1 - j) / f1; + + for (int l1 = i; l1 <= l; ++l1) { + float f6 = ((float) l1 - f3) / (f * 0.5F); + + for (int i2 = k; i2 <= j1; ++i2) { + float f7 = ((float) i2 - f4) / (f2 * 0.5F); + + if (!flag || this.a(world, l1, k1, i2, structureboundingbox).getBlock().getMaterial() != Material.AIR) { + float f8 = f6 * f6 + f5 * f5 + f7 * f7; + + if (f8 <= 1.05F) { + this.a(world, iblockdata, l1, k1, i2, structureboundingbox); + } + } + } + } + } + + } + + protected void b(World world, int i, int j, int k, StructureBoundingBox structureboundingbox) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + while (!world.isEmpty(blockposition) && blockposition.getY() < 255) { + world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 2); + blockposition = blockposition.up(); + } + + } + } + + protected void b(World world, IBlockData iblockdata, int i, int j, int k, StructureBoundingBox structureboundingbox) { + int l = this.a(i, k); + int i1 = this.d(j); + int j1 = this.b(i, k); + + if (structureboundingbox.b((BaseBlockPosition) (new BlockPosition(l, i1, j1)))) { + while ((world.isEmpty(new BlockPosition(l, i1, j1)) || world.getType(new BlockPosition(l, i1, j1)).getBlock().getMaterial().isLiquid()) && i1 > 1) { + world.setTypeAndData(new BlockPosition(l, i1, j1), iblockdata, 2); + --i1; + } + + } + } + + protected boolean a(World world, StructureBoundingBox structureboundingbox, Random random, int i, int j, int k, List list, int l) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition) && world.getType(blockposition).getBlock() != Blocks.CHEST) { + IBlockData iblockdata = Blocks.CHEST.getBlockData(); + + world.setTypeAndData(blockposition, Blocks.CHEST.f(world, blockposition, iblockdata), 2); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityChest) { + StructurePieceTreasure.a(random, list, (IInventory) ((TileEntityChest) tileentity), l); + } + + return true; + } else { + return false; + } + } + + protected boolean a(World world, StructureBoundingBox structureboundingbox, Random random, int i, int j, int k, int l, List list, int i1) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition) && world.getType(blockposition).getBlock() != Blocks.DISPENSER) { + world.setTypeAndData(blockposition, Blocks.DISPENSER.fromLegacyData(this.a(Blocks.DISPENSER, l)), 2); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityDispenser) { + StructurePieceTreasure.a(random, list, (TileEntityDispenser) tileentity, i1); + } + + return true; + } else { + return false; + } + } + + protected void a(World world, StructureBoundingBox structureboundingbox, Random random, int i, int j, int k, EnumDirection enumdirection) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + ItemDoor.a(world, blockposition, enumdirection.f(), Blocks.WOODEN_DOOR); + } + + } + + public void a(int i, int j, int k) { + this.l.a(i, j, k); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + StructurePiece.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + StructurePiece.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + StructurePiece.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + StructurePiece.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } + + public abstract static class StructurePieceBlockSelector { + + protected IBlockData a; + + protected StructurePieceBlockSelector() { + this.a = Blocks.AIR.getBlockData(); + } + + public abstract void a(Random random, int i, int j, int k, boolean flag); + + public IBlockData a() { + return this.a; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StructurePieceTreasure.java b/eSpigot-Server/src/main/java/net/minecraft/server/StructurePieceTreasure.java new file mode 100644 index 0000000..6f0d2ad --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StructurePieceTreasure.java @@ -0,0 +1,79 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class StructurePieceTreasure extends WeightedRandom.WeightedRandomChoice { + + private ItemStack b; + private int c; + private int d; + + public StructurePieceTreasure(Item item, int i, int j, int k, int l) { + super(l); + this.b = new ItemStack(item, 1, i); + this.c = j; + this.d = k; + } + + public StructurePieceTreasure(ItemStack itemstack, int i, int j, int k) { + super(k); + this.b = itemstack; + this.c = i; + this.d = j; + } + + public static void a(Random random, List list, IInventory iinventory, int i) { + for (int j = 0; j < i; ++j) { + StructurePieceTreasure structurepiecetreasure = (StructurePieceTreasure) WeightedRandom.a(random, list); + int k = structurepiecetreasure.c + random.nextInt(structurepiecetreasure.d - structurepiecetreasure.c + 1); + + if (structurepiecetreasure.b.getMaxStackSize() >= k) { + ItemStack itemstack = structurepiecetreasure.b.cloneItemStack(); + + itemstack.count = k; + iinventory.setItem(random.nextInt(iinventory.getSize()), itemstack); + } else { + for (int l = 0; l < k; ++l) { + ItemStack itemstack1 = structurepiecetreasure.b.cloneItemStack(); + + itemstack1.count = 1; + iinventory.setItem(random.nextInt(iinventory.getSize()), itemstack1); + } + } + } + + } + + public static void a(Random random, List list, TileEntityDispenser tileentitydispenser, int i) { + for (int j = 0; j < i; ++j) { + StructurePieceTreasure structurepiecetreasure = (StructurePieceTreasure) WeightedRandom.a(random, list); + int k = structurepiecetreasure.c + random.nextInt(structurepiecetreasure.d - structurepiecetreasure.c + 1); + + if (structurepiecetreasure.b.getMaxStackSize() >= k) { + ItemStack itemstack = structurepiecetreasure.b.cloneItemStack(); + + itemstack.count = k; + tileentitydispenser.setItem(random.nextInt(tileentitydispenser.getSize()), itemstack); + } else { + for (int l = 0; l < k; ++l) { + ItemStack itemstack1 = structurepiecetreasure.b.cloneItemStack(); + + itemstack1.count = 1; + tileentitydispenser.setItem(random.nextInt(tileentitydispenser.getSize()), itemstack1); + } + } + } + + } + + public static List a(List list, StructurePieceTreasure... astructurepiecetreasure) { + ArrayList arraylist = Lists.newArrayList(list); + + Collections.addAll(arraylist, astructurepiecetreasure); + return arraylist; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/StructureStart.java b/eSpigot-Server/src/main/java/net/minecraft/server/StructureStart.java new file mode 100644 index 0000000..22ba322 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/StructureStart.java @@ -0,0 +1,157 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.Random; + +public abstract class StructureStart { + + protected LinkedList a = new LinkedList(); + protected StructureBoundingBox b; + private int c; + private int d; + + public StructureStart() {} + + public StructureStart(int i, int j) { + this.c = i; + this.d = j; + } + + public StructureBoundingBox a() { + return this.b; + } + + public LinkedList b() { + return this.a; + } + + public void a(World world, Random random, StructureBoundingBox structureboundingbox) { + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructurePiece structurepiece = (StructurePiece) iterator.next(); + + if (structurepiece.c().a(structureboundingbox) && !structurepiece.a(world, random, structureboundingbox)) { + iterator.remove(); + } + } + + } + + protected void c() { + this.b = StructureBoundingBox.a(); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructurePiece structurepiece = (StructurePiece) iterator.next(); + + this.b.b(structurepiece.c()); + } + + } + + public NBTTagCompound a(int i, int j) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + nbttagcompound.setString("id", WorldGenFactory.a(this)); + nbttagcompound.setInt("ChunkX", i); + nbttagcompound.setInt("ChunkZ", j); + nbttagcompound.set("BB", this.b.g()); + NBTTagList nbttaglist = new NBTTagList(); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructurePiece structurepiece = (StructurePiece) iterator.next(); + + nbttaglist.add(structurepiece.b()); + } + + nbttagcompound.set("Children", nbttaglist); + this.a(nbttagcompound); + return nbttagcompound; + } + + public void a(NBTTagCompound nbttagcompound) {} + + public void a(World world, NBTTagCompound nbttagcompound) { + this.c = nbttagcompound.getInt("ChunkX"); + this.d = nbttagcompound.getInt("ChunkZ"); + if (nbttagcompound.hasKey("BB")) { + this.b = new StructureBoundingBox(nbttagcompound.getIntArray("BB")); + } + + NBTTagList nbttaglist = nbttagcompound.getList("Children", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + this.a.add(WorldGenFactory.b(nbttaglist.get(i), world)); + } + + this.b(nbttagcompound); + } + + public void b(NBTTagCompound nbttagcompound) {} + + protected void a(World world, Random random, int i) { + int j = world.F() - i; + int k = this.b.d() + 1; + + if (k < j) { + k += random.nextInt(j - k); + } + + int l = k - this.b.e; + + this.b.a(0, l, 0); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructurePiece structurepiece = (StructurePiece) iterator.next(); + + structurepiece.a(0, l, 0); + } + + } + + protected void a(World world, Random random, int i, int j) { + int k = j - i + 1 - this.b.d(); + boolean flag = true; + int l; + + if (k > 1) { + l = i + random.nextInt(k); + } else { + l = i; + } + + int i1 = l - this.b.b; + + this.b.a(0, i1, 0); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructurePiece structurepiece = (StructurePiece) iterator.next(); + + structurepiece.a(0, i1, 0); + } + + } + + public boolean d() { + return true; + } + + public boolean a(ChunkCoordIntPair chunkcoordintpair) { + return true; + } + + public void b(ChunkCoordIntPair chunkcoordintpair) {} + + public int e() { + return this.c; + } + + public int f() { + return this.d; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/SystemUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/SystemUtils.java new file mode 100644 index 0000000..e65ffc1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/SystemUtils.java @@ -0,0 +1,21 @@ +package net.minecraft.server; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; +import org.apache.logging.log4j.Logger; + +public class SystemUtils { + + public static V a(FutureTask futuretask, Logger logger) { + try { + futuretask.run(); + return futuretask.get(); + } catch (ExecutionException executionexception) { + logger.fatal("Error executing task", executionexception); + } catch (InterruptedException interruptedexception) { + logger.fatal("Error executing task", interruptedexception); + } + + return null; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ThreadWatchdog.java b/eSpigot-Server/src/main/java/net/minecraft/server/ThreadWatchdog.java new file mode 100644 index 0000000..8a56c23 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/ThreadWatchdog.java @@ -0,0 +1,93 @@ +package net.minecraft.server; + +import java.io.File; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadInfo; +import java.lang.management.ThreadMXBean; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class ThreadWatchdog implements Runnable { + + private static final Logger a = LogManager.getLogger(); + private final DedicatedServer b; + private final long c; + + public ThreadWatchdog(DedicatedServer dedicatedserver) { + this.b = dedicatedserver; + this.c = dedicatedserver.aS(); + } + + public void run() { + while (this.b.isRunning()) { + long i = this.b.aL(); + long j = MinecraftServer.az(); + long k = j - i; + + if (k > this.c) { + ThreadWatchdog.a.fatal("A single server tick took " + String.format("%.2f", new Object[] { Float.valueOf((float) k / 1000.0F)}) + " seconds (should be max " + String.format("%.2f", new Object[] { Float.valueOf(0.05F)}) + ")"); + ThreadWatchdog.a.fatal("Considering it to be crashed, server will forcibly shutdown."); + ThreadMXBean threadmxbean = ManagementFactory.getThreadMXBean(); + ThreadInfo[] athreadinfo = threadmxbean.dumpAllThreads(true, true); + StringBuilder stringbuilder = new StringBuilder(); + Error error = new Error(); + ThreadInfo[] athreadinfo1 = athreadinfo; + int l = athreadinfo.length; + + for (int i1 = 0; i1 < l; ++i1) { + ThreadInfo threadinfo = athreadinfo1[i1]; + + if (threadinfo.getThreadId() == this.b.aM().getId()) { + error.setStackTrace(threadinfo.getStackTrace()); + } + + stringbuilder.append(threadinfo); + stringbuilder.append("\n"); + } + + CrashReport crashreport = new CrashReport("Watching Server", error); + + this.b.b(crashreport); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Thread Dump"); + + crashreportsystemdetails.a("Threads", (Object) stringbuilder); + File file = new File(new File(this.b.y(), "crash-reports"), "crash-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + "-server.txt"); + + if (crashreport.a(file)) { + ThreadWatchdog.a.error("This crash report has been saved to: " + file.getAbsolutePath()); + } else { + ThreadWatchdog.a.error("We were unable to save this crash report to disk."); + } + + this.a(); + } + + try { + Thread.sleep(i + this.c - j); + } catch (InterruptedException interruptedexception) { + ; + } + } + + } + + private void a() { + try { + Timer timer = new Timer(); + + timer.schedule(new TimerTask() { + public void run() { + Runtime.getRuntime().halt(1); + } + }, 10000L); + System.exit(1); + } catch (Throwable throwable) { + Runtime.getRuntime().halt(1); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntity.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntity.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntity.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBanner.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBanner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBanner.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBanner.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBeacon.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBeacon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBeacon.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBeacon.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBrewingStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBrewingStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityBrewingStand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityBrewingStand.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityChest.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityCommand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityCommand.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityCommand.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityComparator.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityComparator.java new file mode 100644 index 0000000..0150c3d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityComparator.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +public class TileEntityComparator extends TileEntity { + + private int a; + + public TileEntityComparator() {} + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + nbttagcompound.setInt("OutputSignal", this.a); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.a = nbttagcompound.getInt("OutputSignal"); + } + + public int b() { + return this.a; + } + + public void a(int i) { + this.a = i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityContainer.java new file mode 100644 index 0000000..209fe3b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityContainer.java @@ -0,0 +1,39 @@ +package net.minecraft.server; + +public abstract class TileEntityContainer extends TileEntity implements ITileEntityContainer, ITileInventory { + + private ChestLock a; + + public TileEntityContainer() { + this.a = ChestLock.a; + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.a = ChestLock.b(nbttagcompound); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + if (this.a != null) { + this.a.a(nbttagcompound); + } + + } + + public boolean r_() { + return this.a != null && !this.a.a(); + } + + public ChestLock i() { + return this.a; + } + + public void a(ChestLock chestlock) { + this.a = chestlock; + } + + public IChatBaseComponent getScoreboardDisplayName() { + return (IChatBaseComponent) (this.hasCustomName() ? new ChatComponentText(this.getName()) : new ChatMessage(this.getName(), new Object[0])); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityDispenser.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityDispenser.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityDispenser.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityDispenser.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityDropper.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityDropper.java new file mode 100644 index 0000000..ec7722d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityDropper.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class TileEntityDropper extends TileEntityDispenser { + + public TileEntityDropper() {} + + public String getName() { + return this.hasCustomName() ? this.a : "container.dropper"; + } + + public String getContainerName() { + return "minecraft:dropper"; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnchantTable.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnchantTable.java new file mode 100644 index 0000000..e054166 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnchantTable.java @@ -0,0 +1,122 @@ +package net.minecraft.server; + +import java.util.Random; + +public class TileEntityEnchantTable extends TileEntity implements IUpdatePlayerListBox, ITileEntityContainer { + + public int a; + public float f; + public float g; + public float h; + public float i; + public float j; + public float k; + public float l; + public float m; + public float n; + private static Random o = new Random(); + private String p; + + public TileEntityEnchantTable() {} + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + if (this.hasCustomName()) { + nbttagcompound.setString("CustomName", this.p); + } + + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { + this.p = nbttagcompound.getString("CustomName"); + } + + } + + public void c() { + this.k = this.j; + this.m = this.l; + EntityHuman entityhuman = this.world.findNearbyPlayer((double) ((float) this.position.getX() + 0.5F), (double) ((float) this.position.getY() + 0.5F), (double) ((float) this.position.getZ() + 0.5F), 3.0D); + + if (entityhuman != null) { + double d0 = entityhuman.locX - (double) ((float) this.position.getX() + 0.5F); + double d1 = entityhuman.locZ - (double) ((float) this.position.getZ() + 0.5F); + + this.n = (float) MathHelper.b(d1, d0); + this.j += 0.1F; + if (this.j < 0.5F || TileEntityEnchantTable.o.nextInt(40) == 0) { + float f = this.h; + + do { + this.h += (float) (TileEntityEnchantTable.o.nextInt(4) - TileEntityEnchantTable.o.nextInt(4)); + } while (f == this.h); + } + } else { + this.n += 0.02F; + this.j -= 0.1F; + } + + while (this.l >= 3.1415927F) { + this.l -= 6.2831855F; + } + + while (this.l < -3.1415927F) { + this.l += 6.2831855F; + } + + while (this.n >= 3.1415927F) { + this.n -= 6.2831855F; + } + + while (this.n < -3.1415927F) { + this.n += 6.2831855F; + } + + float f1; + + for (f1 = this.n - this.l; f1 >= 3.1415927F; f1 -= 6.2831855F) { + ; + } + + while (f1 < -3.1415927F) { + f1 += 6.2831855F; + } + + this.l += f1 * 0.4F; + this.j = MathHelper.a(this.j, 0.0F, 1.0F); + ++this.a; + this.g = this.f; + float f2 = (this.h - this.f) * 0.4F; + float f3 = 0.2F; + + f2 = MathHelper.a(f2, -f3, f3); + this.i += (f2 - this.i) * 0.9F; + this.f += this.i; + } + + public String getName() { + return this.hasCustomName() ? this.p : "container.enchant"; + } + + public boolean hasCustomName() { + return this.p != null && this.p.length() > 0; + } + + public void a(String s) { + this.p = s; + } + + public IChatBaseComponent getScoreboardDisplayName() { + return (IChatBaseComponent) (this.hasCustomName() ? new ChatComponentText(this.getName()) : new ChatMessage(this.getName(), new Object[0])); + } + + public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) { + return new ContainerEnchantTable(playerinventory, this.world, this.position); + } + + public String getContainerName() { + return "minecraft:enchanting_table"; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderChest.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderChest.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderPortal.java new file mode 100644 index 0000000..09c78a9 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityEnderPortal.java @@ -0,0 +1,6 @@ +package net.minecraft.server; + +public class TileEntityEnderPortal extends TileEntity { + + public TileEntityEnderPortal() {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityFlowerPot.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityFlowerPot.java new file mode 100644 index 0000000..676e101 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityFlowerPot.java @@ -0,0 +1,55 @@ +package net.minecraft.server; + +public class TileEntityFlowerPot extends TileEntity { + + private Item a; + private int f; + + public TileEntityFlowerPot() {} + + public TileEntityFlowerPot(Item item, int i) { + this.a = item; + this.f = i; + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + MinecraftKey minecraftkey = (MinecraftKey) Item.REGISTRY.c(this.a); + + nbttagcompound.setString("Item", minecraftkey == null ? "" : minecraftkey.toString()); + nbttagcompound.setInt("Data", this.f); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + if (nbttagcompound.hasKeyOfType("Item", 8)) { + this.a = Item.d(nbttagcompound.getString("Item")); + } else { + this.a = Item.getById(nbttagcompound.getInt("Item")); + } + + this.f = nbttagcompound.getInt("Data"); + } + + public Packet getUpdatePacket() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + this.b(nbttagcompound); + nbttagcompound.remove("Item"); + nbttagcompound.setInt("Item", Item.getId(this.a)); + return new PacketPlayOutTileEntityData(this.position, 5, nbttagcompound); + } + + public void a(Item item, int i) { + this.a = item; + this.f = i; + } + + public Item b() { + return this.a; + } + + public int c() { + return this.f; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityFurnace.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityFurnace.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityHopper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityHopper.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityHopper.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityLightDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityLightDetector.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityLightDetector.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityLightDetector.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityMobSpawner.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityMobSpawner.java new file mode 100644 index 0000000..c6cd84d --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityMobSpawner.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +public class TileEntityMobSpawner extends TileEntity implements IUpdatePlayerListBox { + + private final MobSpawnerAbstract a = new MobSpawnerAbstract() { + public void a(int i) { + TileEntityMobSpawner.this.world.playBlockAction(TileEntityMobSpawner.this.position, Blocks.MOB_SPAWNER, i, 0); + } + + public World a() { + return TileEntityMobSpawner.this.world; + } + + public BlockPosition b() { + return TileEntityMobSpawner.this.position; + } + + public void a(MobSpawnerAbstract.a mobspawnerabstract_tileentitymobspawnerdata) { + super.a(mobspawnerabstract_tileentitymobspawnerdata); + if (this.a() != null) { + this.a().notify(TileEntityMobSpawner.this.position); + } + + } + }; + + public TileEntityMobSpawner() {} + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + this.a.a(nbttagcompound); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a.b(nbttagcompound); + } + + public void c() { + this.a.c(); + } + + public Packet getUpdatePacket() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + + this.b(nbttagcompound); + nbttagcompound.remove("SpawnPotentials"); + return new PacketPlayOutTileEntityData(this.position, 1, nbttagcompound); + } + + public boolean c(int i, int j) { + return this.a.b(i) ? true : super.c(i, j); + } + + public boolean F() { + return true; + } + + public MobSpawnerAbstract getSpawner() { + return this.a; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityNote.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityNote.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityNote.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityNote.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityPiston.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntityPiston.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntityPiston.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntityPiston.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntitySign.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntitySign.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntitySign.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntitySign.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntitySkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/TileEntitySkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/TileEntitySkull.java rename to eSpigot-Server/src/main/java/net/minecraft/server/TileEntitySkull.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Tuple.java b/eSpigot-Server/src/main/java/net/minecraft/server/Tuple.java new file mode 100644 index 0000000..29df471 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Tuple.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +public class Tuple { + + private A a; + private B b; + + public Tuple(A a0, B b0) { + this.a = a0; + this.b = b0; + } + + public A a() { + return this.a; + } + + public B b() { + return this.b; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/UserCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/UserCache.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/UserCache.java rename to eSpigot-Server/src/main/java/net/minecraft/server/UserCache.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/UtilColor.java b/eSpigot-Server/src/main/java/net/minecraft/server/UtilColor.java new file mode 100644 index 0000000..ed94451 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/UtilColor.java @@ -0,0 +1,13 @@ +package net.minecraft.server; + +import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; + +public class UtilColor { + + private static final Pattern a = Pattern.compile("(?i)\\u00A7[0-9A-FK-OR]"); + + public static boolean b(String s) { + return StringUtils.isEmpty(s); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Vec3D.java b/eSpigot-Server/src/main/java/net/minecraft/server/Vec3D.java new file mode 100644 index 0000000..9925903 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Vec3D.java @@ -0,0 +1,134 @@ +package net.minecraft.server; + +public class Vec3D { + + public final double a; + public final double b; + public final double c; + + public Vec3D(double d0, double d1, double d2) { + if (d0 == -0.0D) { + d0 = 0.0D; + } + + if (d1 == -0.0D) { + d1 = 0.0D; + } + + if (d2 == -0.0D) { + d2 = 0.0D; + } + + this.a = d0; + this.b = d1; + this.c = d2; + } + + public Vec3D(BaseBlockPosition baseblockposition) { + this((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ()); + } + + public Vec3D a() { + double d0 = (double) MathHelper.sqrt(this.a * this.a + this.b * this.b + this.c * this.c); + + return d0 < 1.0E-4D ? new Vec3D(0.0D, 0.0D, 0.0D) : new Vec3D(this.a / d0, this.b / d0, this.c / d0); + } + + public double b(Vec3D vec3d) { + return this.a * vec3d.a + this.b * vec3d.b + this.c * vec3d.c; + } + + public Vec3D d(Vec3D vec3d) { + return this.a(vec3d.a, vec3d.b, vec3d.c); + } + + public Vec3D a(double d0, double d1, double d2) { + return this.add(-d0, -d1, -d2); + } + + public Vec3D e(Vec3D vec3d) { + return this.add(vec3d.a, vec3d.b, vec3d.c); + } + + public Vec3D add(double d0, double d1, double d2) { + return new Vec3D(this.a + d0, this.b + d1, this.c + d2); + } + + public double distanceSquared(Vec3D vec3d) { + double d0 = vec3d.a - this.a; + double d1 = vec3d.b - this.b; + double d2 = vec3d.c - this.c; + + return d0 * d0 + d1 * d1 + d2 * d2; + } + + public double b() { + return (double) MathHelper.sqrt(this.a * this.a + this.b * this.b + this.c * this.c); + } + + public Vec3D a(Vec3D vec3d, double d0) { + double d1 = vec3d.a - this.a; + double d2 = vec3d.b - this.b; + double d3 = vec3d.c - this.c; + + if (d1 * d1 < 1.0000000116860974E-7D) { + return null; + } else { + double d4 = (d0 - this.a) / d1; + + return d4 >= 0.0D && d4 <= 1.0D ? new Vec3D(this.a + d1 * d4, this.b + d2 * d4, this.c + d3 * d4) : null; + } + } + + public Vec3D b(Vec3D vec3d, double d0) { + double d1 = vec3d.a - this.a; + double d2 = vec3d.b - this.b; + double d3 = vec3d.c - this.c; + + if (d2 * d2 < 1.0000000116860974E-7D) { + return null; + } else { + double d4 = (d0 - this.b) / d2; + + return d4 >= 0.0D && d4 <= 1.0D ? new Vec3D(this.a + d1 * d4, this.b + d2 * d4, this.c + d3 * d4) : null; + } + } + + public Vec3D c(Vec3D vec3d, double d0) { + double d1 = vec3d.a - this.a; + double d2 = vec3d.b - this.b; + double d3 = vec3d.c - this.c; + + if (d3 * d3 < 1.0000000116860974E-7D) { + return null; + } else { + double d4 = (d0 - this.c) / d3; + + return d4 >= 0.0D && d4 <= 1.0D ? new Vec3D(this.a + d1 * d4, this.b + d2 * d4, this.c + d3 * d4) : null; + } + } + + public String toString() { + return "(" + this.a + ", " + this.b + ", " + this.c + ")"; + } + + public Vec3D a(float f) { + float f1 = MathHelper.cos(f); + float f2 = MathHelper.sin(f); + double d0 = this.a; + double d1 = this.b * (double) f1 + this.c * (double) f2; + double d2 = this.c * (double) f1 - this.b * (double) f2; + + return new Vec3D(d0, d1, d2); + } + + public Vec3D b(float f) { + float f1 = MathHelper.cos(f); + float f2 = MathHelper.sin(f); + double d0 = this.a * (double) f1 + this.c * (double) f2; + double d1 = this.b; + double d2 = this.c * (double) f1 - this.a * (double) f2; + + return new Vec3D(d0, d1, d2); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Vector3f.java b/eSpigot-Server/src/main/java/net/minecraft/server/Vector3f.java new file mode 100644 index 0000000..cb6fb53 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/Vector3f.java @@ -0,0 +1,51 @@ +package net.minecraft.server; + +public class Vector3f { + + protected final float x; + protected final float y; + protected final float z; + + public Vector3f(float f, float f1, float f2) { + this.x = f; + this.y = f1; + this.z = f2; + } + + public Vector3f(NBTTagList nbttaglist) { + this.x = nbttaglist.e(0); + this.y = nbttaglist.e(1); + this.z = nbttaglist.e(2); + } + + public NBTTagList a() { + NBTTagList nbttaglist = new NBTTagList(); + + nbttaglist.add(new NBTTagFloat(this.x)); + nbttaglist.add(new NBTTagFloat(this.y)); + nbttaglist.add(new NBTTagFloat(this.z)); + return nbttaglist; + } + + public boolean equals(Object object) { + if (!(object instanceof Vector3f)) { + return false; + } else { + Vector3f vector3f = (Vector3f) object; + + return this.x == vector3f.x && this.y == vector3f.y && this.z == vector3f.z; + } + } + + public float getX() { + return this.x; + } + + public float getY() { + return this.y; + } + + public float getZ() { + return this.z; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Village.java b/eSpigot-Server/src/main/java/net/minecraft/server/Village.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Village.java rename to eSpigot-Server/src/main/java/net/minecraft/server/Village.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/VillageDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/VillageDoor.java new file mode 100644 index 0000000..74b74dd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/VillageDoor.java @@ -0,0 +1,89 @@ +package net.minecraft.server; + +public class VillageDoor { + + private final BlockPosition a; + private final BlockPosition b; + private final EnumDirection c; + private int d; + private boolean e; + private int f; + + public VillageDoor(BlockPosition blockposition, int i, int j, int k) { + this(blockposition, a(i, j), k); + } + + private static EnumDirection a(int i, int j) { + return i < 0 ? EnumDirection.WEST : (i > 0 ? EnumDirection.EAST : (j < 0 ? EnumDirection.NORTH : EnumDirection.SOUTH)); + } + + public VillageDoor(BlockPosition blockposition, EnumDirection enumdirection, int i) { + this.a = blockposition; + this.c = enumdirection; + this.b = blockposition.shift(enumdirection, 2); + this.d = i; + } + + public int b(int i, int j, int k) { + return (int) this.a.c((double) i, (double) j, (double) k); + } + + public int a(BlockPosition blockposition) { + return (int) blockposition.i(this.d()); + } + + public int b(BlockPosition blockposition) { + return (int) this.b.i(blockposition); + } + + public boolean c(BlockPosition blockposition) { + int i = blockposition.getX() - this.a.getX(); + int j = blockposition.getZ() - this.a.getY(); + + return i * this.c.getAdjacentX() + j * this.c.getAdjacentZ() >= 0; + } + + public void a() { + this.f = 0; + } + + public void b() { + ++this.f; + } + + public int c() { + return this.f; + } + + public BlockPosition d() { + return this.a; + } + + public BlockPosition e() { + return this.b; + } + + public int f() { + return this.c.getAdjacentX() * 2; + } + + public int g() { + return this.c.getAdjacentZ() * 2; + } + + public int h() { + return this.d; + } + + public void a(int i) { + this.d = i; + } + + public boolean i() { + return this.e; + } + + public void a(boolean flag) { + this.e = flag; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/VillageSiege.java b/eSpigot-Server/src/main/java/net/minecraft/server/VillageSiege.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/VillageSiege.java rename to eSpigot-Server/src/main/java/net/minecraft/server/VillageSiege.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandom.java b/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandom.java new file mode 100644 index 0000000..58789a3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandom.java @@ -0,0 +1,60 @@ +package net.minecraft.server; + +import java.util.Collection; +import java.util.Iterator; +import java.util.Random; + +public class WeightedRandom { + + public static int a(Collection collection) { + int i = 0; + + WeightedRandom.WeightedRandomChoice weightedrandom_weightedrandomchoice; + + for (Iterator iterator = collection.iterator(); iterator.hasNext(); i += weightedrandom_weightedrandomchoice.a) { + weightedrandom_weightedrandomchoice = (WeightedRandom.WeightedRandomChoice) iterator.next(); + } + + return i; + } + + public static T a(Random random, Collection collection, int i) { + if (i <= 0) { + throw new IllegalArgumentException(); + } else { + int j = random.nextInt(i); + + return a(collection, j); + } + } + + public static T a(Collection collection, int i) { + Iterator iterator = collection.iterator(); + + T weightedrandom_weightedrandomchoice; + + do { + if (!iterator.hasNext()) { + return null; + } + + weightedrandom_weightedrandomchoice = iterator.next(); + i -= weightedrandom_weightedrandomchoice.a; + } while (i >= 0); + + return weightedrandom_weightedrandomchoice; + } + + public static T a(Random random, Collection collection) { + return a(random, collection, a(collection)); + } + + public static class WeightedRandomChoice { + + protected int a; + + public WeightedRandomChoice(int i) { + this.a = i; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandomEnchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandomEnchant.java new file mode 100644 index 0000000..68595aa --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WeightedRandomEnchant.java @@ -0,0 +1,13 @@ +package net.minecraft.server; + +public class WeightedRandomEnchant extends WeightedRandom.WeightedRandomChoice { + + public final Enchantment enchantment; + public final int level; + + public WeightedRandomEnchant(Enchantment enchantment, int i) { + super(enchantment.getRandomWeight()); + this.enchantment = enchantment; + this.level = i; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WhiteList.java b/eSpigot-Server/src/main/java/net/minecraft/server/WhiteList.java new file mode 100644 index 0000000..b25a0f6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WhiteList.java @@ -0,0 +1,58 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import java.io.File; +import java.util.Iterator; + +public class WhiteList extends JsonList { + + public WhiteList(File file) { + super(file); + } + + protected JsonListEntry a(JsonObject jsonobject) { + return new WhiteListEntry(jsonobject); + } + + public boolean isWhitelisted(GameProfile gameprofile) { + return this.d(gameprofile); + } + + public String[] getEntries() { + String[] astring = new String[this.e().size()]; + int i = 0; + + WhiteListEntry whitelistentry; + + for (Iterator iterator = this.e().values().iterator(); iterator.hasNext(); astring[i++] = ((GameProfile) whitelistentry.getKey()).getName()) { + whitelistentry = (WhiteListEntry) iterator.next(); + } + + return astring; + } + + protected String b(GameProfile gameprofile) { + return gameprofile.getId().toString(); + } + + public GameProfile a(String s) { + Iterator iterator = this.e().values().iterator(); + + WhiteListEntry whitelistentry; + + do { + if (!iterator.hasNext()) { + return null; + } + + whitelistentry = (WhiteListEntry) iterator.next(); + } while (!s.equalsIgnoreCase(((GameProfile) whitelistentry.getKey()).getName())); + + return (GameProfile) whitelistentry.getKey(); + } + + protected String a(GameProfile object) { + return this.b(object); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WhiteListEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/WhiteListEntry.java new file mode 100644 index 0000000..06d29a4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WhiteListEntry.java @@ -0,0 +1,42 @@ +package net.minecraft.server; + +import com.google.gson.JsonObject; +import com.mojang.authlib.GameProfile; +import java.util.UUID; + +public class WhiteListEntry extends JsonListEntry { + + public WhiteListEntry(GameProfile gameprofile) { + super(gameprofile); + } + + public WhiteListEntry(JsonObject jsonobject) { + super(b(jsonobject), jsonobject); + } + + protected void a(JsonObject jsonobject) { + if (this.getKey() != null) { + jsonobject.addProperty("uuid", ((GameProfile) this.getKey()).getId() == null ? "" : ((GameProfile) this.getKey()).getId().toString()); + jsonobject.addProperty("name", ((GameProfile) this.getKey()).getName()); + super.a(jsonobject); + } + } + + private static GameProfile b(JsonObject jsonobject) { + if (jsonobject.has("uuid") && jsonobject.has("name")) { + String s = jsonobject.get("uuid").getAsString(); + + UUID uuid; + + try { + uuid = UUID.fromString(s); + } catch (Throwable throwable) { + return null; + } + + return new GameProfile(uuid, jsonobject.get("name").getAsString()); + } else { + return null; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/World.java b/eSpigot-Server/src/main/java/net/minecraft/server/World.java similarity index 99% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/World.java rename to eSpigot-Server/src/main/java/net/minecraft/server/World.java index fdcbe27..81ec6c0 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/World.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/World.java @@ -620,7 +620,7 @@ public abstract class World implements IBlockAccess { // CraftBukkit start CraftWorld world = this.getWorld(); // TacoSpigot start - Add config to disable redstone firing BlockPhysicsEvent - if (world != null && (this.tacoSpigotConfig.isRedstoneFireBPE || !(block instanceof BlockRedstoneWire || block instanceof BlockRedstoneTorch || block instanceof BlockRepeater))) { + if (world != null && (this.tacoSpigotConfig.isRedstoneFireBPE || !(block instanceof BlockRedstoneWire || block instanceof BlockRedstoneTorch || block instanceof BlockRepeater)) && ((WorldServer) this).hasPhysicsEvent) { // TacoSpigot end BlockPhysicsEvent event = new BlockPhysicsEvent(world.getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()), CraftMagicNumbers.getId(block)); this.getServer().getPluginManager().callEvent(event); diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldBorder.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldBorder.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldBorder.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldBorder.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManager.java new file mode 100644 index 0000000..56afc55 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManager.java @@ -0,0 +1,202 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; +import java.util.Random; + +public class WorldChunkManager { + + private GenLayer b; + private GenLayer c; + private BiomeCache d; + private List e; + private String f; + + protected WorldChunkManager() { + this.d = new BiomeCache(this); + this.f = ""; + this.e = Lists.newArrayList(); + this.e.add(BiomeBase.FOREST); + this.e.add(BiomeBase.PLAINS); + this.e.add(BiomeBase.TAIGA); + this.e.add(BiomeBase.TAIGA_HILLS); + this.e.add(BiomeBase.FOREST_HILLS); + this.e.add(BiomeBase.JUNGLE); + this.e.add(BiomeBase.JUNGLE_HILLS); + } + + public WorldChunkManager(long i, WorldType worldtype, String s) { + this(); + this.f = s; + GenLayer[] agenlayer = GenLayer.a(i, worldtype, s); + + this.b = agenlayer[0]; + this.c = agenlayer[1]; + } + + public WorldChunkManager(World world) { + this(world.getSeed(), world.getWorldData().getType(), world.getWorldData().getGeneratorOptions()); + } + + public List a() { + return this.e; + } + + public BiomeBase getBiome(BlockPosition blockposition) { + return this.getBiome(blockposition, (BiomeBase) null); + } + + public BiomeBase getBiome(BlockPosition blockposition, BiomeBase biomebase) { + return this.d.a(blockposition.getX(), blockposition.getZ(), biomebase); + } + + public float[] getWetness(float[] afloat, int i, int j, int k, int l) { + IntCache.a(); + if (afloat == null || afloat.length < k * l) { + afloat = new float[k * l]; + } + + int[] aint = this.c.a(i, j, k, l); + + for (int i1 = 0; i1 < k * l; ++i1) { + try { + float f = (float) BiomeBase.getBiome(aint[i1], BiomeBase.ad).h() / 65536.0F; + + if (f > 1.0F) { + f = 1.0F; + } + + afloat[i1] = f; + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Invalid Biome id"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("DownfallBlock"); + + crashreportsystemdetails.a("biome id", (Object) Integer.valueOf(i1)); + crashreportsystemdetails.a("downfalls[] size", (Object) Integer.valueOf(afloat.length)); + crashreportsystemdetails.a("x", (Object) Integer.valueOf(i)); + crashreportsystemdetails.a("z", (Object) Integer.valueOf(j)); + crashreportsystemdetails.a("w", (Object) Integer.valueOf(k)); + crashreportsystemdetails.a("h", (Object) Integer.valueOf(l)); + throw new ReportedException(crashreport); + } + } + + return afloat; + } + + public BiomeBase[] getBiomes(BiomeBase[] abiomebase, int i, int j, int k, int l) { + IntCache.a(); + if (abiomebase == null || abiomebase.length < k * l) { + abiomebase = new BiomeBase[k * l]; + } + + int[] aint = this.b.a(i, j, k, l); + + try { + for (int i1 = 0; i1 < k * l; ++i1) { + abiomebase[i1] = BiomeBase.getBiome(aint[i1], BiomeBase.ad); + } + + return abiomebase; + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Invalid Biome id"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("RawBiomeBlock"); + + crashreportsystemdetails.a("biomes[] size", (Object) Integer.valueOf(abiomebase.length)); + crashreportsystemdetails.a("x", (Object) Integer.valueOf(i)); + crashreportsystemdetails.a("z", (Object) Integer.valueOf(j)); + crashreportsystemdetails.a("w", (Object) Integer.valueOf(k)); + crashreportsystemdetails.a("h", (Object) Integer.valueOf(l)); + throw new ReportedException(crashreport); + } + } + + public BiomeBase[] getBiomeBlock(BiomeBase[] abiomebase, int i, int j, int k, int l) { + return this.a(abiomebase, i, j, k, l, true); + } + + public BiomeBase[] a(BiomeBase[] abiomebase, int i, int j, int k, int l, boolean flag) { + IntCache.a(); + if (abiomebase == null || abiomebase.length < k * l) { + abiomebase = new BiomeBase[k * l]; + } + + if (flag && k == 16 && l == 16 && (i & 15) == 0 && (j & 15) == 0) { + BiomeBase[] abiomebase1 = this.d.c(i, j); + + System.arraycopy(abiomebase1, 0, abiomebase, 0, k * l); + return abiomebase; + } else { + int[] aint = this.c.a(i, j, k, l); + + for (int i1 = 0; i1 < k * l; ++i1) { + abiomebase[i1] = BiomeBase.getBiome(aint[i1], BiomeBase.ad); + } + + return abiomebase; + } + } + + public boolean a(int i, int j, int k, List list) { + IntCache.a(); + int l = i - k >> 2; + int i1 = j - k >> 2; + int j1 = i + k >> 2; + int k1 = j + k >> 2; + int l1 = j1 - l + 1; + int i2 = k1 - i1 + 1; + int[] aint = this.b.a(l, i1, l1, i2); + + try { + for (int j2 = 0; j2 < l1 * i2; ++j2) { + BiomeBase biomebase = BiomeBase.getBiome(aint[j2]); + + if (!list.contains(biomebase)) { + return false; + } + } + + return true; + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.a(throwable, "Invalid Biome id"); + CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Layer"); + + crashreportsystemdetails.a("Layer", (Object) this.b.toString()); + crashreportsystemdetails.a("x", (Object) Integer.valueOf(i)); + crashreportsystemdetails.a("z", (Object) Integer.valueOf(j)); + crashreportsystemdetails.a("radius", (Object) Integer.valueOf(k)); + crashreportsystemdetails.a("allowed", (Object) list); + throw new ReportedException(crashreport); + } + } + + public BlockPosition a(int i, int j, int k, List list, Random random) { + IntCache.a(); + int l = i - k >> 2; + int i1 = j - k >> 2; + int j1 = i + k >> 2; + int k1 = j + k >> 2; + int l1 = j1 - l + 1; + int i2 = k1 - i1 + 1; + int[] aint = this.b.a(l, i1, l1, i2); + BlockPosition blockposition = null; + int j2 = 0; + + for (int k2 = 0; k2 < l1 * i2; ++k2) { + int l2 = l + k2 % l1 << 2; + int i3 = i1 + k2 / l1 << 2; + BiomeBase biomebase = BiomeBase.getBiome(aint[k2]); + + if (list.contains(biomebase) && (blockposition == null || random.nextInt(j2 + 1) == 0)) { + blockposition = new BlockPosition(l2, 0, i3); + ++j2; + } + } + + return blockposition; + } + + public void b() { + this.d.a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManagerHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManagerHell.java new file mode 100644 index 0000000..bdea69f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldChunkManagerHell.java @@ -0,0 +1,59 @@ +package net.minecraft.server; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +public class WorldChunkManagerHell extends WorldChunkManager { + + private BiomeBase b; + private float c; + + public WorldChunkManagerHell(BiomeBase biomebase, float f) { + this.b = biomebase; + this.c = f; + } + + public BiomeBase getBiome(BlockPosition blockposition) { + return this.b; + } + + public BiomeBase[] getBiomes(BiomeBase[] abiomebase, int i, int j, int k, int l) { + if (abiomebase == null || abiomebase.length < k * l) { + abiomebase = new BiomeBase[k * l]; + } + + Arrays.fill(abiomebase, 0, k * l, this.b); + return abiomebase; + } + + public float[] getWetness(float[] afloat, int i, int j, int k, int l) { + if (afloat == null || afloat.length < k * l) { + afloat = new float[k * l]; + } + + Arrays.fill(afloat, 0, k * l, this.c); + return afloat; + } + + public BiomeBase[] getBiomeBlock(BiomeBase[] abiomebase, int i, int j, int k, int l) { + if (abiomebase == null || abiomebase.length < k * l) { + abiomebase = new BiomeBase[k * l]; + } + + Arrays.fill(abiomebase, 0, k * l, this.b); + return abiomebase; + } + + public BiomeBase[] a(BiomeBase[] abiomebase, int i, int j, int k, int l, boolean flag) { + return this.getBiomeBlock(abiomebase, i, j, k, l); + } + + public BlockPosition a(int i, int j, int k, List list, Random random) { + return list.contains(this.b) ? new BlockPosition(i - k + random.nextInt(k * 2 + 1), 0, j - k + random.nextInt(k * 2 + 1)) : null; + } + + public boolean a(int i, int j, int k, List list) { + return list.contains(this.b); + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldData.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldData.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldData.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldData.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenAcaciaTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenAcaciaTree.java new file mode 100644 index 0000000..9a70548 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenAcaciaTree.java @@ -0,0 +1,179 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenAcaciaTree extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG2.getBlockData().set(BlockLog2.VARIANT, BlockWood.EnumLogVariant.ACACIA); + private static final IBlockData b = Blocks.LEAVES2.getBlockData().set(BlockLeaves2.VARIANT, BlockWood.EnumLogVariant.ACACIA).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + + public WorldGenAcaciaTree(boolean flag) { + super(flag); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = random.nextInt(3) + random.nextInt(3) + 5; + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + int j; + int k; + + for (int l = blockposition.getY(); l <= blockposition.getY() + 1 + i; ++l) { + byte b0 = 1; + + if (l == blockposition.getY()) { + b0 = 0; + } + + if (l >= blockposition.getY() + 1 + i - 2) { + b0 = 2; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j = blockposition.getX() - b0; j <= blockposition.getX() + b0 && flag; ++j) { + for (k = blockposition.getZ() - b0; k <= blockposition.getZ() + b0 && flag; ++k) { + if (l >= 0 && l < 256) { + if (!this.a(world.getType(blockposition_mutableblockposition.c(j, l, k)).getBlock())) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block = world.getType(blockposition.down()).getBlock(); + + if ((block == Blocks.GRASS || block == Blocks.DIRT) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + EnumDirection enumdirection = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random); + int i1 = i - random.nextInt(4) - 1; + + j = 3 - random.nextInt(3); + k = blockposition.getX(); + int j1 = blockposition.getZ(); + int k1 = 0; + + int l1; + + for (int i2 = 0; i2 < i; ++i2) { + l1 = blockposition.getY() + i2; + if (i2 >= i1 && j > 0) { + k += enumdirection.getAdjacentX(); + j1 += enumdirection.getAdjacentZ(); + --j; + } + + BlockPosition blockposition1 = new BlockPosition(k, l1, j1); + Material material = world.getType(blockposition1).getBlock().getMaterial(); + + if (material == Material.AIR || material == Material.LEAVES) { + this.b(world, blockposition1); + k1 = l1; + } + } + + BlockPosition blockposition2 = new BlockPosition(k, k1, j1); + + int j2; + + for (l1 = -3; l1 <= 3; ++l1) { + for (j2 = -3; j2 <= 3; ++j2) { + if (Math.abs(l1) != 3 || Math.abs(j2) != 3) { + this.c(world, blockposition2.a(l1, 0, j2)); + } + } + } + + blockposition2 = blockposition2.up(); + + for (l1 = -1; l1 <= 1; ++l1) { + for (j2 = -1; j2 <= 1; ++j2) { + this.c(world, blockposition2.a(l1, 0, j2)); + } + } + + this.c(world, blockposition2.east(2)); + this.c(world, blockposition2.west(2)); + this.c(world, blockposition2.south(2)); + this.c(world, blockposition2.north(2)); + k = blockposition.getX(); + j1 = blockposition.getZ(); + EnumDirection enumdirection1 = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random); + + if (enumdirection1 != enumdirection) { + l1 = i1 - random.nextInt(2) - 1; + j2 = 1 + random.nextInt(3); + k1 = 0; + + int k2; + + for (int l2 = l1; l2 < i && j2 > 0; --j2) { + if (l2 >= 1) { + k2 = blockposition.getY() + l2; + k += enumdirection1.getAdjacentX(); + j1 += enumdirection1.getAdjacentZ(); + BlockPosition blockposition3 = new BlockPosition(k, k2, j1); + Material material1 = world.getType(blockposition3).getBlock().getMaterial(); + + if (material1 == Material.AIR || material1 == Material.LEAVES) { + this.b(world, blockposition3); + k1 = k2; + } + } + + ++l2; + } + + if (k1 > 0) { + BlockPosition blockposition4 = new BlockPosition(k, k1, j1); + + int i3; + + for (k2 = -2; k2 <= 2; ++k2) { + for (i3 = -2; i3 <= 2; ++i3) { + if (Math.abs(k2) != 2 || Math.abs(i3) != 2) { + this.c(world, blockposition4.a(k2, 0, i3)); + } + } + } + + blockposition4 = blockposition4.up(); + + for (k2 = -1; k2 <= 1; ++k2) { + for (i3 = -1; i3 <= 1; ++i3) { + this.c(world, blockposition4.a(k2, 0, i3)); + } + } + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } + + private void b(World world, BlockPosition blockposition) { + this.a(world, blockposition, WorldGenAcaciaTree.a); + } + + private void c(World world, BlockPosition blockposition) { + Material material = world.getType(blockposition).getBlock().getMaterial(); + + if (material == Material.AIR || material == Material.LEAVES) { + this.a(world, blockposition, WorldGenAcaciaTree.b); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBase.java new file mode 100644 index 0000000..9c614ec --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBase.java @@ -0,0 +1,34 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenBase { + + protected int a = 8; + protected Random b = new Random(); + protected World c; + + public WorldGenBase() {} + + public void a(IChunkProvider ichunkprovider, World world, int i, int j, ChunkSnapshot chunksnapshot) { + int k = this.a; + + this.c = world; + this.b.setSeed(world.getSeed()); + long l = this.b.nextLong(); + long i1 = this.b.nextLong(); + + for (int j1 = i - k; j1 <= i + k; ++j1) { + for (int k1 = j - k; k1 <= j + k; ++k1) { + long l1 = (long) j1 * l; + long i2 = (long) k1 * i1; + + this.b.setSeed(l1 ^ i2 ^ world.getSeed()); + this.a(world, j1, k1, i, j, chunksnapshot); + } + } + + } + + protected void a(World world, int i, int j, int k, int l, ChunkSnapshot chunksnapshot) {} +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBigTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBigTree.java new file mode 100644 index 0000000..278651f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBigTree.java @@ -0,0 +1,292 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public class WorldGenBigTree extends WorldGenTreeAbstract { + + private Random k; + private World l; + private BlockPosition m; + int a; + int b; + double c; + double d; + double e; + double f; + int g; + int h; + int i; + List j; + + public WorldGenBigTree(boolean flag) { + super(flag); + this.m = BlockPosition.ZERO; + this.c = 0.618D; + this.d = 0.381D; + this.e = 1.0D; + this.f = 1.0D; + this.g = 1; + this.h = 12; + this.i = 4; + } + + void a() { + this.b = (int) ((double) this.a * this.c); + if (this.b >= this.a) { + this.b = this.a - 1; + } + + int i = (int) (1.382D + Math.pow(this.f * (double) this.a / 13.0D, 2.0D)); + + if (i < 1) { + i = 1; + } + + int j = this.m.getY() + this.b; + int k = this.a - this.i; + + this.j = Lists.newArrayList(); + this.j.add(new WorldGenBigTree.Position(this.m.up(k), j)); + + for (; k >= 0; --k) { + float f = this.a(k); + + if (f >= 0.0F) { + for (int l = 0; l < i; ++l) { + double d0 = this.e * (double) f * ((double) this.k.nextFloat() + 0.328D); + double d1 = (double) (this.k.nextFloat() * 2.0F) * 3.141592653589793D; + double d2 = d0 * Math.sin(d1) + 0.5D; + double d3 = d0 * Math.cos(d1) + 0.5D; + BlockPosition blockposition = this.m.a(d2, (double) (k - 1), d3); + BlockPosition blockposition1 = blockposition.up(this.i); + + if (this.a(blockposition, blockposition1) == -1) { + int i1 = this.m.getX() - blockposition.getX(); + int j1 = this.m.getZ() - blockposition.getZ(); + double d4 = (double) blockposition.getY() - Math.sqrt((double) (i1 * i1 + j1 * j1)) * this.d; + int k1 = d4 > (double) j ? j : (int) d4; + BlockPosition blockposition2 = new BlockPosition(this.m.getX(), k1, this.m.getZ()); + + if (this.a(blockposition2, blockposition) == -1) { + this.j.add(new WorldGenBigTree.Position(blockposition, blockposition2.getY())); + } + } + } + } + } + + } + + void a(BlockPosition blockposition, float f, IBlockData iblockdata) { + int i = (int) ((double) f + 0.618D); + + for (int j = -i; j <= i; ++j) { + for (int k = -i; k <= i; ++k) { + if (Math.pow((double) Math.abs(j) + 0.5D, 2.0D) + Math.pow((double) Math.abs(k) + 0.5D, 2.0D) <= (double) (f * f)) { + BlockPosition blockposition1 = blockposition.a(j, 0, k); + Material material = this.l.getType(blockposition1).getBlock().getMaterial(); + + if (material == Material.AIR || material == Material.LEAVES) { + this.a(this.l, blockposition1, iblockdata); + } + } + } + } + + } + + float a(int i) { + if ((float) i < (float) this.a * 0.3F) { + return -1.0F; + } else { + float f = (float) this.a / 2.0F; + float f1 = f - (float) i; + float f2 = MathHelper.c(f * f - f1 * f1); + + if (f1 == 0.0F) { + f2 = f; + } else if (Math.abs(f1) >= f) { + return 0.0F; + } + + return f2 * 0.5F; + } + } + + float b(int i) { + return i >= 0 && i < this.i ? (i != 0 && i != this.i - 1 ? 3.0F : 2.0F) : -1.0F; + } + + void a(BlockPosition blockposition) { + for (int i = 0; i < this.i; ++i) { + this.a(blockposition.up(i), this.b(i), Blocks.LEAVES.getBlockData().set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false))); + } + + } + + void a(BlockPosition blockposition, BlockPosition blockposition1, Block block) { + BlockPosition blockposition2 = blockposition1.a(-blockposition.getX(), -blockposition.getY(), -blockposition.getZ()); + int i = this.b(blockposition2); + float f = (float) blockposition2.getX() / (float) i; + float f1 = (float) blockposition2.getY() / (float) i; + float f2 = (float) blockposition2.getZ() / (float) i; + + for (int j = 0; j <= i; ++j) { + BlockPosition blockposition3 = blockposition.a((double) (0.5F + (float) j * f), (double) (0.5F + (float) j * f1), (double) (0.5F + (float) j * f2)); + BlockLogAbstract.EnumLogRotation blocklogabstract_enumlogrotation = this.b(blockposition, blockposition3); + + this.a(this.l, blockposition3, block.getBlockData().set(BlockLogAbstract.AXIS, blocklogabstract_enumlogrotation)); + } + + } + + private int b(BlockPosition blockposition) { + int i = MathHelper.a(blockposition.getX()); + int j = MathHelper.a(blockposition.getY()); + int k = MathHelper.a(blockposition.getZ()); + + return k > i && k > j ? k : (j > i ? j : i); + } + + private BlockLogAbstract.EnumLogRotation b(BlockPosition blockposition, BlockPosition blockposition1) { + BlockLogAbstract.EnumLogRotation blocklogabstract_enumlogrotation = BlockLogAbstract.EnumLogRotation.Y; + int i = Math.abs(blockposition1.getX() - blockposition.getX()); + int j = Math.abs(blockposition1.getZ() - blockposition.getZ()); + int k = Math.max(i, j); + + if (k > 0) { + if (i == k) { + blocklogabstract_enumlogrotation = BlockLogAbstract.EnumLogRotation.X; + } else if (j == k) { + blocklogabstract_enumlogrotation = BlockLogAbstract.EnumLogRotation.Z; + } + } + + return blocklogabstract_enumlogrotation; + } + + void b() { + Iterator iterator = this.j.iterator(); + + while (iterator.hasNext()) { + WorldGenBigTree.Position worldgenbigtree_position = (WorldGenBigTree.Position) iterator.next(); + + this.a((BlockPosition) worldgenbigtree_position); + } + + } + + boolean c(int i) { + return (double) i >= (double) this.a * 0.2D; + } + + void c() { + BlockPosition blockposition = this.m; + BlockPosition blockposition1 = this.m.up(this.b); + Block block = Blocks.LOG; + + this.a(blockposition, blockposition1, block); + if (this.g == 2) { + this.a(blockposition.east(), blockposition1.east(), block); + this.a(blockposition.east().south(), blockposition1.east().south(), block); + this.a(blockposition.south(), blockposition1.south(), block); + } + + } + + void d() { + Iterator iterator = this.j.iterator(); + + while (iterator.hasNext()) { + WorldGenBigTree.Position worldgenbigtree_position = (WorldGenBigTree.Position) iterator.next(); + int i = worldgenbigtree_position.q(); + BlockPosition blockposition = new BlockPosition(this.m.getX(), i, this.m.getZ()); + + if (!blockposition.equals(worldgenbigtree_position) && this.c(i - this.m.getY())) { + this.a(blockposition, (BlockPosition) worldgenbigtree_position, Blocks.LOG); + } + } + + } + + int a(BlockPosition blockposition, BlockPosition blockposition1) { + BlockPosition blockposition2 = blockposition1.a(-blockposition.getX(), -blockposition.getY(), -blockposition.getZ()); + int i = this.b(blockposition2); + float f = (float) blockposition2.getX() / (float) i; + float f1 = (float) blockposition2.getY() / (float) i; + float f2 = (float) blockposition2.getZ() / (float) i; + + if (i == 0) { + return -1; + } else { + for (int j = 0; j <= i; ++j) { + BlockPosition blockposition3 = blockposition.a((double) (0.5F + (float) j * f), (double) (0.5F + (float) j * f1), (double) (0.5F + (float) j * f2)); + + if (!this.a(this.l.getType(blockposition3).getBlock())) { + return j; + } + } + + return -1; + } + } + + public void e() { + this.i = 5; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + this.l = world; + this.m = blockposition; + this.k = new Random(random.nextLong()); + if (this.a == 0) { + this.a = 5 + this.k.nextInt(this.h); + } + + if (!this.f()) { + return false; + } else { + this.a(); + this.b(); + this.c(); + this.d(); + return true; + } + } + + private boolean f() { + Block block = this.l.getType(this.m.down()).getBlock(); + + if (block != Blocks.DIRT && block != Blocks.GRASS && block != Blocks.FARMLAND) { + return false; + } else { + int i = this.a(this.m, this.m.up(this.a - 1)); + + if (i == -1) { + return true; + } else if (i < 6) { + return false; + } else { + this.a = i; + return true; + } + } + } + + static class Position extends BlockPosition { + + private final int c; + + public Position(BlockPosition blockposition, int i) { + super(blockposition.getX(), blockposition.getY(), blockposition.getZ()); + this.c = i; + } + + public int q() { + return this.c; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBonusChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBonusChest.java new file mode 100644 index 0000000..60b2034 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenBonusChest.java @@ -0,0 +1,67 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class WorldGenBonusChest extends WorldGenerator { + + private final List a; + private final int b; + + public WorldGenBonusChest(List list, int i) { + this.a = list; + this.b = i; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + Block block; + + while (((block = world.getType(blockposition).getBlock()).getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) && blockposition.getY() > 1) { + blockposition = blockposition.down(); + } + + if (blockposition.getY() < 1) { + return false; + } else { + blockposition = blockposition.up(); + + for (int i = 0; i < 4; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(4) - random.nextInt(4), random.nextInt(3) - random.nextInt(3), random.nextInt(4) - random.nextInt(4)); + + if (world.isEmpty(blockposition1) && World.a((IBlockAccess) world, blockposition1.down())) { + world.setTypeAndData(blockposition1, Blocks.CHEST.getBlockData(), 2); + TileEntity tileentity = world.getTileEntity(blockposition1); + + if (tileentity instanceof TileEntityChest) { + StructurePieceTreasure.a(random, this.a, (IInventory) ((TileEntityChest) tileentity), this.b); + } + + BlockPosition blockposition2 = blockposition1.east(); + BlockPosition blockposition3 = blockposition1.west(); + BlockPosition blockposition4 = blockposition1.north(); + BlockPosition blockposition5 = blockposition1.south(); + + if (world.isEmpty(blockposition3) && World.a((IBlockAccess) world, blockposition3.down())) { + world.setTypeAndData(blockposition3, Blocks.TORCH.getBlockData(), 2); + } + + if (world.isEmpty(blockposition2) && World.a((IBlockAccess) world, blockposition2.down())) { + world.setTypeAndData(blockposition2, Blocks.TORCH.getBlockData(), 2); + } + + if (world.isEmpty(blockposition4) && World.a((IBlockAccess) world, blockposition4.down())) { + world.setTypeAndData(blockposition4, Blocks.TORCH.getBlockData(), 2); + } + + if (world.isEmpty(blockposition5) && World.a((IBlockAccess) world, blockposition5.down())) { + world.setTypeAndData(blockposition5, Blocks.TORCH.getBlockData(), 2); + } + + return true; + } + } + + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCactus.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCactus.java new file mode 100644 index 0000000..fd50e5c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCactus.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenCactus extends WorldGenerator { + + public WorldGenCactus() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 10; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1)) { + int j = 1 + random.nextInt(random.nextInt(3) + 1); + + for (int k = 0; k < j; ++k) { + if (Blocks.CACTUS.e(world, blockposition1)) { + world.setTypeAndData(blockposition1.up(k), Blocks.CACTUS.getBlockData(), 2); + } + } + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCanyon.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCanyon.java new file mode 100644 index 0000000..3849e3a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCanyon.java @@ -0,0 +1,189 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenCanyon extends WorldGenBase { + + private float[] d = new float[1024]; + + public WorldGenCanyon() {} + + protected void a(long i, int j, int k, ChunkSnapshot chunksnapshot, double d0, double d1, double d2, float f, float f1, float f2, int l, int i1, double d3) { + Random random = new Random(i); + double d4 = (double) (j * 16 + 8); + double d5 = (double) (k * 16 + 8); + float f3 = 0.0F; + float f4 = 0.0F; + + if (i1 <= 0) { + int j1 = this.a * 16 - 16; + + i1 = j1 - random.nextInt(j1 / 4); + } + + boolean flag = false; + + if (l == -1) { + l = i1 / 2; + flag = true; + } + + float f5 = 1.0F; + + for (int k1 = 0; k1 < 256; ++k1) { + if (k1 == 0 || random.nextInt(3) == 0) { + f5 = 1.0F + random.nextFloat() * random.nextFloat() * 1.0F; + } + + this.d[k1] = f5 * f5; + } + + for (; l < i1; ++l) { + double d6 = 1.5D + (double) (MathHelper.sin((float) l * 3.1415927F / (float) i1) * f * 1.0F); + double d7 = d6 * d3; + + d6 *= (double) random.nextFloat() * 0.25D + 0.75D; + d7 *= (double) random.nextFloat() * 0.25D + 0.75D; + float f6 = MathHelper.cos(f2); + float f7 = MathHelper.sin(f2); + + d0 += (double) (MathHelper.cos(f1) * f6); + d1 += (double) f7; + d2 += (double) (MathHelper.sin(f1) * f6); + f2 *= 0.7F; + f2 += f4 * 0.05F; + f1 += f3 * 0.05F; + f4 *= 0.8F; + f3 *= 0.5F; + f4 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F; + f3 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4.0F; + if (flag || random.nextInt(4) != 0) { + double d8 = d0 - d4; + double d9 = d2 - d5; + double d10 = (double) (i1 - l); + double d11 = (double) (f + 2.0F + 16.0F); + + if (d8 * d8 + d9 * d9 - d10 * d10 > d11 * d11) { + return; + } + + if (d0 >= d4 - 16.0D - d6 * 2.0D && d2 >= d5 - 16.0D - d6 * 2.0D && d0 <= d4 + 16.0D + d6 * 2.0D && d2 <= d5 + 16.0D + d6 * 2.0D) { + int l1 = MathHelper.floor(d0 - d6) - j * 16 - 1; + int i2 = MathHelper.floor(d0 + d6) - j * 16 + 1; + int j2 = MathHelper.floor(d1 - d7) - 1; + int k2 = MathHelper.floor(d1 + d7) + 1; + int l2 = MathHelper.floor(d2 - d6) - k * 16 - 1; + int i3 = MathHelper.floor(d2 + d6) - k * 16 + 1; + + if (l1 < 0) { + l1 = 0; + } + + if (i2 > 16) { + i2 = 16; + } + + if (j2 < 1) { + j2 = 1; + } + + if (k2 > 248) { + k2 = 248; + } + + if (l2 < 0) { + l2 = 0; + } + + if (i3 > 16) { + i3 = 16; + } + + boolean flag1 = false; + + int j3; + + for (int k3 = l1; !flag1 && k3 < i2; ++k3) { + for (j3 = l2; !flag1 && j3 < i3; ++j3) { + for (int l3 = k2 + 1; !flag1 && l3 >= j2 - 1; --l3) { + if (l3 >= 0 && l3 < 256) { + IBlockData iblockdata = chunksnapshot.a(k3, l3, j3); + + if (iblockdata.getBlock() == Blocks.FLOWING_WATER || iblockdata.getBlock() == Blocks.WATER) { + flag1 = true; + } + + if (l3 != j2 - 1 && k3 != l1 && k3 != i2 - 1 && j3 != l2 && j3 != i3 - 1) { + l3 = j2; + } + } + } + } + } + + if (!flag1) { + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j3 = l1; j3 < i2; ++j3) { + double d12 = ((double) (j3 + j * 16) + 0.5D - d0) / d6; + + for (int i4 = l2; i4 < i3; ++i4) { + double d13 = ((double) (i4 + k * 16) + 0.5D - d2) / d6; + boolean flag2 = false; + + if (d12 * d12 + d13 * d13 < 1.0D) { + for (int j4 = k2; j4 > j2; --j4) { + double d14 = ((double) (j4 - 1) + 0.5D - d1) / d7; + + if ((d12 * d12 + d13 * d13) * (double) this.d[j4 - 1] + d14 * d14 / 6.0D < 1.0D) { + IBlockData iblockdata1 = chunksnapshot.a(j3, j4, i4); + + if (iblockdata1.getBlock() == Blocks.GRASS) { + flag2 = true; + } + + if (iblockdata1.getBlock() == Blocks.STONE || iblockdata1.getBlock() == Blocks.DIRT || iblockdata1.getBlock() == Blocks.GRASS) { + if (j4 - 1 < 10) { + chunksnapshot.a(j3, j4, i4, Blocks.FLOWING_LAVA.getBlockData()); + } else { + chunksnapshot.a(j3, j4, i4, Blocks.AIR.getBlockData()); + if (flag2 && chunksnapshot.a(j3, j4 - 1, i4).getBlock() == Blocks.DIRT) { + blockposition_mutableblockposition.c(j3 + j * 16, 0, i4 + k * 16); + chunksnapshot.a(j3, j4 - 1, i4, this.c.getBiome(blockposition_mutableblockposition).ak); + } + } + } + } + } + } + } + } + + if (flag) { + break; + } + } + } + } + } + + } + + protected void a(World world, int i, int j, int k, int l, ChunkSnapshot chunksnapshot) { + if (this.b.nextInt(50) == 0) { + double d0 = (double) (i * 16 + this.b.nextInt(16)); + double d1 = (double) (this.b.nextInt(this.b.nextInt(40) + 8) + 20); + double d2 = (double) (j * 16 + this.b.nextInt(16)); + byte b0 = 1; + + for (int i1 = 0; i1 < b0; ++i1) { + float f = this.b.nextFloat() * 3.1415927F * 2.0F; + float f1 = (this.b.nextFloat() - 0.5F) * 2.0F / 8.0F; + float f2 = (this.b.nextFloat() * 2.0F + this.b.nextFloat()) * 2.0F; + + this.a(this.b.nextLong(), k, l, chunksnapshot, d0, d1, d2, f2, f, f1, 0, 0, 3.0D); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCaves.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCaves.java new file mode 100644 index 0000000..968b747 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCaves.java @@ -0,0 +1,217 @@ +package net.minecraft.server; + +import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; +import java.util.Random; + +public class WorldGenCaves extends WorldGenBase { + + public WorldGenCaves() {} + + protected void a(long i, int j, int k, ChunkSnapshot chunksnapshot, double d0, double d1, double d2) { + this.a(i, j, k, chunksnapshot, d0, d1, d2, 1.0F + this.b.nextFloat() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D); + } + + protected void a(long i, int j, int k, ChunkSnapshot chunksnapshot, double d0, double d1, double d2, float f, float f1, float f2, int l, int i1, double d3) { + double d4 = (double) (j * 16 + 8); + double d5 = (double) (k * 16 + 8); + float f3 = 0.0F; + float f4 = 0.0F; + Random random = new Random(i); + + if (i1 <= 0) { + int j1 = this.a * 16 - 16; + + i1 = j1 - random.nextInt(j1 / 4); + } + + boolean flag = false; + + if (l == -1) { + l = i1 / 2; + flag = true; + } + + int k1 = random.nextInt(i1 / 2) + i1 / 4; + + for (boolean flag1 = random.nextInt(6) == 0; l < i1; ++l) { + double d6 = 1.5D + (double) (MathHelper.sin((float) l * 3.1415927F / (float) i1) * f * 1.0F); + double d7 = d6 * d3; + float f5 = MathHelper.cos(f2); + float f6 = MathHelper.sin(f2); + + d0 += (double) (MathHelper.cos(f1) * f5); + d1 += (double) f6; + d2 += (double) (MathHelper.sin(f1) * f5); + if (flag1) { + f2 *= 0.92F; + } else { + f2 *= 0.7F; + } + + f2 += f4 * 0.1F; + f1 += f3 * 0.1F; + f4 *= 0.9F; + f3 *= 0.75F; + f4 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F; + f3 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4.0F; + if (!flag && l == k1 && f > 1.0F && i1 > 0) { + this.a(random.nextLong(), j, k, chunksnapshot, d0, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 - 1.5707964F, f2 / 3.0F, l, i1, 1.0D); + this.a(random.nextLong(), j, k, chunksnapshot, d0, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 + 1.5707964F, f2 / 3.0F, l, i1, 1.0D); + return; + } + + if (flag || random.nextInt(4) != 0) { + double d8 = d0 - d4; + double d9 = d2 - d5; + double d10 = (double) (i1 - l); + double d11 = (double) (f + 2.0F + 16.0F); + + if (d8 * d8 + d9 * d9 - d10 * d10 > d11 * d11) { + return; + } + + if (d0 >= d4 - 16.0D - d6 * 2.0D && d2 >= d5 - 16.0D - d6 * 2.0D && d0 <= d4 + 16.0D + d6 * 2.0D && d2 <= d5 + 16.0D + d6 * 2.0D) { + int l1 = MathHelper.floor(d0 - d6) - j * 16 - 1; + int i2 = MathHelper.floor(d0 + d6) - j * 16 + 1; + int j2 = MathHelper.floor(d1 - d7) - 1; + int k2 = MathHelper.floor(d1 + d7) + 1; + int l2 = MathHelper.floor(d2 - d6) - k * 16 - 1; + int i3 = MathHelper.floor(d2 + d6) - k * 16 + 1; + + if (l1 < 0) { + l1 = 0; + } + + if (i2 > 16) { + i2 = 16; + } + + if (j2 < 1) { + j2 = 1; + } + + if (k2 > 248) { + k2 = 248; + } + + if (l2 < 0) { + l2 = 0; + } + + if (i3 > 16) { + i3 = 16; + } + + boolean flag2 = false; + + int j3; + + for (int k3 = l1; !flag2 && k3 < i2; ++k3) { + for (j3 = l2; !flag2 && j3 < i3; ++j3) { + for (int l3 = k2 + 1; !flag2 && l3 >= j2 - 1; --l3) { + if (l3 >= 0 && l3 < 256) { + IBlockData iblockdata = chunksnapshot.a(k3, l3, j3); + + if (iblockdata.getBlock() == Blocks.FLOWING_WATER || iblockdata.getBlock() == Blocks.WATER) { + flag2 = true; + } + + if (l3 != j2 - 1 && k3 != l1 && k3 != i2 - 1 && j3 != l2 && j3 != i3 - 1) { + l3 = j2; + } + } + } + } + } + + if (!flag2) { + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j3 = l1; j3 < i2; ++j3) { + double d12 = ((double) (j3 + j * 16) + 0.5D - d0) / d6; + + for (int i4 = l2; i4 < i3; ++i4) { + double d13 = ((double) (i4 + k * 16) + 0.5D - d2) / d6; + boolean flag3 = false; + + if (d12 * d12 + d13 * d13 < 1.0D) { + for (int j4 = k2; j4 > j2; --j4) { + double d14 = ((double) (j4 - 1) + 0.5D - d1) / d7; + + if (d14 > -0.7D && d12 * d12 + d14 * d14 + d13 * d13 < 1.0D) { + IBlockData iblockdata1 = chunksnapshot.a(j3, j4, i4); + IBlockData iblockdata2 = MoreObjects.firstNonNull(chunksnapshot.a(j3, j4 + 1, i4), Blocks.AIR.getBlockData()); + + if (iblockdata1.getBlock() == Blocks.GRASS || iblockdata1.getBlock() == Blocks.MYCELIUM) { + flag3 = true; + } + + if (this.a(iblockdata1, iblockdata2)) { + if (j4 - 1 < 10) { + chunksnapshot.a(j3, j4, i4, Blocks.LAVA.getBlockData()); + } else { + chunksnapshot.a(j3, j4, i4, Blocks.AIR.getBlockData()); + if (iblockdata2.getBlock() == Blocks.SAND) { + chunksnapshot.a(j3, j4 + 1, i4, iblockdata2.get(BlockSand.VARIANT) == BlockSand.EnumSandVariant.RED_SAND ? Blocks.RED_SANDSTONE.getBlockData() : Blocks.SANDSTONE.getBlockData()); + } + + if (flag3 && chunksnapshot.a(j3, j4 - 1, i4).getBlock() == Blocks.DIRT) { + blockposition_mutableblockposition.c(j3 + j * 16, 0, i4 + k * 16); + chunksnapshot.a(j3, j4 - 1, i4, this.c.getBiome(blockposition_mutableblockposition).ak.getBlock().getBlockData()); + } + } + } + } + } + } + } + } + + if (flag) { + break; + } + } + } + } + } + + } + + protected boolean a(IBlockData iblockdata, IBlockData iblockdata1) { + return iblockdata.getBlock() == Blocks.STONE ? true : (iblockdata.getBlock() == Blocks.DIRT ? true : (iblockdata.getBlock() == Blocks.GRASS ? true : (iblockdata.getBlock() == Blocks.HARDENED_CLAY ? true : (iblockdata.getBlock() == Blocks.STAINED_HARDENED_CLAY ? true : (iblockdata.getBlock() == Blocks.SANDSTONE ? true : (iblockdata.getBlock() == Blocks.RED_SANDSTONE ? true : (iblockdata.getBlock() == Blocks.MYCELIUM ? true : (iblockdata.getBlock() == Blocks.SNOW_LAYER ? true : (iblockdata.getBlock() == Blocks.SAND || iblockdata.getBlock() == Blocks.GRAVEL) && iblockdata1.getBlock().getMaterial() != Material.WATER)))))))); + } + + protected void a(World world, int i, int j, int k, int l, ChunkSnapshot chunksnapshot) { + int i1 = this.b.nextInt(this.b.nextInt(this.b.nextInt(15) + 1) + 1); + + if (this.b.nextInt(7) != 0) { + i1 = 0; + } + + for (int j1 = 0; j1 < i1; ++j1) { + double d0 = (double) (i * 16 + this.b.nextInt(16)); + double d1 = (double) this.b.nextInt(this.b.nextInt(120) + 8); + double d2 = (double) (j * 16 + this.b.nextInt(16)); + int k1 = 1; + + if (this.b.nextInt(4) == 0) { + this.a(this.b.nextLong(), k, l, chunksnapshot, d0, d1, d2); + k1 += this.b.nextInt(4); + } + + for (int l1 = 0; l1 < k1; ++l1) { + float f = this.b.nextFloat() * 3.1415927F * 2.0F; + float f1 = (this.b.nextFloat() - 0.5F) * 2.0F / 8.0F; + float f2 = this.b.nextFloat() * 2.0F + this.b.nextFloat(); + + if (this.b.nextInt(10) == 0) { + f2 *= this.b.nextFloat() * this.b.nextFloat() * 3.0F + 1.0F; + } + + this.a(this.b.nextLong(), k, l, chunksnapshot, d0, d1, d2, f2, f, f1, 0, 0, 1.0D); + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCavesHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCavesHell.java new file mode 100644 index 0000000..755b3c0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenCavesHell.java @@ -0,0 +1,185 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenCavesHell extends WorldGenBase { + + public WorldGenCavesHell() {} + + protected void a(long i, int j, int k, ChunkSnapshot chunksnapshot, double d0, double d1, double d2) { + this.a(i, j, k, chunksnapshot, d0, d1, d2, 1.0F + this.b.nextFloat() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D); + } + + protected void a(long i, int j, int k, ChunkSnapshot chunksnapshot, double d0, double d1, double d2, float f, float f1, float f2, int l, int i1, double d3) { + double d4 = (double) (j * 16 + 8); + double d5 = (double) (k * 16 + 8); + float f3 = 0.0F; + float f4 = 0.0F; + Random random = new Random(i); + + if (i1 <= 0) { + int j1 = this.a * 16 - 16; + + i1 = j1 - random.nextInt(j1 / 4); + } + + boolean flag = false; + + if (l == -1) { + l = i1 / 2; + flag = true; + } + + int k1 = random.nextInt(i1 / 2) + i1 / 4; + + for (boolean flag1 = random.nextInt(6) == 0; l < i1; ++l) { + double d6 = 1.5D + (double) (MathHelper.sin((float) l * 3.1415927F / (float) i1) * f * 1.0F); + double d7 = d6 * d3; + float f5 = MathHelper.cos(f2); + float f6 = MathHelper.sin(f2); + + d0 += (double) (MathHelper.cos(f1) * f5); + d1 += (double) f6; + d2 += (double) (MathHelper.sin(f1) * f5); + if (flag1) { + f2 *= 0.92F; + } else { + f2 *= 0.7F; + } + + f2 += f4 * 0.1F; + f1 += f3 * 0.1F; + f4 *= 0.9F; + f3 *= 0.75F; + f4 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F; + f3 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4.0F; + if (!flag && l == k1 && f > 1.0F) { + this.a(random.nextLong(), j, k, chunksnapshot, d0, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 - 1.5707964F, f2 / 3.0F, l, i1, 1.0D); + this.a(random.nextLong(), j, k, chunksnapshot, d0, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 + 1.5707964F, f2 / 3.0F, l, i1, 1.0D); + return; + } + + if (flag || random.nextInt(4) != 0) { + double d8 = d0 - d4; + double d9 = d2 - d5; + double d10 = (double) (i1 - l); + double d11 = (double) (f + 2.0F + 16.0F); + + if (d8 * d8 + d9 * d9 - d10 * d10 > d11 * d11) { + return; + } + + if (d0 >= d4 - 16.0D - d6 * 2.0D && d2 >= d5 - 16.0D - d6 * 2.0D && d0 <= d4 + 16.0D + d6 * 2.0D && d2 <= d5 + 16.0D + d6 * 2.0D) { + int l1 = MathHelper.floor(d0 - d6) - j * 16 - 1; + int i2 = MathHelper.floor(d0 + d6) - j * 16 + 1; + int j2 = MathHelper.floor(d1 - d7) - 1; + int k2 = MathHelper.floor(d1 + d7) + 1; + int l2 = MathHelper.floor(d2 - d6) - k * 16 - 1; + int i3 = MathHelper.floor(d2 + d6) - k * 16 + 1; + + if (l1 < 0) { + l1 = 0; + } + + if (i2 > 16) { + i2 = 16; + } + + if (j2 < 1) { + j2 = 1; + } + + if (k2 > 120) { + k2 = 120; + } + + if (l2 < 0) { + l2 = 0; + } + + if (i3 > 16) { + i3 = 16; + } + + boolean flag2 = false; + + int j3; + + for (j3 = l1; !flag2 && j3 < i2; ++j3) { + for (int k3 = l2; !flag2 && k3 < i3; ++k3) { + for (int l3 = k2 + 1; !flag2 && l3 >= j2 - 1; --l3) { + if (l3 >= 0 && l3 < 128) { + IBlockData iblockdata = chunksnapshot.a(j3, l3, k3); + + if (iblockdata.getBlock() == Blocks.FLOWING_LAVA || iblockdata.getBlock() == Blocks.LAVA) { + flag2 = true; + } + + if (l3 != j2 - 1 && j3 != l1 && j3 != i2 - 1 && k3 != l2 && k3 != i3 - 1) { + l3 = j2; + } + } + } + } + } + + if (!flag2) { + for (j3 = l1; j3 < i2; ++j3) { + double d12 = ((double) (j3 + j * 16) + 0.5D - d0) / d6; + + for (int i4 = l2; i4 < i3; ++i4) { + double d13 = ((double) (i4 + k * 16) + 0.5D - d2) / d6; + + for (int j4 = k2; j4 > j2; --j4) { + double d14 = ((double) (j4 - 1) + 0.5D - d1) / d7; + + if (d14 > -0.7D && d12 * d12 + d14 * d14 + d13 * d13 < 1.0D) { + IBlockData iblockdata1 = chunksnapshot.a(j3, j4, i4); + + if (iblockdata1.getBlock() == Blocks.NETHERRACK || iblockdata1.getBlock() == Blocks.DIRT || iblockdata1.getBlock() == Blocks.GRASS) { + chunksnapshot.a(j3, j4, i4, Blocks.AIR.getBlockData()); + } + } + } + } + } + + if (flag) { + break; + } + } + } + } + } + + } + + protected void a(World world, int i, int j, int k, int l, ChunkSnapshot chunksnapshot) { + int i1 = this.b.nextInt(this.b.nextInt(this.b.nextInt(10) + 1) + 1); + + if (this.b.nextInt(5) != 0) { + i1 = 0; + } + + for (int j1 = 0; j1 < i1; ++j1) { + double d0 = (double) (i * 16 + this.b.nextInt(16)); + double d1 = (double) this.b.nextInt(128); + double d2 = (double) (j * 16 + this.b.nextInt(16)); + int k1 = 1; + + if (this.b.nextInt(4) == 0) { + this.a(this.b.nextLong(), k, l, chunksnapshot, d0, d1, d2); + k1 += this.b.nextInt(4); + } + + for (int l1 = 0; l1 < k1; ++l1) { + float f = this.b.nextFloat() * 3.1415927F * 2.0F; + float f1 = (this.b.nextFloat() - 0.5F) * 2.0F / 8.0F; + float f2 = this.b.nextFloat() * 2.0F + this.b.nextFloat(); + + this.a(this.b.nextLong(), k, l, chunksnapshot, d0, d1, d2, f2 * 2.0F, f, f1, 0, 0, 0.5D); + } + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenClay.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenClay.java new file mode 100644 index 0000000..329c385 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenClay.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenClay extends WorldGenerator { + + private Block a; + private int b; + + public WorldGenClay(int i) { + this.a = Blocks.CLAY; + this.b = i; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (world.getType(blockposition).getBlock().getMaterial() != Material.WATER) { + return false; + } else { + int i = random.nextInt(this.b - 2) + 2; + byte b0 = 1; + + for (int j = blockposition.getX() - i; j <= blockposition.getX() + i; ++j) { + for (int k = blockposition.getZ() - i; k <= blockposition.getZ() + i; ++k) { + int l = j - blockposition.getX(); + int i1 = k - blockposition.getZ(); + + if (l * l + i1 * i1 <= i * i) { + for (int j1 = blockposition.getY() - b0; j1 <= blockposition.getY() + b0; ++j1) { + BlockPosition blockposition1 = new BlockPosition(j, j1, k); + Block block = world.getType(blockposition1).getBlock(); + + if (block == Blocks.DIRT || block == Blocks.CLAY) { + world.setTypeAndData(blockposition1, this.a.getBlockData(), 2); + } + } + } + } + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDeadBush.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDeadBush.java new file mode 100644 index 0000000..8345905 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDeadBush.java @@ -0,0 +1,26 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenDeadBush extends WorldGenerator { + + public WorldGenDeadBush() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + Block block; + + while (((block = world.getType(blockposition).getBlock()).getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) && blockposition.getY() > 0) { + blockposition = blockposition.down(); + } + + for (int i = 0; i < 4; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && Blocks.DEADBUSH.f(world, blockposition1, Blocks.DEADBUSH.getBlockData())) { + world.setTypeAndData(blockposition1, Blocks.DEADBUSH.getBlockData(), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDesertWell.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDesertWell.java new file mode 100644 index 0000000..b8ab3ae --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDesertWell.java @@ -0,0 +1,89 @@ +package net.minecraft.server; + +import com.google.common.base.Predicates; +import java.util.Iterator; +import java.util.Random; + +public class WorldGenDesertWell extends WorldGenerator { + + private static final BlockStatePredicate a = BlockStatePredicate.a((Block) Blocks.SAND).a(BlockSand.VARIANT, Predicates.equalTo(BlockSand.EnumSandVariant.SAND)); + private final IBlockData b; + private final IBlockData c; + private final IBlockData d; + + public WorldGenDesertWell() { + this.b = Blocks.STONE_SLAB.getBlockData().set(BlockDoubleStepAbstract.VARIANT, BlockDoubleStepAbstract.EnumStoneSlabVariant.SAND).set(BlockStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM); + this.c = Blocks.SANDSTONE.getBlockData(); + this.d = Blocks.FLOWING_WATER.getBlockData(); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + while (world.isEmpty(blockposition) && blockposition.getY() > 2) { + blockposition = blockposition.down(); + } + + if (!WorldGenDesertWell.a.a(world.getType(blockposition))) { + return false; + } else { + int i; + int j; + + for (i = -2; i <= 2; ++i) { + for (j = -2; j <= 2; ++j) { + if (world.isEmpty(blockposition.a(i, -1, j)) && world.isEmpty(blockposition.a(i, -2, j))) { + return false; + } + } + } + + for (i = -1; i <= 0; ++i) { + for (j = -2; j <= 2; ++j) { + for (int k = -2; k <= 2; ++k) { + world.setTypeAndData(blockposition.a(j, i, k), this.c, 2); + } + } + } + + world.setTypeAndData(blockposition, this.d, 2); + Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); + + while (iterator.hasNext()) { + EnumDirection enumdirection = (EnumDirection) iterator.next(); + + world.setTypeAndData(blockposition.shift(enumdirection), this.d, 2); + } + + for (i = -2; i <= 2; ++i) { + for (j = -2; j <= 2; ++j) { + if (i == -2 || i == 2 || j == -2 || j == 2) { + world.setTypeAndData(blockposition.a(i, 1, j), this.c, 2); + } + } + } + + world.setTypeAndData(blockposition.a(2, 1, 0), this.b, 2); + world.setTypeAndData(blockposition.a(-2, 1, 0), this.b, 2); + world.setTypeAndData(blockposition.a(0, 1, 2), this.b, 2); + world.setTypeAndData(blockposition.a(0, 1, -2), this.b, 2); + + for (i = -1; i <= 1; ++i) { + for (j = -1; j <= 1; ++j) { + if (i == 0 && j == 0) { + world.setTypeAndData(blockposition.a(i, 4, j), this.c, 2); + } else { + world.setTypeAndData(blockposition.a(i, 4, j), this.b, 2); + } + } + } + + for (i = 1; i <= 3; ++i) { + world.setTypeAndData(blockposition.a(-1, i, -1), this.c, 2); + world.setTypeAndData(blockposition.a(-1, i, 1), this.c, 2); + world.setTypeAndData(blockposition.a(1, i, -1), this.c, 2); + world.setTypeAndData(blockposition.a(1, i, 1), this.c, 2); + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDungeons.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDungeons.java new file mode 100644 index 0000000..d76e554 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenDungeons.java @@ -0,0 +1,144 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class WorldGenDungeons extends WorldGenerator { + + private static final Logger a = LogManager.getLogger(); + private static final String[] b = new String[] { "Skeleton", "Zombie", "Zombie", "Spider"}; + private static final List c = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.SADDLE, 0, 1, 1, 10), new StructurePieceTreasure(Items.IRON_INGOT, 0, 1, 4, 10), new StructurePieceTreasure(Items.BREAD, 0, 1, 1, 10), new StructurePieceTreasure(Items.WHEAT, 0, 1, 4, 10), new StructurePieceTreasure(Items.GUNPOWDER, 0, 1, 4, 10), new StructurePieceTreasure(Items.STRING, 0, 1, 4, 10), new StructurePieceTreasure(Items.BUCKET, 0, 1, 1, 10), new StructurePieceTreasure(Items.GOLDEN_APPLE, 0, 1, 1, 1), new StructurePieceTreasure(Items.REDSTONE, 0, 1, 4, 10), new StructurePieceTreasure(Items.RECORD_13, 0, 1, 1, 4), new StructurePieceTreasure(Items.RECORD_CAT, 0, 1, 1, 4), new StructurePieceTreasure(Items.NAME_TAG, 0, 1, 1, 10), new StructurePieceTreasure(Items.GOLDEN_HORSE_ARMOR, 0, 1, 1, 2), new StructurePieceTreasure(Items.IRON_HORSE_ARMOR, 0, 1, 1, 5), new StructurePieceTreasure(Items.DIAMOND_HORSE_ARMOR, 0, 1, 1, 1)}); + + public WorldGenDungeons() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + boolean flag = true; + int i = random.nextInt(2) + 2; + int j = -i - 1; + int k = i + 1; + boolean flag1 = true; + boolean flag2 = true; + int l = random.nextInt(2) + 2; + int i1 = -l - 1; + int j1 = l + 1; + int k1 = 0; + + int l1; + int i2; + int j2; + BlockPosition blockposition1; + + for (l1 = j; l1 <= k; ++l1) { + for (i2 = -1; i2 <= 4; ++i2) { + for (j2 = i1; j2 <= j1; ++j2) { + blockposition1 = blockposition.a(l1, i2, j2); + Material material = world.getType(blockposition1).getBlock().getMaterial(); + boolean flag3 = material.isBuildable(); + + if (i2 == -1 && !flag3) { + return false; + } + + if (i2 == 4 && !flag3) { + return false; + } + + if ((l1 == j || l1 == k || j2 == i1 || j2 == j1) && i2 == 0 && world.isEmpty(blockposition1) && world.isEmpty(blockposition1.up())) { + ++k1; + } + } + } + } + + if (k1 >= 1 && k1 <= 5) { + for (l1 = j; l1 <= k; ++l1) { + for (i2 = 3; i2 >= -1; --i2) { + for (j2 = i1; j2 <= j1; ++j2) { + blockposition1 = blockposition.a(l1, i2, j2); + if (l1 != j && i2 != -1 && j2 != i1 && l1 != k && i2 != 4 && j2 != j1) { + if (world.getType(blockposition1).getBlock() != Blocks.CHEST) { + world.setAir(blockposition1); + } + } else if (blockposition1.getY() >= 0 && !world.getType(blockposition1.down()).getBlock().getMaterial().isBuildable()) { + world.setAir(blockposition1); + } else if (world.getType(blockposition1).getBlock().getMaterial().isBuildable() && world.getType(blockposition1).getBlock() != Blocks.CHEST) { + if (i2 == -1 && random.nextInt(4) != 0) { + world.setTypeAndData(blockposition1, Blocks.MOSSY_COBBLESTONE.getBlockData(), 2); + } else { + world.setTypeAndData(blockposition1, Blocks.COBBLESTONE.getBlockData(), 2); + } + } + } + } + } + + l1 = 0; + + while (l1 < 2) { + i2 = 0; + + while (true) { + if (i2 < 3) { + label197: { + j2 = blockposition.getX() + random.nextInt(i * 2 + 1) - i; + int k2 = blockposition.getY(); + int l2 = blockposition.getZ() + random.nextInt(l * 2 + 1) - l; + BlockPosition blockposition2 = new BlockPosition(j2, k2, l2); + + if (world.isEmpty(blockposition2)) { + int i3 = 0; + Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); + + while (iterator.hasNext()) { + EnumDirection enumdirection = (EnumDirection) iterator.next(); + + if (world.getType(blockposition2.shift(enumdirection)).getBlock().getMaterial().isBuildable()) { + ++i3; + } + } + + if (i3 == 1) { + world.setTypeAndData(blockposition2, Blocks.CHEST.f(world, blockposition2, Blocks.CHEST.getBlockData()), 2); + List list = StructurePieceTreasure.a(WorldGenDungeons.c, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.b(random)}); + TileEntity tileentity = world.getTileEntity(blockposition2); + + if (tileentity instanceof TileEntityChest) { + StructurePieceTreasure.a(random, list, (IInventory) ((TileEntityChest) tileentity), 8); + } + break label197; + } + } + + ++i2; + continue; + } + } + + ++l1; + break; + } + } + + world.setTypeAndData(blockposition, Blocks.MOB_SPAWNER.getBlockData(), 2); + TileEntity tileentity1 = world.getTileEntity(blockposition); + + if (tileentity1 instanceof TileEntityMobSpawner) { + ((TileEntityMobSpawner) tileentity1).getSpawner().setMobName(this.a(random)); + } else { + WorldGenDungeons.a.error("Failed to fetch mob spawner entity at (" + blockposition.getX() + ", " + blockposition.getY() + ", " + blockposition.getZ() + ")"); + } + + return true; + } else { + return false; + } + } + + private String a(Random random) { + return WorldGenDungeons.b[random.nextInt(WorldGenDungeons.b.length)]; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenEnder.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenEnder.java new file mode 100644 index 0000000..2d7e14a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenEnder.java @@ -0,0 +1,57 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenEnder extends WorldGenerator { + + private Block a; + + public WorldGenEnder(Block block) { + this.a = block; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (world.isEmpty(blockposition) && world.getType(blockposition.down()).getBlock() == this.a) { + int i = random.nextInt(32) + 6; + int j = random.nextInt(4) + 1; + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + int k; + int l; + int i1; + int j1; + + for (k = blockposition.getX() - j; k <= blockposition.getX() + j; ++k) { + for (l = blockposition.getZ() - j; l <= blockposition.getZ() + j; ++l) { + i1 = k - blockposition.getX(); + j1 = l - blockposition.getZ(); + if (i1 * i1 + j1 * j1 <= j * j + 1 && world.getType(blockposition_mutableblockposition.c(k, blockposition.getY() - 1, l)).getBlock() != this.a) { + return false; + } + } + } + + for (k = blockposition.getY(); k < blockposition.getY() + i && k < 256; ++k) { + for (l = blockposition.getX() - j; l <= blockposition.getX() + j; ++l) { + for (i1 = blockposition.getZ() - j; i1 <= blockposition.getZ() + j; ++i1) { + j1 = l - blockposition.getX(); + int k1 = i1 - blockposition.getZ(); + + if (j1 * j1 + k1 * k1 <= j * j + 1) { + world.setTypeAndData(new BlockPosition(l, k, i1), Blocks.OBSIDIAN.getBlockData(), 2); + } + } + } + } + + EntityEnderCrystal entityendercrystal = new EntityEnderCrystal(world); + + entityendercrystal.setPositionRotation((double) ((float) blockposition.getX() + 0.5F), (double) (blockposition.getY() + i), (double) ((float) blockposition.getZ() + 0.5F), random.nextFloat() * 360.0F, 0.0F); + world.addEntity(entityendercrystal); + world.setTypeAndData(blockposition.up(i), Blocks.BEDROCK.getBlockData(), 2); + return true; + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFactory.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFactory.java new file mode 100644 index 0000000..a324499 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFactory.java @@ -0,0 +1,94 @@ +package net.minecraft.server; + +import com.google.common.collect.Maps; +import java.util.Map; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class WorldGenFactory { + + private static final Logger a = LogManager.getLogger(); + private static Map> b = Maps.newHashMap(); + private static Map, String> c = Maps.newHashMap(); + private static Map> d = Maps.newHashMap(); + private static Map, String> e = Maps.newHashMap(); + + private static void b(Class oclass, String s) { + WorldGenFactory.b.put(s, oclass); + WorldGenFactory.c.put(oclass, s); + } + + static void a(Class oclass, String s) { + WorldGenFactory.d.put(s, oclass); + WorldGenFactory.e.put(oclass, s); + } + + public static String a(StructureStart structurestart) { + return (String) WorldGenFactory.c.get(structurestart.getClass()); + } + + public static String a(StructurePiece structurepiece) { + return (String) WorldGenFactory.e.get(structurepiece.getClass()); + } + + public static StructureStart a(NBTTagCompound nbttagcompound, World world) { + StructureStart structurestart = null; + + try { + Class oclass = (Class) WorldGenFactory.b.get(nbttagcompound.getString("id")); + + if (oclass != null) { + structurestart = (StructureStart) oclass.newInstance(); + } + } catch (Exception exception) { + WorldGenFactory.a.warn("Failed Start with id " + nbttagcompound.getString("id")); + exception.printStackTrace(); + } + + if (structurestart != null) { + structurestart.a(world, nbttagcompound); + } else { + WorldGenFactory.a.warn("Skipping Structure with id " + nbttagcompound.getString("id")); + } + + return structurestart; + } + + public static StructurePiece b(NBTTagCompound nbttagcompound, World world) { + StructurePiece structurepiece = null; + + try { + Class oclass = (Class) WorldGenFactory.d.get(nbttagcompound.getString("id")); + + if (oclass != null) { + structurepiece = (StructurePiece) oclass.newInstance(); + } + } catch (Exception exception) { + WorldGenFactory.a.warn("Failed Piece with id " + nbttagcompound.getString("id")); + exception.printStackTrace(); + } + + if (structurepiece != null) { + structurepiece.a(world, nbttagcompound); + } else { + WorldGenFactory.a.warn("Skipping Piece with id " + nbttagcompound.getString("id")); + } + + return structurepiece; + } + + static { + b(WorldGenMineshaftStart.class, "Mineshaft"); + b(WorldGenVillage.WorldGenVillageStart.class, "Village"); + b(WorldGenNether.WorldGenNetherStart.class, "Fortress"); + b(WorldGenStronghold.WorldGenStronghold2Start.class, "Stronghold"); + b(WorldGenLargeFeature.WorldGenLargeFeatureStart.class, "Temple"); + b(WorldGenMonument.WorldGenMonumentStart.class, "Monument"); + WorldGenMineshaftPieces.a(); + WorldGenVillagePieces.a(); + WorldGenNetherPieces.a(); + WorldGenStrongholdPieces.a(); + WorldGenRegistration.a(); + WorldGenMonumentPieces.a(); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFire.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFire.java new file mode 100644 index 0000000..562d7fd --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFire.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenFire extends WorldGenerator { + + public WorldGenFire() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && world.getType(blockposition1.down()).getBlock() == Blocks.NETHERRACK) { + world.setTypeAndData(blockposition1, Blocks.FIRE.getBlockData(), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatInfo.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatInfo.java new file mode 100644 index 0000000..65b431e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatInfo.java @@ -0,0 +1,272 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +public class WorldGenFlatInfo { + + private final List layers = Lists.newArrayList(); + private final Map> structures = Maps.newHashMap(); + private int c; + + public WorldGenFlatInfo() {} + + public int a() { + return this.c; + } + + public void a(int i) { + this.c = i; + } + + public Map> b() { + return this.structures; + } + + public List c() { + return this.layers; + } + + public void d() { + int i = 0; + + WorldGenFlatLayerInfo worldgenflatlayerinfo; + + for (Iterator iterator = this.layers.iterator(); iterator.hasNext(); i += worldgenflatlayerinfo.b()) { + worldgenflatlayerinfo = (WorldGenFlatLayerInfo) iterator.next(); + worldgenflatlayerinfo.b(i); + } + + } + + public String toString() { + StringBuilder stringbuilder = new StringBuilder(); + + stringbuilder.append(3); + stringbuilder.append(";"); + + int i; + + for (i = 0; i < this.layers.size(); ++i) { + if (i > 0) { + stringbuilder.append(","); + } + + stringbuilder.append(((WorldGenFlatLayerInfo) this.layers.get(i)).toString()); + } + + stringbuilder.append(";"); + stringbuilder.append(this.c); + if (!this.structures.isEmpty()) { + stringbuilder.append(";"); + i = 0; + Iterator iterator = this.structures.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (i++ > 0) { + stringbuilder.append(","); + } + + stringbuilder.append(((String) entry.getKey()).toLowerCase()); + Map map = (Map) entry.getValue(); + + if (!map.isEmpty()) { + stringbuilder.append("("); + int j = 0; + Iterator iterator1 = map.entrySet().iterator(); + + while (iterator1.hasNext()) { + Entry entry1 = (Entry) iterator1.next(); + + if (j++ > 0) { + stringbuilder.append(" "); + } + + stringbuilder.append((String) entry1.getKey()); + stringbuilder.append("="); + stringbuilder.append((String) entry1.getValue()); + } + + stringbuilder.append(")"); + } + } + } else { + stringbuilder.append(";"); + } + + return stringbuilder.toString(); + } + + private static WorldGenFlatLayerInfo a(int i, String s, int j) { + String[] astring = i >= 3 ? s.split("\\*", 2) : s.split("x", 2); + int k = 1; + int l = 0; + + if (astring.length == 2) { + try { + k = Integer.parseInt(astring[0]); + if (j + k >= 256) { + k = 256 - j; + } + + if (k < 0) { + k = 0; + } + } catch (Throwable throwable) { + return null; + } + } + + Block block = null; + + try { + String s1 = astring[astring.length - 1]; + + if (i < 3) { + astring = s1.split(":", 2); + if (astring.length > 1) { + l = Integer.parseInt(astring[1]); + } + + block = Block.getById(Integer.parseInt(astring[0])); + } else { + astring = s1.split(":", 3); + block = astring.length > 1 ? Block.getByName(astring[0] + ":" + astring[1]) : null; + if (block != null) { + l = astring.length > 2 ? Integer.parseInt(astring[2]) : 0; + } else { + block = Block.getByName(astring[0]); + if (block != null) { + l = astring.length > 1 ? Integer.parseInt(astring[1]) : 0; + } + } + + if (block == null) { + return null; + } + } + + if (block == Blocks.AIR) { + l = 0; + } + + if (l < 0 || l > 15) { + l = 0; + } + } catch (Throwable throwable1) { + return null; + } + + WorldGenFlatLayerInfo worldgenflatlayerinfo = new WorldGenFlatLayerInfo(i, k, block, l); + + worldgenflatlayerinfo.b(j); + return worldgenflatlayerinfo; + } + + private static List a(int i, String s) { + if (s != null && s.length() >= 1) { + ArrayList arraylist = Lists.newArrayList(); + String[] astring = s.split(","); + int j = 0; + String[] astring1 = astring; + int k = astring.length; + + for (int l = 0; l < k; ++l) { + String s1 = astring1[l]; + WorldGenFlatLayerInfo worldgenflatlayerinfo = a(i, s1, j); + + if (worldgenflatlayerinfo == null) { + return null; + } + + arraylist.add(worldgenflatlayerinfo); + j += worldgenflatlayerinfo.b(); + } + + return arraylist; + } else { + return null; + } + } + + public static WorldGenFlatInfo a(String s) { + if (s == null) { + return e(); + } else { + String[] astring = s.split(";", -1); + int i = astring.length == 1 ? 0 : MathHelper.a(astring[0], 0); + + if (i >= 0 && i <= 3) { + WorldGenFlatInfo worldgenflatinfo = new WorldGenFlatInfo(); + int j = astring.length == 1 ? 0 : 1; + List list = a(i, astring[j++]); + + if (list != null && !list.isEmpty()) { + worldgenflatinfo.c().addAll(list); + worldgenflatinfo.d(); + int k = BiomeBase.PLAINS.id; + + if (i > 0 && astring.length > j) { + k = MathHelper.a(astring[j++], k); + } + + worldgenflatinfo.a(k); + if (i > 0 && astring.length > j) { + String[] astring1 = astring[j++].toLowerCase().split(","); + String[] astring2 = astring1; + int l = astring1.length; + + for (int i1 = 0; i1 < l; ++i1) { + String s1 = astring2[i1]; + String[] astring3 = s1.split("\\(", 2); + HashMap hashmap = Maps.newHashMap(); + + if (astring3[0].length() > 0) { + worldgenflatinfo.b().put(astring3[0], hashmap); + if (astring3.length > 1 && astring3[1].endsWith(")") && astring3[1].length() > 1) { + String[] astring4 = astring3[1].substring(0, astring3[1].length() - 1).split(" "); + + for (int j1 = 0; j1 < astring4.length; ++j1) { + String[] astring5 = astring4[j1].split("=", 2); + + if (astring5.length == 2) { + hashmap.put(astring5[0], astring5[1]); + } + } + } + } + } + } else { + worldgenflatinfo.b().put("village", Maps.newHashMap()); + } + + return worldgenflatinfo; + } else { + return e(); + } + } else { + return e(); + } + } + } + + public static WorldGenFlatInfo e() { + WorldGenFlatInfo worldgenflatinfo = new WorldGenFlatInfo(); + + worldgenflatinfo.a(BiomeBase.PLAINS.id); + worldgenflatinfo.c().add(new WorldGenFlatLayerInfo(1, Blocks.BEDROCK)); + worldgenflatinfo.c().add(new WorldGenFlatLayerInfo(2, Blocks.DIRT)); + worldgenflatinfo.c().add(new WorldGenFlatLayerInfo(1, Blocks.GRASS)); + worldgenflatinfo.d(); + worldgenflatinfo.b().put("village", Maps.newHashMap()); + return worldgenflatinfo; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatLayerInfo.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatLayerInfo.java new file mode 100644 index 0000000..3474cfc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlatLayerInfo.java @@ -0,0 +1,75 @@ +package net.minecraft.server; + +public class WorldGenFlatLayerInfo { + + private final int a; + private IBlockData b; + private int c; + private int d; + + public WorldGenFlatLayerInfo(int i, Block block) { + this(3, i, block); + } + + public WorldGenFlatLayerInfo(int i, int j, Block block) { + this.c = 1; + this.a = i; + this.c = j; + this.b = block.getBlockData(); + } + + public WorldGenFlatLayerInfo(int i, int j, Block block, int k) { + this(i, j, block); + this.b = block.fromLegacyData(k); + } + + public int b() { + return this.c; + } + + public IBlockData c() { + return this.b; + } + + private Block e() { + return this.b.getBlock(); + } + + private int f() { + return this.b.getBlock().toLegacyData(this.b); + } + + public int d() { + return this.d; + } + + public void b(int i) { + this.d = i; + } + + public String toString() { + String s; + + if (this.a >= 3) { + MinecraftKey minecraftkey = (MinecraftKey) Block.REGISTRY.c(this.e()); + + s = minecraftkey == null ? "null" : minecraftkey.toString(); + if (this.c > 1) { + s = this.c + "*" + s; + } + } else { + s = Integer.toString(Block.getId(this.e())); + if (this.c > 1) { + s = this.c + "x" + s; + } + } + + int i = this.f(); + + if (i > 0) { + s = s + ":" + i; + } + + return s; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlowers.java new file mode 100644 index 0000000..e9de8cc --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenFlowers.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenFlowers extends WorldGenerator { + + private BlockFlowers a; + private IBlockData b; + + public WorldGenFlowers(BlockFlowers blockflowers, BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) { + this.a(blockflowers, blockflowers_enumflowervarient); + } + + public void a(BlockFlowers blockflowers, BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) { + this.a = blockflowers; + this.b = blockflowers.getBlockData().set(blockflowers.n(), blockflowers_enumflowervarient); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && (!world.worldProvider.o() || blockposition1.getY() < 255) && this.a.f(world, blockposition1, this.b)) { + world.setTypeAndData(blockposition1, this.b, 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenForest.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenForest.java new file mode 100644 index 0000000..9bc99d3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenForest.java @@ -0,0 +1,105 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenForest extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.BIRCH); + private static final IBlockData b = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.BIRCH).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf(false)); + private boolean c; + + public WorldGenForest(boolean flag, boolean flag1) { + super(flag); + this.c = flag1; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = random.nextInt(3) + 5; + + if (this.c) { + i += random.nextInt(7); + } + + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + int j; + int k; + + for (int l = blockposition.getY(); l <= blockposition.getY() + 1 + i; ++l) { + byte b0 = 1; + + if (l == blockposition.getY()) { + b0 = 0; + } + + if (l >= blockposition.getY() + 1 + i - 2) { + b0 = 2; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j = blockposition.getX() - b0; j <= blockposition.getX() + b0 && flag; ++j) { + for (k = blockposition.getZ() - b0; k <= blockposition.getZ() + b0 && flag; ++k) { + if (l >= 0 && l < 256) { + if (!this.a(world.getType(blockposition_mutableblockposition.c(j, l, k)).getBlock())) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block = world.getType(blockposition.down()).getBlock(); + + if ((block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.FARMLAND) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + + int i1; + + for (i1 = blockposition.getY() - 3 + i; i1 <= blockposition.getY() + i; ++i1) { + int j1 = i1 - (blockposition.getY() + i); + + j = 1 - j1 / 2; + + for (k = blockposition.getX() - j; k <= blockposition.getX() + j; ++k) { + int k1 = k - blockposition.getX(); + + for (int l1 = blockposition.getZ() - j; l1 <= blockposition.getZ() + j; ++l1) { + int i2 = l1 - blockposition.getZ(); + + if (Math.abs(k1) != j || Math.abs(i2) != j || random.nextInt(2) != 0 && j1 != 0) { + BlockPosition blockposition1 = new BlockPosition(k, i1, l1); + Block block1 = world.getType(blockposition1).getBlock(); + + if (block1.getMaterial() == Material.AIR || block1.getMaterial() == Material.LEAVES) { + this.a(world, blockposition1, WorldGenForest.b); + } + } + } + } + } + + for (i1 = 0; i1 < i; ++i1) { + Block block2 = world.getType(blockposition.up(i1)).getBlock(); + + if (block2.getMaterial() == Material.AIR || block2.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.up(i1), WorldGenForest.a); + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenForestTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenForestTree.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenForestTree.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenForestTree.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenGrass.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenGrass.java new file mode 100644 index 0000000..2c84c05 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenGrass.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenGrass extends WorldGenerator { + + private final IBlockData a; + + public WorldGenGrass(BlockLongGrass.EnumTallGrassType blocklonggrass_enumtallgrasstype) { + this.a = Blocks.TALLGRASS.getBlockData().set(BlockLongGrass.TYPE, blocklonggrass_enumtallgrasstype); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + Block block; + + while (((block = world.getType(blockposition).getBlock()).getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) && blockposition.getY() > 0) { + blockposition = blockposition.down(); + } + + for (int i = 0; i < 128; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && Blocks.TALLGRASS.f(world, blockposition1, this.a)) { + world.setTypeAndData(blockposition1, this.a, 2); + } + } + + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenGroundBush.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenGroundBush.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenGroundBush.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenGroundBush.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHellLava.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHellLava.java new file mode 100644 index 0000000..94e61a2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHellLava.java @@ -0,0 +1,73 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenHellLava extends WorldGenerator { + + private final Block a; + private final boolean b; + + public WorldGenHellLava(Block block, boolean flag) { + this.a = block; + this.b = flag; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (world.getType(blockposition.up()).getBlock() != Blocks.NETHERRACK) { + return false; + } else if (world.getType(blockposition).getBlock().getMaterial() != Material.AIR && world.getType(blockposition).getBlock() != Blocks.NETHERRACK) { + return false; + } else { + int i = 0; + + if (world.getType(blockposition.west()).getBlock() == Blocks.NETHERRACK) { + ++i; + } + + if (world.getType(blockposition.east()).getBlock() == Blocks.NETHERRACK) { + ++i; + } + + if (world.getType(blockposition.north()).getBlock() == Blocks.NETHERRACK) { + ++i; + } + + if (world.getType(blockposition.south()).getBlock() == Blocks.NETHERRACK) { + ++i; + } + + if (world.getType(blockposition.down()).getBlock() == Blocks.NETHERRACK) { + ++i; + } + + int j = 0; + + if (world.isEmpty(blockposition.west())) { + ++j; + } + + if (world.isEmpty(blockposition.east())) { + ++j; + } + + if (world.isEmpty(blockposition.north())) { + ++j; + } + + if (world.isEmpty(blockposition.south())) { + ++j; + } + + if (world.isEmpty(blockposition.down())) { + ++j; + } + + if (!this.b && i == 4 && j == 1 || i == 5) { + world.setTypeAndData(blockposition, this.a.getBlockData(), 2); + world.a(this.a, blockposition, random); + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHugeMushroom.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHugeMushroom.java new file mode 100644 index 0000000..34d9a95 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenHugeMushroom.java @@ -0,0 +1,171 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenHugeMushroom extends WorldGenerator { + + private Block a; + + public WorldGenHugeMushroom(Block block) { + super(true); + this.a = block; + } + + public WorldGenHugeMushroom() { + super(false); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (this.a == null) { + this.a = random.nextBoolean() ? Blocks.BROWN_MUSHROOM_BLOCK : Blocks.RED_MUSHROOM_BLOCK; + } + + int i = random.nextInt(3) + 4; + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 < 256) { + int j; + int k; + + for (int l = blockposition.getY(); l <= blockposition.getY() + 1 + i; ++l) { + byte b0 = 3; + + if (l <= blockposition.getY() + 3) { + b0 = 0; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j = blockposition.getX() - b0; j <= blockposition.getX() + b0 && flag; ++j) { + for (k = blockposition.getZ() - b0; k <= blockposition.getZ() + b0 && flag; ++k) { + if (l >= 0 && l < 256) { + Block block = world.getType(blockposition_mutableblockposition.c(j, l, k)).getBlock(); + + if (block.getMaterial() != Material.AIR && block.getMaterial() != Material.LEAVES) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block1 = world.getType(blockposition.down()).getBlock(); + + if (block1 != Blocks.DIRT && block1 != Blocks.GRASS && block1 != Blocks.MYCELIUM) { + return false; + } else { + int i1 = blockposition.getY() + i; + + if (this.a == Blocks.RED_MUSHROOM_BLOCK) { + i1 = blockposition.getY() + i - 3; + } + + int j1; + + for (j1 = i1; j1 <= blockposition.getY() + i; ++j1) { + j = 1; + if (j1 < blockposition.getY() + i) { + ++j; + } + + if (this.a == Blocks.BROWN_MUSHROOM_BLOCK) { + j = 3; + } + + k = blockposition.getX() - j; + int k1 = blockposition.getX() + j; + int l1 = blockposition.getZ() - j; + int i2 = blockposition.getZ() + j; + + for (int j2 = k; j2 <= k1; ++j2) { + for (int k2 = l1; k2 <= i2; ++k2) { + int l2 = 5; + + if (j2 == k) { + --l2; + } else if (j2 == k1) { + ++l2; + } + + if (k2 == l1) { + l2 -= 3; + } else if (k2 == i2) { + l2 += 3; + } + + BlockHugeMushroom.EnumHugeMushroomVariant blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.a(l2); + + if (this.a == Blocks.BROWN_MUSHROOM_BLOCK || j1 < blockposition.getY() + i) { + if ((j2 == k || j2 == k1) && (k2 == l1 || k2 == i2)) { + continue; + } + + if (j2 == blockposition.getX() - (j - 1) && k2 == l1) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.NORTH_WEST; + } + + if (j2 == k && k2 == blockposition.getZ() - (j - 1)) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.NORTH_WEST; + } + + if (j2 == blockposition.getX() + (j - 1) && k2 == l1) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.NORTH_EAST; + } + + if (j2 == k1 && k2 == blockposition.getZ() - (j - 1)) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.NORTH_EAST; + } + + if (j2 == blockposition.getX() - (j - 1) && k2 == i2) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.SOUTH_WEST; + } + + if (j2 == k && k2 == blockposition.getZ() + (j - 1)) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.SOUTH_WEST; + } + + if (j2 == blockposition.getX() + (j - 1) && k2 == i2) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.SOUTH_EAST; + } + + if (j2 == k1 && k2 == blockposition.getZ() + (j - 1)) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.SOUTH_EAST; + } + } + + if (blockhugemushroom_enumhugemushroomvariant == BlockHugeMushroom.EnumHugeMushroomVariant.CENTER && j1 < blockposition.getY() + i) { + blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.ALL_INSIDE; + } + + if (blockposition.getY() >= blockposition.getY() + i - 1 || blockhugemushroom_enumhugemushroomvariant != BlockHugeMushroom.EnumHugeMushroomVariant.ALL_INSIDE) { + BlockPosition blockposition1 = new BlockPosition(j2, j1, k2); + + if (!world.getType(blockposition1).getBlock().o()) { + this.a(world, blockposition1, this.a.getBlockData().set(BlockHugeMushroom.VARIANT, blockhugemushroom_enumhugemushroomvariant)); + } + } + } + } + } + + for (j1 = 0; j1 < i; ++j1) { + Block block2 = world.getType(blockposition.up(j1)).getBlock(); + + if (!block2.o()) { + this.a(world, blockposition.up(j1), this.a.getBlockData().set(BlockHugeMushroom.VARIANT, BlockHugeMushroom.EnumHugeMushroomVariant.STEM)); + } + } + + return true; + } + } + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenJungleTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenJungleTree.java new file mode 100644 index 0000000..8262400 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenJungleTree.java @@ -0,0 +1,105 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenJungleTree extends WorldGenMegaTreeAbstract { + + public WorldGenJungleTree(boolean flag, int i, int j, IBlockData iblockdata, IBlockData iblockdata1) { + super(flag, i, j, iblockdata, iblockdata1); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = this.a(random); + + if (!this.a(world, random, blockposition, i)) { + return false; + } else { + this.c(world, blockposition.up(i), 2); + + for (int j = blockposition.getY() + i - 2 - random.nextInt(4); j > blockposition.getY() + i / 2; j -= 2 + random.nextInt(4)) { + float f = random.nextFloat() * 3.1415927F * 2.0F; + int k = blockposition.getX() + (int) (0.5F + MathHelper.cos(f) * 4.0F); + int l = blockposition.getZ() + (int) (0.5F + MathHelper.sin(f) * 4.0F); + + int i1; + + for (i1 = 0; i1 < 5; ++i1) { + k = blockposition.getX() + (int) (1.5F + MathHelper.cos(f) * (float) i1); + l = blockposition.getZ() + (int) (1.5F + MathHelper.sin(f) * (float) i1); + this.a(world, new BlockPosition(k, j - 3 + i1 / 2, l), this.b); + } + + i1 = 1 + random.nextInt(2); + int j1 = j; + + for (int k1 = j - i1; k1 <= j1; ++k1) { + int l1 = k1 - j1; + + this.b(world, new BlockPosition(k, k1, l), 1 - l1); + } + } + + for (int i2 = 0; i2 < i; ++i2) { + BlockPosition blockposition1 = blockposition.up(i2); + + if (this.a(world.getType(blockposition1).getBlock())) { + this.a(world, blockposition1, this.b); + if (i2 > 0) { + this.a(world, random, blockposition1.west(), BlockVine.EAST); + this.a(world, random, blockposition1.north(), BlockVine.SOUTH); + } + } + + if (i2 < i - 1) { + BlockPosition blockposition2 = blockposition1.east(); + + if (this.a(world.getType(blockposition2).getBlock())) { + this.a(world, blockposition2, this.b); + if (i2 > 0) { + this.a(world, random, blockposition2.east(), BlockVine.WEST); + this.a(world, random, blockposition2.north(), BlockVine.SOUTH); + } + } + + BlockPosition blockposition3 = blockposition1.south().east(); + + if (this.a(world.getType(blockposition3).getBlock())) { + this.a(world, blockposition3, this.b); + if (i2 > 0) { + this.a(world, random, blockposition3.east(), BlockVine.WEST); + this.a(world, random, blockposition3.south(), BlockVine.NORTH); + } + } + + BlockPosition blockposition4 = blockposition1.south(); + + if (this.a(world.getType(blockposition4).getBlock())) { + this.a(world, blockposition4, this.b); + if (i2 > 0) { + this.a(world, random, blockposition4.west(), BlockVine.EAST); + this.a(world, random, blockposition4.south(), BlockVine.NORTH); + } + } + } + } + + return true; + } + } + + private void a(World world, Random random, BlockPosition blockposition, BlockStateBoolean blockstateboolean) { + if (random.nextInt(3) > 0 && world.isEmpty(blockposition)) { + this.a(world, blockposition, Blocks.VINE.getBlockData().set(blockstateboolean, Boolean.valueOf(true))); + } + + } + + private void c(World world, BlockPosition blockposition, int i) { + byte b0 = 2; + + for (int j = -b0; j <= 0; ++j) { + this.a(world, blockposition.up(j), i + 1 - j); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLakes.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLakes.java new file mode 100644 index 0000000..ecd439a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLakes.java @@ -0,0 +1,132 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenLakes extends WorldGenerator { + + private Block a; + + public WorldGenLakes(Block block) { + this.a = block; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (blockposition = blockposition.a(-8, 0, -8); blockposition.getY() > 5 && world.isEmpty(blockposition); blockposition = blockposition.down()) { + ; + } + + if (blockposition.getY() <= 4) { + return false; + } else { + blockposition = blockposition.down(4); + boolean[] aboolean = new boolean[2048]; + int i = random.nextInt(4) + 4; + + int j; + + for (j = 0; j < i; ++j) { + double d0 = random.nextDouble() * 6.0D + 3.0D; + double d1 = random.nextDouble() * 4.0D + 2.0D; + double d2 = random.nextDouble() * 6.0D + 3.0D; + double d3 = random.nextDouble() * (16.0D - d0 - 2.0D) + 1.0D + d0 / 2.0D; + double d4 = random.nextDouble() * (8.0D - d1 - 4.0D) + 2.0D + d1 / 2.0D; + double d5 = random.nextDouble() * (16.0D - d2 - 2.0D) + 1.0D + d2 / 2.0D; + + for (int k = 1; k < 15; ++k) { + for (int l = 1; l < 15; ++l) { + for (int i1 = 1; i1 < 7; ++i1) { + double d6 = ((double) k - d3) / (d0 / 2.0D); + double d7 = ((double) i1 - d4) / (d1 / 2.0D); + double d8 = ((double) l - d5) / (d2 / 2.0D); + double d9 = d6 * d6 + d7 * d7 + d8 * d8; + + if (d9 < 1.0D) { + aboolean[(k * 16 + l) * 8 + i1] = true; + } + } + } + } + } + + int j1; + int k1; + boolean flag; + + for (j = 0; j < 16; ++j) { + for (k1 = 0; k1 < 16; ++k1) { + for (j1 = 0; j1 < 8; ++j1) { + flag = !aboolean[(j * 16 + k1) * 8 + j1] && (j < 15 && aboolean[((j + 1) * 16 + k1) * 8 + j1] || j > 0 && aboolean[((j - 1) * 16 + k1) * 8 + j1] || k1 < 15 && aboolean[(j * 16 + k1 + 1) * 8 + j1] || k1 > 0 && aboolean[(j * 16 + (k1 - 1)) * 8 + j1] || j1 < 7 && aboolean[(j * 16 + k1) * 8 + j1 + 1] || j1 > 0 && aboolean[(j * 16 + k1) * 8 + (j1 - 1)]); + if (flag) { + Material material = world.getType(blockposition.a(j, j1, k1)).getBlock().getMaterial(); + + if (j1 >= 4 && material.isLiquid()) { + return false; + } + + if (j1 < 4 && !material.isBuildable() && world.getType(blockposition.a(j, j1, k1)).getBlock() != this.a) { + return false; + } + } + } + } + } + + for (j = 0; j < 16; ++j) { + for (k1 = 0; k1 < 16; ++k1) { + for (j1 = 0; j1 < 8; ++j1) { + if (aboolean[(j * 16 + k1) * 8 + j1]) { + world.setTypeAndData(blockposition.a(j, j1, k1), j1 >= 4 ? Blocks.AIR.getBlockData() : this.a.getBlockData(), 2); + } + } + } + } + + for (j = 0; j < 16; ++j) { + for (k1 = 0; k1 < 16; ++k1) { + for (j1 = 4; j1 < 8; ++j1) { + if (aboolean[(j * 16 + k1) * 8 + j1]) { + BlockPosition blockposition1 = blockposition.a(j, j1 - 1, k1); + + if (world.getType(blockposition1).getBlock() == Blocks.DIRT && world.b(EnumSkyBlock.SKY, blockposition.a(j, j1, k1)) > 0) { + BiomeBase biomebase = world.getBiome(blockposition1); + + if (biomebase.ak.getBlock() == Blocks.MYCELIUM) { + world.setTypeAndData(blockposition1, Blocks.MYCELIUM.getBlockData(), 2); + } else { + world.setTypeAndData(blockposition1, Blocks.GRASS.getBlockData(), 2); + } + } + } + } + } + } + + if (this.a.getMaterial() == Material.LAVA) { + for (j = 0; j < 16; ++j) { + for (k1 = 0; k1 < 16; ++k1) { + for (j1 = 0; j1 < 8; ++j1) { + flag = !aboolean[(j * 16 + k1) * 8 + j1] && (j < 15 && aboolean[((j + 1) * 16 + k1) * 8 + j1] || j > 0 && aboolean[((j - 1) * 16 + k1) * 8 + j1] || k1 < 15 && aboolean[(j * 16 + k1 + 1) * 8 + j1] || k1 > 0 && aboolean[(j * 16 + (k1 - 1)) * 8 + j1] || j1 < 7 && aboolean[(j * 16 + k1) * 8 + j1 + 1] || j1 > 0 && aboolean[(j * 16 + k1) * 8 + (j1 - 1)]); + if (flag && (j1 < 4 || random.nextInt(2) != 0) && world.getType(blockposition.a(j, j1, k1)).getBlock().getMaterial().isBuildable()) { + world.setTypeAndData(blockposition.a(j, j1, k1), Blocks.STONE.getBlockData(), 2); + } + } + } + } + } + + if (this.a.getMaterial() == Material.WATER) { + for (j = 0; j < 16; ++j) { + for (k1 = 0; k1 < 16; ++k1) { + byte b0 = 4; + + if (world.v(blockposition.a(j, b0, k1))) { + world.setTypeAndData(blockposition.a(j, b0, k1), Blocks.ICE.getBlockData(), 2); + } + } + } + } + + return true; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenLargeFeature.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLargeFeature.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenLargeFeature.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLargeFeature.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone1.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone1.java new file mode 100644 index 0000000..d783f49 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone1.java @@ -0,0 +1,46 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenLightStone1 extends WorldGenerator { + + public WorldGenLightStone1() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (!world.isEmpty(blockposition)) { + return false; + } else if (world.getType(blockposition.up()).getBlock() != Blocks.NETHERRACK) { + return false; + } else { + world.setTypeAndData(blockposition, Blocks.GLOWSTONE.getBlockData(), 2); + + for (int i = 0; i < 1500; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), -random.nextInt(12), random.nextInt(8) - random.nextInt(8)); + + if (world.getType(blockposition1).getBlock().getMaterial() == Material.AIR) { + int j = 0; + EnumDirection[] aenumdirection = EnumDirection.values(); + int k = aenumdirection.length; + + for (int l = 0; l < k; ++l) { + EnumDirection enumdirection = aenumdirection[l]; + + if (world.getType(blockposition1.shift(enumdirection)).getBlock() == Blocks.GLOWSTONE) { + ++j; + } + + if (j > 1) { + break; + } + } + + if (j == 1) { + world.setTypeAndData(blockposition1, Blocks.GLOWSTONE.getBlockData(), 2); + } + } + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone2.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone2.java new file mode 100644 index 0000000..ebd3c9c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLightStone2.java @@ -0,0 +1,46 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenLightStone2 extends WorldGenerator { + + public WorldGenLightStone2() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (!world.isEmpty(blockposition)) { + return false; + } else if (world.getType(blockposition.up()).getBlock() != Blocks.NETHERRACK) { + return false; + } else { + world.setTypeAndData(blockposition, Blocks.GLOWSTONE.getBlockData(), 2); + + for (int i = 0; i < 1500; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), -random.nextInt(12), random.nextInt(8) - random.nextInt(8)); + + if (world.getType(blockposition1).getBlock().getMaterial() == Material.AIR) { + int j = 0; + EnumDirection[] aenumdirection = EnumDirection.values(); + int k = aenumdirection.length; + + for (int l = 0; l < k; ++l) { + EnumDirection enumdirection = aenumdirection[l]; + + if (world.getType(blockposition1.shift(enumdirection)).getBlock() == Blocks.GLOWSTONE) { + ++j; + } + + if (j > 1) { + break; + } + } + + if (j == 1) { + world.setTypeAndData(blockposition1, Blocks.GLOWSTONE.getBlockData(), 2); + } + } + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLiquids.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLiquids.java new file mode 100644 index 0000000..044abd0 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenLiquids.java @@ -0,0 +1,65 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenLiquids extends WorldGenerator { + + private Block a; + + public WorldGenLiquids(Block block) { + this.a = block; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (world.getType(blockposition.up()).getBlock() != Blocks.STONE) { + return false; + } else if (world.getType(blockposition.down()).getBlock() != Blocks.STONE) { + return false; + } else if (world.getType(blockposition).getBlock().getMaterial() != Material.AIR && world.getType(blockposition).getBlock() != Blocks.STONE) { + return false; + } else { + int i = 0; + + if (world.getType(blockposition.west()).getBlock() == Blocks.STONE) { + ++i; + } + + if (world.getType(blockposition.east()).getBlock() == Blocks.STONE) { + ++i; + } + + if (world.getType(blockposition.north()).getBlock() == Blocks.STONE) { + ++i; + } + + if (world.getType(blockposition.south()).getBlock() == Blocks.STONE) { + ++i; + } + + int j = 0; + + if (world.isEmpty(blockposition.west())) { + ++j; + } + + if (world.isEmpty(blockposition.east())) { + ++j; + } + + if (world.isEmpty(blockposition.north())) { + ++j; + } + + if (world.isEmpty(blockposition.south())) { + ++j; + } + + if (i == 3 && j == 1) { + world.setTypeAndData(blockposition, this.a.getBlockData(), 2); + world.a(this.a, blockposition, random); + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTree.java new file mode 100644 index 0000000..257da5e --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTree.java @@ -0,0 +1,113 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenMegaTree extends WorldGenMegaTreeAbstract { + + private static final IBlockData e = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.SPRUCE); + private static final IBlockData f = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.SPRUCE).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + private static final IBlockData g = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.PODZOL); + private boolean h; + + public WorldGenMegaTree(boolean flag, boolean flag1) { + super(flag, 13, 15, WorldGenMegaTree.e, WorldGenMegaTree.f); + this.h = flag1; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = this.a(random); + + if (!this.a(world, random, blockposition, i)) { + return false; + } else { + this.a(world, blockposition.getX(), blockposition.getZ(), blockposition.getY() + i, 0, random); + + for (int j = 0; j < i; ++j) { + Block block = world.getType(blockposition.up(j)).getBlock(); + + if (block.getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.up(j), this.b); + } + + if (j < i - 1) { + block = world.getType(blockposition.a(1, j, 0)).getBlock(); + if (block.getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.a(1, j, 0), this.b); + } + + block = world.getType(blockposition.a(1, j, 1)).getBlock(); + if (block.getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.a(1, j, 1), this.b); + } + + block = world.getType(blockposition.a(0, j, 1)).getBlock(); + if (block.getMaterial() == Material.AIR || block.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.a(0, j, 1), this.b); + } + } + } + + return true; + } + } + + private void a(World world, int i, int j, int k, int l, Random random) { + int i1 = random.nextInt(5) + (this.h ? this.a : 3); + int j1 = 0; + + for (int k1 = k - i1; k1 <= k; ++k1) { + int l1 = k - k1; + int i2 = l + MathHelper.d((float) l1 / (float) i1 * 3.5F); + + this.a(world, new BlockPosition(i, k1, j), i2 + (l1 > 0 && i2 == j1 && (k1 & 1) == 0 ? 1 : 0)); + j1 = i2; + } + + } + + public void a(World world, Random random, BlockPosition blockposition) { + this.b(world, blockposition.west().north()); + this.b(world, blockposition.east(2).north()); + this.b(world, blockposition.west().south(2)); + this.b(world, blockposition.east(2).south(2)); + + for (int i = 0; i < 5; ++i) { + int j = random.nextInt(64); + int k = j % 8; + int l = j / 8; + + if (k == 0 || k == 7 || l == 0 || l == 7) { + this.b(world, blockposition.a(-3 + k, 0, -3 + l)); + } + } + + } + + private void b(World world, BlockPosition blockposition) { + for (int i = -2; i <= 2; ++i) { + for (int j = -2; j <= 2; ++j) { + if (Math.abs(i) != 2 || Math.abs(j) != 2) { + this.c(world, blockposition.a(i, 0, j)); + } + } + } + + } + + private void c(World world, BlockPosition blockposition) { + for (int i = 2; i >= -3; --i) { + BlockPosition blockposition1 = blockposition.up(i); + Block block = world.getType(blockposition1).getBlock(); + + if (block == Blocks.GRASS || block == Blocks.DIRT) { + this.a(world, blockposition1, WorldGenMegaTree.g); + break; + } + + if (block.getMaterial() != Material.AIR && i < 0) { + break; + } + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTreeAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTreeAbstract.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTreeAbstract.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMegaTreeAbstract.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMelon.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMelon.java new file mode 100644 index 0000000..69c1920 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMelon.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenMelon extends WorldGenerator { + + public WorldGenMelon() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (Blocks.MELON_BLOCK.canPlace(world, blockposition1) && world.getType(blockposition1.down()).getBlock() == Blocks.GRASS) { + world.setTypeAndData(blockposition1, Blocks.MELON_BLOCK.getBlockData(), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMinable.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMinable.java new file mode 100644 index 0000000..2307c87 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMinable.java @@ -0,0 +1,73 @@ +package net.minecraft.server; + +import com.google.common.base.Predicate; +import java.util.Random; + +public class WorldGenMinable extends WorldGenerator { + + private final IBlockData a; + private final int b; + private final Predicate c; + + public WorldGenMinable(IBlockData iblockdata, int i) { + this(iblockdata, i, BlockPredicate.a(Blocks.STONE)); + } + + public WorldGenMinable(IBlockData iblockdata, int i, Predicate predicate) { + this.a = iblockdata; + this.b = i; + this.c = predicate; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + float f = random.nextFloat() * 3.1415927F; + double d0 = (double) ((float) (blockposition.getX() + 8) + MathHelper.sin(f) * (float) this.b / 8.0F); + double d1 = (double) ((float) (blockposition.getX() + 8) - MathHelper.sin(f) * (float) this.b / 8.0F); + double d2 = (double) ((float) (blockposition.getZ() + 8) + MathHelper.cos(f) * (float) this.b / 8.0F); + double d3 = (double) ((float) (blockposition.getZ() + 8) - MathHelper.cos(f) * (float) this.b / 8.0F); + double d4 = (double) (blockposition.getY() + random.nextInt(3) - 2); + double d5 = (double) (blockposition.getY() + random.nextInt(3) - 2); + + for (int i = 0; i < this.b; ++i) { + float f1 = (float) i / (float) this.b; + double d6 = d0 + (d1 - d0) * (double) f1; + double d7 = d4 + (d5 - d4) * (double) f1; + double d8 = d2 + (d3 - d2) * (double) f1; + double d9 = random.nextDouble() * (double) this.b / 16.0D; + double d10 = (double) (MathHelper.sin(3.1415927F * f1) + 1.0F) * d9 + 1.0D; + double d11 = (double) (MathHelper.sin(3.1415927F * f1) + 1.0F) * d9 + 1.0D; + int j = MathHelper.floor(d6 - d10 / 2.0D); + int k = MathHelper.floor(d7 - d11 / 2.0D); + int l = MathHelper.floor(d8 - d10 / 2.0D); + int i1 = MathHelper.floor(d6 + d10 / 2.0D); + int j1 = MathHelper.floor(d7 + d11 / 2.0D); + int k1 = MathHelper.floor(d8 + d10 / 2.0D); + + for (int l1 = j; l1 <= i1; ++l1) { + double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D); + + if (d12 * d12 < 1.0D) { + for (int i2 = k; i2 <= j1; ++i2) { + double d13 = ((double) i2 + 0.5D - d7) / (d11 / 2.0D); + + if (d12 * d12 + d13 * d13 < 1.0D) { + for (int j2 = l; j2 <= k1; ++j2) { + double d14 = ((double) j2 + 0.5D - d8) / (d10 / 2.0D); + + if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D) { + BlockPosition blockposition1 = new BlockPosition(l1, i2, j2); + + if (this.c.apply(world.getType(blockposition1))) { + world.setTypeAndData(blockposition1, this.a, 2); + } + } + } + } + } + } + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaft.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaft.java new file mode 100644 index 0000000..018e2e6 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaft.java @@ -0,0 +1,37 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +public class WorldGenMineshaft extends StructureGenerator { + + private double d = 0.004D; + + public WorldGenMineshaft() {} + + public String a() { + return "Mineshaft"; + } + + public WorldGenMineshaft(Map map) { + Iterator iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (((String) entry.getKey()).equals("chance")) { + this.d = MathHelper.a((String) entry.getValue(), this.d); + } + } + + } + + protected boolean a(int i, int j) { + return this.b.nextDouble() < this.d && this.b.nextInt(80) < Math.max(Math.abs(i), Math.abs(j)); + } + + protected StructureStart b(int i, int j) { + return new WorldGenMineshaftStart(this.c, this.b, i, j); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftPieces.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftPieces.java new file mode 100644 index 0000000..e66f43a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftPieces.java @@ -0,0 +1,704 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public class WorldGenMineshaftPieces { + + private static final List a = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.IRON_INGOT, 0, 1, 5, 10), new StructurePieceTreasure(Items.GOLD_INGOT, 0, 1, 3, 5), new StructurePieceTreasure(Items.REDSTONE, 0, 4, 9, 5), new StructurePieceTreasure(Items.DYE, EnumColor.BLUE.getInvColorIndex(), 4, 9, 5), new StructurePieceTreasure(Items.DIAMOND, 0, 1, 2, 3), new StructurePieceTreasure(Items.COAL, 0, 3, 8, 10), new StructurePieceTreasure(Items.BREAD, 0, 1, 3, 15), new StructurePieceTreasure(Items.IRON_PICKAXE, 0, 1, 1, 1), new StructurePieceTreasure(Item.getItemOf(Blocks.RAIL), 0, 4, 8, 1), new StructurePieceTreasure(Items.MELON_SEEDS, 0, 2, 4, 10), new StructurePieceTreasure(Items.PUMPKIN_SEEDS, 0, 2, 4, 10), new StructurePieceTreasure(Items.SADDLE, 0, 1, 1, 3), new StructurePieceTreasure(Items.IRON_HORSE_ARMOR, 0, 1, 1, 1)}); + + public static void a() { + WorldGenFactory.a(WorldGenMineshaftPieces.WorldGenMineshaftCorridor.class, "MSCorridor"); + WorldGenFactory.a(WorldGenMineshaftPieces.WorldGenMineshaftCross.class, "MSCrossing"); + WorldGenFactory.a(WorldGenMineshaftPieces.WorldGenMineshaftRoom.class, "MSRoom"); + WorldGenFactory.a(WorldGenMineshaftPieces.WorldGenMineshaftStairs.class, "MSStairs"); + } + + private static StructurePiece a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + int i1 = random.nextInt(100); + StructureBoundingBox structureboundingbox; + + if (i1 >= 80) { + structureboundingbox = WorldGenMineshaftPieces.WorldGenMineshaftCross.a(list, random, i, j, k, enumdirection); + if (structureboundingbox != null) { + return new WorldGenMineshaftPieces.WorldGenMineshaftCross(l, random, structureboundingbox, enumdirection); + } + } else if (i1 >= 70) { + structureboundingbox = WorldGenMineshaftPieces.WorldGenMineshaftStairs.a(list, random, i, j, k, enumdirection); + if (structureboundingbox != null) { + return new WorldGenMineshaftPieces.WorldGenMineshaftStairs(l, random, structureboundingbox, enumdirection); + } + } else { + structureboundingbox = WorldGenMineshaftPieces.WorldGenMineshaftCorridor.a(list, random, i, j, k, enumdirection); + if (structureboundingbox != null) { + return new WorldGenMineshaftPieces.WorldGenMineshaftCorridor(l, random, structureboundingbox, enumdirection); + } + } + + return null; + } + + private static StructurePiece b(StructurePiece structurepiece, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + if (l > 8) { + return null; + } else if (Math.abs(i - structurepiece.c().a) <= 80 && Math.abs(k - structurepiece.c().c) <= 80) { + StructurePiece structurepiece1 = a(list, random, i, j, k, enumdirection, l + 1); + + if (structurepiece1 != null) { + list.add(structurepiece1); + structurepiece1.a(structurepiece, list, random); + } + + return structurepiece1; + } else { + return null; + } + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + WorldGenMineshaftPieces.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + WorldGenMineshaftPieces.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + WorldGenMineshaftPieces.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + WorldGenMineshaftPieces.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } + + public static class WorldGenMineshaftStairs extends StructurePiece { + + public WorldGenMineshaftStairs() {} + + public WorldGenMineshaftStairs(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + protected void a(NBTTagCompound nbttagcompound) {} + + protected void b(NBTTagCompound nbttagcompound) {} + + public static StructureBoundingBox a(List list, Random random, int i, int j, int k, EnumDirection enumdirection) { + StructureBoundingBox structureboundingbox = new StructureBoundingBox(i, j - 5, k, i, j + 2, k); + + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + structureboundingbox.d = i + 2; + structureboundingbox.c = k - 8; + break; + + case 2: + structureboundingbox.d = i + 2; + structureboundingbox.f = k + 8; + break; + + case 3: + structureboundingbox.a = i - 8; + structureboundingbox.f = k + 2; + break; + + case 4: + structureboundingbox.d = i + 8; + structureboundingbox.f = k + 2; + } + + return StructurePiece.a(list, structureboundingbox) != null ? null : structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + int i = this.d(); + + if (this.m != null) { + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b, this.l.c - 1, EnumDirection.NORTH, i); + break; + + case 2: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b, this.l.f + 1, EnumDirection.SOUTH, i); + break; + + case 3: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b, this.l.c, EnumDirection.WEST, i); + break; + + case 4: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b, this.l.c, EnumDirection.EAST, i); + } + } + + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 5, 0, 2, 7, 1, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 7, 2, 2, 8, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + + for (int i = 0; i < 5; ++i) { + this.a(world, structureboundingbox, 0, 5 - i - (i < 4 ? 1 : 0), 2 + i, 2, 7 - i, 2 + i, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + return true; + } + } + } + + public static class WorldGenMineshaftCross extends StructurePiece { + + private EnumDirection a; + private boolean b; + + public WorldGenMineshaftCross() {} + + protected void a(NBTTagCompound nbttagcompound) { + nbttagcompound.setBoolean("tf", this.b); + nbttagcompound.setInt("D", this.a.b()); + } + + protected void b(NBTTagCompound nbttagcompound) { + this.b = nbttagcompound.getBoolean("tf"); + this.a = EnumDirection.fromType2(nbttagcompound.getInt("D")); + } + + public WorldGenMineshaftCross(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.a = enumdirection; + this.l = structureboundingbox; + this.b = structureboundingbox.d() > 3; + } + + public static StructureBoundingBox a(List list, Random random, int i, int j, int k, EnumDirection enumdirection) { + StructureBoundingBox structureboundingbox = new StructureBoundingBox(i, j, k, i, j + 2, k); + + if (random.nextInt(4) == 0) { + structureboundingbox.e += 4; + } + + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + structureboundingbox.a = i - 1; + structureboundingbox.d = i + 3; + structureboundingbox.c = k - 4; + break; + + case 2: + structureboundingbox.a = i - 1; + structureboundingbox.d = i + 3; + structureboundingbox.f = k + 4; + break; + + case 3: + structureboundingbox.a = i - 4; + structureboundingbox.c = k - 1; + structureboundingbox.f = k + 3; + break; + + case 4: + structureboundingbox.d = i + 4; + structureboundingbox.c = k - 1; + structureboundingbox.f = k + 3; + } + + return StructurePiece.a(list, structureboundingbox) != null ? null : structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + int i = this.d(); + + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[this.a.ordinal()]) { + case 1: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.c - 1, EnumDirection.NORTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b, this.l.c + 1, EnumDirection.WEST, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b, this.l.c + 1, EnumDirection.EAST, i); + break; + + case 2: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.f + 1, EnumDirection.SOUTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b, this.l.c + 1, EnumDirection.WEST, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b, this.l.c + 1, EnumDirection.EAST, i); + break; + + case 3: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.c - 1, EnumDirection.NORTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.f + 1, EnumDirection.SOUTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b, this.l.c + 1, EnumDirection.WEST, i); + break; + + case 4: + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.c - 1, EnumDirection.NORTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b, this.l.f + 1, EnumDirection.SOUTH, i); + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b, this.l.c + 1, EnumDirection.EAST, i); + } + + if (this.b) { + if (random.nextBoolean()) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b + 3 + 1, this.l.c - 1, EnumDirection.NORTH, i); + } + + if (random.nextBoolean()) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b + 3 + 1, this.l.c + 1, EnumDirection.WEST, i); + } + + if (random.nextBoolean()) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b + 3 + 1, this.l.c + 1, EnumDirection.EAST, i); + } + + if (random.nextBoolean()) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + 1, this.l.b + 3 + 1, this.l.f + 1, EnumDirection.SOUTH, i); + } + } + + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + if (this.b) { + this.a(world, structureboundingbox, this.l.a + 1, this.l.b, this.l.c, this.l.d - 1, this.l.b + 3 - 1, this.l.f, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a, this.l.b, this.l.c + 1, this.l.d, this.l.b + 3 - 1, this.l.f - 1, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a + 1, this.l.e - 2, this.l.c, this.l.d - 1, this.l.e, this.l.f, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a, this.l.e - 2, this.l.c + 1, this.l.d, this.l.e, this.l.f - 1, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a + 1, this.l.b + 3, this.l.c + 1, this.l.d - 1, this.l.b + 3, this.l.f - 1, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } else { + this.a(world, structureboundingbox, this.l.a + 1, this.l.b, this.l.c, this.l.d - 1, this.l.e, this.l.f, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a, this.l.b, this.l.c + 1, this.l.d, this.l.e, this.l.f - 1, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + this.a(world, structureboundingbox, this.l.a + 1, this.l.b, this.l.c + 1, this.l.a + 1, this.l.e, this.l.c + 1, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.a + 1, this.l.b, this.l.f - 1, this.l.a + 1, this.l.e, this.l.f - 1, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.d - 1, this.l.b, this.l.c + 1, this.l.d - 1, this.l.e, this.l.c + 1, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, this.l.d - 1, this.l.b, this.l.f - 1, this.l.d - 1, this.l.e, this.l.f - 1, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + + for (int i = this.l.a; i <= this.l.d; ++i) { + for (int j = this.l.c; j <= this.l.f; ++j) { + if (this.a(world, i, this.l.b - 1, j, structureboundingbox).getBlock().getMaterial() == Material.AIR) { + this.a(world, Blocks.PLANKS.getBlockData(), i, this.l.b - 1, j, structureboundingbox); + } + } + } + + return true; + } + } + } + + public static class WorldGenMineshaftCorridor extends StructurePiece { + + private boolean a; + private boolean b; + private boolean c; + private int d; + + public WorldGenMineshaftCorridor() {} + + protected void a(NBTTagCompound nbttagcompound) { + nbttagcompound.setBoolean("hr", this.a); + nbttagcompound.setBoolean("sc", this.b); + nbttagcompound.setBoolean("hps", this.c); + nbttagcompound.setInt("Num", this.d); + } + + protected void b(NBTTagCompound nbttagcompound) { + this.a = nbttagcompound.getBoolean("hr"); + this.b = nbttagcompound.getBoolean("sc"); + this.c = nbttagcompound.getBoolean("hps"); + this.d = nbttagcompound.getInt("Num"); + } + + public WorldGenMineshaftCorridor(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + this.a = random.nextInt(3) == 0; + this.b = !this.a && random.nextInt(23) == 0; + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.SOUTH) { + this.d = structureboundingbox.c() / 5; + } else { + this.d = structureboundingbox.e() / 5; + } + + } + + public static StructureBoundingBox a(List list, Random random, int i, int j, int k, EnumDirection enumdirection) { + StructureBoundingBox structureboundingbox = new StructureBoundingBox(i, j, k, i, j + 2, k); + + int l; + + for (l = random.nextInt(3) + 2; l > 0; --l) { + int i1 = l * 5; + + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + structureboundingbox.d = i + 2; + structureboundingbox.c = k - (i1 - 1); + break; + + case 2: + structureboundingbox.d = i + 2; + structureboundingbox.f = k + (i1 - 1); + break; + + case 3: + structureboundingbox.a = i - (i1 - 1); + structureboundingbox.f = k + 2; + break; + + case 4: + structureboundingbox.d = i + (i1 - 1); + structureboundingbox.f = k + 2; + } + + if (StructurePiece.a(list, structureboundingbox) == null) { + break; + } + } + + return l > 0 ? structureboundingbox : null; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + int i = this.d(); + int j = random.nextInt(4); + + if (this.m != null) { + switch (WorldGenMineshaftPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + if (j <= 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b - 1 + random.nextInt(3), this.l.c - 1, this.m, i); + } else if (j == 2) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b - 1 + random.nextInt(3), this.l.c, EnumDirection.WEST, i); + } else { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b - 1 + random.nextInt(3), this.l.c, EnumDirection.EAST, i); + } + break; + + case 2: + if (j <= 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b - 1 + random.nextInt(3), this.l.f + 1, this.m, i); + } else if (j == 2) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b - 1 + random.nextInt(3), this.l.f - 3, EnumDirection.WEST, i); + } else { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b - 1 + random.nextInt(3), this.l.f - 3, EnumDirection.EAST, i); + } + break; + + case 3: + if (j <= 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b - 1 + random.nextInt(3), this.l.c, this.m, i); + } else if (j == 2) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b - 1 + random.nextInt(3), this.l.c - 1, EnumDirection.NORTH, i); + } else { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a, this.l.b - 1 + random.nextInt(3), this.l.f + 1, EnumDirection.SOUTH, i); + } + break; + + case 4: + if (j <= 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b - 1 + random.nextInt(3), this.l.c, this.m, i); + } else if (j == 2) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d - 3, this.l.b - 1 + random.nextInt(3), this.l.c - 1, EnumDirection.NORTH, i); + } else { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d - 3, this.l.b - 1 + random.nextInt(3), this.l.f + 1, EnumDirection.SOUTH, i); + } + } + } + + if (i < 8) { + int k; + int l; + + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.SOUTH) { + for (k = this.l.a + 3; k + 3 <= this.l.d; k += 5) { + l = random.nextInt(5); + if (l == 0) { + WorldGenMineshaftPieces.b(structurepiece, list, random, k, this.l.b, this.l.c - 1, EnumDirection.NORTH, i + 1); + } else if (l == 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, k, this.l.b, this.l.f + 1, EnumDirection.SOUTH, i + 1); + } + } + } else { + for (k = this.l.c + 3; k + 3 <= this.l.f; k += 5) { + l = random.nextInt(5); + if (l == 0) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b, k, EnumDirection.WEST, i + 1); + } else if (l == 1) { + WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b, k, EnumDirection.EAST, i + 1); + } + } + } + } + + } + + protected boolean a(World world, StructureBoundingBox structureboundingbox, Random random, int i, int j, int k, List list, int l) { + BlockPosition blockposition = new BlockPosition(this.a(i, k), this.d(j), this.b(i, k)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition) && world.getType(blockposition).getBlock().getMaterial() == Material.AIR) { + int i1 = random.nextBoolean() ? 1 : 0; + + world.setTypeAndData(blockposition, Blocks.RAIL.fromLegacyData(this.a(Blocks.RAIL, i1)), 2); + EntityMinecartChest entityminecartchest = new EntityMinecartChest(world, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F)); + + StructurePieceTreasure.a(random, list, (IInventory) entityminecartchest, l); + world.addEntity(entityminecartchest); + return true; + } else { + return false; + } + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + boolean flag = false; + boolean flag1 = true; + boolean flag2 = false; + boolean flag3 = true; + int i = this.d * 5 - 1; + + this.a(world, structureboundingbox, 0, 0, 0, 2, 1, i, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, random, 0.8F, 0, 2, 0, 2, 2, i, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + if (this.b) { + this.a(world, structureboundingbox, random, 0.6F, 0, 0, 0, 2, 1, i, Blocks.WEB.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + int j; + int k; + + for (j = 0; j < this.d; ++j) { + k = 2 + j * 5; + this.a(world, structureboundingbox, 0, 0, k, 0, 1, k, Blocks.FENCE.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 2, 0, k, 2, 1, k, Blocks.FENCE.getBlockData(), Blocks.AIR.getBlockData(), false); + if (random.nextInt(4) == 0) { + this.a(world, structureboundingbox, 0, 2, k, 0, 2, k, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 2, 2, k, 2, 2, k, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + } else { + this.a(world, structureboundingbox, 0, 2, k, 2, 2, k, Blocks.PLANKS.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + this.a(world, structureboundingbox, random, 0.1F, 0, 2, k - 1, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 2, 2, k - 1, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 0, 2, k + 1, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 2, 2, k + 1, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.05F, 0, 2, k - 2, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.05F, 2, 2, k - 2, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.05F, 0, 2, k + 2, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.05F, 2, 2, k + 2, Blocks.WEB.getBlockData()); + this.a(world, structureboundingbox, random, 0.05F, 1, 2, k - 1, Blocks.TORCH.fromLegacyData(EnumDirection.UP.a())); + this.a(world, structureboundingbox, random, 0.05F, 1, 2, k + 1, Blocks.TORCH.fromLegacyData(EnumDirection.UP.a())); + if (random.nextInt(100) == 0) { + this.a(world, structureboundingbox, random, 2, 0, k - 1, StructurePieceTreasure.a(WorldGenMineshaftPieces.a, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.b(random)}), 3 + random.nextInt(4)); + } + + if (random.nextInt(100) == 0) { + this.a(world, structureboundingbox, random, 0, 0, k + 1, StructurePieceTreasure.a(WorldGenMineshaftPieces.a, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.b(random)}), 3 + random.nextInt(4)); + } + + if (this.b && !this.c) { + int l = this.d(0); + int i1 = k - 1 + random.nextInt(3); + int j1 = this.a(1, i1); + + i1 = this.b(1, i1); + BlockPosition blockposition = new BlockPosition(j1, l, i1); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + this.c = true; + world.setTypeAndData(blockposition, Blocks.MOB_SPAWNER.getBlockData(), 2); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityMobSpawner) { + ((TileEntityMobSpawner) tileentity).getSpawner().setMobName("CaveSpider"); + } + } + } + } + + for (j = 0; j <= 2; ++j) { + for (k = 0; k <= i; ++k) { + byte b0 = -1; + IBlockData iblockdata = this.a(world, j, b0, k, structureboundingbox); + + if (iblockdata.getBlock().getMaterial() == Material.AIR) { + byte b1 = -1; + + this.a(world, Blocks.PLANKS.getBlockData(), j, b1, k, structureboundingbox); + } + } + } + + if (this.a) { + for (j = 0; j <= i; ++j) { + IBlockData iblockdata1 = this.a(world, 1, -1, j, structureboundingbox); + + if (iblockdata1.getBlock().getMaterial() != Material.AIR && iblockdata1.getBlock().o()) { + this.a(world, structureboundingbox, random, 0.7F, 1, 0, j, Blocks.RAIL.fromLegacyData(this.a(Blocks.RAIL, 0))); + } + } + } + + return true; + } + } + } + + public static class WorldGenMineshaftRoom extends StructurePiece { + + private List a = Lists.newLinkedList(); + + public WorldGenMineshaftRoom() {} + + public WorldGenMineshaftRoom(int i, Random random, int j, int k) { + super(i); + this.l = new StructureBoundingBox(j, 50, k, j + 7 + random.nextInt(6), 54 + random.nextInt(6), k + 7 + random.nextInt(6)); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + int i = this.d(); + int j = this.l.d() - 3 - 1; + + if (j <= 0) { + j = 1; + } + + int k; + StructurePiece structurepiece1; + StructureBoundingBox structureboundingbox; + + for (k = 0; k < this.l.c(); k += 4) { + k += random.nextInt(this.l.c()); + if (k + 3 > this.l.c()) { + break; + } + + structurepiece1 = WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + k, this.l.b + random.nextInt(j) + 1, this.l.c - 1, EnumDirection.NORTH, i); + if (structurepiece1 != null) { + structureboundingbox = structurepiece1.c(); + this.a.add(new StructureBoundingBox(structureboundingbox.a, structureboundingbox.b, this.l.c, structureboundingbox.d, structureboundingbox.e, this.l.c + 1)); + } + } + + for (k = 0; k < this.l.c(); k += 4) { + k += random.nextInt(this.l.c()); + if (k + 3 > this.l.c()) { + break; + } + + structurepiece1 = WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a + k, this.l.b + random.nextInt(j) + 1, this.l.f + 1, EnumDirection.SOUTH, i); + if (structurepiece1 != null) { + structureboundingbox = structurepiece1.c(); + this.a.add(new StructureBoundingBox(structureboundingbox.a, structureboundingbox.b, this.l.f - 1, structureboundingbox.d, structureboundingbox.e, this.l.f)); + } + } + + for (k = 0; k < this.l.e(); k += 4) { + k += random.nextInt(this.l.e()); + if (k + 3 > this.l.e()) { + break; + } + + structurepiece1 = WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.a - 1, this.l.b + random.nextInt(j) + 1, this.l.c + k, EnumDirection.WEST, i); + if (structurepiece1 != null) { + structureboundingbox = structurepiece1.c(); + this.a.add(new StructureBoundingBox(this.l.a, structureboundingbox.b, structureboundingbox.c, this.l.a + 1, structureboundingbox.e, structureboundingbox.f)); + } + } + + for (k = 0; k < this.l.e(); k += 4) { + k += random.nextInt(this.l.e()); + if (k + 3 > this.l.e()) { + break; + } + + structurepiece1 = WorldGenMineshaftPieces.b(structurepiece, list, random, this.l.d + 1, this.l.b + random.nextInt(j) + 1, this.l.c + k, EnumDirection.EAST, i); + if (structurepiece1 != null) { + structureboundingbox = structurepiece1.c(); + this.a.add(new StructureBoundingBox(this.l.d - 1, structureboundingbox.b, structureboundingbox.c, this.l.d, structureboundingbox.e, structureboundingbox.f)); + } + } + + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, this.l.a, this.l.b, this.l.c, this.l.d, this.l.b, this.l.f, Blocks.DIRT.getBlockData(), Blocks.AIR.getBlockData(), true); + this.a(world, structureboundingbox, this.l.a, this.l.b + 1, this.l.c, this.l.d, Math.min(this.l.b + 3, this.l.e), this.l.f, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructureBoundingBox structureboundingbox1 = (StructureBoundingBox) iterator.next(); + + this.a(world, structureboundingbox, structureboundingbox1.a, structureboundingbox1.e - 2, structureboundingbox1.c, structureboundingbox1.d, structureboundingbox1.e, structureboundingbox1.f, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + this.a(world, structureboundingbox, this.l.a, this.l.b + 4, this.l.c, this.l.d, this.l.e, this.l.f, Blocks.AIR.getBlockData(), false); + return true; + } + } + + public void a(int i, int j, int k) { + super.a(i, j, k); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructureBoundingBox structureboundingbox = (StructureBoundingBox) iterator.next(); + + structureboundingbox.a(i, j, k); + } + + } + + protected void a(NBTTagCompound nbttagcompound) { + NBTTagList nbttaglist = new NBTTagList(); + Iterator iterator = this.a.iterator(); + + while (iterator.hasNext()) { + StructureBoundingBox structureboundingbox = (StructureBoundingBox) iterator.next(); + + nbttaglist.add(structureboundingbox.g()); + } + + nbttagcompound.set("Entrances", nbttaglist); + } + + protected void b(NBTTagCompound nbttagcompound) { + NBTTagList nbttaglist = nbttagcompound.getList("Entrances", 11); + + for (int i = 0; i < nbttaglist.size(); ++i) { + this.a.add(new StructureBoundingBox(nbttaglist.c(i))); + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftStart.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftStart.java new file mode 100644 index 0000000..795921c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMineshaftStart.java @@ -0,0 +1,19 @@ +package net.minecraft.server; + +import java.util.List; +import java.util.Random; + +public class WorldGenMineshaftStart extends StructureStart { + + public WorldGenMineshaftStart() {} + + public WorldGenMineshaftStart(World world, Random random, int i, int j) { + super(i, j); + WorldGenMineshaftPieces.WorldGenMineshaftRoom worldgenmineshaftpieces_worldgenmineshaftroom = new WorldGenMineshaftPieces.WorldGenMineshaftRoom(0, random, (i << 4) + 2, (j << 4) + 2); + + this.a.add(worldgenmineshaftpieces_worldgenmineshaftroom); + worldgenmineshaftpieces_worldgenmineshaftroom.a((StructurePiece) worldgenmineshaftpieces_worldgenmineshaftroom, (List) this.a, random); + this.c(); + this.a(world, random, 10); + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonument.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonument.java new file mode 100644 index 0000000..7f2738c --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonument.java @@ -0,0 +1,170 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.Map.Entry; + +public class WorldGenMonument extends StructureGenerator { + + private int f; + private int g; + public static final List d = Arrays.asList(new BiomeBase[] { BiomeBase.OCEAN, BiomeBase.DEEP_OCEAN, BiomeBase.RIVER, BiomeBase.FROZEN_OCEAN, BiomeBase.FROZEN_RIVER}); + private static final List h = Lists.newArrayList(); + + public WorldGenMonument() { + this.f = 32; + this.g = 5; + } + + public WorldGenMonument(Map map) { + this(); + Iterator iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (((String) entry.getKey()).equals("spacing")) { + this.f = MathHelper.a((String) entry.getValue(), this.f, 1); + } else if (((String) entry.getKey()).equals("separation")) { + this.g = MathHelper.a((String) entry.getValue(), this.g, 1); + } + } + + } + + public String a() { + return "Monument"; + } + + protected boolean a(int i, int j) { + int k = i; + int l = j; + + if (i < 0) { + i -= this.f - 1; + } + + if (j < 0) { + j -= this.f - 1; + } + + int i1 = i / this.f; + int j1 = j / this.f; + Random random = this.c.a(i1, j1, 10387313); + + i1 *= this.f; + j1 *= this.f; + i1 += (random.nextInt(this.f - this.g) + random.nextInt(this.f - this.g)) / 2; + j1 += (random.nextInt(this.f - this.g) + random.nextInt(this.f - this.g)) / 2; + if (k == i1 && l == j1) { + if (this.c.getWorldChunkManager().getBiome(new BlockPosition(k * 16 + 8, 64, l * 16 + 8), (BiomeBase) null) != BiomeBase.DEEP_OCEAN) { + return false; + } + + boolean flag = this.c.getWorldChunkManager().a(k * 16 + 8, l * 16 + 8, 29, WorldGenMonument.d); + + if (flag) { + return true; + } + } + + return false; + } + + protected StructureStart b(int i, int j) { + return new WorldGenMonument.WorldGenMonumentStart(this.c, this.b, i, j); + } + + public List b() { + return WorldGenMonument.h; + } + + static { + WorldGenMonument.h.add(new BiomeBase.BiomeMeta(EntityGuardian.class, 1, 2, 4)); + } + + public static class WorldGenMonumentStart extends StructureStart { + + private Set c = Sets.newHashSet(); + private boolean d; + + public WorldGenMonumentStart() {} + + public WorldGenMonumentStart(World world, Random random, int i, int j) { + super(i, j); + this.b(world, random, i, j); + } + + private void b(World world, Random random, int i, int j) { + random.setSeed(world.getSeed()); + long k = random.nextLong(); + long l = random.nextLong(); + long i1 = (long) i * k; + long j1 = (long) j * l; + + random.setSeed(i1 ^ j1 ^ world.getSeed()); + int k1 = i * 16 + 8 - 29; + int l1 = j * 16 + 8 - 29; + EnumDirection enumdirection = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random); + + this.a.add(new WorldGenMonumentPieces.WorldGenMonumentPiece1(random, k1, l1, enumdirection)); + this.c(); + this.d = true; + } + + public void a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (!this.d) { + this.a.clear(); + this.b(world, random, this.e(), this.f()); + } + + super.a(world, random, structureboundingbox); + } + + public boolean a(ChunkCoordIntPair chunkcoordintpair) { + return this.c.contains(chunkcoordintpair) ? false : super.a(chunkcoordintpair); + } + + public void b(ChunkCoordIntPair chunkcoordintpair) { + super.b(chunkcoordintpair); + this.c.add(chunkcoordintpair); + } + + public void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + NBTTagList nbttaglist = new NBTTagList(); + Iterator iterator = this.c.iterator(); + + while (iterator.hasNext()) { + ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + + nbttagcompound1.setInt("X", chunkcoordintpair.x); + nbttagcompound1.setInt("Z", chunkcoordintpair.z); + nbttaglist.add(nbttagcompound1); + } + + nbttagcompound.set("Processed", nbttaglist); + } + + public void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + if (nbttagcompound.hasKeyOfType("Processed", 9)) { + NBTTagList nbttaglist = nbttagcompound.getList("Processed", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.get(i); + + this.c.add(new ChunkCoordIntPair(nbttagcompound1.getInt("X"), nbttagcompound1.getInt("Z"))); + } + } + + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonumentPieces.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonumentPieces.java new file mode 100644 index 0000000..c3eb386 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMonumentPieces.java @@ -0,0 +1,1993 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public class WorldGenMonumentPieces { + + public static void a() { + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece1.class, "OMB"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece2.class, "OMCR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece3.class, "OMDXR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece4.class, "OMDXYR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece5.class, "OMDYR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece6.class, "OMDYZR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiece7.class, "OMDZR"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPieceEntry.class, "OMEntry"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.class, "OMPenthouse"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPieceSimple.class, "OMSimple"); + WorldGenFactory.a(WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.class, "OMSimpleT"); + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + WorldGenMonumentPieces.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + WorldGenMonumentPieces.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + WorldGenMonumentPieces.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + } + } + + static class WorldGenMonumentPieceSelector4 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector4() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()].d && worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.UP.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()]; + + return worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.UP.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()].d; + } else { + return false; + } + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()].d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()].b[EnumDirection.UP.a()].d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPiece6(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector4(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector6 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector6() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()].d && worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.UP.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()]; + + return worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.UP.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()].d; + } else { + return false; + } + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()].d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()].b[EnumDirection.UP.a()].d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPiece4(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector6(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector3 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector3() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + return worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()].d; + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = worldgenmonumentpieces_worldgenmonumentstatetracker; + + if (!worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()] || worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.NORTH.a()].d) { + worldgenmonumentpieces_worldgenmonumentstatetracker1 = worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.SOUTH.a()]; + } + + worldgenmonumentpieces_worldgenmonumentstatetracker1.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.NORTH.a()].d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPiece7(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker1, random); + } + + WorldGenMonumentPieceSelector3(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector7 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector7() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + return worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()].d; + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.EAST.a()].d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPiece3(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector7(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector5 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector5() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + return worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.UP.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d; + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()].d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPiece5(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector5(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector1 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector1() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + return !worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.WEST.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.SOUTH.a()] && !worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.UP.a()]; + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector1(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + static class WorldGenMonumentPieceSelector2 implements WorldGenMonumentPieces.IWorldGenMonumentPieceSelector { + + private WorldGenMonumentPieceSelector2() {} + + public boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + return true; + } + + public WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + return new WorldGenMonumentPieces.WorldGenMonumentPieceSimple(enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, random); + } + + WorldGenMonumentPieceSelector2(WorldGenMonumentPieces.SyntheticClass_1 worldgenmonumentpieces_syntheticclass_1) { + this(); + } + } + + interface IWorldGenMonumentPieceSelector { + + boolean a(WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker); + + WorldGenMonumentPieces.WorldGenMonumentPiece a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random); + } + + static class WorldGenMonumentStateTracker { + + int a; + WorldGenMonumentPieces.WorldGenMonumentStateTracker[] b = new WorldGenMonumentPieces.WorldGenMonumentStateTracker[6]; + boolean[] c = new boolean[6]; + boolean d; + boolean e; + int f; + + public WorldGenMonumentStateTracker(int i) { + this.a = i; + } + + public void a(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + this.b[enumdirection.a()] = worldgenmonumentpieces_worldgenmonumentstatetracker; + worldgenmonumentpieces_worldgenmonumentstatetracker.b[enumdirection.opposite().a()] = this; + } + + public void a() { + for (int i = 0; i < 6; ++i) { + this.c[i] = this.b[i] != null; + } + + } + + public boolean a(int i) { + if (this.e) { + return true; + } else { + this.f = i; + + for (int j = 0; j < 6; ++j) { + if (this.b[j] != null && this.c[j] && this.b[j].f != i && this.b[j].a(i)) { + return true; + } + } + + return false; + } + } + + public boolean b() { + return this.a >= 75; + } + + public int c() { + int i = 0; + + for (int j = 0; j < 6; ++j) { + if (this.c[j]) { + ++i; + } + } + + return i; + } + } + + public static class WorldGenMonumentPiecePenthouse extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiecePenthouse() {} + + public WorldGenMonumentPiecePenthouse(EnumDirection enumdirection, StructureBoundingBox structureboundingbox) { + super(enumdirection, structureboundingbox); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 2, -1, 2, 11, -1, 11, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 0, -1, 0, 1, -1, 11, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, false); + this.a(world, structureboundingbox, 12, -1, 0, 13, -1, 11, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, false); + this.a(world, structureboundingbox, 2, -1, 0, 11, -1, 1, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, false); + this.a(world, structureboundingbox, 2, -1, 12, 11, -1, 13, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.a, false); + this.a(world, structureboundingbox, 0, 0, 0, 0, 0, 13, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 13, 0, 0, 13, 0, 13, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 1, 0, 0, 12, 0, 0, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 1, 0, 13, 12, 0, 13, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + + for (int i = 2; i <= 11; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.e, 0, 0, i, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.e, 13, 0, i, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.e, i, 0, 0, structureboundingbox); + } + + this.a(world, structureboundingbox, 2, 0, 3, 4, 0, 9, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 9, 0, 3, 11, 0, 9, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 4, 0, 9, 9, 0, 11, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, 5, 0, 8, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, 8, 0, 8, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, 10, 0, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, 3, 0, 10, structureboundingbox); + this.a(world, structureboundingbox, 3, 0, 3, 3, 0, 7, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, false); + this.a(world, structureboundingbox, 10, 0, 3, 10, 0, 7, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, false); + this.a(world, structureboundingbox, 6, 0, 10, 7, 0, 10, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, false); + byte b0 = 3; + + for (int j = 0; j < 2; ++j) { + for (int k = 2; k <= 8; k += 3) { + this.a(world, structureboundingbox, b0, 0, k, b0, 2, k, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + } + + b0 = 10; + } + + this.a(world, structureboundingbox, 5, 0, 10, 5, 2, 10, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 8, 0, 10, 8, 2, 10, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.b, false); + this.a(world, structureboundingbox, 6, -1, 7, 7, -1, 8, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse.c, false); + this.a(world, structureboundingbox, 6, -1, 3, 7, -1, 4, false); + this.a(world, structureboundingbox, 6, 1, 6); + return true; + } + } + + public static class WorldGenMonumentPiece8 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + private int o; + + public WorldGenMonumentPiece8() {} + + public WorldGenMonumentPiece8(EnumDirection enumdirection, StructureBoundingBox structureboundingbox, int i) { + super(enumdirection, structureboundingbox); + this.o = i & 1; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.o == 0) { + int i; + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 10 - i, 3 - i, 20 - i, 12 + i, 3 - i, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + } + + this.a(world, structureboundingbox, 7, 0, 6, 15, 0, 16, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 6, 0, 6, 6, 3, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 16, 0, 6, 16, 3, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 7, 1, 7, 7, 1, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 15, 1, 7, 15, 1, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 7, 1, 6, 9, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 13, 1, 6, 15, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 8, 1, 7, 9, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 13, 1, 7, 14, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 9, 0, 5, 13, 0, 5, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 10, 0, 7, 12, 0, 7, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, false); + this.a(world, structureboundingbox, 8, 0, 10, 8, 0, 12, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, false); + this.a(world, structureboundingbox, 14, 0, 10, 14, 0, 12, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, false); + + for (i = 18; i >= 7; i -= 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 6, 3, i, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 16, 3, i, structureboundingbox); + } + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 10, 0, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 12, 0, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 10, 0, 12, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 12, 0, 12, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 8, 3, 6, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 14, 3, 6, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 4, 2, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 4, 1, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 4, 0, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 18, 2, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 18, 1, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 18, 0, 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 4, 2, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 4, 1, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 4, 0, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 18, 2, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, 18, 1, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 18, 0, 18, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 9, 7, 20, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, 13, 7, 20, structureboundingbox); + this.a(world, structureboundingbox, 6, 0, 21, 7, 4, 21, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 15, 0, 21, 16, 4, 21, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 11, 2, 16); + } else if (this.o == 1) { + this.a(world, structureboundingbox, 9, 3, 18, 13, 3, 20, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 9, 0, 18, 9, 2, 18, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, 13, 0, 18, 13, 2, 18, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + byte b0 = 9; + byte b1 = 20; + byte b2 = 5; + + int j; + + for (j = 0; j < 2; ++j) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, b0, b2 + 1, b1, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, b0, b2, b1, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, b0, b2 - 1, b1, structureboundingbox); + b0 = 13; + } + + this.a(world, structureboundingbox, 7, 3, 7, 15, 3, 14, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + b0 = 10; + + for (j = 0; j < 2; ++j) { + this.a(world, structureboundingbox, b0, 0, 10, b0, 6, 10, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, b0, 0, 12, b0, 6, 12, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, b0, 0, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, b0, 0, 12, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, b0, 4, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece8.e, b0, 4, 12, structureboundingbox); + b0 = 12; + } + + b0 = 8; + + for (j = 0; j < 2; ++j) { + this.a(world, structureboundingbox, b0, 0, 7, b0, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + this.a(world, structureboundingbox, b0, 0, 14, b0, 2, 14, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, WorldGenMonumentPieces.WorldGenMonumentPiece8.b, false); + b0 = 14; + } + + this.a(world, structureboundingbox, 8, 3, 8, 8, 3, 13, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, false); + this.a(world, structureboundingbox, 14, 3, 8, 14, 3, 13, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, WorldGenMonumentPieces.WorldGenMonumentPiece8.c, false); + this.a(world, structureboundingbox, 11, 5, 13); + } + + return true; + } + } + + public static class WorldGenMonumentPiece2 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece2() {} + + public WorldGenMonumentPiece2(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 2, 2, 2); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 1, 8, 0, 14, 8, 14, WorldGenMonumentPieces.WorldGenMonumentPiece2.a); + byte b0 = 7; + IBlockData iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece2.b; + + this.a(world, structureboundingbox, 0, b0, 0, 0, b0, 15, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 15, b0, 0, 15, b0, 15, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, b0, 0, 15, b0, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, b0, 15, 14, b0, 15, iblockdata, iblockdata, false); + + int i; + + for (i = 1; i <= 6; ++i) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece2.b; + if (i == 2 || i == 6) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece2.a; + } + + for (int j = 0; j <= 15; j += 15) { + this.a(world, structureboundingbox, j, i, 0, j, i, 1, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, j, i, 6, j, i, 9, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, j, i, 14, j, i, 15, iblockdata, iblockdata, false); + } + + this.a(world, structureboundingbox, 1, i, 0, 1, i, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 6, i, 0, 9, i, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 14, i, 0, 14, i, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, i, 15, 14, i, 15, iblockdata, iblockdata, false); + } + + this.a(world, structureboundingbox, 6, 3, 6, 9, 6, 9, WorldGenMonumentPieces.WorldGenMonumentPiece2.c, WorldGenMonumentPieces.WorldGenMonumentPiece2.c, false); + this.a(world, structureboundingbox, 7, 4, 7, 8, 5, 8, Blocks.GOLD_BLOCK.getBlockData(), Blocks.GOLD_BLOCK.getBlockData(), false); + + for (i = 3; i <= 6; i += 3) { + for (int k = 6; k <= 9; k += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece2.e, k, i, 6, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece2.e, k, i, 9, structureboundingbox); + } + } + + this.a(world, structureboundingbox, 5, 1, 6, 5, 2, 6, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 5, 1, 9, 5, 2, 9, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 1, 6, 10, 2, 6, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 1, 9, 10, 2, 9, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 6, 1, 5, 6, 2, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 9, 1, 5, 9, 2, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 6, 1, 10, 6, 2, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 9, 1, 10, 9, 2, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 5, 2, 5, 5, 6, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 5, 2, 10, 5, 6, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 2, 5, 10, 6, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 2, 10, 10, 6, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 5, 7, 1, 5, 7, 6, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 7, 1, 10, 7, 6, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 5, 7, 9, 5, 7, 14, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 10, 7, 9, 10, 7, 14, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 1, 7, 5, 6, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 1, 7, 10, 6, 7, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 9, 7, 5, 14, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 9, 7, 10, 14, 7, 10, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 2, 1, 2, 2, 1, 3, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 3, 1, 2, 3, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 13, 1, 2, 13, 1, 3, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 12, 1, 2, 12, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 2, 1, 12, 2, 1, 13, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 3, 1, 13, 3, 1, 13, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 13, 1, 12, 13, 1, 13, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + this.a(world, structureboundingbox, 12, 1, 13, 12, 1, 13, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, WorldGenMonumentPieces.WorldGenMonumentPiece2.b, false); + return true; + } + } + + public static class WorldGenMonumentPiece6 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece6() {} + + public WorldGenMonumentPiece6(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 2, 2); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = this.k.b[EnumDirection.NORTH.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = this.k; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker2 = worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker3 = worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()]; + + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 0, 8, worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.DOWN.a()]); + this.a(world, structureboundingbox, 0, 0, worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.DOWN.a()]); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 8, 1, 6, 8, 7, WorldGenMonumentPieces.WorldGenMonumentPiece6.a); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 8, 8, 6, 8, 14, WorldGenMonumentPieces.WorldGenMonumentPiece6.a); + } + + int i; + IBlockData iblockdata; + + for (i = 1; i <= 7; ++i) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece6.b; + if (i == 2 || i == 6) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece6.a; + } + + this.a(world, structureboundingbox, 0, i, 0, 0, i, 15, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 7, i, 0, 7, i, 15, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, i, 0, 6, i, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, i, 15, 6, i, 15, iblockdata, iblockdata, false); + } + + for (i = 1; i <= 7; ++i) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece6.c; + if (i == 2 || i == 6) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece6.e; + } + + this.a(world, structureboundingbox, 3, i, 7, 4, i, 8, iblockdata, iblockdata, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 1, 3, 7, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 15, 4, 2, 15, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 11, 0, 2, 12, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 1, 11, 7, 2, 12, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 5, 0, 4, 6, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 5, 3, 7, 6, 4, false); + this.a(world, structureboundingbox, 5, 4, 2, 6, 4, 5, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 6, 1, 2, 6, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 6, 1, 5, 6, 3, 5, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 5, 3, 0, 6, 4, false); + this.a(world, structureboundingbox, 1, 4, 2, 2, 4, 5, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 1, 1, 2, 1, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 1, 1, 5, 1, 3, 5, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 5, 15, 4, 6, 15, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 5, 11, 0, 6, 12, false); + this.a(world, structureboundingbox, 1, 4, 10, 2, 4, 13, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 1, 1, 10, 1, 3, 10, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 1, 1, 13, 1, 3, 13, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 5, 11, 7, 6, 12, false); + this.a(world, structureboundingbox, 5, 4, 10, 6, 4, 13, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 6, 1, 10, 6, 3, 10, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + this.a(world, structureboundingbox, 6, 1, 13, 6, 3, 13, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, WorldGenMonumentPieces.WorldGenMonumentPiece6.b, false); + } + + return true; + } + } + + public static class WorldGenMonumentPiece4 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece4() {} + + public WorldGenMonumentPiece4(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 2, 2, 1); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = this.k.b[EnumDirection.EAST.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = this.k; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker2 = worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker3 = worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()]; + + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 8, 0, worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.DOWN.a()]); + this.a(world, structureboundingbox, 0, 0, worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.DOWN.a()]); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 8, 1, 7, 8, 6, WorldGenMonumentPieces.WorldGenMonumentPiece4.a); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 8, 8, 1, 14, 8, 6, WorldGenMonumentPieces.WorldGenMonumentPiece4.a); + } + + for (int i = 1; i <= 7; ++i) { + IBlockData iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece4.b; + + if (i == 2 || i == 6) { + iblockdata = WorldGenMonumentPieces.WorldGenMonumentPiece4.a; + } + + this.a(world, structureboundingbox, 0, i, 0, 0, i, 7, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 15, i, 0, 15, i, 7, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, i, 0, 15, i, 0, iblockdata, iblockdata, false); + this.a(world, structureboundingbox, 1, i, 7, 14, i, 7, iblockdata, iblockdata, false); + } + + this.a(world, structureboundingbox, 2, 1, 3, 2, 7, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 3, 1, 2, 4, 7, 2, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 3, 1, 5, 4, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 13, 1, 3, 13, 7, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 11, 1, 2, 12, 7, 2, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 11, 1, 5, 12, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 5, 1, 3, 5, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 10, 1, 3, 10, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 5, 7, 2, 10, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 5, 5, 2, 5, 7, 2, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 10, 5, 2, 10, 7, 2, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 5, 5, 5, 5, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 10, 5, 5, 10, 7, 5, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, 6, 6, 2, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, 9, 6, 2, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, 6, 6, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, 9, 6, 5, structureboundingbox); + this.a(world, structureboundingbox, 5, 4, 3, 6, 4, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, structureboundingbox, 9, 4, 3, 10, 4, 4, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, WorldGenMonumentPieces.WorldGenMonumentPiece4.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.e, 5, 4, 2, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.e, 5, 4, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.e, 10, 4, 2, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece4.e, 10, 4, 5, structureboundingbox); + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 11, 1, 0, 12, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 11, 1, 7, 12, 2, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 15, 1, 3, 15, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 5, 0, 4, 6, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 5, 7, 4, 6, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker2.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 5, 3, 0, 6, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 11, 5, 0, 12, 6, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 11, 5, 7, 12, 6, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 15, 5, 3, 15, 6, 4, false); + } + + return true; + } + } + + public static class WorldGenMonumentPiece7 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece7() {} + + public WorldGenMonumentPiece7(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 1, 2); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = this.k.b[EnumDirection.NORTH.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = this.k; + + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 0, 8, worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.DOWN.a()]); + this.a(world, structureboundingbox, 0, 0, worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.DOWN.a()]); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 4, 1, 6, 4, 7, WorldGenMonumentPieces.WorldGenMonumentPiece7.a); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 4, 8, 6, 4, 14, WorldGenMonumentPieces.WorldGenMonumentPiece7.a); + } + + this.a(world, structureboundingbox, 0, 3, 0, 0, 3, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 7, 3, 0, 7, 3, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 3, 0, 7, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 3, 15, 6, 3, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 2, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, false); + this.a(world, structureboundingbox, 7, 2, 0, 7, 2, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, false); + this.a(world, structureboundingbox, 1, 2, 0, 7, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, false); + this.a(world, structureboundingbox, 1, 2, 15, 6, 2, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, WorldGenMonumentPieces.WorldGenMonumentPiece7.a, false); + this.a(world, structureboundingbox, 0, 1, 0, 0, 1, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 7, 1, 0, 7, 1, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 1, 0, 7, 1, 0, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 1, 15, 6, 1, 15, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 1, 1, 1, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 6, 1, 1, 6, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 3, 1, 1, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 6, 3, 1, 6, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 1, 13, 1, 1, 14, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 6, 1, 13, 6, 1, 14, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 1, 3, 13, 1, 3, 14, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 6, 3, 13, 6, 3, 14, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 2, 1, 6, 2, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 5, 1, 6, 5, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 2, 1, 9, 2, 3, 9, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 5, 1, 9, 5, 3, 9, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 3, 2, 6, 4, 2, 6, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 3, 2, 9, 4, 2, 9, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 2, 2, 7, 2, 2, 8, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, structureboundingbox, 5, 2, 7, 5, 2, 8, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.e, 2, 2, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.e, 5, 2, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.e, 2, 2, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.e, 5, 2, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, 2, 3, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, 5, 3, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, 2, 3, 10, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece7.b, 5, 3, 10, structureboundingbox); + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 1, 3, 7, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 15, 4, 2, 15, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 11, 0, 2, 12, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 1, 11, 7, 2, 12, false); + } + + return true; + } + } + + public static class WorldGenMonumentPiece3 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece3() {} + + public WorldGenMonumentPiece3(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 2, 1, 1); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = this.k.b[EnumDirection.EAST.a()]; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = this.k; + + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 8, 0, worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.DOWN.a()]); + this.a(world, structureboundingbox, 0, 0, worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.DOWN.a()]); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 4, 1, 7, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPiece3.a); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 8, 4, 1, 14, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPiece3.a); + } + + this.a(world, structureboundingbox, 0, 3, 0, 0, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 15, 3, 0, 15, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 1, 3, 0, 15, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 1, 3, 7, 14, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, false); + this.a(world, structureboundingbox, 15, 2, 0, 15, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, false); + this.a(world, structureboundingbox, 1, 2, 0, 15, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, false); + this.a(world, structureboundingbox, 1, 2, 7, 14, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, false); + this.a(world, structureboundingbox, 0, 1, 0, 0, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 15, 1, 0, 15, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 1, 1, 0, 15, 1, 0, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 1, 1, 7, 14, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 5, 1, 0, 10, 1, 4, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, structureboundingbox, 6, 2, 0, 9, 2, 3, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, WorldGenMonumentPieces.WorldGenMonumentPiece3.a, false); + this.a(world, structureboundingbox, 5, 3, 0, 10, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, WorldGenMonumentPieces.WorldGenMonumentPiece3.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece3.e, 6, 2, 3, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece3.e, 9, 2, 3, structureboundingbox); + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 11, 1, 0, 12, 2, 0, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 11, 1, 7, 12, 2, 7, false); + } + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 15, 1, 3, 15, 2, 4, false); + } + + return true; + } + } + + public static class WorldGenMonumentPiece5 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPiece5() {} + + public WorldGenMonumentPiece5(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 2, 1); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 0, 0, this.k.c[EnumDirection.DOWN.a()]); + } + + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = this.k.b[EnumDirection.UP.a()]; + + if (worldgenmonumentpieces_worldgenmonumentstatetracker.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 8, 1, 6, 8, 6, WorldGenMonumentPieces.WorldGenMonumentPiece5.a); + } + + this.a(world, structureboundingbox, 0, 4, 0, 0, 4, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 7, 4, 0, 7, 4, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 1, 4, 0, 6, 4, 0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 1, 4, 7, 6, 4, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 2, 4, 1, 2, 4, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 1, 4, 2, 1, 4, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 5, 4, 1, 5, 4, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 6, 4, 2, 6, 4, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 2, 4, 5, 2, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 1, 4, 5, 1, 4, 5, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 5, 4, 5, 5, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 6, 4, 5, 6, 4, 5, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1 = this.k; + + for (int i = 1; i <= 5; i += 4) { + byte b0 = 0; + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 2, i, b0, 2, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 5, i, b0, 5, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 3, i + 2, b0, 4, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + } else { + this.a(world, structureboundingbox, 0, i, b0, 7, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 0, i + 1, b0, 7, i + 1, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, false); + } + + b0 = 7; + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 2, i, b0, 2, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 5, i, b0, 5, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 3, i + 2, b0, 4, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + } else { + this.a(world, structureboundingbox, 0, i, b0, 7, i + 2, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, 0, i + 1, b0, 7, i + 1, b0, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, false); + } + + byte b1 = 0; + + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, b1, i, 2, b1, i + 2, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i, 5, b1, i + 2, 5, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i + 2, 3, b1, i + 2, 4, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + } else { + this.a(world, structureboundingbox, b1, i, 0, b1, i + 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i + 1, 0, b1, i + 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, false); + } + + b1 = 7; + if (worldgenmonumentpieces_worldgenmonumentstatetracker1.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, b1, i, 2, b1, i + 2, 2, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i, 5, b1, i + 2, 5, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i + 2, 3, b1, i + 2, 4, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + } else { + this.a(world, structureboundingbox, b1, i, 0, b1, i + 2, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, WorldGenMonumentPieces.WorldGenMonumentPiece5.b, false); + this.a(world, structureboundingbox, b1, i + 1, 0, b1, i + 1, 7, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, WorldGenMonumentPieces.WorldGenMonumentPiece5.a, false); + } + + worldgenmonumentpieces_worldgenmonumentstatetracker1 = worldgenmonumentpieces_worldgenmonumentstatetracker; + } + + return true; + } + } + + public static class WorldGenMonumentPieceSimpleT extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPieceSimpleT() {} + + public WorldGenMonumentPieceSimpleT(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 1, 1); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 0, 0, this.k.c[EnumDirection.DOWN.a()]); + } + + if (this.k.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 4, 1, 6, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.a); + } + + for (int i = 1; i <= 6; ++i) { + for (int j = 1; j <= 6; ++j) { + if (random.nextInt(3) != 0) { + int k = 2 + (random.nextInt(4) == 0 ? 0 : 1); + + this.a(world, structureboundingbox, i, k, j, i, 3, j, Blocks.SPONGE.fromLegacyData(1), Blocks.SPONGE.fromLegacyData(1), false); + } + } + } + + this.a(world, structureboundingbox, 0, 1, 0, 0, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 7, 1, 0, 7, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 1, 1, 0, 6, 1, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 1, 1, 7, 6, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 7, 2, 0, 7, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 1, 2, 0, 6, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 1, 2, 7, 6, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 0, 3, 0, 0, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 7, 3, 0, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 1, 3, 0, 6, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 1, 3, 7, 6, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.b, false); + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 7, 1, 3, 7, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimpleT.c, false); + if (this.k.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + return true; + } + } + + public static class WorldGenMonumentPieceSimple extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + private int o; + + public WorldGenMonumentPieceSimple() {} + + public WorldGenMonumentPieceSimple(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, Random random) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 1, 1); + this.o = random.nextInt(3); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.k.a / 25 > 0) { + this.a(world, structureboundingbox, 0, 0, this.k.c[EnumDirection.DOWN.a()]); + } + + if (this.k.b[EnumDirection.UP.a()] == null) { + this.a(world, structureboundingbox, 1, 4, 1, 6, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a); + } + + boolean flag = this.o != 0 && random.nextBoolean() && !this.k.c[EnumDirection.DOWN.a()] && !this.k.c[EnumDirection.UP.a()] && this.k.c() > 1; + + if (this.o == 0) { + this.a(world, structureboundingbox, 0, 1, 0, 2, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 3, 0, 2, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 2, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 1, 2, 0, 2, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 1, 2, 1, structureboundingbox); + this.a(world, structureboundingbox, 5, 1, 0, 7, 1, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 5, 3, 0, 7, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 2, 0, 7, 2, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 5, 2, 0, 6, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 6, 2, 1, structureboundingbox); + this.a(world, structureboundingbox, 0, 1, 5, 2, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 3, 5, 2, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 2, 5, 0, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 1, 2, 7, 2, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 1, 2, 6, structureboundingbox); + this.a(world, structureboundingbox, 5, 1, 5, 7, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 5, 3, 5, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 2, 5, 7, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 5, 2, 7, 6, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 6, 2, 6, structureboundingbox); + if (this.k.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 3, 0, 4, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } else { + this.a(world, structureboundingbox, 3, 3, 0, 4, 3, 1, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 3, 2, 0, 4, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 3, 1, 0, 4, 1, 1, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (this.k.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 3, 7, 4, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } else { + this.a(world, structureboundingbox, 3, 3, 6, 4, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 3, 2, 7, 4, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 3, 1, 6, 4, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (this.k.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 3, 3, 0, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } else { + this.a(world, structureboundingbox, 0, 3, 3, 1, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 2, 3, 0, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 0, 1, 3, 1, 1, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (this.k.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 3, 3, 7, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } else { + this.a(world, structureboundingbox, 6, 3, 3, 7, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 2, 3, 7, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 6, 1, 3, 7, 1, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + } else if (this.o == 1) { + this.a(world, structureboundingbox, 2, 1, 2, 2, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 2, 1, 5, 2, 3, 5, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 5, 1, 5, 5, 3, 5, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 5, 1, 2, 5, 3, 2, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 2, 2, 2, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 2, 2, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 5, 2, 5, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.e, 5, 2, 2, structureboundingbox); + this.a(world, structureboundingbox, 0, 1, 0, 1, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 1, 1, 0, 3, 1, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 1, 7, 1, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 1, 6, 0, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 6, 1, 7, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 1, 6, 7, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 6, 1, 0, 7, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 1, 1, 7, 3, 1, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 1, 2, 0, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 0, 2, 1, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 1, 2, 7, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 0, 2, 6, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 6, 2, 7, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 7, 2, 6, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 6, 2, 0, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, 7, 2, 1, structureboundingbox); + if (!this.k.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 1, 3, 0, 6, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 2, 0, 6, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 1, 1, 0, 6, 1, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (!this.k.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 1, 3, 7, 6, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 2, 7, 6, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 1, 1, 7, 6, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (!this.k.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 3, 1, 0, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 2, 1, 0, 2, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 0, 1, 1, 0, 1, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + if (!this.k.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 3, 1, 7, 3, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 2, 1, 7, 2, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 7, 1, 1, 7, 1, 6, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + } else if (this.o == 2) { + this.a(world, structureboundingbox, 0, 1, 0, 0, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 1, 0, 7, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 1, 0, 6, 1, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 1, 7, 6, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 7, 2, 0, 7, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 1, 2, 0, 6, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 1, 2, 7, 6, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 0, 3, 0, 0, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 7, 3, 0, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 3, 0, 6, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 1, 3, 7, 6, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 7, 1, 3, 7, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.c, false); + if (this.k.c[EnumDirection.SOUTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 0, 4, 2, 0, false); + } + + if (this.k.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, false); + } + + if (this.k.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 0, 2, 4, false); + } + + if (this.k.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 7, 1, 3, 7, 2, 4, false); + } + } + + if (flag) { + this.a(world, structureboundingbox, 3, 1, 3, 4, 1, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + this.a(world, structureboundingbox, 3, 2, 3, 4, 2, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.a, false); + this.a(world, structureboundingbox, 3, 3, 3, 4, 3, 4, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, WorldGenMonumentPieces.WorldGenMonumentPieceSimple.b, false); + } + + return true; + } + } + + public static class WorldGenMonumentPieceEntry extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + public WorldGenMonumentPieceEntry() {} + + public WorldGenMonumentPieceEntry(EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker) { + super(1, enumdirection, worldgenmonumentpieces_worldgenmonumentstatetracker, 1, 1, 1); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 3, 0, 2, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 5, 3, 0, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 0, 2, 0, 1, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 6, 2, 0, 7, 2, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 0, 1, 0, 0, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 7, 1, 0, 7, 1, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 0, 1, 7, 7, 3, 7, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 1, 1, 0, 2, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + this.a(world, structureboundingbox, 5, 1, 0, 6, 3, 0, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, WorldGenMonumentPieces.WorldGenMonumentPieceEntry.b, false); + if (this.k.c[EnumDirection.NORTH.a()]) { + this.a(world, structureboundingbox, 3, 1, 7, 4, 2, 7, false); + } + + if (this.k.c[EnumDirection.WEST.a()]) { + this.a(world, structureboundingbox, 0, 1, 3, 1, 2, 4, false); + } + + if (this.k.c[EnumDirection.EAST.a()]) { + this.a(world, structureboundingbox, 6, 1, 3, 7, 2, 4, false); + } + + return true; + } + } + + public static class WorldGenMonumentPiece1 extends WorldGenMonumentPieces.WorldGenMonumentPiece { + + private WorldGenMonumentPieces.WorldGenMonumentStateTracker o; + private WorldGenMonumentPieces.WorldGenMonumentStateTracker p; + private List q = Lists.newArrayList(); + + public WorldGenMonumentPiece1() {} + + public WorldGenMonumentPiece1(Random random, int i, int j, EnumDirection enumdirection) { + super(0); + this.m = enumdirection; + switch (WorldGenMonumentPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + case 2: + this.l = new StructureBoundingBox(i, 39, j, i + 58 - 1, 61, j + 58 - 1); + break; + + default: + this.l = new StructureBoundingBox(i, 39, j, i + 58 - 1, 61, j + 58 - 1); + } + + List list = this.a(random); + + this.o.d = true; + this.q.add(new WorldGenMonumentPieces.WorldGenMonumentPieceEntry(this.m, this.o)); + this.q.add(new WorldGenMonumentPieces.WorldGenMonumentPiece2(this.m, this.p, random)); + ArrayList arraylist = Lists.newArrayList(); + + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector6((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector4((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector3((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector7((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector5((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector1((WorldGenMonumentPieces.SyntheticClass_1) null)); + arraylist.add(new WorldGenMonumentPieces.WorldGenMonumentPieceSelector2((WorldGenMonumentPieces.SyntheticClass_1) null)); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker = (WorldGenMonumentPieces.WorldGenMonumentStateTracker) iterator.next(); + + if (!worldgenmonumentpieces_worldgenmonumentstatetracker.d && !worldgenmonumentpieces_worldgenmonumentstatetracker.b()) { + Iterator iterator1 = arraylist.iterator(); + + while (iterator1.hasNext()) { + WorldGenMonumentPieces.IWorldGenMonumentPieceSelector worldgenmonumentpieces_iworldgenmonumentpieceselector = (WorldGenMonumentPieces.IWorldGenMonumentPieceSelector) iterator1.next(); + + if (worldgenmonumentpieces_iworldgenmonumentpieceselector.a(worldgenmonumentpieces_worldgenmonumentstatetracker)) { + this.q.add(worldgenmonumentpieces_iworldgenmonumentpieceselector.a(this.m, worldgenmonumentpieces_worldgenmonumentstatetracker, random)); + break; + } + } + } + } + + int k = this.l.b; + int l = this.a(9, 22); + int i1 = this.b(9, 22); + Iterator iterator2 = this.q.iterator(); + + while (iterator2.hasNext()) { + WorldGenMonumentPieces.WorldGenMonumentPiece worldgenmonumentpieces_worldgenmonumentpiece = (WorldGenMonumentPieces.WorldGenMonumentPiece) iterator2.next(); + + worldgenmonumentpieces_worldgenmonumentpiece.c().a(l, k, i1); + } + + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(this.a(1, 1), this.d(1), this.b(1, 1), this.a(23, 21), this.d(8), this.b(23, 21)); + StructureBoundingBox structureboundingbox1 = StructureBoundingBox.a(this.a(34, 1), this.d(1), this.b(34, 1), this.a(56, 21), this.d(8), this.b(56, 21)); + StructureBoundingBox structureboundingbox2 = StructureBoundingBox.a(this.a(22, 22), this.d(13), this.b(22, 22), this.a(35, 35), this.d(17), this.b(35, 35)); + int j1 = random.nextInt(); + + this.q.add(new WorldGenMonumentPieces.WorldGenMonumentPiece8(this.m, structureboundingbox, j1++)); + this.q.add(new WorldGenMonumentPieces.WorldGenMonumentPiece8(this.m, structureboundingbox1, j1++)); + this.q.add(new WorldGenMonumentPieces.WorldGenMonumentPiecePenthouse(this.m, structureboundingbox2)); + } + + private List a(Random random) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker[] aworldgenmonumentpieces_worldgenmonumentstatetracker = new WorldGenMonumentPieces.WorldGenMonumentStateTracker[75]; + + int i; + int j; + byte b0; + int k; + + for (i = 0; i < 5; ++i) { + for (j = 0; j < 4; ++j) { + b0 = 0; + k = b(i, b0, j); + aworldgenmonumentpieces_worldgenmonumentstatetracker[k] = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(k); + } + } + + for (i = 0; i < 5; ++i) { + for (j = 0; j < 4; ++j) { + b0 = 1; + k = b(i, b0, j); + aworldgenmonumentpieces_worldgenmonumentstatetracker[k] = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(k); + } + } + + for (i = 1; i < 4; ++i) { + for (j = 0; j < 2; ++j) { + b0 = 2; + k = b(i, b0, j); + aworldgenmonumentpieces_worldgenmonumentstatetracker[k] = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(k); + } + } + + this.o = aworldgenmonumentpieces_worldgenmonumentstatetracker[WorldGenMonumentPieces.WorldGenMonumentPiece1.g]; + + int l; + int i1; + int j1; + int k1; + int l1; + + for (i = 0; i < 5; ++i) { + for (j = 0; j < 5; ++j) { + for (int i2 = 0; i2 < 3; ++i2) { + k = b(i, i2, j); + if (aworldgenmonumentpieces_worldgenmonumentstatetracker[k] != null) { + EnumDirection[] aenumdirection = EnumDirection.values(); + + l = aenumdirection.length; + + for (i1 = 0; i1 < l; ++i1) { + EnumDirection enumdirection = aenumdirection[i1]; + + j1 = i + enumdirection.getAdjacentX(); + k1 = i2 + enumdirection.getAdjacentY(); + l1 = j + enumdirection.getAdjacentZ(); + if (j1 >= 0 && j1 < 5 && l1 >= 0 && l1 < 5 && k1 >= 0 && k1 < 3) { + int j2 = b(j1, k1, l1); + + if (aworldgenmonumentpieces_worldgenmonumentstatetracker[j2] != null) { + if (l1 != j) { + aworldgenmonumentpieces_worldgenmonumentstatetracker[k].a(enumdirection.opposite(), aworldgenmonumentpieces_worldgenmonumentstatetracker[j2]); + } else { + aworldgenmonumentpieces_worldgenmonumentstatetracker[k].a(enumdirection, aworldgenmonumentpieces_worldgenmonumentstatetracker[j2]); + } + } + } + } + } + } + } + } + + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker1; + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker2; + + aworldgenmonumentpieces_worldgenmonumentstatetracker[WorldGenMonumentPieces.WorldGenMonumentPiece1.h].a(EnumDirection.UP, worldgenmonumentpieces_worldgenmonumentstatetracker = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(1003)); + aworldgenmonumentpieces_worldgenmonumentstatetracker[WorldGenMonumentPieces.WorldGenMonumentPiece1.i].a(EnumDirection.SOUTH, worldgenmonumentpieces_worldgenmonumentstatetracker1 = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(1001)); + aworldgenmonumentpieces_worldgenmonumentstatetracker[WorldGenMonumentPieces.WorldGenMonumentPiece1.j].a(EnumDirection.SOUTH, worldgenmonumentpieces_worldgenmonumentstatetracker2 = new WorldGenMonumentPieces.WorldGenMonumentStateTracker(1002)); + worldgenmonumentpieces_worldgenmonumentstatetracker.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker1.d = true; + worldgenmonumentpieces_worldgenmonumentstatetracker2.d = true; + this.o.e = true; + this.p = aworldgenmonumentpieces_worldgenmonumentstatetracker[b(random.nextInt(4), 0, 2)]; + this.p.d = true; + this.p.b[EnumDirection.EAST.a()].d = true; + this.p.b[EnumDirection.NORTH.a()].d = true; + this.p.b[EnumDirection.EAST.a()].b[EnumDirection.NORTH.a()].d = true; + this.p.b[EnumDirection.UP.a()].d = true; + this.p.b[EnumDirection.EAST.a()].b[EnumDirection.UP.a()].d = true; + this.p.b[EnumDirection.NORTH.a()].b[EnumDirection.UP.a()].d = true; + this.p.b[EnumDirection.EAST.a()].b[EnumDirection.NORTH.a()].b[EnumDirection.UP.a()].d = true; + ArrayList arraylist = Lists.newArrayList(); + WorldGenMonumentPieces.WorldGenMonumentStateTracker[] aworldgenmonumentpieces_worldgenmonumentstatetracker1 = aworldgenmonumentpieces_worldgenmonumentstatetracker; + + l = aworldgenmonumentpieces_worldgenmonumentstatetracker.length; + + for (i1 = 0; i1 < l; ++i1) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker3 = aworldgenmonumentpieces_worldgenmonumentstatetracker1[i1]; + + if (worldgenmonumentpieces_worldgenmonumentstatetracker3 != null) { + worldgenmonumentpieces_worldgenmonumentstatetracker3.a(); + arraylist.add(worldgenmonumentpieces_worldgenmonumentstatetracker3); + } + } + + worldgenmonumentpieces_worldgenmonumentstatetracker.a(); + Collections.shuffle(arraylist, random); + int k2 = 1; + Iterator iterator = arraylist.iterator(); + + while (iterator.hasNext()) { + WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker4 = (WorldGenMonumentPieces.WorldGenMonumentStateTracker) iterator.next(); + int l2 = 0; + + j1 = 0; + + while (l2 < 2 && j1 < 5) { + ++j1; + k1 = random.nextInt(6); + if (worldgenmonumentpieces_worldgenmonumentstatetracker4.c[k1]) { + l1 = EnumDirection.fromType1(k1).opposite().a(); + worldgenmonumentpieces_worldgenmonumentstatetracker4.c[k1] = false; + worldgenmonumentpieces_worldgenmonumentstatetracker4.b[k1].c[l1] = false; + if (worldgenmonumentpieces_worldgenmonumentstatetracker4.a(k2++) && worldgenmonumentpieces_worldgenmonumentstatetracker4.b[k1].a(k2++)) { + ++l2; + } else { + worldgenmonumentpieces_worldgenmonumentstatetracker4.c[k1] = true; + worldgenmonumentpieces_worldgenmonumentstatetracker4.b[k1].c[l1] = true; + } + } + } + } + + arraylist.add(worldgenmonumentpieces_worldgenmonumentstatetracker); + arraylist.add(worldgenmonumentpieces_worldgenmonumentstatetracker1); + arraylist.add(worldgenmonumentpieces_worldgenmonumentstatetracker2); + return arraylist; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + int i = Math.max(world.F(), 64) - this.l.b; + + this.a(world, structureboundingbox, 0, 0, 0, 58, i, 58, false); + this.a(false, 0, world, random, structureboundingbox); + this.a(true, 33, world, random, structureboundingbox); + this.b(world, random, structureboundingbox); + this.c(world, random, structureboundingbox); + this.d(world, random, structureboundingbox); + this.e(world, random, structureboundingbox); + this.f(world, random, structureboundingbox); + this.g(world, random, structureboundingbox); + + int j; + + for (j = 0; j < 7; ++j) { + int k = 0; + + while (k < 7) { + if (k == 0 && j == 3) { + k = 6; + } + + int l = j * 9; + int i1 = k * 9; + + for (int j1 = 0; j1 < 4; ++j1) { + for (int k1 = 0; k1 < 4; ++k1) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, l + j1, 0, i1 + k1, structureboundingbox); + this.b(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, l + j1, -1, i1 + k1, structureboundingbox); + } + } + + if (j != 0 && j != 6) { + k += 6; + } else { + ++k; + } + } + } + + for (j = 0; j < 5; ++j) { + this.a(world, structureboundingbox, -1 - j, 0 + j * 2, -1 - j, -1 - j, 23, 58 + j, false); + this.a(world, structureboundingbox, 58 + j, 0 + j * 2, -1 - j, 58 + j, 23, 58 + j, false); + this.a(world, structureboundingbox, 0 - j, 0 + j * 2, -1 - j, 57 + j, 23, -1 - j, false); + this.a(world, structureboundingbox, 0 - j, 0 + j * 2, 58 + j, 57 + j, 23, 58 + j, false); + } + + Iterator iterator = this.q.iterator(); + + while (iterator.hasNext()) { + WorldGenMonumentPieces.WorldGenMonumentPiece worldgenmonumentpieces_worldgenmonumentpiece = (WorldGenMonumentPieces.WorldGenMonumentPiece) iterator.next(); + + if (worldgenmonumentpieces_worldgenmonumentpiece.c().a(structureboundingbox)) { + worldgenmonumentpieces_worldgenmonumentpiece.a(world, random, structureboundingbox); + } + } + + return true; + } + + private void a(boolean flag, int i, World world, Random random, StructureBoundingBox structureboundingbox) { + boolean flag1 = true; + + if (this.a(structureboundingbox, i, 0, i + 23, 20)) { + this.a(world, structureboundingbox, i + 0, 0, 0, i + 24, 0, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, i + 0, 1, 0, i + 24, 10, 20, false); + + int j; + + for (j = 0; j < 4; ++j) { + this.a(world, structureboundingbox, i + j, j + 1, j, i + j, j + 1, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, i + j + 7, j + 5, j + 7, i + j + 7, j + 5, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, i + 17 - j, j + 5, j + 7, i + 17 - j, j + 5, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, i + 24 - j, j + 1, j, i + 24 - j, j + 1, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, i + j + 1, j + 1, j, i + 23 - j, j + 1, j, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, i + j + 8, j + 5, j + 7, i + 16 - j, j + 5, j + 7, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + this.a(world, structureboundingbox, i + 4, 4, 4, i + 6, 4, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, i + 7, 4, 4, i + 17, 4, 6, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, i + 18, 4, 4, i + 20, 4, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, i + 11, 8, 11, i + 13, 8, 20, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i + 12, 9, 12, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i + 12, 9, 15, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i + 12, 9, 18, structureboundingbox); + j = flag ? i + 19 : i + 5; + int k = flag ? i + 5 : i + 19; + + int l; + + for (l = 20; l >= 5; l -= 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, j, 5, l, structureboundingbox); + } + + for (l = 19; l >= 7; l -= 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, k, 5, l, structureboundingbox); + } + + for (l = 0; l < 4; ++l) { + int i1 = flag ? i + (24 - (17 - l * 3)) : i + 17 - l * 3; + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i1, 5, 5, structureboundingbox); + } + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, k, 5, 5, structureboundingbox); + this.a(world, structureboundingbox, i + 11, 1, 12, i + 13, 7, 12, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, i + 12, 1, 11, i + 12, 7, 13, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + } + + private void b(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(structureboundingbox, 22, 5, 35, 17)) { + this.a(world, structureboundingbox, 25, 0, 0, 32, 8, 20, false); + + for (int i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 24, 2, 5 + i * 4, 24, 4, 5 + i * 4, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 22, 4, 5 + i * 4, 23, 4, 5 + i * 4, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 25, 5, 5 + i * 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 26, 6, 5 + i * 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 26, 5, 5 + i * 4, structureboundingbox); + this.a(world, structureboundingbox, 33, 2, 5 + i * 4, 33, 4, 5 + i * 4, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 34, 4, 5 + i * 4, 35, 4, 5 + i * 4, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 32, 5, 5 + i * 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 31, 6, 5 + i * 4, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 31, 5, 5 + i * 4, structureboundingbox); + this.a(world, structureboundingbox, 27, 6, 5 + i * 4, 30, 6, 5 + i * 4, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + } + + } + + private void c(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(structureboundingbox, 15, 20, 42, 21)) { + this.a(world, structureboundingbox, 15, 0, 21, 42, 0, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 26, 1, 21, 31, 3, 21, false); + this.a(world, structureboundingbox, 21, 12, 21, 36, 12, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 17, 11, 21, 40, 11, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 16, 10, 21, 41, 10, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 15, 7, 21, 42, 9, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 16, 6, 21, 41, 6, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 17, 5, 21, 40, 5, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 21, 4, 21, 36, 4, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 22, 3, 21, 26, 3, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 31, 3, 21, 35, 3, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 23, 2, 21, 25, 2, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 32, 2, 21, 34, 2, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 28, 4, 20, 29, 4, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 27, 3, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 30, 3, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 26, 2, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 31, 2, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 25, 1, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 32, 1, 21, structureboundingbox); + + int i; + + for (i = 0; i < 7; ++i) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 28 - i, 6 + i, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 29 + i, 6 + i, 21, structureboundingbox); + } + + for (i = 0; i < 4; ++i) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 28 - i, 9 + i, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 29 + i, 9 + i, 21, structureboundingbox); + } + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 28, 12, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 29, 12, 21, structureboundingbox); + + for (i = 0; i < 3; ++i) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 22 - i * 2, 8, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 22 - i * 2, 9, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 35 + i * 2, 8, 21, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.c, 35 + i * 2, 9, 21, structureboundingbox); + } + + this.a(world, structureboundingbox, 15, 13, 21, 42, 15, 21, false); + this.a(world, structureboundingbox, 15, 1, 21, 15, 6, 21, false); + this.a(world, structureboundingbox, 16, 1, 21, 16, 5, 21, false); + this.a(world, structureboundingbox, 17, 1, 21, 20, 4, 21, false); + this.a(world, structureboundingbox, 21, 1, 21, 21, 3, 21, false); + this.a(world, structureboundingbox, 22, 1, 21, 22, 2, 21, false); + this.a(world, structureboundingbox, 23, 1, 21, 24, 1, 21, false); + this.a(world, structureboundingbox, 42, 1, 21, 42, 6, 21, false); + this.a(world, structureboundingbox, 41, 1, 21, 41, 5, 21, false); + this.a(world, structureboundingbox, 37, 1, 21, 40, 4, 21, false); + this.a(world, structureboundingbox, 36, 1, 21, 36, 3, 21, false); + this.a(world, structureboundingbox, 33, 1, 21, 34, 1, 21, false); + this.a(world, structureboundingbox, 35, 1, 21, 35, 2, 21, false); + } + + } + + private void d(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(structureboundingbox, 21, 21, 36, 36)) { + this.a(world, structureboundingbox, 21, 0, 22, 36, 0, 36, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 21, 1, 22, 36, 23, 36, false); + + for (int i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 21 + i, 13 + i, 21 + i, 36 - i, 13 + i, 21 + i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 21 + i, 13 + i, 36 - i, 36 - i, 13 + i, 36 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 21 + i, 13 + i, 22 + i, 21 + i, 13 + i, 35 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 36 - i, 13 + i, 22 + i, 36 - i, 13 + i, 35 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + this.a(world, structureboundingbox, 25, 16, 25, 32, 16, 32, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 25, 17, 25, 25, 19, 25, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 32, 17, 25, 32, 19, 25, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 25, 17, 32, 25, 19, 32, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 32, 17, 32, 32, 19, 32, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 26, 20, 26, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 27, 21, 27, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 27, 20, 27, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 26, 20, 31, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 27, 21, 30, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 27, 20, 30, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 31, 20, 31, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 30, 21, 30, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 30, 20, 30, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 31, 20, 26, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, 30, 21, 27, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.e, 30, 20, 27, structureboundingbox); + this.a(world, structureboundingbox, 28, 21, 27, 29, 21, 27, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 27, 21, 28, 27, 21, 29, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 28, 21, 30, 29, 21, 30, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 30, 21, 28, 30, 21, 29, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + } + + private void e(World world, Random random, StructureBoundingBox structureboundingbox) { + int i; + + if (this.a(structureboundingbox, 0, 21, 6, 58)) { + this.a(world, structureboundingbox, 0, 0, 21, 6, 0, 57, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 0, 1, 21, 6, 7, 57, false); + this.a(world, structureboundingbox, 4, 4, 21, 6, 4, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, i, i + 1, 21, i, i + 1, 57 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 23; i < 53; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 5, 5, i, structureboundingbox); + } + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 5, 5, 52, structureboundingbox); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, i, i + 1, 21, i, i + 1, 57 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + this.a(world, structureboundingbox, 4, 1, 52, 6, 3, 52, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 5, 1, 51, 5, 3, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + if (this.a(structureboundingbox, 51, 21, 58, 58)) { + this.a(world, structureboundingbox, 51, 0, 21, 57, 0, 57, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 51, 1, 21, 57, 7, 57, false); + this.a(world, structureboundingbox, 51, 4, 21, 53, 4, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 57 - i, i + 1, 21, 57 - i, i + 1, 57 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 23; i < 53; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 52, 5, i, structureboundingbox); + } + + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 52, 5, 52, structureboundingbox); + this.a(world, structureboundingbox, 51, 1, 52, 53, 3, 52, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 52, 1, 51, 52, 3, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + if (this.a(structureboundingbox, 0, 51, 57, 57)) { + this.a(world, structureboundingbox, 7, 0, 51, 50, 0, 57, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 7, 1, 51, 50, 10, 57, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, i + 1, i + 1, 57 - i, 56 - i, i + 1, 57 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + } + + } + + private void f(World world, Random random, StructureBoundingBox structureboundingbox) { + int i; + + if (this.a(structureboundingbox, 7, 21, 13, 50)) { + this.a(world, structureboundingbox, 7, 0, 21, 13, 0, 50, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 7, 1, 21, 13, 10, 50, false); + this.a(world, structureboundingbox, 11, 8, 21, 13, 8, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, i + 7, i + 5, 21, i + 7, i + 5, 54, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 21; i <= 45; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 12, 9, i, structureboundingbox); + } + } + + if (this.a(structureboundingbox, 44, 21, 50, 54)) { + this.a(world, structureboundingbox, 44, 0, 21, 50, 0, 50, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 44, 1, 21, 50, 10, 50, false); + this.a(world, structureboundingbox, 44, 8, 21, 46, 8, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 50 - i, i + 5, 21, 50 - i, i + 5, 54, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 21; i <= 45; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 45, 9, i, structureboundingbox); + } + } + + if (this.a(structureboundingbox, 8, 44, 49, 54)) { + this.a(world, structureboundingbox, 14, 0, 44, 43, 0, 50, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 14, 1, 44, 43, 10, 50, false); + + for (i = 12; i <= 45; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 9, 45, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 9, 52, structureboundingbox); + if (i == 12 || i == 18 || i == 24 || i == 33 || i == 39 || i == 45) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 9, 47, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 9, 50, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 10, 45, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 10, 46, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 10, 51, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 10, 52, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 11, 47, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 11, 50, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 12, 48, structureboundingbox); + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 12, 49, structureboundingbox); + } + } + + for (i = 0; i < 3; ++i) { + this.a(world, structureboundingbox, 8 + i, 5 + i, 54, 49 - i, 5 + i, 54, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + this.a(world, structureboundingbox, 11, 8, 54, 46, 8, 54, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + this.a(world, structureboundingbox, 14, 8, 44, 43, 8, 53, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + } + + } + + private void g(World world, Random random, StructureBoundingBox structureboundingbox) { + int i; + + if (this.a(structureboundingbox, 14, 21, 20, 43)) { + this.a(world, structureboundingbox, 14, 0, 21, 20, 0, 43, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 14, 1, 22, 20, 14, 43, false); + this.a(world, structureboundingbox, 18, 12, 22, 20, 12, 39, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 18, 12, 21, 20, 12, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, i + 14, i + 9, 21, i + 14, i + 9, 43 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 23; i <= 39; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 19, 13, i, structureboundingbox); + } + } + + if (this.a(structureboundingbox, 37, 21, 43, 43)) { + this.a(world, structureboundingbox, 37, 0, 21, 43, 0, 43, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 37, 1, 22, 43, 14, 43, false); + this.a(world, structureboundingbox, 37, 12, 22, 39, 12, 39, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 37, 12, 21, 39, 12, 21, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 43 - i, i + 9, 21, 43 - i, i + 9, 43 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 23; i <= 39; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, 38, 13, i, structureboundingbox); + } + } + + if (this.a(structureboundingbox, 15, 37, 42, 43)) { + this.a(world, structureboundingbox, 21, 0, 37, 36, 0, 43, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + this.a(world, structureboundingbox, 21, 1, 37, 36, 14, 43, false); + this.a(world, structureboundingbox, 21, 12, 37, 36, 12, 39, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, WorldGenMonumentPieces.WorldGenMonumentPiece1.a, false); + + for (i = 0; i < 4; ++i) { + this.a(world, structureboundingbox, 15 + i, i + 9, 43 - i, 42 - i, i + 9, 43 - i, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, WorldGenMonumentPieces.WorldGenMonumentPiece1.b, false); + } + + for (i = 21; i <= 36; i += 3) { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece1.d, i, 13, 38, structureboundingbox); + } + } + + } + } + + public abstract static class WorldGenMonumentPiece extends StructurePiece { + + protected static final IBlockData a = Blocks.PRISMARINE.fromLegacyData(BlockPrismarine.b); + protected static final IBlockData b = Blocks.PRISMARINE.fromLegacyData(BlockPrismarine.N); + protected static final IBlockData c = Blocks.PRISMARINE.fromLegacyData(BlockPrismarine.O); + protected static final IBlockData d = WorldGenMonumentPieces.WorldGenMonumentPiece.b; + protected static final IBlockData e = Blocks.SEA_LANTERN.getBlockData(); + protected static final IBlockData f = Blocks.WATER.getBlockData(); + protected static final int g = b(2, 0, 0); + protected static final int h = b(2, 2, 0); + protected static final int i = b(0, 1, 0); + protected static final int j = b(4, 1, 0); + protected WorldGenMonumentPieces.WorldGenMonumentStateTracker k; + + protected static final int b(int i, int j, int k) { + return j * 25 + k * 5 + i; + } + + public WorldGenMonumentPiece() { + super(0); + } + + public WorldGenMonumentPiece(int i) { + super(i); + } + + public WorldGenMonumentPiece(EnumDirection enumdirection, StructureBoundingBox structureboundingbox) { + super(1); + this.m = enumdirection; + this.l = structureboundingbox; + } + + protected WorldGenMonumentPiece(int i, EnumDirection enumdirection, WorldGenMonumentPieces.WorldGenMonumentStateTracker worldgenmonumentpieces_worldgenmonumentstatetracker, int j, int k, int l) { + super(i); + this.m = enumdirection; + this.k = worldgenmonumentpieces_worldgenmonumentstatetracker; + int i1 = worldgenmonumentpieces_worldgenmonumentstatetracker.a; + int j1 = i1 % 5; + int k1 = i1 / 5 % 5; + int l1 = i1 / 25; + + if (enumdirection != EnumDirection.NORTH && enumdirection != EnumDirection.SOUTH) { + this.l = new StructureBoundingBox(0, 0, 0, l * 8 - 1, k * 4 - 1, j * 8 - 1); + } else { + this.l = new StructureBoundingBox(0, 0, 0, j * 8 - 1, k * 4 - 1, l * 8 - 1); + } + + switch (WorldGenMonumentPieces.SyntheticClass_1.a[enumdirection.ordinal()]) { + case 1: + this.l.a(j1 * 8, l1 * 4, -(k1 + l) * 8 + 1); + break; + + case 2: + this.l.a(j1 * 8, l1 * 4, k1 * 8); + break; + + case 3: + this.l.a(-(k1 + l) * 8 + 1, l1 * 4, j1 * 8); + break; + + default: + this.l.a(k1 * 8, l1 * 4, j1 * 8); + } + + } + + protected void a(NBTTagCompound nbttagcompound) {} + + protected void b(NBTTagCompound nbttagcompound) {} + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1, boolean flag) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + if (!flag || this.a(world, l1, k1, i2, structureboundingbox).getBlock().getMaterial() != Material.AIR) { + if (this.d(k1) >= world.F()) { + this.a(world, Blocks.AIR.getBlockData(), l1, k1, i2, structureboundingbox); + } else { + this.a(world, WorldGenMonumentPieces.WorldGenMonumentPiece.f, l1, k1, i2, structureboundingbox); + } + } + } + } + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, boolean flag) { + if (flag) { + this.a(world, structureboundingbox, i + 0, 0, j + 0, i + 2, 0, j + 8 - 1, WorldGenMonumentPieces.WorldGenMonumentPiece.a, WorldGenMonumentPieces.WorldGenMonumentPiece.a, false); + this.a(world, structureboundingbox, i + 5, 0, j + 0, i + 8 - 1, 0, j + 8 - 1, WorldGenMonumentPieces.WorldGenMonumentPiece.a, WorldGenMonumentPieces.WorldGenMonumentPiece.a, false); + this.a(world, structureboundingbox, i + 3, 0, j + 0, i + 4, 0, j + 2, WorldGenMonumentPieces.WorldGenMonumentPiece.a, WorldGenMonumentPieces.WorldGenMonumentPiece.a, false); + this.a(world, structureboundingbox, i + 3, 0, j + 5, i + 4, 0, j + 8 - 1, WorldGenMonumentPieces.WorldGenMonumentPiece.a, WorldGenMonumentPieces.WorldGenMonumentPiece.a, false); + this.a(world, structureboundingbox, i + 3, 0, j + 2, i + 4, 0, j + 2, WorldGenMonumentPieces.WorldGenMonumentPiece.b, WorldGenMonumentPieces.WorldGenMonumentPiece.b, false); + this.a(world, structureboundingbox, i + 3, 0, j + 5, i + 4, 0, j + 5, WorldGenMonumentPieces.WorldGenMonumentPiece.b, WorldGenMonumentPieces.WorldGenMonumentPiece.b, false); + this.a(world, structureboundingbox, i + 2, 0, j + 3, i + 2, 0, j + 4, WorldGenMonumentPieces.WorldGenMonumentPiece.b, WorldGenMonumentPieces.WorldGenMonumentPiece.b, false); + this.a(world, structureboundingbox, i + 5, 0, j + 3, i + 5, 0, j + 4, WorldGenMonumentPieces.WorldGenMonumentPiece.b, WorldGenMonumentPieces.WorldGenMonumentPiece.b, false); + } else { + this.a(world, structureboundingbox, i + 0, 0, j + 0, i + 8 - 1, 0, j + 8 - 1, WorldGenMonumentPieces.WorldGenMonumentPiece.a, WorldGenMonumentPieces.WorldGenMonumentPiece.a, false); + } + + } + + protected void a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k, int l, int i1, int j1, IBlockData iblockdata) { + for (int k1 = j; k1 <= i1; ++k1) { + for (int l1 = i; l1 <= l; ++l1) { + for (int i2 = k; i2 <= j1; ++i2) { + if (this.a(world, l1, k1, i2, structureboundingbox) == WorldGenMonumentPieces.WorldGenMonumentPiece.f) { + this.a(world, iblockdata, l1, k1, i2, structureboundingbox); + } + } + } + } + + } + + protected boolean a(StructureBoundingBox structureboundingbox, int i, int j, int k, int l) { + int i1 = this.a(i, j); + int j1 = this.b(i, j); + int k1 = this.a(k, l); + int l1 = this.b(k, l); + + return structureboundingbox.a(Math.min(i1, k1), Math.min(j1, l1), Math.max(i1, k1), Math.max(j1, l1)); + } + + protected boolean a(World world, StructureBoundingBox structureboundingbox, int i, int j, int k) { + int l = this.a(i, k); + int i1 = this.d(j); + int j1 = this.b(i, k); + + if (structureboundingbox.b((BaseBlockPosition) (new BlockPosition(l, i1, j1)))) { + EntityGuardian entityguardian = new EntityGuardian(world); + + entityguardian.setElder(true); + entityguardian.heal(entityguardian.getMaxHealth()); + entityguardian.setPositionRotation((double) l + 0.5D, (double) i1, (double) j1 + 0.5D, 0.0F, 0.0F); + entityguardian.prepare(world.E(new BlockPosition(entityguardian)), (GroupDataEntity) null); + world.addEntity(entityguardian); + return true; + } else { + return false; + } + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMushrooms.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMushrooms.java new file mode 100644 index 0000000..d9d03c7 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenMushrooms.java @@ -0,0 +1,24 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenMushrooms extends WorldGenerator { + + private BlockPlant a; + + public WorldGenMushrooms(BlockPlant blockplant) { + this.a = blockplant; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && (!world.worldProvider.o() || blockposition1.getY() < 255) && this.a.f(world, blockposition1, this.a.getBlockData())) { + world.setTypeAndData(blockposition1, this.a.getBlockData(), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNether.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNether.java new file mode 100644 index 0000000..374cb3f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNether.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.List; +import java.util.Random; + +public class WorldGenNether extends StructureGenerator { + + private List d = Lists.newArrayList(); + + public WorldGenNether() { + this.d.add(new BiomeBase.BiomeMeta(EntityBlaze.class, 10, 2, 3)); + this.d.add(new BiomeBase.BiomeMeta(EntityPigZombie.class, 5, 4, 4)); + this.d.add(new BiomeBase.BiomeMeta(EntitySkeleton.class, 10, 4, 4)); + this.d.add(new BiomeBase.BiomeMeta(EntityMagmaCube.class, 3, 4, 4)); + } + + public String a() { + return "Fortress"; + } + + public List b() { + return this.d; + } + + protected boolean a(int i, int j) { + int k = i >> 4; + int l = j >> 4; + + this.b.setSeed((long) (k ^ l << 4) ^ this.c.getSeed()); + this.b.nextInt(); + return this.b.nextInt(3) != 0 ? false : (i != (k << 4) + 4 + this.b.nextInt(8) ? false : j == (l << 4) + 4 + this.b.nextInt(8)); + } + + protected StructureStart b(int i, int j) { + return new WorldGenNether.WorldGenNetherStart(this.c, this.b, i, j); + } + + public static class WorldGenNetherStart extends StructureStart { + + public WorldGenNetherStart() {} + + public WorldGenNetherStart(World world, Random random, int i, int j) { + super(i, j); + WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15 = new WorldGenNetherPieces.WorldGenNetherPiece15(random, (i << 4) + 2, (j << 4) + 2); + + this.a.add(worldgennetherpieces_worldgennetherpiece15); + worldgennetherpieces_worldgennetherpiece15.a((StructurePiece) worldgennetherpieces_worldgennetherpiece15, (List) this.a, random); + List list = worldgennetherpieces_worldgennetherpiece15.e; + + while (!list.isEmpty()) { + int k = random.nextInt(list.size()); + StructurePiece structurepiece = (StructurePiece) list.remove(k); + + structurepiece.a((StructurePiece) worldgennetherpieces_worldgennetherpiece15, (List) this.a, random); + } + + this.c(); + this.a(world, random, 48, 70); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNetherPieces.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNetherPieces.java new file mode 100644 index 0000000..95d84fe --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenNetherPieces.java @@ -0,0 +1,1241 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public class WorldGenNetherPieces { + + private static final WorldGenNetherPieces.WorldGenNetherPieceWeight[] a = new WorldGenNetherPieces.WorldGenNetherPieceWeight[] { new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece3.class, 30, 0, true), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece1.class, 10, 4), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece13.class, 10, 4), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece14.class, 10, 3), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece12.class, 5, 2), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece6.class, 5, 1)}; + private static final WorldGenNetherPieces.WorldGenNetherPieceWeight[] b = new WorldGenNetherPieces.WorldGenNetherPieceWeight[] { new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece9.class, 25, 0, true), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece7.class, 15, 5), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece10.class, 5, 10), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece8.class, 5, 10), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece4.class, 10, 3, true), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece5.class, 7, 2), new WorldGenNetherPieces.WorldGenNetherPieceWeight(WorldGenNetherPieces.WorldGenNetherPiece11.class, 5, 2)}; + + public static void a() { + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece1.class, "NeBCr"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece2.class, "NeBEF"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece3.class, "NeBS"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece4.class, "NeCCS"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece5.class, "NeCTB"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece6.class, "NeCE"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece7.class, "NeSCSC"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece8.class, "NeSCLT"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece9.class, "NeSC"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece10.class, "NeSCRT"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece11.class, "NeCSR"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece12.class, "NeMT"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece13.class, "NeRC"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece14.class, "NeSR"); + WorldGenFactory.a(WorldGenNetherPieces.WorldGenNetherPiece15.class, "NeStart"); + } + + private static WorldGenNetherPieces.WorldGenNetherPiece b(WorldGenNetherPieces.WorldGenNetherPieceWeight worldgennetherpieces_worldgennetherpieceweight, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + Class oclass = worldgennetherpieces_worldgennetherpieceweight.a; + Object object = null; + + if (oclass == WorldGenNetherPieces.WorldGenNetherPiece3.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece3.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece1.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece1.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece13.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece13.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece14.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece14.a(list, random, i, j, k, l, enumdirection); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece12.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece12.a(list, random, i, j, k, l, enumdirection); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece6.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece6.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece9.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece9.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece10.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece10.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece8.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece8.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece4.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece4.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece5.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece5.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece7.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece7.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenNetherPieces.WorldGenNetherPiece11.class) { + object = WorldGenNetherPieces.WorldGenNetherPiece11.a(list, random, i, j, k, enumdirection, l); + } + + return (WorldGenNetherPieces.WorldGenNetherPiece) object; + } + + static class SyntheticClass_1 { + + static final int[] a = new int[EnumDirection.values().length]; + + static { + try { + WorldGenNetherPieces.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + WorldGenNetherPieces.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + WorldGenNetherPieces.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + WorldGenNetherPieces.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + } + } + + public static class WorldGenNetherPiece5 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece5() {} + + public WorldGenNetherPiece5(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + byte b0 = 1; + + if (this.m == EnumDirection.WEST || this.m == EnumDirection.NORTH) { + b0 = 5; + } + + this.b((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, b0, random.nextInt(8) > 0); + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, b0, random.nextInt(8) > 0); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece5 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -3, 0, 0, 9, 7, 9, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece5(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 8, 1, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 8, 5, 8, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 6, 0, 8, 6, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 2, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 2, 0, 8, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 3, 0, 1, 4, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 7, 3, 0, 7, 4, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 4, 8, 2, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 1, 4, 2, 2, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 6, 1, 4, 7, 2, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 8, 8, 3, 8, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 6, 0, 3, 7, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 8, 3, 6, 8, 3, 7, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 4, 0, 5, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 3, 4, 8, 5, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 3, 5, 2, 5, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 3, 5, 7, 5, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 4, 5, 1, 5, 5, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 7, 4, 5, 7, 5, 5, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + + for (int i = 0; i <= 5; ++i) { + for (int j = 0; j <= 8; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), j, -1, i, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece4 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece4() {} + + public WorldGenNetherPiece4(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 1, 0, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece4 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -7, 0, 5, 14, 10, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece4(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + int i = this.a(Blocks.NETHER_BRICK_STAIRS, 2); + + for (int j = 0; j <= 9; ++j) { + int k = Math.max(1, 7 - j); + int l = Math.min(Math.max(k + 5, 14 - j), 13); + int i1 = j; + + this.a(world, structureboundingbox, 0, 0, j, 4, k, j, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, k + 1, j, 3, l - 1, j, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + if (j <= 6) { + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(i), 1, k + 1, j, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(i), 2, k + 1, j, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(i), 3, k + 1, j, structureboundingbox); + } + + this.a(world, structureboundingbox, 0, l, j, 4, l, j, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, k + 1, j, 0, l - 1, j, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, k + 1, j, 4, l - 1, j, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + if ((j & 1) == 0) { + this.a(world, structureboundingbox, 0, k + 2, j, 0, k + 3, j, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, k + 2, j, 4, k + 3, j, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + } + + for (int j1 = 0; j1 <= 4; ++j1) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), j1, -1, i1, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece8 extends WorldGenNetherPieces.WorldGenNetherPiece { + + private boolean b; + + public WorldGenNetherPiece8() {} + + public WorldGenNetherPiece8(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + this.b = random.nextInt(3) == 0; + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getBoolean("Chest"); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Chest", this.b); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.b((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 1, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece8 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, 0, 0, 5, 7, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece8(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 4, 1, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 4, 5, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 0, 4, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 1, 4, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 3, 4, 4, 3, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 4, 3, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 3, 4, 1, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 3, 3, 4, 3, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + if (this.b && structureboundingbox.b((BaseBlockPosition) (new BlockPosition(this.a(3, 3), this.d(2), this.b(3, 3))))) { + this.b = false; + this.a(world, structureboundingbox, random, 3, 2, 3, WorldGenNetherPieces.WorldGenNetherPiece8.a, 2 + random.nextInt(4)); + } + + this.a(world, structureboundingbox, 0, 6, 0, 4, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (int i = 0; i <= 4; ++i) { + for (int j = 0; j <= 4; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece10 extends WorldGenNetherPieces.WorldGenNetherPiece { + + private boolean b; + + public WorldGenNetherPiece10() {} + + public WorldGenNetherPiece10(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + this.b = random.nextInt(3) == 0; + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getBoolean("Chest"); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Chest", this.b); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 1, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece10 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, 0, 0, 5, 7, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece10(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 4, 1, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 4, 5, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 1, 0, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 3, 0, 4, 3, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 0, 4, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 4, 4, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 3, 4, 1, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 3, 3, 4, 3, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + if (this.b && structureboundingbox.b((BaseBlockPosition) (new BlockPosition(this.a(1, 3), this.d(2), this.b(1, 3))))) { + this.b = false; + this.a(world, structureboundingbox, random, 1, 2, 3, WorldGenNetherPieces.WorldGenNetherPiece10.a, 2 + random.nextInt(4)); + } + + this.a(world, structureboundingbox, 0, 6, 0, 4, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (int i = 0; i <= 4; ++i) { + for (int j = 0; j <= 4; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece7 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece7() {} + + public WorldGenNetherPiece7(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 1, 0, true); + this.b((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 1, true); + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 1, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece7 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, 0, 0, 5, 7, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece7(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 4, 1, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 4, 5, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 0, 4, 5, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 4, 0, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 4, 4, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 6, 0, 4, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (int i = 0; i <= 4; ++i) { + for (int j = 0; j <= 4; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece9 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece9() {} + + public WorldGenNetherPiece9(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 1, 0, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece9 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, 0, 0, 5, 7, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece9(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 4, 1, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 4, 5, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 0, 4, 5, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 1, 0, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 3, 0, 4, 3, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 1, 4, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 3, 4, 4, 3, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 6, 0, 4, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (int i = 0; i <= 4; ++i) { + for (int j = 0; j <= 4; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece11 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece11() {} + + public WorldGenNetherPiece11(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 5, 3, true); + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 5, 11, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece11 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -5, -3, 0, 13, 14, 13, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece11(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 3, 0, 12, 4, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 0, 12, 13, 12, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 0, 1, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 0, 12, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 11, 4, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 11, 10, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 9, 11, 7, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 0, 4, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 0, 10, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 9, 0, 7, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 11, 2, 10, 12, 10, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + int i; + + for (i = 1; i <= 11; i += 2) { + this.a(world, structureboundingbox, i, 10, 0, i, 11, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, i, 10, 12, i, 11, 12, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 10, i, 0, 11, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 12, 10, i, 12, 11, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), i, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), i, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 0, 13, i, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 12, 13, i, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), i + 1, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), i + 1, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, i + 1, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 12, 13, i + 1, structureboundingbox); + } + + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 12, 13, 0, structureboundingbox); + + for (i = 3; i <= 9; i += 2) { + this.a(world, structureboundingbox, 1, 7, i, 1, 8, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 11, 7, i, 11, 8, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + } + + i = this.a(Blocks.NETHER_BRICK_STAIRS, 3); + + int j; + int k; + int l; + + for (j = 0; j <= 6; ++j) { + k = j + 4; + + for (l = 5; l <= 7; ++l) { + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(i), l, 5 + j, k, structureboundingbox); + } + + if (k >= 5 && k <= 8) { + this.a(world, structureboundingbox, 5, 5, k, 7, j + 4, k, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + } else if (k >= 9 && k <= 10) { + this.a(world, structureboundingbox, 5, 8, k, 7, j + 4, k, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + } + + if (j >= 1) { + this.a(world, structureboundingbox, 5, 6 + j, k, 7, 9 + j, k, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + } + + for (j = 5; j <= 7; ++j) { + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(i), j, 12, 11, structureboundingbox); + } + + this.a(world, structureboundingbox, 5, 6, 7, 5, 7, 7, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 7, 6, 7, 7, 7, 7, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 5, 13, 12, 7, 13, 12, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 2, 3, 5, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 9, 3, 5, 10, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 4, 2, 5, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 9, 5, 2, 10, 5, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 9, 5, 9, 10, 5, 10, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 10, 5, 4, 10, 5, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + j = this.a(Blocks.NETHER_BRICK_STAIRS, 0); + k = this.a(Blocks.NETHER_BRICK_STAIRS, 1); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(k), 4, 5, 2, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(k), 4, 5, 3, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(k), 4, 5, 9, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(k), 4, 5, 10, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(j), 8, 5, 2, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(j), 8, 5, 3, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(j), 8, 5, 9, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_STAIRS.fromLegacyData(j), 8, 5, 10, structureboundingbox); + this.a(world, structureboundingbox, 3, 4, 4, 4, 4, 8, Blocks.SOUL_SAND.getBlockData(), Blocks.SOUL_SAND.getBlockData(), false); + this.a(world, structureboundingbox, 8, 4, 4, 9, 4, 8, Blocks.SOUL_SAND.getBlockData(), Blocks.SOUL_SAND.getBlockData(), false); + this.a(world, structureboundingbox, 3, 5, 4, 4, 5, 8, Blocks.NETHER_WART.getBlockData(), Blocks.NETHER_WART.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 4, 9, 5, 8, Blocks.NETHER_WART.getBlockData(), Blocks.NETHER_WART.getBlockData(), false); + this.a(world, structureboundingbox, 4, 2, 0, 8, 2, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 4, 12, 2, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 0, 0, 8, 1, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 0, 9, 8, 1, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 4, 3, 1, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 9, 0, 4, 12, 1, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + int i1; + + for (l = 4; l <= 8; ++l) { + for (i1 = 0; i1 <= 2; ++i1) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), l, -1, i1, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), l, -1, 12 - i1, structureboundingbox); + } + } + + for (l = 0; l <= 2; ++l) { + for (i1 = 4; i1 <= 8; ++i1) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), l, -1, i1, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), 12 - l, -1, i1, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece6 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece6() {} + + public WorldGenNetherPiece6(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 5, 3, true); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece6 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -5, -3, 0, 13, 14, 13, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece6(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 3, 0, 12, 4, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 0, 12, 13, 12, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 0, 1, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 0, 12, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 11, 4, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 11, 10, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 9, 11, 7, 12, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 0, 4, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 0, 10, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 9, 0, 7, 12, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 11, 2, 10, 12, 10, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 8, 0, 7, 8, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + + int i; + + for (i = 1; i <= 11; i += 2) { + this.a(world, structureboundingbox, i, 10, 0, i, 11, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, i, 10, 12, i, 11, 12, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 10, i, 0, 11, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 12, 10, i, 12, 11, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), i, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), i, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 0, 13, i, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 12, 13, i, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), i + 1, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), i + 1, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, i + 1, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 12, 13, i + 1, structureboundingbox); + } + + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 12, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 0, 13, 0, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 12, 13, 0, structureboundingbox); + + for (i = 3; i <= 9; i += 2) { + this.a(world, structureboundingbox, 1, 7, i, 1, 8, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 11, 7, i, 11, 8, i, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + } + + this.a(world, structureboundingbox, 4, 2, 0, 8, 2, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 4, 12, 2, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 0, 0, 8, 1, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 0, 9, 8, 1, 12, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 4, 3, 1, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 9, 0, 4, 12, 1, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + int j; + + for (i = 4; i <= 8; ++i) { + for (j = 0; j <= 2; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, 12 - j, structureboundingbox); + } + } + + for (i = 0; i <= 2; ++i) { + for (j = 4; j <= 8; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), 12 - i, -1, j, structureboundingbox); + } + } + + this.a(world, structureboundingbox, 5, 5, 5, 7, 5, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 1, 6, 6, 4, 6, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 6, 0, 6, structureboundingbox); + this.a(world, Blocks.FLOWING_LAVA.getBlockData(), 6, 5, 6, structureboundingbox); + BlockPosition blockposition = new BlockPosition(this.a(6, 6), this.d(5), this.b(6, 6)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + world.a((Block) Blocks.FLOWING_LAVA, blockposition, random); + } + + return true; + } + } + + public static class WorldGenNetherPiece12 extends WorldGenNetherPieces.WorldGenNetherPiece { + + private boolean b; + + public WorldGenNetherPiece12() {} + + public WorldGenNetherPiece12(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getBoolean("Mob"); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Mob", this.b); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece12 a(List list, Random random, int i, int j, int k, int l, EnumDirection enumdirection) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -2, 0, 0, 7, 8, 9, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece12(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 2, 0, 6, 7, 7, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 1, 0, 0, 5, 1, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 1, 5, 2, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 3, 2, 5, 3, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 4, 3, 5, 4, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 0, 1, 4, 2, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 2, 0, 5, 4, 2, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 5, 2, 1, 5, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 5, 2, 5, 5, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 3, 0, 5, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 5, 3, 6, 5, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 5, 8, 5, 5, 8, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 1, 6, 3, structureboundingbox); + this.a(world, Blocks.NETHER_BRICK_FENCE.getBlockData(), 5, 6, 3, structureboundingbox); + this.a(world, structureboundingbox, 0, 6, 3, 0, 6, 8, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 6, 6, 3, 6, 6, 8, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 1, 6, 8, 5, 7, 8, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 2, 8, 8, 4, 8, 8, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + if (!this.b) { + BlockPosition blockposition = new BlockPosition(this.a(3, 5), this.d(5), this.b(3, 5)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + this.b = true; + world.setTypeAndData(blockposition, Blocks.MOB_SPAWNER.getBlockData(), 2); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityMobSpawner) { + ((TileEntityMobSpawner) tileentity).getSpawner().setMobName("Blaze"); + } + } + } + + for (int i = 0; i <= 6; ++i) { + for (int j = 0; j <= 6; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece14 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece14() {} + + public WorldGenNetherPiece14(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 6, 2, false); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece14 a(List list, Random random, int i, int j, int k, int l, EnumDirection enumdirection) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -2, 0, 0, 7, 11, 7, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece14(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 6, 1, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 6, 10, 6, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 1, 8, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 2, 0, 6, 8, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 1, 0, 8, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 2, 1, 6, 8, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 6, 5, 8, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 2, 0, 5, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 6, 3, 2, 6, 5, 2, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 6, 3, 4, 6, 5, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, Blocks.NETHER_BRICK.getBlockData(), 5, 2, 5, structureboundingbox); + this.a(world, structureboundingbox, 4, 2, 5, 4, 3, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 3, 2, 5, 3, 4, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 2, 5, 2, 5, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 5, 1, 6, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 7, 1, 5, 7, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 8, 2, 6, 8, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 2, 6, 0, 4, 8, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 0, 4, 5, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + + for (int i = 0; i <= 6; ++i) { + for (int j = 0; j <= 6; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece13 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece13() {} + + public WorldGenNetherPiece13(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 2, 0, false); + this.b((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 2, false); + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 0, 2, false); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece13 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -2, 0, 0, 7, 9, 7, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece13(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 6, 1, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 6, 7, 6, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 1, 6, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 6, 1, 6, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 2, 0, 6, 6, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 5, 2, 6, 6, 6, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 0, 6, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 5, 0, 6, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 2, 0, 6, 6, 1, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 2, 5, 6, 6, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 6, 0, 4, 6, 0, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 0, 4, 5, 0, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 2, 6, 6, 4, 6, 6, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 2, 5, 6, 4, 5, 6, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 6, 2, 0, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 2, 0, 5, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 6, 6, 2, 6, 6, 4, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 6, 5, 2, 6, 5, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + + for (int i = 0; i <= 6; ++i) { + for (int j = 0; j <= 6; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece1 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece1() {} + + public WorldGenNetherPiece1(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + protected WorldGenNetherPiece1(Random random, int i, int j) { + super(0); + this.m = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random); + switch (WorldGenNetherPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + case 2: + this.l = new StructureBoundingBox(i, 64, j, i + 19 - 1, 73, j + 19 - 1); + break; + + default: + this.l = new StructureBoundingBox(i, 64, j, i + 19 - 1, 73, j + 19 - 1); + } + + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 8, 3, false); + this.b((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 3, 8, false); + this.c((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 3, 8, false); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece1 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -8, -3, 0, 19, 10, 19, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece1(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 7, 3, 0, 11, 4, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 7, 18, 4, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 0, 10, 7, 18, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 8, 18, 7, 10, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 7, 5, 0, 7, 5, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 7, 5, 11, 7, 5, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 0, 11, 5, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 11, 11, 5, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 7, 7, 5, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 7, 18, 5, 7, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 11, 7, 5, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 11, 5, 11, 18, 5, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 7, 2, 0, 11, 2, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 7, 2, 13, 11, 2, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 7, 0, 0, 11, 1, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 7, 0, 15, 11, 1, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + int i; + int j; + + for (i = 7; i <= 11; ++i) { + for (j = 0; j <= 2; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, 18 - j, structureboundingbox); + } + } + + this.a(world, structureboundingbox, 0, 2, 7, 5, 2, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 13, 2, 7, 18, 2, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 7, 3, 1, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 15, 0, 7, 18, 1, 11, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (i = 0; i <= 2; ++i) { + for (j = 7; j <= 11; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), 18 - i, -1, j, structureboundingbox); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece2 extends WorldGenNetherPieces.WorldGenNetherPiece { + + private int b; + + public WorldGenNetherPiece2() {} + + public WorldGenNetherPiece2(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + this.b = random.nextInt(); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece2 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -3, 0, 5, 10, 8, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece2(l, random, structureboundingbox, enumdirection) : null; + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getInt("Seed"); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setInt("Seed", this.b); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + Random random1 = new Random((long) this.b); + + int i; + int j; + int k; + + for (i = 0; i <= 4; ++i) { + for (j = 3; j <= 4; ++j) { + k = random1.nextInt(8); + this.a(world, structureboundingbox, i, j, 0, i, j, k, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + } + } + + i = random1.nextInt(8); + this.a(world, structureboundingbox, 0, 5, 0, 0, 5, i, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + i = random1.nextInt(8); + this.a(world, structureboundingbox, 4, 5, 0, 4, 5, i, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (i = 0; i <= 4; ++i) { + j = random1.nextInt(5); + this.a(world, structureboundingbox, i, 2, 0, i, 2, j, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + } + + for (i = 0; i <= 4; ++i) { + for (j = 0; j <= 1; ++j) { + k = random1.nextInt(3); + this.a(world, structureboundingbox, i, j, 0, i, j, k, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + } + } + + return true; + } + } + + public static class WorldGenNetherPiece3 extends WorldGenNetherPieces.WorldGenNetherPiece { + + public WorldGenNetherPiece3() {} + + public WorldGenNetherPiece3(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenNetherPieces.WorldGenNetherPiece15) structurepiece, list, random, 1, 3, false); + } + + public static WorldGenNetherPieces.WorldGenNetherPiece3 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -3, 0, 5, 10, 19, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenNetherPieces.WorldGenNetherPiece3(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 3, 0, 4, 4, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 1, 5, 0, 3, 7, 18, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 5, 0, 0, 5, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 4, 5, 0, 4, 5, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 0, 4, 2, 5, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 2, 13, 4, 2, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 0, 4, 1, 3, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + this.a(world, structureboundingbox, 0, 0, 15, 4, 1, 18, Blocks.NETHER_BRICK.getBlockData(), Blocks.NETHER_BRICK.getBlockData(), false); + + for (int i = 0; i <= 4; ++i) { + for (int j = 0; j <= 2; ++j) { + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, j, structureboundingbox); + this.b(world, Blocks.NETHER_BRICK.getBlockData(), i, -1, 18 - j, structureboundingbox); + } + } + + this.a(world, structureboundingbox, 0, 1, 1, 0, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 4, 0, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 3, 14, 0, 4, 14, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 0, 1, 17, 0, 4, 17, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 1, 1, 4, 4, 1, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 4, 4, 4, 4, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 3, 14, 4, 4, 14, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 1, 17, 4, 4, 17, Blocks.NETHER_BRICK_FENCE.getBlockData(), Blocks.NETHER_BRICK_FENCE.getBlockData(), false); + return true; + } + } + + public static class WorldGenNetherPiece15 extends WorldGenNetherPieces.WorldGenNetherPiece1 { + + public WorldGenNetherPieces.WorldGenNetherPieceWeight b; + public List c; + public List d; + public List e = Lists.newArrayList(); + + public WorldGenNetherPiece15() {} + + public WorldGenNetherPiece15(Random random, int i, int j) { + super(random, i, j); + this.c = Lists.newArrayList(); + WorldGenNetherPieces.WorldGenNetherPieceWeight[] aworldgennetherpieces_worldgennetherpieceweight = WorldGenNetherPieces.a; + int k = aworldgennetherpieces_worldgennetherpieceweight.length; + + int l; + WorldGenNetherPieces.WorldGenNetherPieceWeight worldgennetherpieces_worldgennetherpieceweight; + + for (l = 0; l < k; ++l) { + worldgennetherpieces_worldgennetherpieceweight = aworldgennetherpieces_worldgennetherpieceweight[l]; + worldgennetherpieces_worldgennetherpieceweight.c = 0; + this.c.add(worldgennetherpieces_worldgennetherpieceweight); + } + + this.d = Lists.newArrayList(); + aworldgennetherpieces_worldgennetherpieceweight = WorldGenNetherPieces.b; + k = aworldgennetherpieces_worldgennetherpieceweight.length; + + for (l = 0; l < k; ++l) { + worldgennetherpieces_worldgennetherpieceweight = aworldgennetherpieces_worldgennetherpieceweight[l]; + worldgennetherpieces_worldgennetherpieceweight.c = 0; + this.d.add(worldgennetherpieces_worldgennetherpieceweight); + } + + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + } + } + + abstract static class WorldGenNetherPiece extends StructurePiece { + + protected static final List a = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.DIAMOND, 0, 1, 3, 5), new StructurePieceTreasure(Items.IRON_INGOT, 0, 1, 5, 5), new StructurePieceTreasure(Items.GOLD_INGOT, 0, 1, 3, 15), new StructurePieceTreasure(Items.GOLDEN_SWORD, 0, 1, 1, 5), new StructurePieceTreasure(Items.GOLDEN_CHESTPLATE, 0, 1, 1, 5), new StructurePieceTreasure(Items.FLINT_AND_STEEL, 0, 1, 1, 5), new StructurePieceTreasure(Items.NETHER_WART, 0, 3, 7, 5), new StructurePieceTreasure(Items.SADDLE, 0, 1, 1, 10), new StructurePieceTreasure(Items.GOLDEN_HORSE_ARMOR, 0, 1, 1, 8), new StructurePieceTreasure(Items.IRON_HORSE_ARMOR, 0, 1, 1, 5), new StructurePieceTreasure(Items.DIAMOND_HORSE_ARMOR, 0, 1, 1, 3), new StructurePieceTreasure(Item.getItemOf(Blocks.OBSIDIAN), 0, 2, 4, 2)}); + + public WorldGenNetherPiece() {} + + protected WorldGenNetherPiece(int i) { + super(i); + } + + protected void b(NBTTagCompound nbttagcompound) {} + + protected void a(NBTTagCompound nbttagcompound) {} + + private int a(List list) { + boolean flag = false; + int i = 0; + + WorldGenNetherPieces.WorldGenNetherPieceWeight worldgennetherpieces_worldgennetherpieceweight; + + for (Iterator iterator = list.iterator(); iterator.hasNext(); i += worldgennetherpieces_worldgennetherpieceweight.b) { + worldgennetherpieces_worldgennetherpieceweight = (WorldGenNetherPieces.WorldGenNetherPieceWeight) iterator.next(); + if (worldgennetherpieces_worldgennetherpieceweight.d > 0 && worldgennetherpieces_worldgennetherpieceweight.c < worldgennetherpieces_worldgennetherpieceweight.d) { + flag = true; + } + } + + return flag ? i : -1; + } + + private WorldGenNetherPieces.WorldGenNetherPiece a(WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15, List list, List list1, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + int i1 = this.a(list); + boolean flag = i1 > 0 && l <= 30; + int j1 = 0; + + while (j1 < 5 && flag) { + ++j1; + int k1 = random.nextInt(i1); + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + WorldGenNetherPieces.WorldGenNetherPieceWeight worldgennetherpieces_worldgennetherpieceweight = (WorldGenNetherPieces.WorldGenNetherPieceWeight) iterator.next(); + + k1 -= worldgennetherpieces_worldgennetherpieceweight.b; + if (k1 < 0) { + if (!worldgennetherpieces_worldgennetherpieceweight.a(l) || worldgennetherpieces_worldgennetherpieceweight == worldgennetherpieces_worldgennetherpiece15.b && !worldgennetherpieces_worldgennetherpieceweight.e) { + break; + } + + WorldGenNetherPieces.WorldGenNetherPiece worldgennetherpieces_worldgennetherpiece = WorldGenNetherPieces.b(worldgennetherpieces_worldgennetherpieceweight, list1, random, i, j, k, enumdirection, l); + + if (worldgennetherpieces_worldgennetherpiece != null) { + ++worldgennetherpieces_worldgennetherpieceweight.c; + worldgennetherpieces_worldgennetherpiece15.b = worldgennetherpieces_worldgennetherpieceweight; + if (!worldgennetherpieces_worldgennetherpieceweight.a()) { + list.remove(worldgennetherpieces_worldgennetherpieceweight); + } + + return worldgennetherpieces_worldgennetherpiece; + } + } + } + } + + return WorldGenNetherPieces.WorldGenNetherPiece2.a(list1, random, i, j, k, enumdirection, l); + } + + private StructurePiece a(WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l, boolean flag) { + if (Math.abs(i - worldgennetherpieces_worldgennetherpiece15.c().a) <= 112 && Math.abs(k - worldgennetherpieces_worldgennetherpiece15.c().c) <= 112) { + List list1 = worldgennetherpieces_worldgennetherpiece15.c; + + if (flag) { + list1 = worldgennetherpieces_worldgennetherpiece15.d; + } + + WorldGenNetherPieces.WorldGenNetherPiece worldgennetherpieces_worldgennetherpiece = this.a(worldgennetherpieces_worldgennetherpiece15, list1, list, random, i, j, k, enumdirection, l + 1); + + if (worldgennetherpieces_worldgennetherpiece != null) { + list.add(worldgennetherpieces_worldgennetherpiece); + worldgennetherpieces_worldgennetherpiece15.e.add(worldgennetherpieces_worldgennetherpiece); + } + + return worldgennetherpieces_worldgennetherpiece; + } else { + return WorldGenNetherPieces.WorldGenNetherPiece2.a(list, random, i, j, k, enumdirection, l); + } + } + + protected StructurePiece a(WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15, List list, Random random, int i, int j, boolean flag) { + if (this.m != null) { + switch (WorldGenNetherPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + i, this.l.b + j, this.l.c - 1, this.m, this.d(), flag); + + case 2: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + i, this.l.b + j, this.l.f + 1, this.m, this.d(), flag); + + case 3: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a - 1, this.l.b + j, this.l.c + i, this.m, this.d(), flag); + + case 4: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.d + 1, this.l.b + j, this.l.c + i, this.m, this.d(), flag); + } + } + + return null; + } + + protected StructurePiece b(WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15, List list, Random random, int i, int j, boolean flag) { + if (this.m != null) { + switch (WorldGenNetherPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a - 1, this.l.b + i, this.l.c + j, EnumDirection.WEST, this.d(), flag); + + case 2: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a - 1, this.l.b + i, this.l.c + j, EnumDirection.WEST, this.d(), flag); + + case 3: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + j, this.l.b + i, this.l.c - 1, EnumDirection.NORTH, this.d(), flag); + + case 4: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + j, this.l.b + i, this.l.c - 1, EnumDirection.NORTH, this.d(), flag); + } + } + + return null; + } + + protected StructurePiece c(WorldGenNetherPieces.WorldGenNetherPiece15 worldgennetherpieces_worldgennetherpiece15, List list, Random random, int i, int j, boolean flag) { + if (this.m != null) { + switch (WorldGenNetherPieces.SyntheticClass_1.a[this.m.ordinal()]) { + case 1: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.d + 1, this.l.b + i, this.l.c + j, EnumDirection.EAST, this.d(), flag); + + case 2: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.d + 1, this.l.b + i, this.l.c + j, EnumDirection.EAST, this.d(), flag); + + case 3: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + j, this.l.b + i, this.l.f + 1, EnumDirection.SOUTH, this.d(), flag); + + case 4: + return this.a(worldgennetherpieces_worldgennetherpiece15, list, random, this.l.a + j, this.l.b + i, this.l.f + 1, EnumDirection.SOUTH, this.d(), flag); + } + } + + return null; + } + + protected static boolean a(StructureBoundingBox structureboundingbox) { + return structureboundingbox != null && structureboundingbox.b > 10; + } + } + + static class WorldGenNetherPieceWeight { + + public Class a; + public final int b; + public int c; + public int d; + public boolean e; + + public WorldGenNetherPieceWeight(Class oclass, int i, int j, boolean flag) { + this.a = oclass; + this.b = i; + this.d = j; + this.e = flag; + } + + public WorldGenNetherPieceWeight(Class oclass, int i, int j) { + this(oclass, i, j, false); + } + + public boolean a(int i) { + return this.d == 0 || this.c < this.d; + } + + public boolean a() { + return this.d == 0 || this.c < this.d; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce1.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce1.java new file mode 100644 index 0000000..7d517f2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce1.java @@ -0,0 +1,47 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenPackedIce1 extends WorldGenerator { + + private Block a; + private int b; + + public WorldGenPackedIce1(int i) { + this.a = Blocks.PACKED_ICE; + this.b = i; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + while (world.isEmpty(blockposition) && blockposition.getY() > 2) { + blockposition = blockposition.down(); + } + + if (world.getType(blockposition).getBlock() != Blocks.SNOW) { + return false; + } else { + int i = random.nextInt(this.b - 2) + 2; + byte b0 = 1; + + for (int j = blockposition.getX() - i; j <= blockposition.getX() + i; ++j) { + for (int k = blockposition.getZ() - i; k <= blockposition.getZ() + i; ++k) { + int l = j - blockposition.getX(); + int i1 = k - blockposition.getZ(); + + if (l * l + i1 * i1 <= i * i) { + for (int j1 = blockposition.getY() - b0; j1 <= blockposition.getY() + b0; ++j1) { + BlockPosition blockposition1 = new BlockPosition(j, j1, k); + Block block = world.getType(blockposition1).getBlock(); + + if (block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) { + world.setTypeAndData(blockposition1, this.a.getBlockData(), 2); + } + } + } + } + } + + return true; + } + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce2.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce2.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce2.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPackedIce2.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPumpkin.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPumpkin.java new file mode 100644 index 0000000..4e85318 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenPumpkin.java @@ -0,0 +1,20 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenPumpkin extends WorldGenerator { + + public WorldGenPumpkin() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && world.getType(blockposition1.down()).getBlock() == Blocks.GRASS && Blocks.PUMPKIN.canPlace(world, blockposition1)) { + world.setTypeAndData(blockposition1, Blocks.PUMPKIN.getBlockData().set(BlockPumpkin.FACING, EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random)), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenReed.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenReed.java new file mode 100644 index 0000000..f53ff2b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenReed.java @@ -0,0 +1,30 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenReed extends WorldGenerator { + + public WorldGenReed() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 20; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(4) - random.nextInt(4), 0, random.nextInt(4) - random.nextInt(4)); + + if (world.isEmpty(blockposition1)) { + BlockPosition blockposition2 = blockposition1.down(); + + if (world.getType(blockposition2.west()).getBlock().getMaterial() == Material.WATER || world.getType(blockposition2.east()).getBlock().getMaterial() == Material.WATER || world.getType(blockposition2.north()).getBlock().getMaterial() == Material.WATER || world.getType(blockposition2.south()).getBlock().getMaterial() == Material.WATER) { + int j = 2 + random.nextInt(random.nextInt(3) + 1); + + for (int k = 0; k < j; ++k) { + if (Blocks.REEDS.e(world, blockposition1)) { + world.setTypeAndData(blockposition1.up(k), Blocks.REEDS.getBlockData(), 2); + } + } + } + } + } + + return true; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenRegistration.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenRegistration.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenRegistration.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenRegistration.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSand.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSand.java new file mode 100644 index 0000000..4c4fe31 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSand.java @@ -0,0 +1,43 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenSand extends WorldGenerator { + + private Block a; + private int b; + + public WorldGenSand(Block block, int i) { + this.a = block; + this.b = i; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + if (world.getType(blockposition).getBlock().getMaterial() != Material.WATER) { + return false; + } else { + int i = random.nextInt(this.b - 2) + 2; + byte b0 = 2; + + for (int j = blockposition.getX() - i; j <= blockposition.getX() + i; ++j) { + for (int k = blockposition.getZ() - i; k <= blockposition.getZ() + i; ++k) { + int l = j - blockposition.getX(); + int i1 = k - blockposition.getZ(); + + if (l * l + i1 * i1 <= i * i) { + for (int j1 = blockposition.getY() - b0; j1 <= blockposition.getY() + b0; ++j1) { + BlockPosition blockposition1 = new BlockPosition(j, j1, k); + Block block = world.getType(blockposition1).getBlock(); + + if (block == Blocks.DIRT || block == Blocks.GRASS) { + world.setTypeAndData(blockposition1, this.a.getBlockData(), 2); + } + } + } + } + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStronghold.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStronghold.java new file mode 100644 index 0000000..6b663ce --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStronghold.java @@ -0,0 +1,153 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Map.Entry; + +public class WorldGenStronghold extends StructureGenerator { + + private List d; + private boolean f; + private ChunkCoordIntPair[] g; + private double h; + private int i; + + public WorldGenStronghold() { + this.g = new ChunkCoordIntPair[3]; + this.h = 32.0D; + this.i = 3; + this.d = Lists.newArrayList(); + BiomeBase[] abiomebase = BiomeBase.getBiomes(); + int i = abiomebase.length; + + for (int j = 0; j < i; ++j) { + BiomeBase biomebase = abiomebase[j]; + + if (biomebase != null && biomebase.an > 0.0F) { + this.d.add(biomebase); + } + } + + } + + public WorldGenStronghold(Map map) { + this(); + Iterator iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = (Entry) iterator.next(); + + if (((String) entry.getKey()).equals("distance")) { + this.h = MathHelper.a((String) entry.getValue(), this.h, 1.0D); + } else if (((String) entry.getKey()).equals("count")) { + this.g = new ChunkCoordIntPair[MathHelper.a((String) entry.getValue(), this.g.length, 1)]; + } else if (((String) entry.getKey()).equals("spread")) { + this.i = MathHelper.a((String) entry.getValue(), this.i, 1); + } + } + + } + + public String a() { + return "Stronghold"; + } + + protected boolean a(int i, int j) { + if (!this.f) { + Random random = new Random(); + + random.setSeed(this.c.getSeed()); + double d0 = random.nextDouble() * 3.141592653589793D * 2.0D; + int k = 1; + + for (int l = 0; l < this.g.length; ++l) { + double d1 = (1.25D * (double) k + random.nextDouble()) * this.h * (double) k; + int i1 = (int) Math.round(Math.cos(d0) * d1); + int j1 = (int) Math.round(Math.sin(d0) * d1); + BlockPosition blockposition = this.c.getWorldChunkManager().a((i1 << 4) + 8, (j1 << 4) + 8, 112, this.d, random); + + if (blockposition != null) { + i1 = blockposition.getX() >> 4; + j1 = blockposition.getZ() >> 4; + } + + this.g[l] = new ChunkCoordIntPair(i1, j1); + d0 += 6.283185307179586D * (double) k / (double) this.i; + if (l == this.i) { + k += 2 + random.nextInt(5); + this.i += 1 + random.nextInt(2); + } + } + + this.f = true; + } + + ChunkCoordIntPair[] achunkcoordintpair = this.g; + int k1 = achunkcoordintpair.length; + + for (int l1 = 0; l1 < k1; ++l1) { + ChunkCoordIntPair chunkcoordintpair = achunkcoordintpair[l1]; + + if (i == chunkcoordintpair.x && j == chunkcoordintpair.z) { + return true; + } + } + + return false; + } + + protected List z_() { + ArrayList arraylist = Lists.newArrayList(); + ChunkCoordIntPair[] achunkcoordintpair = this.g; + int i = achunkcoordintpair.length; + + for (int j = 0; j < i; ++j) { + ChunkCoordIntPair chunkcoordintpair = achunkcoordintpair[j]; + + if (chunkcoordintpair != null) { + arraylist.add(chunkcoordintpair.a(64)); + } + } + + return arraylist; + } + + protected StructureStart b(int i, int j) { + WorldGenStronghold.WorldGenStronghold2Start worldgenstronghold_worldgenstronghold2start; + + for (worldgenstronghold_worldgenstronghold2start = new WorldGenStronghold.WorldGenStronghold2Start(this.c, this.b, i, j); worldgenstronghold_worldgenstronghold2start.b().isEmpty() || ((WorldGenStrongholdPieces.WorldGenStrongholdStart) worldgenstronghold_worldgenstronghold2start.b().get(0)).b == null; worldgenstronghold_worldgenstronghold2start = new WorldGenStronghold.WorldGenStronghold2Start(this.c, this.b, i, j)) { + ; + } + + return worldgenstronghold_worldgenstronghold2start; + } + + public static class WorldGenStronghold2Start extends StructureStart { + + public WorldGenStronghold2Start() {} + + public WorldGenStronghold2Start(World world, Random random, int i, int j) { + super(i, j); + WorldGenStrongholdPieces.b(); + WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart = new WorldGenStrongholdPieces.WorldGenStrongholdStart(0, random, (i << 4) + 2, (j << 4) + 2); + + this.a.add(worldgenstrongholdpieces_worldgenstrongholdstart); + worldgenstrongholdpieces_worldgenstrongholdstart.a((StructurePiece) worldgenstrongholdpieces_worldgenstrongholdstart, (List) this.a, random); + List list = worldgenstrongholdpieces_worldgenstrongholdstart.c; + + while (!list.isEmpty()) { + int k = random.nextInt(list.size()); + StructurePiece structurepiece = (StructurePiece) list.remove(k); + + structurepiece.a((StructurePiece) worldgenstrongholdpieces_worldgenstrongholdstart, (List) this.a, random); + } + + this.c(); + this.a(world, random, 10); + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStrongholdPieces.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStrongholdPieces.java new file mode 100644 index 0000000..5c2112f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenStrongholdPieces.java @@ -0,0 +1,1430 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +public class WorldGenStrongholdPieces { + + private static final WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight[] b = new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight[] { new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdStairs.class, 40, 0), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdPrison.class, 5, 5), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn.class, 20, 0), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdRightTurn.class, 20, 0), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing.class, 10, 6), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight.class, 5, 5), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdStairs2.class, 5, 5), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdCrossing.class, 5, 4), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor.class, 5, 4), new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdLibrary.class, 10, 2) { + public boolean a(int i) { + return super.a(i) && i > 4; + } + }, new WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight(WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom.class, 20, 1) { + public boolean a(int i) { + return super.a(i) && i > 5; + } + }}; + private static List c; + private static Class d; + static int a; + private static final WorldGenStrongholdPieces.WorldGenStrongholdStones e = new WorldGenStrongholdPieces.WorldGenStrongholdStones(null); + + public static void a() { + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor.class, "SHCC"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdCorridor.class, "SHFC"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdCrossing.class, "SH5C"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn.class, "SHLT"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdLibrary.class, "SHLi"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom.class, "SHPR"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdPrison.class, "SHPH"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdRightTurn.class, "SHRT"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing.class, "SHRC"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdStairs2.class, "SHSD"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdStart.class, "SHStart"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdStairs.class, "SHS"); + WorldGenFactory.a(WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight.class, "SHSSD"); + } + + public static void b() { + WorldGenStrongholdPieces.c = Lists.newArrayList(); + WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight[] aworldgenstrongholdpieces_worldgenstrongholdpieceweight = WorldGenStrongholdPieces.b; + int i = aworldgenstrongholdpieces_worldgenstrongholdpieceweight.length; + + for (int j = 0; j < i; ++j) { + WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight worldgenstrongholdpieces_worldgenstrongholdpieceweight = aworldgenstrongholdpieces_worldgenstrongholdpieceweight[j]; + + worldgenstrongholdpieces_worldgenstrongholdpieceweight.c = 0; + WorldGenStrongholdPieces.c.add(worldgenstrongholdpieces_worldgenstrongholdpieceweight); + } + + WorldGenStrongholdPieces.d = null; + } + + private static boolean d() { + boolean flag = false; + + WorldGenStrongholdPieces.a = 0; + + WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight worldgenstrongholdpieces_worldgenstrongholdpieceweight; + + for (Iterator iterator = WorldGenStrongholdPieces.c.iterator(); iterator.hasNext(); WorldGenStrongholdPieces.a += worldgenstrongholdpieces_worldgenstrongholdpieceweight.b) { + worldgenstrongholdpieces_worldgenstrongholdpieceweight = (WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight) iterator.next(); + if (worldgenstrongholdpieces_worldgenstrongholdpieceweight.d > 0 && worldgenstrongholdpieces_worldgenstrongholdpieceweight.c < worldgenstrongholdpieces_worldgenstrongholdpieceweight.d) { + flag = true; + } + } + + return flag; + } + + private static WorldGenStrongholdPieces.WorldGenStrongholdPiece a(Class oclass, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + Object object = null; + + if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdStairs.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdStairs.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdPrison.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdPrison.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdRightTurn.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdRightTurn.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdStairs2.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdStairs2.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdCrossing.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdCrossing.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdLibrary.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdLibrary.a(list, random, i, j, k, enumdirection, l); + } else if (oclass == WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom.class) { + object = WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom.a(list, random, i, j, k, enumdirection, l); + } + + return (WorldGenStrongholdPieces.WorldGenStrongholdPiece) object; + } + + private static WorldGenStrongholdPieces.WorldGenStrongholdPiece b(WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + if (!d()) { + return null; + } else { + if (WorldGenStrongholdPieces.d != null) { + WorldGenStrongholdPieces.WorldGenStrongholdPiece worldgenstrongholdpieces_worldgenstrongholdpiece = a(WorldGenStrongholdPieces.d, list, random, i, j, k, enumdirection, l); + + WorldGenStrongholdPieces.d = null; + if (worldgenstrongholdpieces_worldgenstrongholdpiece != null) { + return worldgenstrongholdpieces_worldgenstrongholdpiece; + } + } + + int i1 = 0; + + while (i1 < 5) { + ++i1; + int j1 = random.nextInt(WorldGenStrongholdPieces.a); + Iterator iterator = WorldGenStrongholdPieces.c.iterator(); + + while (iterator.hasNext()) { + WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight worldgenstrongholdpieces_worldgenstrongholdpieceweight = (WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight) iterator.next(); + + j1 -= worldgenstrongholdpieces_worldgenstrongholdpieceweight.b; + if (j1 < 0) { + if (!worldgenstrongholdpieces_worldgenstrongholdpieceweight.a(l) || worldgenstrongholdpieces_worldgenstrongholdpieceweight == worldgenstrongholdpieces_worldgenstrongholdstart.a) { + break; + } + + WorldGenStrongholdPieces.WorldGenStrongholdPiece worldgenstrongholdpieces_worldgenstrongholdpiece1 = a(worldgenstrongholdpieces_worldgenstrongholdpieceweight.a, list, random, i, j, k, enumdirection, l); + + if (worldgenstrongholdpieces_worldgenstrongholdpiece1 != null) { + ++worldgenstrongholdpieces_worldgenstrongholdpieceweight.c; + worldgenstrongholdpieces_worldgenstrongholdstart.a = worldgenstrongholdpieces_worldgenstrongholdpieceweight; + if (!worldgenstrongholdpieces_worldgenstrongholdpieceweight.a()) { + WorldGenStrongholdPieces.c.remove(worldgenstrongholdpieces_worldgenstrongholdpieceweight); + } + + return worldgenstrongholdpieces_worldgenstrongholdpiece1; + } + } + } + } + + StructureBoundingBox structureboundingbox = WorldGenStrongholdPieces.WorldGenStrongholdCorridor.a(list, random, i, j, k, enumdirection); + + if (structureboundingbox != null && structureboundingbox.b > 1) { + return new WorldGenStrongholdPieces.WorldGenStrongholdCorridor(l, random, structureboundingbox, enumdirection); + } else { + return null; + } + } + } + + private static StructurePiece c(WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart, List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + if (l > 50) { + return null; + } else if (Math.abs(i - worldgenstrongholdpieces_worldgenstrongholdstart.c().a) <= 112 && Math.abs(k - worldgenstrongholdpieces_worldgenstrongholdstart.c().c) <= 112) { + WorldGenStrongholdPieces.WorldGenStrongholdPiece worldgenstrongholdpieces_worldgenstrongholdpiece = b(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, i, j, k, enumdirection, l + 1); + + if (worldgenstrongholdpieces_worldgenstrongholdpiece != null) { + list.add(worldgenstrongholdpieces_worldgenstrongholdpiece); + worldgenstrongholdpieces_worldgenstrongholdstart.c.add(worldgenstrongholdpieces_worldgenstrongholdpiece); + } + + return worldgenstrongholdpieces_worldgenstrongholdpiece; + } else { + return null; + } + } + + static class SyntheticClass_1 { + + static final int[] a; + static final int[] b = new int[EnumDirection.values().length]; + + static { + try { + WorldGenStrongholdPieces.SyntheticClass_1.b[EnumDirection.NORTH.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.b[EnumDirection.SOUTH.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror1) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.b[EnumDirection.WEST.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror2) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.b[EnumDirection.EAST.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror3) { + ; + } + + a = new int[WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.values().length]; + + try { + WorldGenStrongholdPieces.SyntheticClass_1.a[WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING.ordinal()] = 1; + } catch (NoSuchFieldError nosuchfielderror4) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.a[WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.WOOD_DOOR.ordinal()] = 2; + } catch (NoSuchFieldError nosuchfielderror5) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.a[WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.GRATES.ordinal()] = 3; + } catch (NoSuchFieldError nosuchfielderror6) { + ; + } + + try { + WorldGenStrongholdPieces.SyntheticClass_1.a[WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.IRON_DOOR.ordinal()] = 4; + } catch (NoSuchFieldError nosuchfielderror7) { + ; + } + + } + } + + static class WorldGenStrongholdStones extends StructurePiece.StructurePieceBlockSelector { + + private WorldGenStrongholdStones() {} + + public void a(Random random, int i, int j, int k, boolean flag) { + if (flag) { + float f = random.nextFloat(); + + if (f < 0.2F) { + this.a = Blocks.STONEBRICK.fromLegacyData(BlockSmoothBrick.O); + } else if (f < 0.5F) { + this.a = Blocks.STONEBRICK.fromLegacyData(BlockSmoothBrick.N); + } else if (f < 0.55F) { + this.a = Blocks.MONSTER_EGG.fromLegacyData(BlockMonsterEggs.EnumMonsterEggVarient.STONEBRICK.a()); + } else { + this.a = Blocks.STONEBRICK.getBlockData(); + } + } else { + this.a = Blocks.AIR.getBlockData(); + } + + } + + WorldGenStrongholdStones(Object object) { + this(); + } + } + + public static class WorldGenStrongholdPortalRoom extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private boolean a; + + public WorldGenStrongholdPortalRoom() {} + + public WorldGenStrongholdPortalRoom(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Mob", this.a); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getBoolean("Mob"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + if (structurepiece != null) { + ((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece).b = this; + } + + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -4, -1, 0, 11, 8, 16, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + this.a(world, structureboundingbox, 0, 0, 0, 10, 7, 15, false, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.GRATES, 4, 1, 0); + byte b0 = 6; + + this.a(world, structureboundingbox, 1, b0, 1, 1, b0, 14, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 9, b0, 1, 9, b0, 14, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 2, b0, 1, 8, b0, 2, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 2, b0, 14, 8, b0, 14, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 1, 1, 1, 2, 1, 4, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 8, 1, 1, 9, 1, 4, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 1, 1, 1, 1, 1, 3, Blocks.FLOWING_LAVA.getBlockData(), Blocks.FLOWING_LAVA.getBlockData(), false); + this.a(world, structureboundingbox, 9, 1, 1, 9, 1, 3, Blocks.FLOWING_LAVA.getBlockData(), Blocks.FLOWING_LAVA.getBlockData(), false); + this.a(world, structureboundingbox, 3, 1, 8, 7, 1, 12, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 9, 6, 1, 11, Blocks.FLOWING_LAVA.getBlockData(), Blocks.FLOWING_LAVA.getBlockData(), false); + + int i; + + for (i = 3; i < 14; i += 2) { + this.a(world, structureboundingbox, 0, 3, i, 0, 4, i, Blocks.IRON_BARS.getBlockData(), Blocks.IRON_BARS.getBlockData(), false); + this.a(world, structureboundingbox, 10, 3, i, 10, 4, i, Blocks.IRON_BARS.getBlockData(), Blocks.IRON_BARS.getBlockData(), false); + } + + for (i = 2; i < 9; i += 2) { + this.a(world, structureboundingbox, i, 3, 15, i, 4, 15, Blocks.IRON_BARS.getBlockData(), Blocks.IRON_BARS.getBlockData(), false); + } + + i = this.a(Blocks.STONE_BRICK_STAIRS, 3); + this.a(world, structureboundingbox, 4, 1, 5, 6, 1, 7, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 2, 6, 6, 2, 7, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 3, 7, 6, 3, 7, false, random, WorldGenStrongholdPieces.e); + + int j; + + for (j = 4; j <= 6; ++j) { + this.a(world, Blocks.STONE_BRICK_STAIRS.fromLegacyData(i), j, 1, 4, structureboundingbox); + this.a(world, Blocks.STONE_BRICK_STAIRS.fromLegacyData(i), j, 2, 5, structureboundingbox); + this.a(world, Blocks.STONE_BRICK_STAIRS.fromLegacyData(i), j, 3, 6, structureboundingbox); + } + + j = EnumDirection.NORTH.b(); + int k = EnumDirection.SOUTH.b(); + int l = EnumDirection.EAST.b(); + int i1 = EnumDirection.WEST.b(); + + if (this.m != null) { + switch (WorldGenStrongholdPieces.SyntheticClass_1.b[this.m.ordinal()]) { + case 2: + j = EnumDirection.SOUTH.b(); + k = EnumDirection.NORTH.b(); + break; + + case 3: + j = EnumDirection.WEST.b(); + k = EnumDirection.EAST.b(); + l = EnumDirection.SOUTH.b(); + i1 = EnumDirection.NORTH.b(); + break; + + case 4: + j = EnumDirection.EAST.b(); + k = EnumDirection.WEST.b(); + l = EnumDirection.SOUTH.b(); + i1 = EnumDirection.NORTH.b(); + } + } + + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(j).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 4, 3, 8, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(j).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 5, 3, 8, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(j).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 6, 3, 8, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(k).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 4, 3, 12, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(k).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 5, 3, 12, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(k).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 6, 3, 12, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(l).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 3, 3, 9, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(l).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 3, 3, 10, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(l).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 3, 3, 11, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(i1).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 7, 3, 9, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(i1).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 7, 3, 10, structureboundingbox); + this.a(world, Blocks.END_PORTAL_FRAME.fromLegacyData(i1).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(random.nextFloat() > 0.9F)), 7, 3, 11, structureboundingbox); + if (!this.a) { + int j1 = this.d(3); + BlockPosition blockposition = new BlockPosition(this.a(5, 6), j1, this.b(5, 6)); + + if (structureboundingbox.b((BaseBlockPosition) blockposition)) { + this.a = true; + world.setTypeAndData(blockposition, Blocks.MOB_SPAWNER.getBlockData(), 2); + TileEntity tileentity = world.getTileEntity(blockposition); + + if (tileentity instanceof TileEntityMobSpawner) { + ((TileEntityMobSpawner) tileentity).getSpawner().setMobName("Silverfish"); + } + } + } + + return true; + } + } + + public static class WorldGenStrongholdCrossing extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private boolean a; + private boolean b; + private boolean c; + private boolean e; + + public WorldGenStrongholdCrossing() {} + + public WorldGenStrongholdCrossing(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + this.a = random.nextBoolean(); + this.b = random.nextBoolean(); + this.c = random.nextBoolean(); + this.e = random.nextInt(3) > 0; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("leftLow", this.a); + nbttagcompound.setBoolean("leftHigh", this.b); + nbttagcompound.setBoolean("rightLow", this.c); + nbttagcompound.setBoolean("rightHigh", this.e); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getBoolean("leftLow"); + this.b = nbttagcompound.getBoolean("leftHigh"); + this.c = nbttagcompound.getBoolean("rightLow"); + this.e = nbttagcompound.getBoolean("rightHigh"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + int i = 3; + int j = 5; + + if (this.m == EnumDirection.WEST || this.m == EnumDirection.NORTH) { + i = 8 - i; + j = 8 - j; + } + + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 5, 1); + if (this.a) { + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, i, 1); + } + + if (this.b) { + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, j, 7); + } + + if (this.c) { + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, i, 1); + } + + if (this.e) { + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, j, 7); + } + + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdCrossing a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -4, -3, 0, 10, 9, 11, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdCrossing(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 9, 8, 10, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 4, 3, 0); + if (this.a) { + this.a(world, structureboundingbox, 0, 3, 1, 0, 5, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + if (this.c) { + this.a(world, structureboundingbox, 9, 3, 1, 9, 5, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + if (this.b) { + this.a(world, structureboundingbox, 0, 5, 7, 0, 7, 9, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + if (this.e) { + this.a(world, structureboundingbox, 9, 5, 7, 9, 7, 9, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + this.a(world, structureboundingbox, 5, 1, 10, 7, 3, 10, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 1, 2, 1, 8, 2, 6, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 5, 4, 4, 9, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 8, 1, 5, 8, 4, 9, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 1, 4, 7, 3, 4, 9, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 1, 3, 5, 3, 3, 6, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 1, 3, 4, 3, 3, 4, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 1, 4, 6, 3, 4, 6, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 5, 1, 7, 7, 1, 8, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 5, 1, 9, 7, 1, 9, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 5, 2, 7, 7, 2, 7, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 4, 5, 7, 4, 5, 9, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 8, 5, 7, 8, 5, 9, Blocks.STONE_SLAB.getBlockData(), Blocks.STONE_SLAB.getBlockData(), false); + this.a(world, structureboundingbox, 5, 5, 7, 7, 5, 9, Blocks.DOUBLE_STONE_SLAB.getBlockData(), Blocks.DOUBLE_STONE_SLAB.getBlockData(), false); + this.a(world, Blocks.TORCH.getBlockData(), 6, 5, 6, structureboundingbox); + return true; + } + } + } + + public static class WorldGenStrongholdLibrary extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private static final List a = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.BOOK, 0, 1, 3, 20), new StructurePieceTreasure(Items.PAPER, 0, 2, 7, 20), new StructurePieceTreasure(Items.MAP, 0, 1, 1, 1), new StructurePieceTreasure(Items.COMPASS, 0, 1, 1, 1)}); + private boolean b; + + public WorldGenStrongholdLibrary() {} + + public WorldGenStrongholdLibrary(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + this.b = structureboundingbox.d() > 6; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Tall", this.b); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getBoolean("Tall"); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdLibrary a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -4, -1, 0, 14, 11, 15, enumdirection); + + if (!a(structureboundingbox) || StructurePiece.a(list, structureboundingbox) != null) { + structureboundingbox = StructureBoundingBox.a(i, j, k, -4, -1, 0, 14, 6, 15, enumdirection); + if (!a(structureboundingbox) || StructurePiece.a(list, structureboundingbox) != null) { + return null; + } + } + + return new WorldGenStrongholdPieces.WorldGenStrongholdLibrary(l, random, structureboundingbox, enumdirection); + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + byte b0 = 11; + + if (!this.b) { + b0 = 6; + } + + this.a(world, structureboundingbox, 0, 0, 0, 13, b0 - 1, 14, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 4, 1, 0); + this.a(world, structureboundingbox, random, 0.07F, 2, 1, 1, 11, 4, 13, Blocks.WEB.getBlockData(), Blocks.WEB.getBlockData(), false); + boolean flag = true; + boolean flag1 = true; + + int i; + + for (i = 1; i <= 13; ++i) { + if ((i - 1) % 4 == 0) { + this.a(world, structureboundingbox, 1, 1, i, 1, 4, i, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, structureboundingbox, 12, 1, i, 12, 4, i, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, Blocks.TORCH.getBlockData(), 2, 3, i, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), 11, 3, i, structureboundingbox); + if (this.b) { + this.a(world, structureboundingbox, 1, 6, i, 1, 9, i, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, structureboundingbox, 12, 6, i, 12, 9, i, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + } + } else { + this.a(world, structureboundingbox, 1, 1, i, 1, 4, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + this.a(world, structureboundingbox, 12, 1, i, 12, 4, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + if (this.b) { + this.a(world, structureboundingbox, 1, 6, i, 1, 9, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + this.a(world, structureboundingbox, 12, 6, i, 12, 9, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + } + } + } + + for (i = 3; i < 12; i += 2) { + this.a(world, structureboundingbox, 3, 1, i, 4, 3, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + this.a(world, structureboundingbox, 6, 1, i, 7, 3, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + this.a(world, structureboundingbox, 9, 1, i, 10, 3, i, Blocks.BOOKSHELF.getBlockData(), Blocks.BOOKSHELF.getBlockData(), false); + } + + if (this.b) { + this.a(world, structureboundingbox, 1, 5, 1, 3, 5, 13, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, structureboundingbox, 10, 5, 1, 12, 5, 13, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, structureboundingbox, 4, 5, 1, 9, 5, 2, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, structureboundingbox, 4, 5, 12, 9, 5, 13, Blocks.PLANKS.getBlockData(), Blocks.PLANKS.getBlockData(), false); + this.a(world, Blocks.PLANKS.getBlockData(), 9, 5, 11, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 8, 5, 11, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 9, 5, 10, structureboundingbox); + this.a(world, structureboundingbox, 3, 6, 2, 3, 6, 12, Blocks.FENCE.getBlockData(), Blocks.FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 10, 6, 2, 10, 6, 10, Blocks.FENCE.getBlockData(), Blocks.FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 6, 2, 9, 6, 2, Blocks.FENCE.getBlockData(), Blocks.FENCE.getBlockData(), false); + this.a(world, structureboundingbox, 4, 6, 12, 8, 6, 12, Blocks.FENCE.getBlockData(), Blocks.FENCE.getBlockData(), false); + this.a(world, Blocks.FENCE.getBlockData(), 9, 6, 11, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), 8, 6, 11, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), 9, 6, 10, structureboundingbox); + i = this.a(Blocks.LADDER, 3); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 1, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 2, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 3, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 4, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 5, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 6, 13, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(i), 10, 7, 13, structureboundingbox); + byte b1 = 7; + byte b2 = 7; + + this.a(world, Blocks.FENCE.getBlockData(), b1 - 1, 9, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1, 9, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 - 1, 8, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1, 8, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 - 1, 7, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1, 7, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 - 2, 7, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 + 1, 7, b2, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 - 1, 7, b2 - 1, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1 - 1, 7, b2 + 1, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1, 7, b2 - 1, structureboundingbox); + this.a(world, Blocks.FENCE.getBlockData(), b1, 7, b2 + 1, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1 - 2, 8, b2, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1 + 1, 8, b2, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1 - 1, 8, b2 - 1, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1 - 1, 8, b2 + 1, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1, 8, b2 - 1, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), b1, 8, b2 + 1, structureboundingbox); + } + + this.a(world, structureboundingbox, random, 3, 3, 5, StructurePieceTreasure.a(WorldGenStrongholdPieces.WorldGenStrongholdLibrary.a, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.a(random, 1, 5, 2)}), 1 + random.nextInt(4)); + if (this.b) { + this.a(world, Blocks.AIR.getBlockData(), 12, 9, 1, structureboundingbox); + this.a(world, structureboundingbox, random, 12, 8, 1, StructurePieceTreasure.a(WorldGenStrongholdPieces.WorldGenStrongholdLibrary.a, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.a(random, 1, 5, 2)}), 1 + random.nextInt(4)); + } + + return true; + } + } + } + + public static class WorldGenStrongholdPrison extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + public WorldGenStrongholdPrison() {} + + public WorldGenStrongholdPrison(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdPrison a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 9, 5, 11, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdPrison(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 8, 4, 10, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 1, 0); + this.a(world, structureboundingbox, 1, 1, 10, 3, 3, 10, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 4, 1, 1, 4, 3, 1, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 3, 4, 3, 3, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 7, 4, 3, 7, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 9, 4, 3, 9, false, random, WorldGenStrongholdPieces.e); + this.a(world, structureboundingbox, 4, 1, 4, 4, 3, 6, Blocks.IRON_BARS.getBlockData(), Blocks.IRON_BARS.getBlockData(), false); + this.a(world, structureboundingbox, 5, 1, 5, 7, 3, 5, Blocks.IRON_BARS.getBlockData(), Blocks.IRON_BARS.getBlockData(), false); + this.a(world, Blocks.IRON_BARS.getBlockData(), 4, 3, 2, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), 4, 3, 8, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.fromLegacyData(this.a(Blocks.IRON_DOOR, 3)), 4, 1, 2, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.fromLegacyData(this.a(Blocks.IRON_DOOR, 3) + 8), 4, 2, 2, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.fromLegacyData(this.a(Blocks.IRON_DOOR, 3)), 4, 1, 8, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.fromLegacyData(this.a(Blocks.IRON_DOOR, 3) + 8), 4, 2, 8, structureboundingbox); + return true; + } + } + } + + public static class WorldGenStrongholdRoomCrossing extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private static final List b = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.IRON_INGOT, 0, 1, 5, 10), new StructurePieceTreasure(Items.GOLD_INGOT, 0, 1, 3, 5), new StructurePieceTreasure(Items.REDSTONE, 0, 4, 9, 5), new StructurePieceTreasure(Items.COAL, 0, 3, 8, 10), new StructurePieceTreasure(Items.BREAD, 0, 1, 3, 15), new StructurePieceTreasure(Items.APPLE, 0, 1, 3, 15), new StructurePieceTreasure(Items.IRON_PICKAXE, 0, 1, 1, 1)}); + protected int a; + + public WorldGenStrongholdRoomCrossing() {} + + public WorldGenStrongholdRoomCrossing(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + this.a = random.nextInt(5); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setInt("Type", this.a); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getInt("Type"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 4, 1); + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 4); + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 4); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -4, -1, 0, 11, 7, 11, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 10, 6, 10, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 4, 1, 0); + this.a(world, structureboundingbox, 4, 1, 10, 6, 3, 10, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 0, 1, 4, 0, 3, 6, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + this.a(world, structureboundingbox, 10, 1, 4, 10, 3, 6, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + int i; + + switch (this.a) { + case 0: + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 1, 5, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 2, 5, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 3, 5, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), 4, 3, 5, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), 6, 3, 5, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), 5, 3, 4, structureboundingbox); + this.a(world, Blocks.TORCH.getBlockData(), 5, 3, 6, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 4, 1, 4, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 4, 1, 5, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 4, 1, 6, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 6, 1, 4, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 6, 1, 5, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 6, 1, 6, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 5, 1, 4, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.getBlockData(), 5, 1, 6, structureboundingbox); + break; + + case 1: + for (i = 0; i < 5; ++i) { + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 1, 3 + i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 7, 1, 3 + i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3 + i, 1, 3, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3 + i, 1, 7, structureboundingbox); + } + + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 1, 5, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 2, 5, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 5, 3, 5, structureboundingbox); + this.a(world, Blocks.FLOWING_WATER.getBlockData(), 5, 4, 5, structureboundingbox); + break; + + case 2: + for (i = 1; i <= 9; ++i) { + this.a(world, Blocks.COBBLESTONE.getBlockData(), 1, 3, i, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 9, 3, i, structureboundingbox); + } + + for (i = 1; i <= 9; ++i) { + this.a(world, Blocks.COBBLESTONE.getBlockData(), i, 3, 1, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), i, 3, 9, structureboundingbox); + } + + this.a(world, Blocks.COBBLESTONE.getBlockData(), 5, 1, 4, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 5, 1, 6, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 5, 3, 4, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 5, 3, 6, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 4, 1, 5, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 6, 1, 5, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 4, 3, 5, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 6, 3, 5, structureboundingbox); + + for (i = 1; i <= 3; ++i) { + this.a(world, Blocks.COBBLESTONE.getBlockData(), 4, i, 4, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 6, i, 4, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 4, i, 6, structureboundingbox); + this.a(world, Blocks.COBBLESTONE.getBlockData(), 6, i, 6, structureboundingbox); + } + + this.a(world, Blocks.TORCH.getBlockData(), 5, 3, 5, structureboundingbox); + + for (i = 2; i <= 8; ++i) { + this.a(world, Blocks.PLANKS.getBlockData(), 2, 3, i, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 3, 3, i, structureboundingbox); + if (i <= 3 || i >= 7) { + this.a(world, Blocks.PLANKS.getBlockData(), 4, 3, i, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 5, 3, i, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 6, 3, i, structureboundingbox); + } + + this.a(world, Blocks.PLANKS.getBlockData(), 7, 3, i, structureboundingbox); + this.a(world, Blocks.PLANKS.getBlockData(), 8, 3, i, structureboundingbox); + } + + this.a(world, Blocks.LADDER.fromLegacyData(this.a(Blocks.LADDER, EnumDirection.WEST.a())), 9, 1, 3, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(this.a(Blocks.LADDER, EnumDirection.WEST.a())), 9, 2, 3, structureboundingbox); + this.a(world, Blocks.LADDER.fromLegacyData(this.a(Blocks.LADDER, EnumDirection.WEST.a())), 9, 3, 3, structureboundingbox); + this.a(world, structureboundingbox, random, 3, 4, 8, StructurePieceTreasure.a(WorldGenStrongholdPieces.WorldGenStrongholdRoomCrossing.b, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.b(random)}), 1 + random.nextInt(4)); + } + + return true; + } + } + } + + public static class WorldGenStrongholdRightTurn extends WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn { + + public WorldGenStrongholdRightTurn() {} + + public void a(StructurePiece structurepiece, List list, Random random) { + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.EAST) { + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } else { + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 4, 4, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 1, 0); + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.EAST) { + this.a(world, structureboundingbox, 0, 1, 1, 0, 3, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } else { + this.a(world, structureboundingbox, 4, 1, 1, 4, 3, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + return true; + } + } + } + + public static class WorldGenStrongholdLeftTurn extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + public WorldGenStrongholdLeftTurn() {} + + public WorldGenStrongholdLeftTurn(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.EAST) { + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } else { + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdLeftTurn(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 4, 4, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 1, 0); + if (this.m != EnumDirection.NORTH && this.m != EnumDirection.EAST) { + this.a(world, structureboundingbox, 4, 1, 1, 4, 3, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } else { + this.a(world, structureboundingbox, 0, 1, 1, 0, 3, 3, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + return true; + } + } + } + + public static class WorldGenStrongholdStairsStraight extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + public WorldGenStrongholdStairsStraight() {} + + public WorldGenStrongholdStairsStraight(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -7, 0, 5, 11, 8, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdStairsStraight(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 10, 7, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 7, 0); + this.a(world, random, structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING, 1, 1, 7); + int i = this.a(Blocks.STONE_STAIRS, 2); + + for (int j = 0; j < 6; ++j) { + this.a(world, Blocks.STONE_STAIRS.fromLegacyData(i), 1, 6 - j, 1 + j, structureboundingbox); + this.a(world, Blocks.STONE_STAIRS.fromLegacyData(i), 2, 6 - j, 1 + j, structureboundingbox); + this.a(world, Blocks.STONE_STAIRS.fromLegacyData(i), 3, 6 - j, 1 + j, structureboundingbox); + if (j < 5) { + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 5 - j, 1 + j, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 5 - j, 1 + j, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 5 - j, 1 + j, structureboundingbox); + } + } + + return true; + } + } + } + + public static class WorldGenStrongholdChestCorridor extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private static final List a = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.ENDER_PEARL, 0, 1, 1, 10), new StructurePieceTreasure(Items.DIAMOND, 0, 1, 3, 3), new StructurePieceTreasure(Items.IRON_INGOT, 0, 1, 5, 10), new StructurePieceTreasure(Items.GOLD_INGOT, 0, 1, 3, 5), new StructurePieceTreasure(Items.REDSTONE, 0, 4, 9, 5), new StructurePieceTreasure(Items.BREAD, 0, 1, 3, 15), new StructurePieceTreasure(Items.APPLE, 0, 1, 3, 15), new StructurePieceTreasure(Items.IRON_PICKAXE, 0, 1, 1, 5), new StructurePieceTreasure(Items.IRON_SWORD, 0, 1, 1, 5), new StructurePieceTreasure(Items.IRON_CHESTPLATE, 0, 1, 1, 5), new StructurePieceTreasure(Items.IRON_HELMET, 0, 1, 1, 5), new StructurePieceTreasure(Items.IRON_LEGGINGS, 0, 1, 1, 5), new StructurePieceTreasure(Items.IRON_BOOTS, 0, 1, 1, 5), new StructurePieceTreasure(Items.GOLDEN_APPLE, 0, 1, 1, 1), new StructurePieceTreasure(Items.SADDLE, 0, 1, 1, 1), new StructurePieceTreasure(Items.IRON_HORSE_ARMOR, 0, 1, 1, 1), new StructurePieceTreasure(Items.GOLDEN_HORSE_ARMOR, 0, 1, 1, 1), new StructurePieceTreasure(Items.DIAMOND_HORSE_ARMOR, 0, 1, 1, 1)}); + private boolean b; + + public WorldGenStrongholdChestCorridor() {} + + public WorldGenStrongholdChestCorridor(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Chest", this.b); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.b = nbttagcompound.getBoolean("Chest"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, 7, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 4, 6, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 1, 0); + this.a(world, random, structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING, 1, 1, 6); + this.a(world, structureboundingbox, 3, 1, 2, 3, 1, 4, Blocks.STONEBRICK.getBlockData(), Blocks.STONEBRICK.getBlockData(), false); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a()), 3, 1, 1, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a()), 3, 1, 5, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a()), 3, 2, 2, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a()), 3, 2, 4, structureboundingbox); + + for (int i = 2; i <= 4; ++i) { + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.SMOOTHBRICK.a()), 2, 1, i, structureboundingbox); + } + + if (!this.b && structureboundingbox.b((BaseBlockPosition) (new BlockPosition(this.a(3, 3), this.d(2), this.b(3, 3))))) { + this.b = true; + this.a(world, structureboundingbox, random, 3, 2, 3, StructurePieceTreasure.a(WorldGenStrongholdPieces.WorldGenStrongholdChestCorridor.a, new StructurePieceTreasure[] { Items.ENCHANTED_BOOK.b(random)}), 2 + random.nextInt(2)); + } + + return true; + } + } + } + + public static class WorldGenStrongholdStairs extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private boolean a; + private boolean b; + + public WorldGenStrongholdStairs() {} + + public WorldGenStrongholdStairs(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + this.a = random.nextInt(2) == 0; + this.b = random.nextInt(2) == 0; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Left", this.a); + nbttagcompound.setBoolean("Right", this.b); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getBoolean("Left"); + this.b = nbttagcompound.getBoolean("Right"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + if (this.a) { + this.b((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 2); + } + + if (this.b) { + this.c((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 2); + } + + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdStairs a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, 7, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdStairs(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 4, 6, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 1, 0); + this.a(world, random, structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING, 1, 1, 6); + this.a(world, structureboundingbox, random, 0.1F, 1, 2, 1, Blocks.TORCH.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 3, 2, 1, Blocks.TORCH.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 1, 2, 5, Blocks.TORCH.getBlockData()); + this.a(world, structureboundingbox, random, 0.1F, 3, 2, 5, Blocks.TORCH.getBlockData()); + if (this.a) { + this.a(world, structureboundingbox, 0, 1, 2, 0, 3, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + if (this.b) { + this.a(world, structureboundingbox, 4, 1, 2, 4, 3, 4, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + } + + return true; + } + } + } + + public static class WorldGenStrongholdStart extends WorldGenStrongholdPieces.WorldGenStrongholdStairs2 { + + public WorldGenStrongholdPieces.WorldGenStrongholdPieceWeight a; + public WorldGenStrongholdPieces.WorldGenStrongholdPortalRoom b; + public List c = Lists.newArrayList(); + + public WorldGenStrongholdStart() {} + + public WorldGenStrongholdStart(int i, Random random, int j, int k) { + super(0, random, j, k); + } + + public BlockPosition a() { + return this.b != null ? this.b.a() : super.a(); + } + } + + public static class WorldGenStrongholdStairs2 extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private boolean a; + + public WorldGenStrongholdStairs2() {} + + public WorldGenStrongholdStairs2(int i, Random random, int j, int k) { + super(i); + this.a = true; + this.m = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(random); + this.d = WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING; + switch (WorldGenStrongholdPieces.SyntheticClass_1.b[this.m.ordinal()]) { + case 1: + case 2: + this.l = new StructureBoundingBox(j, 64, k, j + 5 - 1, 74, k + 5 - 1); + break; + + default: + this.l = new StructureBoundingBox(j, 64, k, j + 5 - 1, 74, k + 5 - 1); + } + + } + + public WorldGenStrongholdStairs2(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.a = false; + this.m = enumdirection; + this.d = this.a(random); + this.l = structureboundingbox; + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setBoolean("Source", this.a); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getBoolean("Source"); + } + + public void a(StructurePiece structurepiece, List list, Random random) { + if (this.a) { + WorldGenStrongholdPieces.d = WorldGenStrongholdPieces.WorldGenStrongholdCrossing.class; + } + + this.a((WorldGenStrongholdPieces.WorldGenStrongholdStart) structurepiece, list, random, 1, 1); + } + + public static WorldGenStrongholdPieces.WorldGenStrongholdStairs2 a(List list, Random random, int i, int j, int k, EnumDirection enumdirection, int l) { + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -7, 0, 5, 11, 5, enumdirection); + + return a(structureboundingbox) && StructurePiece.a(list, structureboundingbox) == null ? new WorldGenStrongholdPieces.WorldGenStrongholdStairs2(l, random, structureboundingbox, enumdirection) : null; + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + this.a(world, structureboundingbox, 0, 0, 0, 4, 10, 4, true, random, WorldGenStrongholdPieces.e); + this.a(world, random, structureboundingbox, this.d, 1, 7, 0); + this.a(world, random, structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING, 1, 1, 4); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 6, 1, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 5, 1, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 1, 6, 1, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 5, 2, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 4, 3, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 1, 5, 3, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 4, 3, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 3, 3, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 3, 4, 3, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 3, 2, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 2, 1, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 3, 3, 1, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 2, 1, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 1, 1, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 1, 2, 1, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 1, 2, structureboundingbox); + this.a(world, Blocks.STONE_SLAB.fromLegacyData(BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE.a()), 1, 1, 3, structureboundingbox); + return true; + } + } + } + + public static class WorldGenStrongholdCorridor extends WorldGenStrongholdPieces.WorldGenStrongholdPiece { + + private int a; + + public WorldGenStrongholdCorridor() {} + + public WorldGenStrongholdCorridor(int i, Random random, StructureBoundingBox structureboundingbox, EnumDirection enumdirection) { + super(i); + this.m = enumdirection; + this.l = structureboundingbox; + this.a = enumdirection != EnumDirection.NORTH && enumdirection != EnumDirection.SOUTH ? structureboundingbox.c() : structureboundingbox.e(); + } + + protected void a(NBTTagCompound nbttagcompound) { + super.a(nbttagcompound); + nbttagcompound.setInt("Steps", this.a); + } + + protected void b(NBTTagCompound nbttagcompound) { + super.b(nbttagcompound); + this.a = nbttagcompound.getInt("Steps"); + } + + public static StructureBoundingBox a(List list, Random random, int i, int j, int k, EnumDirection enumdirection) { + boolean flag = true; + StructureBoundingBox structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, 4, enumdirection); + StructurePiece structurepiece = StructurePiece.a(list, structureboundingbox); + + if (structurepiece == null) { + return null; + } else { + if (structurepiece.c().b == structureboundingbox.b) { + for (int l = 3; l >= 1; --l) { + structureboundingbox = StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, l - 1, enumdirection); + if (!structurepiece.c().a(structureboundingbox)) { + return StructureBoundingBox.a(i, j, k, -1, -1, 0, 5, 5, l, enumdirection); + } + } + } + + return null; + } + } + + public boolean a(World world, Random random, StructureBoundingBox structureboundingbox) { + if (this.a(world, structureboundingbox)) { + return false; + } else { + for (int i = 0; i < this.a; ++i) { + this.a(world, Blocks.STONEBRICK.getBlockData(), 0, 0, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 0, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 0, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 0, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 4, 0, i, structureboundingbox); + + for (int j = 1; j <= 3; ++j) { + this.a(world, Blocks.STONEBRICK.getBlockData(), 0, j, i, structureboundingbox); + this.a(world, Blocks.AIR.getBlockData(), 1, j, i, structureboundingbox); + this.a(world, Blocks.AIR.getBlockData(), 2, j, i, structureboundingbox); + this.a(world, Blocks.AIR.getBlockData(), 3, j, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 4, j, i, structureboundingbox); + } + + this.a(world, Blocks.STONEBRICK.getBlockData(), 0, 4, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 1, 4, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 2, 4, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 3, 4, i, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), 4, 4, i, structureboundingbox); + } + + return true; + } + } + } + + abstract static class WorldGenStrongholdPiece extends StructurePiece { + + protected WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType d; + + public WorldGenStrongholdPiece() { + this.d = WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING; + } + + protected WorldGenStrongholdPiece(int i) { + super(i); + this.d = WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING; + } + + protected void a(NBTTagCompound nbttagcompound) { + nbttagcompound.setString("EntryDoor", this.d.name()); + } + + protected void b(NBTTagCompound nbttagcompound) { + this.d = WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.valueOf(nbttagcompound.getString("EntryDoor")); + } + + protected void a(World world, Random random, StructureBoundingBox structureboundingbox, WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType worldgenstrongholdpieces_worldgenstrongholdpiece_worldgenstrongholddoortype, int i, int j, int k) { + switch (WorldGenStrongholdPieces.SyntheticClass_1.a[worldgenstrongholdpieces_worldgenstrongholdpiece_worldgenstrongholddoortype.ordinal()]) { + case 1: + default: + this.a(world, structureboundingbox, i, j, k, i + 3 - 1, j + 3 - 1, k, Blocks.AIR.getBlockData(), Blocks.AIR.getBlockData(), false); + break; + + case 2: + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j + 1, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 1, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j + 1, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j, k, structureboundingbox); + this.a(world, Blocks.WOODEN_DOOR.getBlockData(), i + 1, j, k, structureboundingbox); + this.a(world, Blocks.WOODEN_DOOR.fromLegacyData(8), i + 1, j + 1, k, structureboundingbox); + break; + + case 3: + this.a(world, Blocks.AIR.getBlockData(), i + 1, j, k, structureboundingbox); + this.a(world, Blocks.AIR.getBlockData(), i + 1, j + 1, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i, j, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i, j + 1, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i, j + 2, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i + 1, j + 2, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i + 2, j + 2, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i + 2, j + 1, k, structureboundingbox); + this.a(world, Blocks.IRON_BARS.getBlockData(), i + 2, j, k, structureboundingbox); + break; + + case 4: + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j + 1, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 1, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j + 2, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j + 1, k, structureboundingbox); + this.a(world, Blocks.STONEBRICK.getBlockData(), i + 2, j, k, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.getBlockData(), i + 1, j, k, structureboundingbox); + this.a(world, Blocks.IRON_DOOR.fromLegacyData(8), i + 1, j + 1, k, structureboundingbox); + this.a(world, Blocks.STONE_BUTTON.fromLegacyData(this.a(Blocks.STONE_BUTTON, 4)), i + 2, j + 1, k + 1, structureboundingbox); + this.a(world, Blocks.STONE_BUTTON.fromLegacyData(this.a(Blocks.STONE_BUTTON, 3)), i + 2, j + 1, k - 1, structureboundingbox); + } + + } + + protected WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType a(Random random) { + int i = random.nextInt(5); + + switch (i) { + case 0: + case 1: + default: + return WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.OPENING; + + case 2: + return WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.WOOD_DOOR; + + case 3: + return WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.GRATES; + + case 4: + return WorldGenStrongholdPieces.WorldGenStrongholdPiece.WorldGenStrongholdDoorType.IRON_DOOR; + } + } + + protected StructurePiece a(WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart, List list, Random random, int i, int j) { + if (this.m != null) { + switch (WorldGenStrongholdPieces.SyntheticClass_1.b[this.m.ordinal()]) { + case 1: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + i, this.l.b + j, this.l.c - 1, this.m, this.d()); + + case 2: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + i, this.l.b + j, this.l.f + 1, this.m, this.d()); + + case 3: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a - 1, this.l.b + j, this.l.c + i, this.m, this.d()); + + case 4: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.d + 1, this.l.b + j, this.l.c + i, this.m, this.d()); + } + } + + return null; + } + + protected StructurePiece b(WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart, List list, Random random, int i, int j) { + if (this.m != null) { + switch (WorldGenStrongholdPieces.SyntheticClass_1.b[this.m.ordinal()]) { + case 1: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a - 1, this.l.b + i, this.l.c + j, EnumDirection.WEST, this.d()); + + case 2: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a - 1, this.l.b + i, this.l.c + j, EnumDirection.WEST, this.d()); + + case 3: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + j, this.l.b + i, this.l.c - 1, EnumDirection.NORTH, this.d()); + + case 4: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + j, this.l.b + i, this.l.c - 1, EnumDirection.NORTH, this.d()); + } + } + + return null; + } + + protected StructurePiece c(WorldGenStrongholdPieces.WorldGenStrongholdStart worldgenstrongholdpieces_worldgenstrongholdstart, List list, Random random, int i, int j) { + if (this.m != null) { + switch (WorldGenStrongholdPieces.SyntheticClass_1.b[this.m.ordinal()]) { + case 1: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.d + 1, this.l.b + i, this.l.c + j, EnumDirection.EAST, this.d()); + + case 2: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.d + 1, this.l.b + i, this.l.c + j, EnumDirection.EAST, this.d()); + + case 3: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + j, this.l.b + i, this.l.f + 1, EnumDirection.SOUTH, this.d()); + + case 4: + return WorldGenStrongholdPieces.c(worldgenstrongholdpieces_worldgenstrongholdstart, list, random, this.l.a + j, this.l.b + i, this.l.f + 1, EnumDirection.SOUTH, this.d()); + } + } + + return null; + } + + protected static boolean a(StructureBoundingBox structureboundingbox) { + return structureboundingbox != null && structureboundingbox.b > 10; + } + + public static enum WorldGenStrongholdDoorType { + + OPENING, WOOD_DOOR, GRATES, IRON_DOOR; + + private WorldGenStrongholdDoorType() {} + } + } + + static class WorldGenStrongholdPieceWeight { + + public Class a; + public final int b; + public int c; + public int d; + + public WorldGenStrongholdPieceWeight(Class oclass, int i, int j) { + this.a = oclass; + this.b = i; + this.d = j; + } + + public boolean a(int i) { + return this.d == 0 || this.c < this.d; + } + + public boolean a() { + return this.d == 0 || this.c < this.d; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSwampTree.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSwampTree.java new file mode 100644 index 0000000..1522f82 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenSwampTree.java @@ -0,0 +1,158 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenSwampTree extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.OAK); + private static final IBlockData b = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf(false)); + + public WorldGenSwampTree() { + super(false); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i; + + for (i = random.nextInt(4) + 5; world.getType(blockposition.down()).getBlock().getMaterial() == Material.WATER; blockposition = blockposition.down()) { + ; + } + + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + int j; + int k; + + for (int l = blockposition.getY(); l <= blockposition.getY() + 1 + i; ++l) { + byte b0 = 1; + + if (l == blockposition.getY()) { + b0 = 0; + } + + if (l >= blockposition.getY() + 1 + i - 2) { + b0 = 3; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j = blockposition.getX() - b0; j <= blockposition.getX() + b0 && flag; ++j) { + for (k = blockposition.getZ() - b0; k <= blockposition.getZ() + b0 && flag; ++k) { + if (l >= 0 && l < 256) { + Block block = world.getType(blockposition_mutableblockposition.c(j, l, k)).getBlock(); + + if (block.getMaterial() != Material.AIR && block.getMaterial() != Material.LEAVES) { + if (block != Blocks.WATER && block != Blocks.FLOWING_WATER) { + flag = false; + } else if (l > blockposition.getY()) { + flag = false; + } + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block1 = world.getType(blockposition.down()).getBlock(); + + if ((block1 == Blocks.GRASS || block1 == Blocks.DIRT) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + + int i1; + BlockPosition blockposition1; + int j1; + int k1; + int l1; + + for (j1 = blockposition.getY() - 3 + i; j1 <= blockposition.getY() + i; ++j1) { + k1 = j1 - (blockposition.getY() + i); + j = 2 - k1 / 2; + + for (k = blockposition.getX() - j; k <= blockposition.getX() + j; ++k) { + l1 = k - blockposition.getX(); + + for (i1 = blockposition.getZ() - j; i1 <= blockposition.getZ() + j; ++i1) { + int i2 = i1 - blockposition.getZ(); + + if (Math.abs(l1) != j || Math.abs(i2) != j || random.nextInt(2) != 0 && k1 != 0) { + blockposition1 = new BlockPosition(k, j1, i1); + if (!world.getType(blockposition1).getBlock().o()) { + this.a(world, blockposition1, WorldGenSwampTree.b); + } + } + } + } + } + + for (j1 = 0; j1 < i; ++j1) { + Block block2 = world.getType(blockposition.up(j1)).getBlock(); + + if (block2.getMaterial() == Material.AIR || block2.getMaterial() == Material.LEAVES || block2 == Blocks.FLOWING_WATER || block2 == Blocks.WATER) { + this.a(world, blockposition.up(j1), WorldGenSwampTree.a); + } + } + + for (j1 = blockposition.getY() - 3 + i; j1 <= blockposition.getY() + i; ++j1) { + k1 = j1 - (blockposition.getY() + i); + j = 2 - k1 / 2; + BlockPosition.MutableBlockPosition blockposition_mutableblockposition1 = new BlockPosition.MutableBlockPosition(); + + for (l1 = blockposition.getX() - j; l1 <= blockposition.getX() + j; ++l1) { + for (i1 = blockposition.getZ() - j; i1 <= blockposition.getZ() + j; ++i1) { + blockposition_mutableblockposition1.c(l1, j1, i1); + if (world.getType(blockposition_mutableblockposition1).getBlock().getMaterial() == Material.LEAVES) { + BlockPosition blockposition2 = blockposition_mutableblockposition1.west(); + + blockposition1 = blockposition_mutableblockposition1.east(); + BlockPosition blockposition3 = blockposition_mutableblockposition1.north(); + BlockPosition blockposition4 = blockposition_mutableblockposition1.south(); + + if (random.nextInt(4) == 0 && world.getType(blockposition2).getBlock().getMaterial() == Material.AIR) { + this.a(world, blockposition2, BlockVine.EAST); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition1).getBlock().getMaterial() == Material.AIR) { + this.a(world, blockposition1, BlockVine.WEST); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition3).getBlock().getMaterial() == Material.AIR) { + this.a(world, blockposition3, BlockVine.SOUTH); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition4).getBlock().getMaterial() == Material.AIR) { + this.a(world, blockposition4, BlockVine.NORTH); + } + } + } + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } + + private void a(World world, BlockPosition blockposition, BlockStateBoolean blockstateboolean) { + IBlockData iblockdata = Blocks.VINE.getBlockData().set(blockstateboolean, Boolean.valueOf(true)); + + this.a(world, blockposition, iblockdata); + int i = 4; + + for (blockposition = blockposition.down(); world.getType(blockposition).getBlock().getMaterial() == Material.AIR && i > 0; --i) { + this.a(world, blockposition, iblockdata); + blockposition = blockposition.down(); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga1.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga1.java new file mode 100644 index 0000000..1e1acbb --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga1.java @@ -0,0 +1,102 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenTaiga1 extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.SPRUCE); + private static final IBlockData b = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.SPRUCE).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + + public WorldGenTaiga1() { + super(false); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = random.nextInt(5) + 7; + int j = i - random.nextInt(2) - 3; + int k = i - j; + int l = 1 + random.nextInt(k + 1); + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + int i1; + int j1; + int k1; + + for (int l1 = blockposition.getY(); l1 <= blockposition.getY() + 1 + i && flag; ++l1) { + boolean flag1 = true; + + if (l1 - blockposition.getY() < j) { + k1 = 0; + } else { + k1 = l; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (i1 = blockposition.getX() - k1; i1 <= blockposition.getX() + k1 && flag; ++i1) { + for (j1 = blockposition.getZ() - k1; j1 <= blockposition.getZ() + k1 && flag; ++j1) { + if (l1 >= 0 && l1 < 256) { + if (!this.a(world.getType(blockposition_mutableblockposition.c(i1, l1, j1)).getBlock())) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block = world.getType(blockposition.down()).getBlock(); + + if ((block == Blocks.GRASS || block == Blocks.DIRT) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + k1 = 0; + + int i2; + + for (i2 = blockposition.getY() + i; i2 >= blockposition.getY() + j; --i2) { + for (i1 = blockposition.getX() - k1; i1 <= blockposition.getX() + k1; ++i1) { + j1 = i1 - blockposition.getX(); + + for (int j2 = blockposition.getZ() - k1; j2 <= blockposition.getZ() + k1; ++j2) { + int k2 = j2 - blockposition.getZ(); + + if (Math.abs(j1) != k1 || Math.abs(k2) != k1 || k1 <= 0) { + BlockPosition blockposition1 = new BlockPosition(i1, i2, j2); + + if (!world.getType(blockposition1).getBlock().o()) { + this.a(world, blockposition1, WorldGenTaiga1.b); + } + } + } + } + + if (k1 >= 1 && i2 == blockposition.getY() + j + 1) { + --k1; + } else if (k1 < l) { + ++k1; + } + } + + for (i2 = 0; i2 < i - 1; ++i2) { + Block block1 = world.getType(blockposition.up(i2)).getBlock(); + + if (block1.getMaterial() == Material.AIR || block1.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.up(i2), WorldGenTaiga1.a); + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga2.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga2.java new file mode 100644 index 0000000..bfb7419 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaiga2.java @@ -0,0 +1,114 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenTaiga2 extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.SPRUCE); + private static final IBlockData b = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.SPRUCE).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + + public WorldGenTaiga2(boolean flag) { + super(flag); + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = random.nextInt(4) + 6; + int j = 1 + random.nextInt(2); + int k = i - j; + int l = 2 + random.nextInt(2); + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + int i1; + int j1; + + for (int k1 = blockposition.getY(); k1 <= blockposition.getY() + 1 + i && flag; ++k1) { + boolean flag1 = true; + + if (k1 - blockposition.getY() < j) { + j1 = 0; + } else { + j1 = l; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (int l1 = blockposition.getX() - j1; l1 <= blockposition.getX() + j1 && flag; ++l1) { + for (i1 = blockposition.getZ() - j1; i1 <= blockposition.getZ() + j1 && flag; ++i1) { + if (k1 >= 0 && k1 < 256) { + Block block = world.getType(blockposition_mutableblockposition.c(l1, k1, i1)).getBlock(); + + if (block.getMaterial() != Material.AIR && block.getMaterial() != Material.LEAVES) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block1 = world.getType(blockposition.down()).getBlock(); + + if ((block1 == Blocks.GRASS || block1 == Blocks.DIRT || block1 == Blocks.FARMLAND) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + j1 = random.nextInt(2); + int i2 = 1; + byte b0 = 0; + + int j2; + + for (i1 = 0; i1 <= k; ++i1) { + j2 = blockposition.getY() + i - i1; + + for (int k2 = blockposition.getX() - j1; k2 <= blockposition.getX() + j1; ++k2) { + int l2 = k2 - blockposition.getX(); + + for (int i3 = blockposition.getZ() - j1; i3 <= blockposition.getZ() + j1; ++i3) { + int j3 = i3 - blockposition.getZ(); + + if (Math.abs(l2) != j1 || Math.abs(j3) != j1 || j1 <= 0) { + BlockPosition blockposition1 = new BlockPosition(k2, j2, i3); + + if (!world.getType(blockposition1).getBlock().o()) { + this.a(world, blockposition1, WorldGenTaiga2.b); + } + } + } + } + + if (j1 >= i2) { + j1 = b0; + b0 = 1; + ++i2; + if (i2 > l) { + i2 = l; + } + } else { + ++j1; + } + } + + i1 = random.nextInt(3); + + for (j2 = 0; j2 < i - i1; ++j2) { + Block block2 = world.getType(blockposition.up(j2)).getBlock(); + + if (block2.getMaterial() == Material.AIR || block2.getMaterial() == Material.LEAVES) { + this.a(world, blockposition.up(j2), WorldGenTaiga2.a); + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaigaStructure.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaigaStructure.java new file mode 100644 index 0000000..27cfd38 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTaigaStructure.java @@ -0,0 +1,61 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.Random; + +public class WorldGenTaigaStructure extends WorldGenerator { + + private final Block a; + private final int b; + + public WorldGenTaigaStructure(Block block, int i) { + super(false); + this.a = block; + this.b = i; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + while (true) { + if (blockposition.getY() > 3) { + label47: { + if (!world.isEmpty(blockposition.down())) { + Block block = world.getType(blockposition.down()).getBlock(); + + if (block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.STONE) { + break label47; + } + } + + blockposition = blockposition.down(); + continue; + } + } + + if (blockposition.getY() <= 3) { + return false; + } + + int i = this.b; + + for (int j = 0; i >= 0 && j < 3; ++j) { + int k = i + random.nextInt(2); + int l = i + random.nextInt(2); + int i1 = i + random.nextInt(2); + float f = (float) (k + l + i1) * 0.333F + 0.5F; + Iterator iterator = BlockPosition.a(blockposition.a(-k, -l, -i1), blockposition.a(k, l, i1)).iterator(); + + while (iterator.hasNext()) { + BlockPosition blockposition1 = (BlockPosition) iterator.next(); + + if (blockposition1.i(blockposition) <= (double) (f * f)) { + world.setTypeAndData(blockposition1, this.a.getBlockData(), 4); + } + } + + blockposition = blockposition.a(-(i + 1) + random.nextInt(2 + i * 2), 0 - random.nextInt(2), -(i + 1) + random.nextInt(2 + i * 2)); + } + + return true; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTallPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTallPlant.java new file mode 100644 index 0000000..c0c61a1 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTallPlant.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenTallPlant extends WorldGenerator { + + private BlockTallPlant.EnumTallFlowerVariants a; + + public WorldGenTallPlant() {} + + public void a(BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants) { + this.a = blocktallplant_enumtallflowervariants; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + boolean flag = false; + + for (int i = 0; i < 64; ++i) { + BlockPosition blockposition1 = blockposition.a(random.nextInt(8) - random.nextInt(8), random.nextInt(4) - random.nextInt(4), random.nextInt(8) - random.nextInt(8)); + + if (world.isEmpty(blockposition1) && (!world.worldProvider.o() || blockposition1.getY() < 254) && Blocks.DOUBLE_PLANT.canPlace(world, blockposition1)) { + Blocks.DOUBLE_PLANT.a(world, blockposition1, this.a, 2); + flag = true; + } + } + + return flag; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTreeAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTreeAbstract.java new file mode 100644 index 0000000..5f6aed4 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTreeAbstract.java @@ -0,0 +1,25 @@ +package net.minecraft.server; + +import java.util.Random; + +public abstract class WorldGenTreeAbstract extends WorldGenerator { + + public WorldGenTreeAbstract(boolean flag) { + super(flag); + } + + protected boolean a(Block block) { + Material material = block.getMaterial(); + + return material == Material.AIR || material == Material.LEAVES || block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.LOG || block == Blocks.LOG2 || block == Blocks.SAPLING || block == Blocks.VINE; + } + + public void a(World world, Random random, BlockPosition blockposition) {} + + protected void a(World world, BlockPosition blockposition) { + if (world.getType(blockposition).getBlock() != Blocks.DIRT) { + this.a(world, blockposition, Blocks.DIRT.getBlockData()); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTrees.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTrees.java new file mode 100644 index 0000000..de3c036 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenTrees.java @@ -0,0 +1,204 @@ +package net.minecraft.server; + +import java.util.Iterator; +import java.util.Random; + +public class WorldGenTrees extends WorldGenTreeAbstract { + + private static final IBlockData a = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.OAK); + private static final IBlockData b = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + private final int c; + private final boolean d; + private final IBlockData e; + private final IBlockData f; + + public WorldGenTrees(boolean flag) { + this(flag, 4, WorldGenTrees.a, WorldGenTrees.b, false); + } + + public WorldGenTrees(boolean flag, int i, IBlockData iblockdata, IBlockData iblockdata1, boolean flag1) { + super(flag); + this.c = i; + this.e = iblockdata; + this.f = iblockdata1; + this.d = flag1; + } + + public boolean generate(World world, Random random, BlockPosition blockposition) { + int i = random.nextInt(3) + this.c; + boolean flag = true; + + if (blockposition.getY() >= 1 && blockposition.getY() + i + 1 <= 256) { + byte b0; + int j; + int k; + + for (int l = blockposition.getY(); l <= blockposition.getY() + 1 + i; ++l) { + b0 = 1; + if (l == blockposition.getY()) { + b0 = 0; + } + + if (l >= blockposition.getY() + 1 + i - 2) { + b0 = 2; + } + + BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); + + for (j = blockposition.getX() - b0; j <= blockposition.getX() + b0 && flag; ++j) { + for (k = blockposition.getZ() - b0; k <= blockposition.getZ() + b0 && flag; ++k) { + if (l >= 0 && l < 256) { + if (!this.a(world.getType(blockposition_mutableblockposition.c(j, l, k)).getBlock())) { + flag = false; + } + } else { + flag = false; + } + } + } + } + + if (!flag) { + return false; + } else { + Block block = world.getType(blockposition.down()).getBlock(); + + if ((block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.FARMLAND) && blockposition.getY() < 256 - i - 1) { + this.a(world, blockposition.down()); + b0 = 3; + byte b1 = 0; + + int i1; + int j1; + int k1; + BlockPosition blockposition1; + + for (j = blockposition.getY() - b0 + i; j <= blockposition.getY() + i; ++j) { + k = j - (blockposition.getY() + i); + i1 = b1 + 1 - k / 2; + + for (int l1 = blockposition.getX() - i1; l1 <= blockposition.getX() + i1; ++l1) { + j1 = l1 - blockposition.getX(); + + for (k1 = blockposition.getZ() - i1; k1 <= blockposition.getZ() + i1; ++k1) { + int i2 = k1 - blockposition.getZ(); + + if (Math.abs(j1) != i1 || Math.abs(i2) != i1 || random.nextInt(2) != 0 && k != 0) { + blockposition1 = new BlockPosition(l1, j, k1); + Block block1 = world.getType(blockposition1).getBlock(); + + if (block1.getMaterial() == Material.AIR || block1.getMaterial() == Material.LEAVES || block1.getMaterial() == Material.REPLACEABLE_PLANT) { + this.a(world, blockposition1, this.f); + } + } + } + } + } + + for (j = 0; j < i; ++j) { + Block block2 = world.getType(blockposition.up(j)).getBlock(); + + if (block2.getMaterial() == Material.AIR || block2.getMaterial() == Material.LEAVES || block2.getMaterial() == Material.REPLACEABLE_PLANT) { + this.a(world, blockposition.up(j), this.e); + if (this.d && j > 0) { + if (random.nextInt(3) > 0 && world.isEmpty(blockposition.a(-1, j, 0))) { + this.a(world, blockposition.a(-1, j, 0), BlockVine.EAST); + } + + if (random.nextInt(3) > 0 && world.isEmpty(blockposition.a(1, j, 0))) { + this.a(world, blockposition.a(1, j, 0), BlockVine.WEST); + } + + if (random.nextInt(3) > 0 && world.isEmpty(blockposition.a(0, j, -1))) { + this.a(world, blockposition.a(0, j, -1), BlockVine.SOUTH); + } + + if (random.nextInt(3) > 0 && world.isEmpty(blockposition.a(0, j, 1))) { + this.a(world, blockposition.a(0, j, 1), BlockVine.NORTH); + } + } + } + } + + if (this.d) { + for (j = blockposition.getY() - 3 + i; j <= blockposition.getY() + i; ++j) { + k = j - (blockposition.getY() + i); + i1 = 2 - k / 2; + BlockPosition.MutableBlockPosition blockposition_mutableblockposition1 = new BlockPosition.MutableBlockPosition(); + + for (j1 = blockposition.getX() - i1; j1 <= blockposition.getX() + i1; ++j1) { + for (k1 = blockposition.getZ() - i1; k1 <= blockposition.getZ() + i1; ++k1) { + blockposition_mutableblockposition1.c(j1, j, k1); + if (world.getType(blockposition_mutableblockposition1).getBlock().getMaterial() == Material.LEAVES) { + BlockPosition blockposition2 = blockposition_mutableblockposition1.west(); + + blockposition1 = blockposition_mutableblockposition1.east(); + BlockPosition blockposition3 = blockposition_mutableblockposition1.north(); + BlockPosition blockposition4 = blockposition_mutableblockposition1.south(); + + if (random.nextInt(4) == 0 && world.getType(blockposition2).getBlock().getMaterial() == Material.AIR) { + this.b(world, blockposition2, BlockVine.EAST); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition1).getBlock().getMaterial() == Material.AIR) { + this.b(world, blockposition1, BlockVine.WEST); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition3).getBlock().getMaterial() == Material.AIR) { + this.b(world, blockposition3, BlockVine.SOUTH); + } + + if (random.nextInt(4) == 0 && world.getType(blockposition4).getBlock().getMaterial() == Material.AIR) { + this.b(world, blockposition4, BlockVine.NORTH); + } + } + } + } + } + + if (random.nextInt(5) == 0 && i > 5) { + for (j = 0; j < 2; ++j) { + Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); + + while (iterator.hasNext()) { + EnumDirection enumdirection = (EnumDirection) iterator.next(); + + if (random.nextInt(4 - j) == 0) { + EnumDirection enumdirection1 = enumdirection.opposite(); + + this.a(world, random.nextInt(3), blockposition.a(enumdirection1.getAdjacentX(), i - 5 + j, enumdirection1.getAdjacentZ()), enumdirection); + } + } + } + } + } + + return true; + } else { + return false; + } + } + } else { + return false; + } + } + + private void a(World world, int i, BlockPosition blockposition, EnumDirection enumdirection) { + this.a(world, blockposition, Blocks.COCOA.getBlockData().set(BlockCocoa.AGE, Integer.valueOf(i)).set(BlockCocoa.FACING, enumdirection)); + } + + private void a(World world, BlockPosition blockposition, BlockStateBoolean blockstateboolean) { + this.a(world, blockposition, Blocks.VINE.getBlockData().set(blockstateboolean, Boolean.valueOf(true))); + } + + private void b(World world, BlockPosition blockposition, BlockStateBoolean blockstateboolean) { + this.a(world, blockposition, blockstateboolean); + int i = 4; + + for (blockposition = blockposition.down(); world.getType(blockposition).getBlock().getMaterial() == Material.AIR && i > 0; --i) { + this.a(world, blockposition, blockstateboolean); + blockposition = blockposition.down(); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillage.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillage.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillage.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillage.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillagePieces.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillagePieces.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillagePieces.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVillagePieces.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVines.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVines.java new file mode 100644 index 0000000..392a690 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenVines.java @@ -0,0 +1,32 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenVines extends WorldGenerator { + + public WorldGenVines() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (; blockposition.getY() < 128; blockposition = blockposition.up()) { + if (world.isEmpty(blockposition)) { + EnumDirection[] aenumdirection = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(); + int i = aenumdirection.length; + + for (int j = 0; j < i; ++j) { + EnumDirection enumdirection = aenumdirection[j]; + + if (Blocks.VINE.canPlace(world, blockposition, enumdirection)) { + IBlockData iblockdata = Blocks.VINE.getBlockData().set(BlockVine.NORTH, Boolean.valueOf(enumdirection == EnumDirection.NORTH)).set(BlockVine.EAST, Boolean.valueOf(enumdirection == EnumDirection.EAST)).set(BlockVine.SOUTH, Boolean.valueOf(enumdirection == EnumDirection.SOUTH)).set(BlockVine.WEST, Boolean.valueOf(enumdirection == EnumDirection.WEST)); + + world.setTypeAndData(blockposition, iblockdata, 2); + break; + } + } + } else { + blockposition = blockposition.a(random.nextInt(4) - random.nextInt(4), 0, random.nextInt(4) - random.nextInt(4)); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenWaterLily.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenWaterLily.java new file mode 100644 index 0000000..0d875a3 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenWaterLily.java @@ -0,0 +1,22 @@ +package net.minecraft.server; + +import java.util.Random; + +public class WorldGenWaterLily extends WorldGenerator { + + public WorldGenWaterLily() {} + + public boolean generate(World world, Random random, BlockPosition blockposition) { + for (int i = 0; i < 10; ++i) { + int j = blockposition.getX() + random.nextInt(8) - random.nextInt(8); + int k = blockposition.getY() + random.nextInt(4) - random.nextInt(4); + int l = blockposition.getZ() + random.nextInt(8) - random.nextInt(8); + + if (world.isEmpty(new BlockPosition(j, k, l)) && Blocks.WATERLILY.canPlace(world, new BlockPosition(j, k, l))) { + world.setTypeAndData(new BlockPosition(j, k, l), Blocks.WATERLILY.getBlockData(), 2); + } + } + + return true; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenerator.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenerator.java new file mode 100644 index 0000000..b8b4e6f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldGenerator.java @@ -0,0 +1,29 @@ +package net.minecraft.server; + +import java.util.Random; + +public abstract class WorldGenerator { + + private final boolean a; + + public WorldGenerator() { + this(false); + } + + public WorldGenerator(boolean flag) { + this.a = flag; + } + + public abstract boolean generate(World world, Random random, BlockPosition blockposition); + + public void e() {} + + protected void a(World world, BlockPosition blockposition, IBlockData iblockdata) { + if (this.a) { + world.setTypeAndData(blockposition, iblockdata, 3); + } else { + world.setTypeAndData(blockposition, iblockdata, 2); + } + + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoader.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoader.java new file mode 100644 index 0000000..b82108f --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoader.java @@ -0,0 +1,117 @@ +package net.minecraft.server; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class WorldLoader implements Convertable { + + private static final Logger b = LogManager.getLogger(); + protected final File a; + + public WorldLoader(File file) { + if (!file.exists()) { + file.mkdirs(); + } + + this.a = file; + } + + public void d() {} + + public WorldData c(String s) { + File file = new File(this.a, s); + + if (!file.exists()) { + return null; + } else { + File file1 = new File(file, "level.dat"); + NBTTagCompound nbttagcompound; + NBTTagCompound nbttagcompound1; + + if (file1.exists()) { + try { + nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file1))); + nbttagcompound1 = nbttagcompound.getCompound("Data"); + return new WorldData(nbttagcompound1); + } catch (Exception exception) { + WorldLoader.b.error("Exception reading " + file1, exception); + } + } + + file1 = new File(file, "level.dat_old"); + if (file1.exists()) { + try { + nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file1))); + nbttagcompound1 = nbttagcompound.getCompound("Data"); + return new WorldData(nbttagcompound1); + } catch (Exception exception1) { + WorldLoader.b.error("Exception reading " + file1, exception1); + } + } + + return null; + } + } + + public boolean e(String s) { + File file = new File(this.a, s); + + if (!file.exists()) { + return true; + } else { + WorldLoader.b.info("Deleting level " + s); + + for (int i = 1; i <= 5; ++i) { + WorldLoader.b.info("Attempt " + i + "..."); + if (a(file.listFiles())) { + break; + } + + WorldLoader.b.warn("Unsuccessful in deleting contents."); + if (i < 5) { + try { + Thread.sleep(500L); + } catch (InterruptedException interruptedexception) { + ; + } + } + } + + return file.delete(); + } + } + + protected static boolean a(File[] afile) { + for (int i = 0; i < afile.length; ++i) { + File file = afile[i]; + + WorldLoader.b.debug("Deleting " + file); + if (file.isDirectory() && !a(file.listFiles())) { + WorldLoader.b.warn("Couldn\'t delete directory " + file); + return false; + } + + if (!file.delete()) { + WorldLoader.b.warn("Couldn\'t delete file " + file); + return false; + } + } + + return true; + } + + public IDataManager a(String s, boolean flag) { + return new WorldNBTStorage(this.a, s, flag); + } + + public boolean isConvertable(String s) { + return false; + } + + public boolean convert(String s, IProgressUpdate iprogressupdate) { + return false; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoaderServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoaderServer.java new file mode 100644 index 0000000..6577590 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldLoaderServer.java @@ -0,0 +1,188 @@ +package net.minecraft.server; + +import com.google.common.collect.Lists; +import java.io.DataInputStream; +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class WorldLoaderServer extends WorldLoader { + + private static final Logger b = LogManager.getLogger(); + + public WorldLoaderServer(File file) { + super(file); + } + + protected int c() { + return 19133; + } + + public void d() { + RegionFileCache.a(); + } + + public IDataManager a(String s, boolean flag) { + return new ServerNBTManager(this.a, s, flag); + } + + public boolean isConvertable(String s) { + WorldData worlddata = this.c(s); + + return worlddata != null && worlddata.l() != this.c(); + } + + public boolean convert(String s, IProgressUpdate iprogressupdate) { + iprogressupdate.a(0); + ArrayList arraylist = Lists.newArrayList(); + ArrayList arraylist1 = Lists.newArrayList(); + ArrayList arraylist2 = Lists.newArrayList(); + File file = new File(this.a, s); + File file1 = new File(file, "DIM-1"); + File file2 = new File(file, "DIM1"); + + WorldLoaderServer.b.info("Scanning folders..."); + this.a(file, arraylist); + if (file1.exists()) { + this.a(file1, arraylist1); + } + + if (file2.exists()) { + this.a(file2, arraylist2); + } + + int i = arraylist.size() + arraylist1.size() + arraylist2.size(); + + WorldLoaderServer.b.info("Total conversion count is " + i); + WorldData worlddata = this.c(s); + Object object = null; + + if (worlddata.getType() == WorldType.FLAT) { + object = new WorldChunkManagerHell(BiomeBase.PLAINS, 0.5F); + } else { + object = new WorldChunkManager(worlddata.getSeed(), worlddata.getType(), worlddata.getGeneratorOptions()); + } + + this.a(new File(file, "region"), (Iterable) arraylist, (WorldChunkManager) object, 0, i, iprogressupdate); + this.a(new File(file1, "region"), (Iterable) arraylist1, new WorldChunkManagerHell(BiomeBase.HELL, 0.0F), arraylist.size(), i, iprogressupdate); + this.a(new File(file2, "region"), (Iterable) arraylist2, new WorldChunkManagerHell(BiomeBase.SKY, 0.0F), arraylist.size() + arraylist1.size(), i, iprogressupdate); + worlddata.e(19133); + if (worlddata.getType() == WorldType.NORMAL_1_1) { + worlddata.a(WorldType.NORMAL); + } + + this.g(s); + IDataManager idatamanager = this.a(s, false); + + idatamanager.saveWorldData(worlddata); + return true; + } + + private void g(String s) { + File file = new File(this.a, s); + + if (!file.exists()) { + WorldLoaderServer.b.warn("Unable to create level.dat_mcr backup"); + } else { + File file1 = new File(file, "level.dat"); + + if (!file1.exists()) { + WorldLoaderServer.b.warn("Unable to create level.dat_mcr backup"); + } else { + File file2 = new File(file, "level.dat_mcr"); + + if (!file1.renameTo(file2)) { + WorldLoaderServer.b.warn("Unable to create level.dat_mcr backup"); + } + + } + } + } + + private void a(File file, Iterable iterable, WorldChunkManager worldchunkmanager, int i, int j, IProgressUpdate iprogressupdate) { + Iterator iterator = iterable.iterator(); + + while (iterator.hasNext()) { + File file1 = (File) iterator.next(); + + this.a(file, file1, worldchunkmanager, i, j, iprogressupdate); + ++i; + int k = (int) Math.round(100.0D * (double) i / (double) j); + + iprogressupdate.a(k); + } + + } + + private void a(File file, File file1, WorldChunkManager worldchunkmanager, int i, int j, IProgressUpdate iprogressupdate) { + try { + String s = file1.getName(); + RegionFile regionfile = new RegionFile(file1); + RegionFile regionfile1 = new RegionFile(new File(file, s.substring(0, s.length() - ".mcr".length()) + ".mca")); + + for (int k = 0; k < 32; ++k) { + int l; + + for (l = 0; l < 32; ++l) { + if (regionfile.c(k, l) && !regionfile1.c(k, l)) { + DataInputStream datainputstream = regionfile.a(k, l); + + if (datainputstream == null) { + WorldLoaderServer.b.warn("Failed to fetch input stream"); + } else { + NBTTagCompound nbttagcompound = NBTCompressedStreamTools.a(datainputstream); + + datainputstream.close(); + NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Level"); + OldChunkLoader.OldChunk oldchunkloader_oldchunk = OldChunkLoader.a(nbttagcompound1); + NBTTagCompound nbttagcompound2 = new NBTTagCompound(); + NBTTagCompound nbttagcompound3 = new NBTTagCompound(); + + nbttagcompound2.set("Level", nbttagcompound3); + OldChunkLoader.a(oldchunkloader_oldchunk, nbttagcompound3, worldchunkmanager); + DataOutputStream dataoutputstream = regionfile1.b(k, l); + + NBTCompressedStreamTools.a(nbttagcompound2, (DataOutput) dataoutputstream); + dataoutputstream.close(); + } + } + } + + l = (int) Math.round(100.0D * (double) (i * 1024) / (double) (j * 1024)); + int i1 = (int) Math.round(100.0D * (double) ((k + 1) * 32 + i * 1024) / (double) (j * 1024)); + + if (i1 > l) { + iprogressupdate.a(i1); + } + } + + regionfile.c(); + regionfile1.c(); + } catch (IOException ioexception) { + ioexception.printStackTrace(); + } + + } + + private void a(File file, Collection collection) { + File file1 = new File(file, "region"); + File[] afile = file1.listFiles(new FilenameFilter() { + public boolean accept(File file, String s) { + return s.endsWith(".mcr"); + } + }); + + if (afile != null) { + Collections.addAll(collection, afile); + } + + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldManager.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldManager.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldMap.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldMap.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldMap.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldNBTStorage.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldNBTStorage.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldNBTStorage.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldNBTStorage.java diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldProvider.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProvider.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldProvider.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldProvider.java diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderHell.java new file mode 100644 index 0000000..1145ed2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderHell.java @@ -0,0 +1,64 @@ +package net.minecraft.server; + +public class WorldProviderHell extends WorldProvider { + + public WorldProviderHell() {} + + public void b() { + this.c = new WorldChunkManagerHell(BiomeBase.HELL, 0.0F); + this.d = true; + this.e = true; + this.dimension = -1; + } + + protected void a() { + float f = 0.1F; + + for (int i = 0; i <= 15; ++i) { + float f1 = 1.0F - (float) i / 15.0F; + + this.f[i] = (1.0F - f1) / (f1 * 3.0F + 1.0F) * (1.0F - f) + f; + } + + } + + public IChunkProvider getChunkProvider() { + return new ChunkProviderHell(this.b, this.b.getWorldData().shouldGenerateMapFeatures(), this.b.getSeed()); + } + + public boolean d() { + return false; + } + + public boolean canSpawn(int i, int j) { + return false; + } + + public float a(long i, float f) { + return 0.5F; + } + + public boolean e() { + return false; + } + + public String getName() { + return "Nether"; + } + + public String getSuffix() { + return "_nether"; + } + + public WorldBorder getWorldBorder() { + return new WorldBorder() { + public double getCenterX() { + return super.getCenterX() / 8.0D; + } + + public double getCenterZ() { + return super.getCenterZ() / 8.0D; + } + }; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderNormal.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderNormal.java new file mode 100644 index 0000000..2bf28f2 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderNormal.java @@ -0,0 +1,14 @@ +package net.minecraft.server; + +public class WorldProviderNormal extends WorldProvider { + + public WorldProviderNormal() {} + + public String getName() { + return "Overworld"; + } + + public String getSuffix() { + return ""; + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderTheEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderTheEnd.java new file mode 100644 index 0000000..17b3e13 --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldProviderTheEnd.java @@ -0,0 +1,48 @@ +package net.minecraft.server; + +public class WorldProviderTheEnd extends WorldProvider { + + public WorldProviderTheEnd() {} + + public void b() { + this.c = new WorldChunkManagerHell(BiomeBase.SKY, 0.0F); + this.dimension = 1; + this.e = true; + } + + public IChunkProvider getChunkProvider() { + return new ChunkProviderTheEnd(this.b, this.b.getSeed()); + } + + public float a(long i, float f) { + return 0.0F; + } + + public boolean e() { + return false; + } + + public boolean d() { + return false; + } + + public boolean canSpawn(int i, int j) { + return this.b.c(new BlockPosition(i, 0, j)).getMaterial().isSolid(); + } + + public BlockPosition h() { + return new BlockPosition(100, 50, 0); + } + + public int getSeaLevel() { + return 50; + } + + public String getName() { + return "The End"; + } + + public String getSuffix() { + return "_end"; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java similarity index 99% rename from TacoSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java rename to eSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java index 294679c..360aa1c 100644 --- a/TacoSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldServer.java @@ -41,6 +41,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { private int T; private static final List U = Lists.newArrayList(new StructurePieceTreasure[] { new StructurePieceTreasure(Items.STICK, 0, 1, 3, 10), new StructurePieceTreasure(Item.getItemOf(Blocks.PLANKS), 0, 1, 3, 10), new StructurePieceTreasure(Item.getItemOf(Blocks.LOG), 0, 1, 3, 10), new StructurePieceTreasure(Items.STONE_AXE, 0, 1, 1, 3), new StructurePieceTreasure(Items.WOODEN_AXE, 0, 1, 1, 5), new StructurePieceTreasure(Items.STONE_PICKAXE, 0, 1, 1, 3), new StructurePieceTreasure(Items.WOODEN_PICKAXE, 0, 1, 1, 5), new StructurePieceTreasure(Items.APPLE, 0, 2, 3, 5), new StructurePieceTreasure(Items.BREAD, 0, 2, 3, 3), new StructurePieceTreasure(Item.getItemOf(Blocks.LOG2), 0, 1, 3, 10)}); private List V = Lists.newArrayList(); + public boolean hasPhysicsEvent = true; // PandaSpigot // Migot start public void cancelHeavyCalculations(boolean cancel) { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldSettings.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldSettings.java new file mode 100644 index 0000000..122780a --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldSettings.java @@ -0,0 +1,140 @@ +package net.minecraft.server; + +public final class WorldSettings { + + private final long a; + private final WorldSettings.EnumGamemode b; + private final boolean c; + private final boolean d; + private final WorldType e; + private boolean f; + private boolean g; + private String h; + + public WorldSettings(long i, WorldSettings.EnumGamemode worldsettings_enumgamemode, boolean flag, boolean flag1, WorldType worldtype) { + this.h = ""; + this.a = i; + this.b = worldsettings_enumgamemode; + this.c = flag; + this.d = flag1; + this.e = worldtype; + } + + public WorldSettings(WorldData worlddata) { + this(worlddata.getSeed(), worlddata.getGameType(), worlddata.shouldGenerateMapFeatures(), worlddata.isHardcore(), worlddata.getType()); + } + + public WorldSettings a() { + this.g = true; + return this; + } + + public WorldSettings setGeneratorSettings(String s) { + this.h = s; + return this; + } + + public boolean c() { + return this.g; + } + + public long d() { + return this.a; + } + + public WorldSettings.EnumGamemode e() { + return this.b; + } + + public boolean f() { + return this.d; + } + + public boolean g() { + return this.c; + } + + public WorldType h() { + return this.e; + } + + public boolean i() { + return this.f; + } + + public static WorldSettings.EnumGamemode a(int i) { + return WorldSettings.EnumGamemode.getById(i); + } + + public String j() { + return this.h; + } + + public static enum EnumGamemode { + + NOT_SET(-1, ""), SURVIVAL(0, "survival"), CREATIVE(1, "creative"), ADVENTURE(2, "adventure"), SPECTATOR(3, "spectator"); + + int f; + String g; + + private EnumGamemode(int i, String s) { + this.f = i; + this.g = s; + } + + public int getId() { + return this.f; + } + + public String b() { + return this.g; + } + + public void a(PlayerAbilities playerabilities) { + if (this == WorldSettings.EnumGamemode.CREATIVE) { + playerabilities.canFly = true; + playerabilities.canInstantlyBuild = true; + playerabilities.isInvulnerable = true; + } else if (this == WorldSettings.EnumGamemode.SPECTATOR) { + playerabilities.canFly = true; + playerabilities.canInstantlyBuild = false; + playerabilities.isInvulnerable = true; + playerabilities.isFlying = true; + } else { + playerabilities.canFly = false; + playerabilities.canInstantlyBuild = false; + playerabilities.isInvulnerable = false; + playerabilities.isFlying = false; + } + + playerabilities.mayBuild = !this.c(); + } + + public boolean c() { + return this == WorldSettings.EnumGamemode.ADVENTURE || this == WorldSettings.EnumGamemode.SPECTATOR; + } + + public boolean d() { + return this == WorldSettings.EnumGamemode.CREATIVE; + } + + public boolean e() { + return this == WorldSettings.EnumGamemode.SURVIVAL || this == WorldSettings.EnumGamemode.ADVENTURE; + } + + public static WorldSettings.EnumGamemode getById(int i) { + WorldSettings.EnumGamemode[] aworldsettings_enumgamemode = values(); + int j = aworldsettings_enumgamemode.length; + + for (int k = 0; k < j; ++k) { + WorldSettings.EnumGamemode worldsettings_enumgamemode = aworldsettings_enumgamemode[k]; + + if (worldsettings_enumgamemode.f == i) { + return worldsettings_enumgamemode; + } + } + + return WorldSettings.EnumGamemode.SURVIVAL; + } + } +} diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/WorldType.java b/eSpigot-Server/src/main/java/net/minecraft/server/WorldType.java new file mode 100644 index 0000000..188f27b --- /dev/null +++ b/eSpigot-Server/src/main/java/net/minecraft/server/WorldType.java @@ -0,0 +1,76 @@ +package net.minecraft.server; + +public class WorldType { + + public static final WorldType[] types = new WorldType[16]; + public static final WorldType NORMAL = (new WorldType(0, "default", 1)).i(); + public static final WorldType FLAT = new WorldType(1, "flat"); + public static final WorldType LARGE_BIOMES = new WorldType(2, "largeBiomes"); + public static final WorldType AMPLIFIED = (new WorldType(3, "amplified")).j(); + public static final WorldType CUSTOMIZED = new WorldType(4, "customized"); + public static final WorldType DEBUG_ALL_BLOCK_STATES = new WorldType(5, "debug_all_block_states"); + public static final WorldType NORMAL_1_1 = (new WorldType(8, "default_1_1", 0)).a(false); + private final int i; + private final String name; + private final int version; + private boolean l; + private boolean m; + private boolean n; + + private WorldType(int i, String s) { + this(i, s, 0); + } + + private WorldType(int i, String s, int j) { + this.name = s; + this.version = j; + this.l = true; + this.i = i; + WorldType.types[i] = this; + } + + public String name() { + return this.name; + } + + public int getVersion() { + return this.version; + } + + public WorldType a(int i) { + return this == WorldType.NORMAL && i == 0 ? WorldType.NORMAL_1_1 : this; + } + + private WorldType a(boolean flag) { + this.l = flag; + return this; + } + + private WorldType i() { + this.m = true; + return this; + } + + public boolean f() { + return this.m; + } + + public static WorldType getType(String s) { + for (int i = 0; i < WorldType.types.length; ++i) { + if (WorldType.types[i] != null && WorldType.types[i].name.equalsIgnoreCase(s)) { + return WorldType.types[i]; + } + } + + return null; + } + + public int g() { + return this.i; + } + + private WorldType j() { + this.n = true; + return this; + } +} diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/BlockStateRegistry.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/BlockStateRegistry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/BlockStateRegistry.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/BlockStateRegistry.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/CompatHacks.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/CompatHacks.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/CompatHacks.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/CompatHacks.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/HopperHelper.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/HopperHelper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/HopperHelper.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/HopperHelper.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/HopperPusher.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/HopperPusher.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/HopperPusher.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/HopperPusher.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayMap.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayMap.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayMap.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayTable.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayTable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayTable.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/ImmutableArrayTable.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/Indexer.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/Indexer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/Indexer.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/Indexer.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotConfig.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotConfig.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotConfig.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotWorldConfig.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotWorldConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotWorldConfig.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/TacoSpigotWorldConfig.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/function/ObjIntFunction.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/function/ObjIntFunction.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/function/ObjIntFunction.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/function/ObjIntFunction.java diff --git a/TacoSpigot-Server/src/main/java/net/techcable/tacospigot/utils/BlockHelper.java b/eSpigot-Server/src/main/java/net/techcable/tacospigot/utils/BlockHelper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/net/techcable/tacospigot/utils/BlockHelper.java rename to eSpigot-Server/src/main/java/net/techcable/tacospigot/utils/BlockHelper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftArt.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftArt.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftArt.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftArt.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java similarity index 97% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index f98f3da..5667c8b 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -113,15 +113,16 @@ public class CraftChunk implements Chunk { Entity[] entities = new Entity[count]; for (int i = 0; i < 16; i++) { - // Paper start - speed up (was with chunk.entitySlices[i].toArray() and cast - // checks which costs a lot of performance if called often) - for (Object entity : chunk.entitySlices[i]) { + + // PandaSpigot start - speed up (was with chunk.entitySlices[i].toArray() and cast checks which costs a lot of performance if called often) + for (net.minecraft.server.Entity entity : chunk.entitySlices[i]) { if (entity == null) { continue; } - entities[index++] = ((net.minecraft.server.Entity) entity).getBukkitEntity(); + + entities[index++] = entity.getBukkitEntity(); } - // Paper end + // PandaSpigot end } return entities; diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEffect.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEffect.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEffect.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEffect.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanEntry.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanEntry.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanEntry.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanList.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanList.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftIpBanList.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanEntry.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanEntry.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanEntry.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanEntry.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanList.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanList.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftProfileBanList.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java similarity index 99% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index ac5e8b1..e502320 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -24,6 +24,8 @@ import java.util.regex.Pattern; import javax.imageio.ImageIO; import com.elevatemc.spigot.eSpigot; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import net.minecraft.server.*; import org.bukkit.BanList; @@ -103,17 +105,14 @@ import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.config.dbplatform.SQLitePlatform; import com.avaje.ebeaninternal.server.lib.sql.TransactionIsolation; import com.google.common.base.Charsets; -import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import com.google.common.collect.MapMaker; import com.mojang.authlib.GameProfile; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufOutputStream; import io.netty.buffer.Unpooled; import io.netty.handler.codec.base64.Base64; -import jline.console.ConsoleReader; import net.md_5.bungee.api.chat.BaseComponent; import org.yaml.snakeyaml.representer.Representer; @@ -138,7 +137,7 @@ public final class CraftServer implements Server { private final LoaderOptions loaderOptions = new LoaderOptions(); private final Yaml yaml = new Yaml(new SafeConstructor(), new Representer(), new DumperOptions(), loaderOptions); // KigPaper end - private final Map offlinePlayers = new MapMaker().softValues().makeMap(); + private final Cache offlinePlayers = CacheBuilder.newBuilder().softValues().build(); private final EntityMetadataStore entityMetadata = new EntityMetadataStore(); private final PlayerMetadataStore playerMetadata = new PlayerMetadataStore(); private final WorldMetadataStore worldMetadata = new WorldMetadataStore(); @@ -191,7 +190,7 @@ public final class CraftServer implements Server { // Ugly hack :( if (!Main.useConsole) { - getLogger().info("Console input is disabled due to --noconsole command argument"); + getLogger().info("PandaConsole input is disabled due to --noconsole command argument"); } configuration = YamlConfiguration.loadConfiguration(getConfigFile()); @@ -1093,9 +1092,9 @@ public final class CraftServer implements Server { return logger; } - public ConsoleReader getReader() { + /*public ConsoleReader getReader() { return console.reader; - } + }*/ @Override public PluginCommand getPluginCommand(String name) { @@ -1376,7 +1375,7 @@ public final class CraftServer implements Server { result = getOfflinePlayer(profile); } } else { - offlinePlayers.remove(result.getUniqueId()); + offlinePlayers.invalidate(result.getUniqueId()); } return result; @@ -1388,13 +1387,13 @@ public final class CraftServer implements Server { OfflinePlayer result = getPlayer(id); if (result == null) { - result = offlinePlayers.get(id); + result = offlinePlayers.getIfPresent(id); if (result == null) { result = new CraftOfflinePlayer(this, new GameProfile(id, null)); offlinePlayers.put(id, result); } } else { - offlinePlayers.remove(id); + offlinePlayers.invalidate(id); } return result; diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftSound.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftSound.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftSound.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftSound.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftStatistic.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftStatistic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftStatistic.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftStatistic.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftTravelAgent.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftTravelAgent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftTravelAgent.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftTravelAgent.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorldBorder.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorldBorder.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorldBorder.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftWorldBorder.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/LoggerOutputStream.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/LoggerOutputStream.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/LoggerOutputStream.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/LoggerOutputStream.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java similarity index 91% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java index a5bbd8b..5ab1c08 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/Main.java @@ -13,7 +13,7 @@ import net.minecraft.server.MinecraftServer; import org.apache.commons.lang3.JavaVersion; import org.apache.commons.lang3.SystemUtils; -import org.fusesource.jansi.AnsiConsole; +import net.minecrell.terminalconsole.TerminalConsoleAppender; // PandaSpigot public class Main { public static boolean useJline = true; @@ -28,6 +28,7 @@ public class Main { System.exit(1); } // Todo: Installation script + if (System.getProperty("jdk.nio.maxCachedBufferSize") == null) System.setProperty("jdk.nio.maxCachedBufferSize", "262144"); // PandaSpigot - cap per-thread NIO cache size OptionParser parser = new OptionParser() { { acceptsAll(asList("?", "help"), "Show the help"); @@ -176,6 +177,7 @@ public class Main { } try { + /* // PandaSpigot - Handled by TerminalConsoleAppender // This trick bypasses Maven Shade's clever rewriting of our getProperty call when using String literals String jline_UnsupportedTerminal = new String(new char[] {'j','l','i','n','e','.','U','n','s','u','p','p','o','r','t','e','d','T','e','r','m','i','n','a','l'}); String jline_terminal = new String(new char[] {'j','l','i','n','e','.','t','e','r','m','i','n','a','l'}); @@ -193,10 +195,21 @@ public class Main { // This ensures the terminal literal will always match the jline implementation System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName()); } + */ + // PandaSpigot start + if (options.has("nojline")) { + System.setProperty(TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); + useJline = false; + } + // PandaSpigot end if (options.has("noconsole")) { useConsole = false; + // PandaSpigot start + useJline = false; + System.setProperty(TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); + // PandaSpigot end } // Spigot Start @@ -215,6 +228,7 @@ public class Main { System.out.println( "Please see http://www.spigotmc.org/wiki/changing-permgen-size/ for more details and more in-depth instructions." ); } // Spigot End + System.setProperty("library.jansi.version", "eSpigot"); // PandaSpigot - set meaningless jansi version to prevent git builds from crashing on Windows net.techcable.tacospigot.TacoSpigotConfig.init((File) options.valueOf("taco-settings")); // TacoSpigot - load config before we load libraries to allow access while loading System.out.println("Loading libraries, please wait..."); MinecraftServer.main(options); diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/Overridden.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/Overridden.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/Overridden.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/Overridden.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/TrigMath.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/TrigMath.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/TrigMath.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/TrigMath.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBrewingStand.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBrewingStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBrewingStand.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftBrewingStand.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCommandBlock.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCommandBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCommandBlock.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCommandBlock.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDropper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDropper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDropper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftDropper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftHopper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftHopper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftHopper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftHopper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOExecutor.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/QueuedChunk.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/QueuedChunk.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/QueuedChunk.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/chunkio/QueuedChunk.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java similarity index 94% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java index b4e2fe5..db13671 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java @@ -5,16 +5,16 @@ import java.util.Map; import org.fusesource.jansi.Ansi; import org.fusesource.jansi.Ansi.Attribute; -import jline.Terminal; +//import jline.Terminal; // PandaSpigot - comment out import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.craftbukkit.CraftServer; -public class ColouredConsoleSender extends CraftConsoleCommandSender { +public class ColouredConsoleSender /*extends CraftConsoleCommandSender */{/* // PandaSpigot - disable private final Terminal terminal; - private final Map replacements = new EnumMap<>(ChatColor.class); + private final Map replacements = new EnumMap(ChatColor.class); private final ChatColor[] colors = ChatColor.values(); protected ColouredConsoleSender() { @@ -71,4 +71,4 @@ public class ColouredConsoleSender extends CraftConsoleCommandSender { return new ColouredConsoleSender(); } } -} +*/} // PandaSpigot diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java similarity index 88% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java index 7dc9f53..aba1be1 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java @@ -7,9 +7,9 @@ import java.util.logging.Level; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.util.Waitable; -import jline.console.completer.Completer; +//import jline.console.completer.Completer; // PandaSpigot - Remove jline2 import -public class ConsoleCommandCompleter implements Completer { +public class ConsoleCommandCompleter /*implements Completer*/ { // PandaSpigot - This class is no longer used private final CraftServer server; public ConsoleCommandCompleter(CraftServer server) { diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftRemoteConsoleCommandSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftRemoteConsoleCommandSender.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftRemoteConsoleCommandSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/CraftRemoteConsoleCommandSender.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/conversations/ConversationTracker.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/conversations/ConversationTracker.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/conversations/ConversationTracker.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/conversations/ConversationTracker.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAmbient.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAmbient.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAmbient.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAmbient.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArrow.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArrow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArrow.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftArrow.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBlaze.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBlaze.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBlaze.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBlaze.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCaveSpider.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCaveSpider.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCaveSpider.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCaveSpider.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexPart.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexPart.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexPart.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexPart.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCow.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCow.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCow.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreature.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreature.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreature.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreature.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEgg.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEgg.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEgg.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEgg.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderCrystal.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderCrystal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderCrystal.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderCrystal.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragonPart.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragonPart.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragonPart.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragonPart.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderPearl.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderPearl.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderPearl.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderPearl.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderSignal.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderSignal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderSignal.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderSignal.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFish.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFish.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFish.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFish.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFlying.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFlying.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFlying.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftFlying.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGiant.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGiant.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGiant.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGiant.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGolem.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGolem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGolem.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGolem.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHorse.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLargeFireball.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLargeFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLargeFireball.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLargeFireball.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLeash.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLeash.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLeash.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLeash.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMagmaCube.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMagmaCube.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMagmaCube.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMagmaCube.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartRideable.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartRideable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartRideable.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartRideable.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMonster.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMonster.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMonster.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMonster.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftOcelot.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftOcelot.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftOcelot.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftOcelot.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPainting.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPainting.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPainting.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPainting.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPig.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPig.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPig.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftProjectile.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftProjectile.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftProjectile.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftProjectile.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSheep.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSheep.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSheep.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSheep.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSilverfish.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSilverfish.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSilverfish.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSilverfish.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSmallFireball.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSmallFireball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSmallFireball.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSmallFireball.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowball.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowball.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowball.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowball.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSpider.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSpider.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSpider.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSpider.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSquid.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSquid.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSquid.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftSquid.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownExpBottle.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownExpBottle.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownExpBottle.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownExpBottle.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVehicle.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVehicle.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVehicle.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVehicle.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWeather.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWeather.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWeather.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWeather.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkull.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkull.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkull.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/InternalChunkGenerator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/InternalChunkGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/InternalChunkGenerator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/InternalChunkGenerator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NetherChunkGenerator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NetherChunkGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NetherChunkGenerator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NetherChunkGenerator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/NormalChunkGenerator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/SkyLandsChunkGenerator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/SkyLandsChunkGenerator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/SkyLandsChunkGenerator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/generator/SkyLandsChunkGenerator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CommandAliasHelpTopic.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CommandAliasHelpTopic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CommandAliasHelpTopic.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CommandAliasHelpTopic.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomHelpTopic.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomHelpTopic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomHelpTopic.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomHelpTopic.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpTopicAmendment.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpTopicAmendment.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpTopicAmendment.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpTopicAmendment.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopic.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopic.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopic.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopic.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopicFactory.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopicFactory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopicFactory.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopicFactory.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBeacon.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBeacon.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBeacon.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBeacon.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryDoubleChest.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryEnchanting.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryEnchanting.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryEnchanting.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryEnchanting.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryHorse.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryHorse.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryHorse.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryHorse.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/RenderData.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/RenderData.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/RenderData.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/map/RenderData.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/EntityMetadataStore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/EntityMetadataStore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/EntityMetadataStore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/EntityMetadataStore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/PlayerMetadataStore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/PlayerMetadataStore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/PlayerMetadataStore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/PlayerMetadataStore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/SpecializedBlockMetadataStore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/SpecializedBlockMetadataStore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/SpecializedBlockMetadataStore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/SpecializedBlockMetadataStore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/WorldMetadataStore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/WorldMetadataStore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/WorldMetadataStore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/metadata/WorldMetadataStore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/projectiles/CraftBlockProjectileSource.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/projectiles/CraftBlockProjectileSource.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/projectiles/CraftBlockProjectileSource.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/projectiles/CraftBlockProjectileSource.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncDebugger.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncDebugger.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncDebugger.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncDebugger.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftCriteria.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftCriteria.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftCriteria.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftCriteria.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScore.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScore.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScore.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScore.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardComponent.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardComponent.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardComponent.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardComponent.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/AsynchronousExecutor.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/AsynchronousExecutor.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/AsynchronousExecutor.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/AsynchronousExecutor.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftDamageSource.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftDamageSource.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftDamageSource.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftDamageSource.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtil.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtil.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtil.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/CraftPotionUtil.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/DatFileFilter.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/DatFileFilter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/DatFileFilter.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/DatFileFilter.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/HashTreeSet.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/HashTreeSet.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/HashTreeSet.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/HashTreeSet.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHash.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHash.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHash.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHash.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/MojangNameLookup.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/MojangNameLookup.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/MojangNameLookup.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/MojangNameLookup.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java similarity index 79% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java index 35778e2..4425c5c 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java @@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.util; import net.minecraft.server.ExceptionWorldConflict; import net.minecraft.server.MinecraftServer; +import net.minecrell.terminalconsole.TerminalConsoleAppender; public class ServerShutdownThread extends Thread { private final MinecraftServer server; @@ -18,7 +19,7 @@ public class ServerShutdownThread extends Thread { ex.printStackTrace(); } finally { try { - server.reader.getTerminal().restore(); + TerminalConsoleAppender.close(); // PandaSpigot - Use TerminalConsoleAppender } catch (Exception ignored) { } } diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java similarity index 89% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java index 772f730..efb35c7 100644 --- a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java +++ b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java @@ -4,11 +4,11 @@ import java.io.IOException; import java.io.OutputStream; import java.util.logging.Level; import java.util.logging.Logger; -import jline.console.ConsoleReader; +//import jline.console.ConsoleReader; // PandaSpigot - comment out import com.mojang.util.QueueLogAppender; import org.bukkit.craftbukkit.Main; -public class TerminalConsoleWriterThread implements Runnable { +public class TerminalConsoleWriterThread /*implements Runnable */{/* // PandaSpigot - disable final private ConsoleReader reader; final private OutputStream output; @@ -49,4 +49,4 @@ public class TerminalConsoleWriterThread implements Runnable { } } } -} +*/} // PandaSpigot diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Versioning.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Versioning.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Versioning.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Waitable.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Waitable.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Waitable.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/Waitable.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java diff --git a/TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java rename to eSpigot-Server/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java diff --git a/TacoSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/eSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java similarity index 87% rename from TacoSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java rename to eSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java index 2ca1479..847a456 100644 --- a/TacoSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +++ b/eSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotConfig.java @@ -183,38 +183,23 @@ public class PaperSpigotConfig stackableWaterBuckets = getBoolean( "stackable-buckets.water", false ); stackableMilkBuckets = getBoolean( "stackable-buckets.milk", false ); - Field maxStack; - - try { - maxStack = Material.class.getDeclaredField("maxStack"); - maxStack.setAccessible(true); - - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - modifiers.setInt(maxStack, maxStack.getModifiers() & ~Modifier.FINAL); - } catch (Exception e) { - e.printStackTrace(); - return; + // PandaSpigot start - Remove hacky stackable buckets code that used reflection + int size = Material.BUCKET.getMaxStackSize(); + if (stackableLavaBuckets) { + Material.LAVA_BUCKET.setMaxStackSize(size); + Items.LAVA_BUCKET.c(size); } - try { - if (stackableLavaBuckets) { - maxStack.set(Material.LAVA_BUCKET, Material.BUCKET.getMaxStackSize()); - Items.LAVA_BUCKET.c(Material.BUCKET.getMaxStackSize()); - } - - if (stackableWaterBuckets) { - maxStack.set(Material.WATER_BUCKET, Material.BUCKET.getMaxStackSize()); - Items.WATER_BUCKET.c(Material.BUCKET.getMaxStackSize()); - } - - if (stackableMilkBuckets) { - maxStack.set(Material.MILK_BUCKET, Material.BUCKET.getMaxStackSize()); - Items.MILK_BUCKET.c(Material.BUCKET.getMaxStackSize()); - } - } catch (Exception e) { - e.printStackTrace(); + if (stackableWaterBuckets) { + Material.WATER_BUCKET.setMaxStackSize(size); + Items.WATER_BUCKET.c(size); } + + if (stackableMilkBuckets) { + Material.MILK_BUCKET.setMaxStackSize(size); + Items.MILK_BUCKET.c(size); + } + // PandaSpigot end } public static boolean warnForExcessiveVelocity; @@ -284,9 +269,4 @@ public class PaperSpigotConfig private static void regionCompressionAlgorithm() { regionCompressionAlgorithm = RegionFile.CompressionAlgorithm.valueOf(getString("region-compression-algo", "ZLIB").toUpperCase(Locale.ROOT)); } - - public static boolean kickChatMessageLength; - private static void kickChatMessageLength() { - kickChatMessageLength = getBoolean("kick-chat-message-length", false); - } } diff --git a/TacoSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/eSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java rename to eSpigot-Server/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java diff --git a/TacoSpigot-Server/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java b/eSpigot-Server/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java rename to eSpigot-Server/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/ActivationRange.java b/eSpigot-Server/src/main/java/org/spigotmc/ActivationRange.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/ActivationRange.java rename to eSpigot-Server/src/main/java/org/spigotmc/ActivationRange.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/AntiXray.java b/eSpigot-Server/src/main/java/org/spigotmc/AntiXray.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/AntiXray.java rename to eSpigot-Server/src/main/java/org/spigotmc/AntiXray.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/AsyncCatcher.java b/eSpigot-Server/src/main/java/org/spigotmc/AsyncCatcher.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/AsyncCatcher.java rename to eSpigot-Server/src/main/java/org/spigotmc/AsyncCatcher.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveHashingStrategy.java b/eSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveHashingStrategy.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveHashingStrategy.java rename to eSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveHashingStrategy.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveMap.java b/eSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveMap.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveMap.java rename to eSpigot-Server/src/main/java/org/spigotmc/CaseInsensitiveMap.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/LimitStream.java b/eSpigot-Server/src/main/java/org/spigotmc/LimitStream.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/LimitStream.java rename to eSpigot-Server/src/main/java/org/spigotmc/LimitStream.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/Metrics.java b/eSpigot-Server/src/main/java/org/spigotmc/Metrics.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/Metrics.java rename to eSpigot-Server/src/main/java/org/spigotmc/Metrics.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/RestartCommand.java b/eSpigot-Server/src/main/java/org/spigotmc/RestartCommand.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/RestartCommand.java rename to eSpigot-Server/src/main/java/org/spigotmc/RestartCommand.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/SneakyThrow.java b/eSpigot-Server/src/main/java/org/spigotmc/SneakyThrow.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/SneakyThrow.java rename to eSpigot-Server/src/main/java/org/spigotmc/SneakyThrow.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/SpigotConfig.java b/eSpigot-Server/src/main/java/org/spigotmc/SpigotConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/SpigotConfig.java rename to eSpigot-Server/src/main/java/org/spigotmc/SpigotConfig.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/SpigotWorldConfig.java b/eSpigot-Server/src/main/java/org/spigotmc/SpigotWorldConfig.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/SpigotWorldConfig.java rename to eSpigot-Server/src/main/java/org/spigotmc/SpigotWorldConfig.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/TickLimiter.java b/eSpigot-Server/src/main/java/org/spigotmc/TickLimiter.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/TickLimiter.java rename to eSpigot-Server/src/main/java/org/spigotmc/TickLimiter.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/TrackingRange.java b/eSpigot-Server/src/main/java/org/spigotmc/TrackingRange.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/TrackingRange.java rename to eSpigot-Server/src/main/java/org/spigotmc/TrackingRange.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/ValidateUtils.java b/eSpigot-Server/src/main/java/org/spigotmc/ValidateUtils.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/ValidateUtils.java rename to eSpigot-Server/src/main/java/org/spigotmc/ValidateUtils.java diff --git a/TacoSpigot-Server/src/main/java/org/spigotmc/WatchdogThread.java b/eSpigot-Server/src/main/java/org/spigotmc/WatchdogThread.java similarity index 100% rename from TacoSpigot-Server/src/main/java/org/spigotmc/WatchdogThread.java rename to eSpigot-Server/src/main/java/org/spigotmc/WatchdogThread.java diff --git a/eSpigot-Server/src/main/resources/assets/minecraft/lang/en_US.lang b/eSpigot-Server/src/main/resources/assets/minecraft/lang/en_US.lang new file mode 100644 index 0000000..e2abdde --- /dev/null +++ b/eSpigot-Server/src/main/resources/assets/minecraft/lang/en_US.lang @@ -0,0 +1,2678 @@ + +language.name=English +language.region=US +language.code=en_US + +gui.done=Done +gui.cancel=Cancel +gui.back=Back +gui.toTitle=Back to title screen +gui.toMenu=Back to server list +gui.up=Up +gui.down=Down +gui.yes=Yes +gui.no=No +gui.none=None +gui.all=All + +translation.test.none=Hello, world! +translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again! +translation.test.escape=%%s %%%s %%%%s %%%%%s +translation.test.invalid=hi % +translation.test.invalid2=hi % s +translation.test.args=%s %s +translation.test.world=world + +menu.game=Game menu +menu.singleplayer=Singleplayer +menu.multiplayer=Multiplayer +menu.online=Minecraft Realms +menu.options=Options... +menu.quit=Quit Game +menu.returnToMenu=Save and Quit to Title +menu.disconnect=Disconnect +menu.returnToGame=Back to Game +menu.switchingLevel=Switching worlds +menu.generatingLevel=Generating world +menu.loadingLevel=Loading world +menu.generatingTerrain=Building terrain +menu.convertingLevel=Converting world +menu.simulating=Simulating the world for a bit +menu.respawning=Respawning +menu.shareToLan=Open to LAN + +selectWorld.title=Select World +selectWorld.empty=empty +selectWorld.world=World +selectWorld.select=Play Selected World +selectWorld.create=Create New World +selectWorld.recreate=Re-Create +selectWorld.createDemo=Play New Demo World +selectWorld.delete=Delete +selectWorld.rename=Rename +selectWorld.deleteQuestion=Are you sure you want to delete this world? +selectWorld.deleteWarning=will be lost forever! (A long time!) +selectWorld.deleteButton=Delete +selectWorld.renameButton=Rename +selectWorld.renameTitle=Rename World +selectWorld.conversion=Must be converted! +selectWorld.newWorld=New World +selectWorld.newWorld.copyOf=Copy of %s +selectWorld.enterName=World Name +selectWorld.resultFolder=Will be saved in: +selectWorld.enterSeed=Seed for the World Generator +selectWorld.seedInfo=Leave blank for a random seed +selectWorld.cheats=Cheats +selectWorld.customizeType=Customize + +createWorld.customize.presets=Presets +createWorld.customize.presets.title=Select a Preset +createWorld.customize.presets.select=Use Preset +createWorld.customize.presets.share=Want to share your preset with someone? Use the below box! +createWorld.customize.presets.list=Alternatively, here's some we made earlier! +createWorld.customize.flat.title=Superflat Customization +createWorld.customize.flat.tile=Layer Material +createWorld.customize.flat.height=Height +createWorld.customize.flat.addLayer=Add Layer +createWorld.customize.flat.editLayer=Edit Layer +createWorld.customize.flat.removeLayer=Remove Layer +createWorld.customize.flat.layer.top=Top - %d +createWorld.customize.flat.layer=%d +createWorld.customize.flat.layer.bottom=Bottom - %d + +createWorld.customize.custom.page0=Basic Settings +createWorld.customize.custom.page1=Ore Settings +createWorld.customize.custom.page2=Advanced Settings (Expert Users Only!) +createWorld.customize.custom.page3=Extra Advanced Settings (Expert Users Only!) +createWorld.customize.custom.randomize=Randomize +createWorld.customize.custom.prev=Previous Page +createWorld.customize.custom.next=Next Page +createWorld.customize.custom.defaults=Defaults +createWorld.customize.custom.confirm1=This will overwrite your current +createWorld.customize.custom.confirm2=settings and cannot be undone. +createWorld.customize.custom.confirmTitle=Warning! +createWorld.customize.custom.mainNoiseScaleX=Main Noise Scale X +createWorld.customize.custom.mainNoiseScaleY=Main Noise Scale Y +createWorld.customize.custom.mainNoiseScaleZ=Main Noise Scale Z +createWorld.customize.custom.depthNoiseScaleX=Depth Noise Scale X +createWorld.customize.custom.depthNoiseScaleZ=Depth Noise Scale Z +createWorld.customize.custom.depthNoiseScaleExponent=Depth Noise Exponent +createWorld.customize.custom.baseSize=Depth Base Size +createWorld.customize.custom.coordinateScale=Coordinate Scale +createWorld.customize.custom.heightScale=Height Scale +createWorld.customize.custom.stretchY=Height Stretch +createWorld.customize.custom.upperLimitScale=Upper Limit Scale +createWorld.customize.custom.lowerLimitScale=Lower Limit Scale +createWorld.customize.custom.biomeDepthWeight=Biome Depth Weight +createWorld.customize.custom.biomeDepthOffset=Biome Depth Offset +createWorld.customize.custom.biomeScaleWeight=Biome Scale Weight +createWorld.customize.custom.biomeScaleOffset=Biome Scale Offset +createWorld.customize.custom.seaLevel=Sea Level +createWorld.customize.custom.useCaves=Caves +createWorld.customize.custom.useStrongholds=Strongholds +createWorld.customize.custom.useVillages=Villages +createWorld.customize.custom.useMineShafts=Mineshafts +createWorld.customize.custom.useTemples=Temples +createWorld.customize.custom.useMonuments=Ocean Monuments +createWorld.customize.custom.useRavines=Ravines +createWorld.customize.custom.useDungeons=Dungeons +createWorld.customize.custom.dungeonChance=Dungeon Count +createWorld.customize.custom.useWaterLakes=Water Lakes +createWorld.customize.custom.waterLakeChance=Water Lake Rarity +createWorld.customize.custom.useLavaLakes=Lava Lakes +createWorld.customize.custom.lavaLakeChance=Lava Lake Rarity +createWorld.customize.custom.useLavaOceans=Lava Oceans +createWorld.customize.custom.fixedBiome=Biome +createWorld.customize.custom.biomeSize=Biome Size +createWorld.customize.custom.riverSize=River Size + +createWorld.customize.custom.size= Spawn Size +createWorld.customize.custom.count= Spawn Tries +createWorld.customize.custom.minHeight= Min. Height +createWorld.customize.custom.maxHeight= Max. Height +createWorld.customize.custom.center= Center Height +createWorld.customize.custom.spread= Spread Height + +createWorld.customize.custom.presets.title=Customize World Presets +createWorld.customize.custom.presets=Presets +createWorld.customize.custom.preset.waterWorld=Water World +createWorld.customize.custom.preset.isleLand=Isle Land +createWorld.customize.custom.preset.caveDelight=Caver's Delight +createWorld.customize.custom.preset.mountains=Mountain Madness +createWorld.customize.custom.preset.drought=Drought +createWorld.customize.custom.preset.caveChaos=Caves of Chaos +createWorld.customize.custom.preset.goodLuck=Good Luck + +gameMode.survival=Survival Mode +gameMode.creative=Creative Mode +gameMode.adventure=Adventure Mode +gameMode.spectator=Spectator Mode +gameMode.hardcore=Hardcore Mode! +gameMode.changed=Your game mode has been updated + +selectWorld.gameMode=Game Mode +selectWorld.gameMode.survival=Survival +selectWorld.gameMode.survival.line1=Search for resources, crafting, gain +selectWorld.gameMode.survival.line2=levels, health and hunger +selectWorld.gameMode.creative=Creative +selectWorld.gameMode.creative.line1=Unlimited resources, free flying and +selectWorld.gameMode.creative.line2=destroy blocks instantly +selectWorld.gameMode.spectator=Spectator +selectWorld.gameMode.spectator.line1=You can look but don't touch +selectWorld.gameMode.spectator.line2= +selectWorld.gameMode.hardcore=Hardcore +selectWorld.gameMode.hardcore.line1=Same as survival mode, locked at hardest +selectWorld.gameMode.hardcore.line2=difficulty, and one life only +selectWorld.gameMode.adventure=Adventure +selectWorld.gameMode.adventure.line1=Same as survival mode, but blocks can't +selectWorld.gameMode.adventure.line2=be added or removed +selectWorld.moreWorldOptions=More World Options... +selectWorld.mapFeatures=Generate Structures: +selectWorld.mapFeatures.info=Villages, dungeons etc +selectWorld.mapType=World Type: +selectWorld.mapType.normal=Normal +selectWorld.allowCommands=Allow Cheats: +selectWorld.allowCommands.info=Commands like /gamemode, /xp +selectWorld.hardcoreMode=Hardcore: +selectWorld.hardcoreMode.info=World is deleted upon death +selectWorld.bonusItems=Bonus Chest: + +generator.default=Default +generator.flat=Superflat +generator.largeBiomes=Large Biomes +generator.amplified=AMPLIFIED +generator.customized=Customized +generator.debug_all_block_states=Debug Mode + +generator.amplified.info=Notice: Just for fun, requires beefy computer + +selectServer.title=Select Server +selectServer.empty=empty +selectServer.select=Join Server +selectServer.direct=Direct Connect +selectServer.edit=Edit +selectServer.delete=Delete +selectServer.add=Add server +selectServer.defaultName=Minecraft Server +selectServer.deleteQuestion=Are you sure you want to remove this server? +selectServer.deleteWarning=will be lost forever! (A long time!) +selectServer.deleteButton=Delete +selectServer.refresh=Refresh +selectServer.hiddenAddress=(Hidden) +addServer.title=Edit Server Info +addServer.enterName=Server Name +addServer.enterIp=Server Address +addServer.add=Done +addServer.hideAddress=Hide Address +addServer.resourcePack=Server Resource Packs +addServer.resourcePack.enabled=Enabled +addServer.resourcePack.disabled=Disabled +addServer.resourcePack.prompt=Prompt +lanServer.title=LAN World +lanServer.scanning=Scanning for games on your local network +lanServer.start=Start LAN World +lanServer.otherPlayers=Settings for Other Players +mcoServer.title=Minecraft Online World + +multiplayer.title=Play Multiplayer +multiplayer.connect=Connect +multiplayer.info1=Minecraft Multiplayer is currently not finished, but there +multiplayer.info2=is some buggy early testing going on. +multiplayer.ipinfo=Enter the IP of a server to connect to it: +multiplayer.texturePrompt.line1=This server recommends the use of a custom resource pack. +multiplayer.texturePrompt.line2=Would you like to download and install it automagically? +multiplayer.downloadingTerrain=Downloading terrain +multiplayer.downloadingStats=Downloading statistics & achievements... +multiplayer.stopSleeping=Leave Bed +multiplayer.player.joined=%s joined the game +multiplayer.player.joined.renamed=%s (formerly known as %s) joined the game +multiplayer.player.left=%s left the game + +chat.cannotSend=Cannot send chat message +chat.type.text=<%s> %s +chat.type.emote=* %s %s +chat.type.announcement=[%s] %s +chat.type.admin=[%s: %s] +chat.type.achievement=%s has just earned the achievement %s +chat.type.achievement.taken=%s has lost the achievement %s +chat.link.confirm=Are you sure you want to open the following website? +chat.link.warning=Never open links from people that you don't trust! +chat.copy=Copy to Clipboard +chat.link.confirmTrusted=Do you want to open this link or copy it to your clipboard? +chat.link.open=Open in browser + +chat.stream.text=(%s) <%s> %s +chat.stream.emote=(%s) * %s %s + +menu.playdemo=Play Demo World +menu.resetdemo=Reset Demo World + +demo.day.1=This demo will last five game days, do your best! +demo.day.2=Day Two +demo.day.3=Day Three +demo.day.4=Day Four +demo.day.5=This is your last day! +demo.day.warning=Your time is almost up! +demo.day.6=You have passed your fifth day, use F2 to save a screenshot of your creation +demo.reminder=The demo time has expired, buy the game to continue or start a new world! +demo.remainingTime=Remaining time: %s +demo.demoExpired=Demo time's up! +demo.help.movement=Use %1$s, %2$s, %3$s, %4$s and the mouse to move around +demo.help.movementShort=Move by pressing %1$s, %2$s, %3$s, %4$s +demo.help.movementMouse=Look around using the mouse +demo.help.jump=Jump by pressing %1$s +demo.help.inventory=Use %1$s to open your inventory +demo.help.title=Minecraft Demo Mode +demo.help.fullWrapped=This demo will last 5 ingame days (about 1 hour and 40 minutes of real time). Check the achievements for hints! Have fun! +demo.help.buy=Purchase Now! +demo.help.later=Continue Playing! + +connect.connecting=Connecting to the server... +connect.authorizing=Logging in... +connect.failed=Failed to connect to the server + +disconnect.genericReason=%s +disconnect.disconnected=Disconnected by Server +disconnect.lost=Connection Lost +disconnect.kicked=Was kicked from the game +disconnect.timeout=Timed out +disconnect.closed=Connection closed +disconnect.loginFailed=Failed to login +disconnect.loginFailedInfo=Failed to login: %s +disconnect.loginFailedInfo.serversUnavailable=The authentication servers are currently down for maintenance. +disconnect.loginFailedInfo.invalidSession=Invalid session (Try restarting your game) +disconnect.quitting=Quitting +disconnect.endOfStream=End of stream +disconnect.overflow=Buffer overflow +disconnect.spam=Kicked for spamming + +soundCategory.master=Master Volume +soundCategory.music=Music +soundCategory.record=Jukebox/Noteblocks +soundCategory.weather=Weather +soundCategory.hostile=Hostile Creatures +soundCategory.neutral=Friendly Creatures +soundCategory.player=Players +soundCategory.block=Blocks +soundCategory.ambient=Ambient/Environment + +record.nowPlaying=Now playing: %s + +options.off=OFF +options.on=ON +options.visible=Shown +options.hidden=Hidden +options.title=Options +options.controls=Controls... +options.video=Video Settings... +options.language=Language... +options.stream=Broadcast Settings... +options.sounds=Music & Sounds... +options.sounds.title=Music & Sound Options +options.languageWarning=Language translations may not be 100%% accurate +options.videoTitle=Video Settings +options.customizeTitle=Customize World Settings +options.music=Music +options.sound=Sound +options.invertMouse=Invert Mouse +options.fov=FOV +options.fov.min=Normal +options.fov.max=Quake Pro +options.saturation=Saturation +options.gamma=Brightness +options.gamma.min=Moody +options.gamma.max=Bright +options.sensitivity=Sensitivity +options.sensitivity.min=*yawn* +options.sensitivity.max=HYPERSPEED!!! +options.renderDistance=Render Distance +options.renderDistance.tiny=Tiny +options.renderDistance.short=Short +options.renderDistance.normal=Normal +options.renderDistance.far=Far +options.viewBobbing=View Bobbing +options.ao=Smooth Lighting +options.ao.off=OFF +options.ao.min=Minimum +options.ao.max=Maximum +options.anaglyph=3D Anaglyph +options.framerateLimit=Max Framerate +options.framerateLimit.max=Unlimited +options.difficulty=Difficulty +options.difficulty.peaceful=Peaceful +options.difficulty.easy=Easy +options.difficulty.normal=Normal +options.difficulty.hard=Hard +options.difficulty.hardcore=Hardcore +options.graphics=Graphics +options.graphics.fancy=Fancy +options.graphics.fast=Fast +options.guiScale=GUI Scale +options.guiScale.auto=Auto +options.guiScale.small=Small +options.guiScale.normal=Normal +options.guiScale.large=Large +options.advancedOpengl=Advanced OpenGL +options.fboEnable=Enable FBOs +options.postProcessEnable=Enable Post-Processing +options.renderClouds=Clouds +options.qualityButton=Video Quality Settings... +options.qualityVideoTitle=Video Quality Settings +options.performanceButton=Video Performance Settings... +options.performanceVideoTitle=Video Performance Settings +options.advancedButton=Advanced Video Settings... +options.advancedVideoTitle=Advanced Video Settings +options.postButton=Post-Processing Settings... +options.postVideoTitle=Post-Processing Settings +options.farWarning1=A 64 bit Java installation is recommended +options.farWarning2=for 'Far' render distance (you have 32 bit) +options.particles=Particles +options.particles.all=All +options.particles.decreased=Decreased +options.particles.minimal=Minimal +options.multiplayer.title=Multiplayer Settings... +options.chat.title=Chat Settings... +options.chat.visibility=Chat +options.chat.visibility.full=Shown +options.chat.visibility.system=Commands Only +options.chat.visibility.hidden=Hidden +options.chat.color=Colors +options.chat.opacity=Opacity +options.chat.links=Web Links +options.chat.links.prompt=Prompt on Links +options.chat.scale=Scale +options.chat.width=Width +options.chat.height.focused=Focused Height +options.chat.height.unfocused=Unfocused Height +options.skinCustomisation=Skin Customization... +options.skinCustomisation.title=Skin Customization +options.modelPart.cape=Cape +options.modelPart.hat=Hat +options.modelPart.jacket=Jacket +options.modelPart.left_sleeve=Left Sleeve +options.modelPart.right_sleeve=Right Sleeve +options.modelPart.left_pants_leg=Left Pants Leg +options.modelPart.right_pants_leg=Right Pants Leg +options.snooper=Allow Snooper +options.snooper.view=Snooper Settings... +options.snooper.title=Machine Specs Collection +options.snooper.desc=We want to collect information about your machine to help improve Minecraft by knowing what we can support and where the biggest problems are. All of this information is completely anonymous and viewable below. We promise we won't do anything bad with this data, but if you want to opt out then feel free to toggle it off! +options.resourcepack=Resource Packs... +options.fullscreen=Fullscreen +options.vsync=Use VSync +options.vbo=Use VBOs +options.touchscreen=Touchscreen Mode +options.blockAlternatives=Alternate Blocks +options.reducedDebugInfo=Reduced Debug Info +options.entityShadows=Entity Shadows + +options.mipmapLevels=Mipmap Levels +options.forceUnicodeFont=Force Unicode Font + +options.stream.title=Twitch Broadcast Settings +options.stream.bytesPerPixel=Quality +options.stream.micVolumne=Mic Volume +options.stream.micToggleBehavior=Push To +options.stream.mic_toggle.mute=Mute +options.stream.mic_toggle.talk=Talk +options.stream.systemVolume=System Volume +options.stream.kbps=Bandwidth +options.stream.fps=Framerate +options.stream.sendMetadata=Send Metadata +options.stream.compression=Compression +options.stream.compression.low=Low +options.stream.compression.medium=Medium +options.stream.compression.high=High +options.stream.estimation=Estimated resolution: %dx%d +options.stream.changes=You may need to restart your stream for these changes to take place. +options.stream.ingestSelection=Broadcast Server List +options.stream.ingest.title=Twitch Broadcast Servers +options.stream.ingest.reset=Reset Preference +options.stream.chat.title=Twitch Chat Settings +options.stream.chat.enabled=Enable +options.stream.chat.enabled.streaming=Whilst Streaming +options.stream.chat.enabled.always=Always +options.stream.chat.enabled.never=Never +options.stream.chat.userFilter=User Filter +options.stream.chat.userFilter.all=All Viewers +options.stream.chat.userFilter.subs=Subscribers +options.stream.chat.userFilter.mods=Moderators + +difficulty.lock.title=Lock World Difficulty +difficulty.lock.question=Are you sure you want to lock the difficulty of this world? This will set this world to always be %1$s, and you will never be able to change that again. + +title.oldgl1=Old graphics card detected; this may prevent you from +title.oldgl2=playing in the future as OpenGL 2.0 will be required. + +controls.title=Controls +controls.reset=Reset +controls.resetAll=Reset Keys + +key.sprint=Sprint +key.forward=Walk Forwards +key.left=Strafe Left +key.back=Walk Backwards +key.right=Strafe Right +key.jump=Jump +key.inventory=Inventory +key.drop=Drop Item +key.chat=Open Chat +key.sneak=Sneak +key.playerlist=List Players +key.attack=Attack/Destroy +key.use=Use Item/Place Block +key.pickItem=Pick Block +key.mouseButton=Button %1$s +key.command=Open Command +key.screenshot=Take Screenshot +key.togglePerspective=Toggle Perspective +key.smoothCamera=Toggle Cinematic Camera +key.fullscreen=Toggle Fullscreen +key.spectatorOutlines=Highlight Players (Spectators) +key.hotbar.1=Hotbar Slot 1 +key.hotbar.2=Hotbar Slot 2 +key.hotbar.3=Hotbar Slot 3 +key.hotbar.4=Hotbar Slot 4 +key.hotbar.5=Hotbar Slot 5 +key.hotbar.6=Hotbar Slot 6 +key.hotbar.7=Hotbar Slot 7 +key.hotbar.8=Hotbar Slot 8 +key.hotbar.9=Hotbar Slot 9 +key.streamStartStop=Start/Stop Stream +key.streamPauseUnpause=Pause/Unpause Stream +key.streamCommercial=Show Stream Commercials +key.streamToggleMic=Push To Talk/Mute + +key.categories.movement=Movement +key.categories.misc=Miscellaneous +key.categories.multiplayer=Multiplayer +key.categories.gameplay=Gameplay +key.categories.ui=Game Interface +key.categories.inventory=Inventory +key.categories.stream=Streaming + +resourcePack.openFolder=Open resource pack folder +resourcePack.title=Select Resource Packs +resourcePack.available.title=Available Resource Packs +resourcePack.selected.title=Selected Resource Packs +resourcePack.folderInfo=(Place resource pack files here) +resourcePack.incompatible=Incompatible +resourcePack.incompatible.old=(Made for an older version of Minecraft) +resourcePack.incompatible.new=(Made for a newer version of Minecraft) +resourcePack.incompatible.confirm.title=Are you sure you want to load this resource pack? +resourcePack.incompatible.confirm.old=This resource pack was made for an older version of Minecraft and may no longer work correctly. +resourcePack.incompatible.confirm.new=This resource pack was made for a newer version of Minecraft and may no longer work correctly. + +sign.edit=Edit sign message + +book.pageIndicator=Page %1$s of %2$s +book.byAuthor=by %1$s +book.signButton=Sign +book.editTitle=Enter Book Title: +book.finalizeButton=Sign and Close +book.finalizeWarning=Note! When you sign the book, it will no longer be editable. +book.generation.0=Original +book.generation.1=Copy of original +book.generation.2=Copy of a copy +book.generation.3=Tattered + +merchant.deprecated=Trade something else to unlock! + +tile.barrier.name=Barrier +tile.stone.stone.name=Stone +tile.stone.granite.name=Granite +tile.stone.graniteSmooth.name=Polished Granite +tile.stone.diorite.name=Diorite +tile.stone.dioriteSmooth.name=Polished Diorite +tile.stone.andesite.name=Andesite +tile.stone.andesiteSmooth.name=Polished Andesite +tile.hayBlock.name=Hay Bale +tile.grass.name=Grass Block +tile.dirt.name=Dirt +tile.dirt.default.name=Dirt +tile.dirt.coarse.name=Coarse Dirt +tile.dirt.podzol.name=Podzol +tile.stonebrick.name=Cobblestone +tile.wood.name=Wooden Planks +tile.wood.oak.name=Oak Wood Planks +tile.wood.spruce.name=Spruce Wood Planks +tile.wood.birch.name=Birch Wood Planks +tile.wood.jungle.name=Jungle Wood Planks +tile.wood.acacia.name=Acacia Wood Planks +tile.wood.big_oak.name=Dark Oak Wood Planks +tile.sapling.oak.name=Oak Sapling +tile.sapling.spruce.name=Spruce Sapling +tile.sapling.birch.name=Birch Sapling +tile.sapling.jungle.name=Jungle Sapling +tile.sapling.acacia.name=Acacia Sapling +tile.sapling.big_oak.name=Dark Oak Sapling +tile.deadbush.name=Dead Bush +tile.bedrock.name=Bedrock +tile.water.name=Water +tile.lava.name=Lava +tile.sand.name=Sand +tile.sand.default.name=Sand +tile.sand.red.name=Red Sand +tile.sandStone.name=Sandstone +tile.sandStone.default.name=Sandstone +tile.sandStone.chiseled.name=Chiseled Sandstone +tile.sandStone.smooth.name=Smooth Sandstone +tile.redSandStone.name=Red Sandstone +tile.redSandStone.default.name=Red Sandstone +tile.redSandStone.chiseled.name=Chiseled Red Sandstone +tile.redSandStone.smooth.name=Smooth Red Sandstone +tile.gravel.name=Gravel +tile.oreGold.name=Gold Ore +tile.oreIron.name=Iron Ore +tile.oreCoal.name=Coal Ore +tile.log.name=Wood +tile.log.oak.name=Oak Wood +tile.log.spruce.name=Spruce Wood +tile.log.birch.name=Birch Wood +tile.log.jungle.name=Jungle Wood +tile.log.acacia.name=Acacia Wood +tile.log.big_oak.name=Dark Oak Wood +tile.leaves.name=Leaves +tile.leaves.oak.name=Oak Leaves +tile.leaves.spruce.name=Spruce Leaves +tile.leaves.birch.name=Birch Leaves +tile.leaves.jungle.name=Jungle Leaves +tile.leaves.acacia.name=Acacia Leaves +tile.leaves.big_oak.name=Dark Oak Leaves +tile.tallgrass.name=Grass +tile.tallgrass.shrub.name=Shrub +tile.tallgrass.grass.name=Grass +tile.tallgrass.fern.name=Fern +tile.sponge.dry.name=Sponge +tile.sponge.wet.name=Wet Sponge +tile.glass.name=Glass +tile.stainedGlass.name=Stained Glass +tile.stainedGlass.black.name=Black Stained Glass +tile.stainedGlass.red.name=Red Stained Glass +tile.stainedGlass.green.name=Green Stained Glass +tile.stainedGlass.brown.name=Brown Stained Glass +tile.stainedGlass.blue.name=Blue Stained Glass +tile.stainedGlass.purple.name=Purple Stained Glass +tile.stainedGlass.cyan.name=Cyan Stained Glass +tile.stainedGlass.silver.name=Light Gray Stained Glass +tile.stainedGlass.gray.name=Gray Stained Glass +tile.stainedGlass.pink.name=Pink Stained Glass +tile.stainedGlass.lime.name=Lime Stained Glass +tile.stainedGlass.yellow.name=Yellow Stained Glass +tile.stainedGlass.lightBlue.name=Light Blue Stained Glass +tile.stainedGlass.magenta.name=Magenta Stained Glass +tile.stainedGlass.orange.name=Orange Stained Glass +tile.stainedGlass.white.name=White Stained Glass +tile.thinStainedGlass.name=Stained Glass Pane +tile.thinStainedGlass.black.name=Black Stained Glass Pane +tile.thinStainedGlass.red.name=Red Stained Glass Pane +tile.thinStainedGlass.green.name=Green Stained Glass Pane +tile.thinStainedGlass.brown.name=Brown Stained Glass Pane +tile.thinStainedGlass.blue.name=Blue Stained Glass Pane +tile.thinStainedGlass.purple.name=Purple Stained Glass Pane +tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane +tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane +tile.thinStainedGlass.gray.name=Gray Stained Glass Pane +tile.thinStainedGlass.pink.name=Pink Stained Glass Pane +tile.thinStainedGlass.lime.name=Lime Stained Glass Pane +tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane +tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane +tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane +tile.thinStainedGlass.orange.name=Orange Stained Glass Pane +tile.thinStainedGlass.white.name=White Stained Glass Pane +tile.thinGlass.name=Glass Pane +tile.cloth.name=Wool +tile.flower1.name=Flower +tile.flower1.dandelion.name=Dandelion +tile.flower2.name=Flower +tile.flower2.poppy.name=Poppy +tile.flower2.blueOrchid.name=Blue Orchid +tile.flower2.allium.name=Allium +tile.flower2.houstonia.name=Azure Bluet +tile.flower2.tulipRed.name=Red Tulip +tile.flower2.tulipOrange.name=Orange Tulip +tile.flower2.tulipWhite.name=White Tulip +tile.flower2.tulipPink.name=Pink Tulip +tile.flower2.oxeyeDaisy.name=Oxeye Daisy +tile.doublePlant.name=Plant +tile.doublePlant.sunflower.name=Sunflower +tile.doublePlant.syringa.name=Lilac +tile.doublePlant.grass.name=Double Tallgrass +tile.doublePlant.fern.name=Large Fern +tile.doublePlant.rose.name=Rose Bush +tile.doublePlant.paeonia.name=Peony +tile.mushroom.name=Mushroom +tile.blockGold.name=Block of Gold +tile.blockIron.name=Block of Iron +tile.stoneSlab.name=Stone Slab +tile.stoneSlab.stone.name=Stone Slab +tile.stoneSlab.sand.name=Sandstone Slab +tile.stoneSlab.wood.name=Wooden Slab +tile.stoneSlab.cobble.name=Cobblestone Slab +tile.stoneSlab.brick.name=Bricks Slab +tile.stoneSlab.smoothStoneBrick.name=Stone Bricks Slab +tile.stoneSlab.netherBrick.name=Nether Brick Slab +tile.stoneSlab.quartz.name=Quartz Slab +tile.stoneSlab2.red_sandstone.name=Red Sandstone Slab +tile.woodSlab.name=Wood Slab +tile.woodSlab.oak.name=Oak Wood Slab +tile.woodSlab.spruce.name=Spruce Wood Slab +tile.woodSlab.birch.name=Birch Wood Slab +tile.woodSlab.jungle.name=Jungle Wood Slab +tile.woodSlab.acacia.name=Acacia Wood Slab +tile.woodSlab.big_oak.name=Dark Oak Wood Slab +tile.brick.name=Bricks +tile.tnt.name=TNT +tile.bookshelf.name=Bookshelf +tile.stoneMoss.name=Moss Stone +tile.obsidian.name=Obsidian +tile.torch.name=Torch +tile.fire.name=Fire +tile.mobSpawner.name=Monster Spawner +tile.stairsWood.name=Oak Wood Stairs +tile.stairsWoodSpruce.name=Spruce Wood Stairs +tile.stairsWoodBirch.name=Birch Wood Stairs +tile.stairsWoodJungle.name=Jungle Wood Stairs +tile.stairsWoodAcacia.name=Acacia Wood Stairs +tile.stairsWoodDarkOak.name=Dark Oak Wood Stairs +tile.chest.name=Chest +tile.chestTrap.name=Trapped Chest +tile.redstoneDust.name=Redstone Dust +tile.oreDiamond.name=Diamond Ore +tile.blockCoal.name=Block of Coal +tile.blockDiamond.name=Block of Diamond +tile.workbench.name=Crafting Table +tile.crops.name=Crops +tile.farmland.name=Farmland +tile.furnace.name=Furnace +tile.sign.name=Sign +tile.doorWood.name=Wooden Door +tile.ladder.name=Ladder +tile.rail.name=Rail +tile.goldenRail.name=Powered Rail +tile.activatorRail.name=Activator Rail +tile.detectorRail.name=Detector Rail +tile.stairsStone.name=Cobblestone Stairs +tile.stairsSandStone.name=Sandstone Stairs +tile.stairsRedSandStone.name=Red Sandstone Stairs +tile.lever.name=Lever +tile.pressurePlateStone.name=Stone Pressure Plate +tile.pressurePlateWood.name=Wooden Pressure Plate +tile.weightedPlate_light.name=Weighted Pressure Plate (Light) +tile.weightedPlate_heavy.name=Weighted Pressure Plate (Heavy) +tile.doorIron.name=Iron Door +tile.oreRedstone.name=Redstone Ore +tile.notGate.name=Redstone Torch +tile.button.name=Button +tile.snow.name=Snow +tile.woolCarpet.name=Carpet +tile.woolCarpet.black.name=Black Carpet +tile.woolCarpet.red.name=Red Carpet +tile.woolCarpet.green.name=Green Carpet +tile.woolCarpet.brown.name=Brown Carpet +tile.woolCarpet.blue.name=Blue Carpet +tile.woolCarpet.purple.name=Purple Carpet +tile.woolCarpet.cyan.name=Cyan Carpet +tile.woolCarpet.silver.name=Light Gray Carpet +tile.woolCarpet.gray.name=Gray Carpet +tile.woolCarpet.pink.name=Pink Carpet +tile.woolCarpet.lime.name=Lime Carpet +tile.woolCarpet.yellow.name=Yellow Carpet +tile.woolCarpet.lightBlue.name=Light Blue Carpet +tile.woolCarpet.magenta.name=Magenta Carpet +tile.woolCarpet.orange.name=Orange Carpet +tile.woolCarpet.white.name=Carpet +tile.ice.name=Ice +tile.icePacked.name=Packed Ice +tile.cactus.name=Cactus +tile.clay.name=Clay +tile.clayHardenedStained.name=Stained Clay +tile.clayHardenedStained.black.name=Black Stained Clay +tile.clayHardenedStained.red.name=Red Stained Clay +tile.clayHardenedStained.green.name=Green Stained Clay +tile.clayHardenedStained.brown.name=Brown Stained Clay +tile.clayHardenedStained.blue.name=Blue Stained Clay +tile.clayHardenedStained.purple.name=Purple Stained Clay +tile.clayHardenedStained.cyan.name=Cyan Stained Clay +tile.clayHardenedStained.silver.name=Light Gray Stained Clay +tile.clayHardenedStained.gray.name=Gray Stained Clay +tile.clayHardenedStained.pink.name=Pink Stained Clay +tile.clayHardenedStained.lime.name=Lime Stained Clay +tile.clayHardenedStained.yellow.name=Yellow Stained Clay +tile.clayHardenedStained.lightBlue.name=Light Blue Stained Clay +tile.clayHardenedStained.magenta.name=Magenta Stained Clay +tile.clayHardenedStained.orange.name=Orange Stained Clay +tile.clayHardenedStained.white.name=White Stained Clay +tile.clayHardened.name=Hardened Clay +tile.reeds.name=Sugar cane +tile.jukebox.name=Jukebox +tile.fence.name=Oak Fence +tile.spruceFence.name=Spruce Fence +tile.birchFence.name=Birch Fence +tile.jungleFence.name=Jungle Fence +tile.darkOakFence.name=Dark Oak Fence +tile.acaciaFence.name=Acacia Fence +tile.fenceGate.name=Oak Fence Gate +tile.spruceFenceGate.name=Spruce Fence Gate +tile.birchFenceGate.name=Birch Fence Gate +tile.jungleFenceGate.name=Jungle Fence Gate +tile.darkOakFenceGate.name=Dark Oak Fence Gate +tile.acaciaFenceGate.name=Acacia Fence Gate +tile.pumpkinStem.name=Pumpkin Stem +tile.pumpkin.name=Pumpkin +tile.litpumpkin.name=Jack o'Lantern +tile.hellrock.name=Netherrack +tile.hellsand.name=Soul Sand +tile.lightgem.name=Glowstone +tile.portal.name=Portal +tile.cloth.black.name=Black Wool +tile.cloth.red.name=Red Wool +tile.cloth.green.name=Green Wool +tile.cloth.brown.name=Brown Wool +tile.cloth.blue.name=Blue Wool +tile.cloth.purple.name=Purple Wool +tile.cloth.cyan.name=Cyan Wool +tile.cloth.silver.name=Light Gray Wool +tile.cloth.gray.name=Gray Wool +tile.cloth.pink.name=Pink Wool +tile.cloth.lime.name=Lime Wool +tile.cloth.yellow.name=Yellow Wool +tile.cloth.lightBlue.name=Light Blue Wool +tile.cloth.magenta.name=Magenta Wool +tile.cloth.orange.name=Orange Wool +tile.cloth.white.name=Wool +tile.oreLapis.name=Lapis Lazuli Ore +tile.blockLapis.name=Lapis Lazuli Block +tile.dispenser.name=Dispenser +tile.dropper.name=Dropper +tile.musicBlock.name=Note Block +tile.cake.name=Cake +tile.bed.name=Bed +tile.bed.occupied=This bed is occupied +tile.bed.noSleep=You can only sleep at night +tile.bed.notSafe=You may not rest now, there are monsters nearby +tile.bed.notValid=Your home bed was missing or obstructed +tile.lockedchest.name=Locked chest +tile.trapdoor.name=Wooden Trapdoor +tile.ironTrapdoor.name=Iron Trapdoor +tile.web.name=Cobweb +tile.stonebricksmooth.name=Stone Bricks +tile.stonebricksmooth.default.name=Stone Bricks +tile.stonebricksmooth.mossy.name=Mossy Stone Bricks +tile.stonebricksmooth.cracked.name=Cracked Stone Bricks +tile.stonebricksmooth.chiseled.name=Chiseled Stone Bricks +tile.monsterStoneEgg.name=Stone Monster Egg +tile.monsterStoneEgg.stone.name=Stone Monster Egg +tile.monsterStoneEgg.cobble.name=Cobblestone Monster Egg +tile.monsterStoneEgg.brick.name=Stone Brick Monster Egg +tile.monsterStoneEgg.mossybrick.name=Mossy Stone Brick Monster Egg +tile.monsterStoneEgg.crackedbrick.name=Cracked Stone Brick Monster Egg +tile.monsterStoneEgg.chiseledbrick.name=Chiseled Stone Brick Monster Egg +tile.pistonBase.name=Piston +tile.pistonStickyBase.name=Sticky Piston +tile.fenceIron.name=Iron Bars +tile.melon.name=Melon +tile.stairsBrick.name=Brick Stairs +tile.stairsStoneBrickSmooth.name=Stone Brick Stairs +tile.vine.name=Vines +tile.netherBrick.name=Nether Brick +tile.netherFence.name=Nether Brick Fence +tile.stairsNetherBrick.name=Nether Brick Stairs +tile.netherStalk.name=Nether Wart +tile.cauldron.name=Cauldron +tile.enchantmentTable.name=Enchantment Table +tile.anvil.name=Anvil +tile.anvil.intact.name=Anvil +tile.anvil.slightlyDamaged.name=Slightly Damaged Anvil +tile.anvil.veryDamaged.name=Very Damaged Anvil +tile.whiteStone.name=End Stone +tile.endPortalFrame.name=End Portal +tile.mycel.name=Mycelium +tile.waterlily.name=Lily Pad +tile.dragonEgg.name=Dragon Egg +tile.redstoneLight.name=Redstone Lamp +tile.cocoa.name=Cocoa +tile.enderChest.name=Ender Chest +tile.oreRuby.name=Ruby Ore +tile.oreEmerald.name=Emerald Ore +tile.blockEmerald.name=Block of Emerald +tile.blockRedstone.name=Block of Redstone +tile.tripWire.name=Tripwire +tile.tripWireSource.name=Tripwire Hook +tile.commandBlock.name=Command Block +tile.beacon.name=Beacon +tile.beacon.primary=Primary Power +tile.beacon.secondary=Secondary Power +tile.cobbleWall.normal.name=Cobblestone Wall +tile.cobbleWall.mossy.name=Mossy Cobblestone Wall +tile.carrots.name=Carrots +tile.potatoes.name=Potatoes +tile.daylightDetector.name=Daylight Sensor +tile.netherquartz.name=Nether Quartz Ore +tile.hopper.name=Hopper +tile.quartzBlock.name=Block of Quartz +tile.quartzBlock.default.name=Block of Quartz +tile.quartzBlock.chiseled.name=Chiseled Quartz Block +tile.quartzBlock.lines.name=Pillar Quartz Block +tile.stairsQuartz.name=Quartz Stairs +tile.slime.name=Slime Block +tile.prismarine.rough.name=Prismarine +tile.prismarine.bricks.name=Prismarine Bricks +tile.prismarine.dark.name=Dark Prismarine +tile.seaLantern.name=Sea Lantern + +item.nameTag.name=Name Tag +item.leash.name=Lead +item.shovelIron.name=Iron Shovel +item.pickaxeIron.name=Iron Pickaxe +item.hatchetIron.name=Iron Axe +item.flintAndSteel.name=Flint and Steel +item.apple.name=Apple +item.cookie.name=Cookie +item.bow.name=Bow +item.arrow.name=Arrow +item.coal.name=Coal +item.charcoal.name=Charcoal +item.diamond.name=Diamond +item.emerald.name=Emerald +item.ingotIron.name=Iron Ingot +item.ingotGold.name=Gold Ingot +item.swordIron.name=Iron Sword +item.swordWood.name=Wooden Sword +item.shovelWood.name=Wooden Shovel +item.pickaxeWood.name=Wooden Pickaxe +item.hatchetWood.name=Wooden Axe +item.swordStone.name=Stone Sword +item.shovelStone.name=Stone Shovel +item.pickaxeStone.name=Stone Pickaxe +item.hatchetStone.name=Stone Axe +item.swordDiamond.name=Diamond Sword +item.shovelDiamond.name=Diamond Shovel +item.pickaxeDiamond.name=Diamond Pickaxe +item.hatchetDiamond.name=Diamond Axe +item.stick.name=Stick +item.bowl.name=Bowl +item.mushroomStew.name=Mushroom Stew +item.swordGold.name=Golden Sword +item.shovelGold.name=Golden Shovel +item.pickaxeGold.name=Golden Pickaxe +item.hatchetGold.name=Golden Axe +item.string.name=String +item.feather.name=Feather +item.sulphur.name=Gunpowder +item.hoeWood.name=Wooden Hoe +item.hoeStone.name=Stone Hoe +item.hoeIron.name=Iron Hoe +item.hoeDiamond.name=Diamond Hoe +item.hoeGold.name=Golden Hoe +item.seeds.name=Seeds +item.seeds_pumpkin.name=Pumpkin Seeds +item.seeds_melon.name=Melon Seeds +item.melon.name=Melon +item.wheat.name=Wheat +item.bread.name=Bread +item.helmetCloth.name=Leather Cap +item.chestplateCloth.name=Leather Tunic +item.leggingsCloth.name=Leather Pants +item.bootsCloth.name=Leather Boots +item.helmetChain.name=Chain Helmet +item.chestplateChain.name=Chain Chestplate +item.leggingsChain.name=Chain Leggings +item.bootsChain.name=Chain Boots +item.helmetIron.name=Iron Helmet +item.chestplateIron.name=Iron Chestplate +item.leggingsIron.name=Iron Leggings +item.bootsIron.name=Iron Boots +item.helmetDiamond.name=Diamond Helmet +item.chestplateDiamond.name=Diamond Chestplate +item.leggingsDiamond.name=Diamond Leggings +item.bootsDiamond.name=Diamond Boots +item.helmetGold.name=Golden Helmet +item.chestplateGold.name=Golden Chestplate +item.leggingsGold.name=Golden Leggings +item.bootsGold.name=Golden Boots +item.flint.name=Flint +item.porkchopRaw.name=Raw Porkchop +item.porkchopCooked.name=Cooked Porkchop +item.chickenRaw.name=Raw Chicken +item.chickenCooked.name=Cooked Chicken +item.muttonRaw.name=Raw Mutton +item.muttonCooked.name=Cooked Mutton +item.rabbitRaw.name=Raw Rabbit +item.rabbitCooked.name=Cooked Rabbit +item.rabbitStew.name=Rabbit Stew +item.rabbitFoot.name=Rabbit's Foot +item.rabbitHide.name=Rabbit Hide +item.beefRaw.name=Raw Beef +item.beefCooked.name=Steak +item.painting.name=Painting +item.frame.name=Item Frame +item.appleGold.name=Golden Apple +item.sign.name=Sign +item.doorOak.name=Oak Door +item.doorSpruce.name=Spruce Door +item.doorBirch.name=Birch Door +item.doorJungle.name=Jungle Door +item.doorAcacia.name=Acacia Door +item.doorDarkOak.name=Dark Oak Door +item.bucket.name=Bucket +item.bucketWater.name=Water Bucket +item.bucketLava.name=Lava Bucket +item.minecart.name=Minecart +item.saddle.name=Saddle +item.doorIron.name=Iron Door +item.redstone.name=Redstone +item.snowball.name=Snowball +item.boat.name=Boat +item.leather.name=Leather +item.milk.name=Milk +item.brick.name=Brick +item.clay.name=Clay +item.reeds.name=Sugar Canes +item.paper.name=Paper +item.book.name=Book +item.slimeball.name=Slimeball +item.minecartChest.name=Minecart with Chest +item.minecartFurnace.name=Minecart with Furnace +item.minecartTnt.name=Minecart with TNT +item.minecartHopper.name=Minecart with Hopper +item.minecartCommandBlock.name=Minecart with Command Block +item.egg.name=Egg +item.compass.name=Compass +item.fishingRod.name=Fishing Rod +item.clock.name=Clock +item.yellowDust.name=Glowstone Dust +item.fish.cod.raw.name=Raw Fish +item.fish.salmon.raw.name=Raw Salmon +item.fish.pufferfish.raw.name=Pufferfish +item.fish.clownfish.raw.name=Clownfish +item.fish.cod.cooked.name=Cooked Fish +item.fish.salmon.cooked.name=Cooked Salmon +item.record.name=Music Disc +item.record.13.desc=C418 - 13 +item.record.cat.desc=C418 - cat +item.record.blocks.desc=C418 - blocks +item.record.chirp.desc=C418 - chirp +item.record.far.desc=C418 - far +item.record.mall.desc=C418 - mall +item.record.mellohi.desc=C418 - mellohi +item.record.stal.desc=C418 - stal +item.record.strad.desc=C418 - strad +item.record.ward.desc=C418 - ward +item.record.11.desc=C418 - 11 +item.record.wait.desc=C418 - wait +item.bone.name=Bone +item.dyePowder.black.name=Ink Sac +item.dyePowder.red.name=Rose Red +item.dyePowder.green.name=Cactus Green +item.dyePowder.brown.name=Cocoa Beans +item.dyePowder.blue.name=Lapis Lazuli +item.dyePowder.purple.name=Purple Dye +item.dyePowder.cyan.name=Cyan Dye +item.dyePowder.silver.name=Light Gray Dye +item.dyePowder.gray.name=Gray Dye +item.dyePowder.pink.name=Pink Dye +item.dyePowder.lime.name=Lime Dye +item.dyePowder.yellow.name=Dandelion Yellow +item.dyePowder.lightBlue.name=Light Blue Dye +item.dyePowder.magenta.name=Magenta Dye +item.dyePowder.orange.name=Orange Dye +item.dyePowder.white.name=Bone Meal +item.sugar.name=Sugar +item.cake.name=Cake +item.bed.name=Bed +item.diode.name=Redstone Repeater +item.comparator.name=Redstone Comparator +item.map.name=Map +item.leaves.name=Leaves +item.shears.name=Shears +item.rottenFlesh.name=Rotten Flesh +item.enderPearl.name=Ender Pearl +item.blazeRod.name=Blaze Rod +item.ghastTear.name=Ghast Tear +item.netherStalkSeeds.name=Nether Wart +item.potion.name=Potion +item.emptyPotion.name=Water Bottle +item.goldNugget.name=Gold Nugget +item.glassBottle.name=Glass Bottle +item.spiderEye.name=Spider Eye +item.fermentedSpiderEye.name=Fermented Spider Eye +item.blazePowder.name=Blaze Powder +item.magmaCream.name=Magma Cream +item.cauldron.name=Cauldron +item.brewingStand.name=Brewing Stand +item.eyeOfEnder.name=Eye of Ender +item.speckledMelon.name=Glistering Melon +item.monsterPlacer.name=Spawn +item.expBottle.name=Bottle o' Enchanting +item.fireball.name=Fire Charge +item.writingBook.name=Book and Quill +item.writtenBook.name=Written Book +item.ruby.name=Ruby +item.flowerPot.name=Flower Pot +item.emptyMap.name=Empty Map +item.carrots.name=Carrot +item.carrotGolden.name=Golden Carrot +item.potato.name=Potato +item.potatoBaked.name=Baked Potato +item.potatoPoisonous.name=Poisonous Potato +item.skull.skeleton.name=Skeleton Skull +item.skull.wither.name=Wither Skeleton Skull +item.skull.zombie.name=Zombie Head +item.skull.char.name=Head +item.skull.player.name=%s's Head +item.skull.creeper.name=Creeper Head +item.carrotOnAStick.name=Carrot on a Stick +item.netherStar.name=Nether Star +item.pumpkinPie.name=Pumpkin Pie +item.enchantedBook.name=Enchanted Book +item.fireworks.name=Firework Rocket +item.fireworks.flight=Flight Duration: +item.fireworksCharge.name=Firework Star +item.fireworksCharge.black=Black +item.fireworksCharge.red=Red +item.fireworksCharge.green=Green +item.fireworksCharge.brown=Brown +item.fireworksCharge.blue=Blue +item.fireworksCharge.purple=Purple +item.fireworksCharge.cyan=Cyan +item.fireworksCharge.silver=Light Gray +item.fireworksCharge.gray=Gray +item.fireworksCharge.pink=Pink +item.fireworksCharge.lime=Lime +item.fireworksCharge.yellow=Yellow +item.fireworksCharge.lightBlue=Light Blue +item.fireworksCharge.magenta=Magenta +item.fireworksCharge.orange=Orange +item.fireworksCharge.white=White +item.fireworksCharge.customColor=Custom +item.fireworksCharge.fadeTo=Fade to +item.fireworksCharge.flicker=Twinkle +item.fireworksCharge.trail=Trail +item.fireworksCharge.type.0=Small Ball +item.fireworksCharge.type.1=Large Ball +item.fireworksCharge.type.2=Star-shaped +item.fireworksCharge.type.3=Creeper-shaped +item.fireworksCharge.type.4=Burst +item.fireworksCharge.type=Unknown Shape +item.netherbrick.name=Nether Brick +item.netherquartz.name=Nether Quartz +item.armorStand.name=Armor Stand +item.horsearmormetal.name=Iron Horse Armor +item.horsearmorgold.name=Gold Horse Armor +item.horsearmordiamond.name=Diamond Horse Armor +item.prismarineShard.name=Prismarine Shard +item.prismarineCrystals.name=Prismarine Crystals + +container.inventory=Inventory +container.hopper=Item Hopper +container.crafting=Crafting +container.dispenser=Dispenser +container.dropper=Dropper +container.furnace=Furnace +container.enchant=Enchant +container.enchant.lapis.one=1 Lapis Lazuli +container.enchant.lapis.many=%d Lapis Lazuli +container.enchant.level.one=1 Enchantment Level +container.enchant.level.many=%d Enchantment Levels +container.enchant.clue=%s . . . ? +container.repair=Repair & Name +container.repair.cost=Enchantment Cost: %1$d +container.repair.expensive=Too Expensive! +container.creative=Item Selection +container.brewing=Brewing Stand +container.chest=Chest +container.chestDouble=Large Chest +container.minecart=Minecart +container.enderchest=Ender Chest +container.beacon=Beacon + +container.isLocked=%s is locked! + +item.dyed=Dyed +item.unbreakable=Unbreakable +item.canBreak=Can break: +item.canPlace=Can be placed on: + +entity.Item.name=Item +entity.XPOrb.name=Experience Orb +entity.SmallFireball.name=Small Fireball +entity.Fireball.name=Fireball +entity.ThrownPotion.name=Potion + +entity.Arrow.name=Arrow +entity.Snowball.name=Snowball +entity.Painting.name=Painting +entity.ArmorStand.name=Armor Stand + +entity.Mob.name=Mob +entity.Monster.name=Monster + +entity.Creeper.name=Creeper +entity.Skeleton.name=Skeleton +entity.Spider.name=Spider +entity.Giant.name=Giant +entity.Zombie.name=Zombie +entity.Slime.name=Slime +entity.Ghast.name=Ghast +entity.PigZombie.name=Zombie Pigman +entity.Enderman.name=Enderman +entity.Endermite.name=Endermite +entity.Silverfish.name=Silverfish +entity.CaveSpider.name=Cave Spider +entity.Blaze.name=Blaze +entity.LavaSlime.name=Magma Cube +entity.MushroomCow.name=Mooshroom +entity.Villager.name=Villager +entity.VillagerGolem.name=Iron Golem +entity.SnowMan.name=Snow Golem +entity.EnderDragon.name=Ender Dragon +entity.WitherBoss.name=Wither +entity.Witch.name=Witch +entity.Guardian.name=Guardian + +entity.Villager.farmer=Farmer +entity.Villager.fisherman=Fisherman +entity.Villager.shepherd=Shepherd +entity.Villager.fletcher=Fletcher +entity.Villager.librarian=Librarian +entity.Villager.cleric=Cleric +entity.Villager.armor=Armorer +entity.Villager.weapon=Weapon Smith +entity.Villager.tool=Tool Smith +entity.Villager.butcher=Butcher +entity.Villager.leather=Leatherworker + +entity.Pig.name=Pig +entity.Sheep.name=Sheep +entity.Cow.name=Cow +entity.Chicken.name=Chicken +entity.Squid.name=Squid +entity.Wolf.name=Wolf +entity.Ozelot.name=Ocelot +entity.Cat.name=Cat +entity.Bat.name=Bat +entity.EntityHorse.name=Horse +entity.horse.name=Horse +entity.donkey.name=Donkey +entity.mule.name=Mule +entity.skeletonhorse.name=Skeleton Horse +entity.zombiehorse.name=Zombie Horse +entity.Rabbit.name=Rabbit +entity.KillerBunny.name=The Killer Bunny + +entity.PrimedTnt.name=Block of TNT +entity.FallingSand.name=Falling Block + +entity.Minecart.name=Minecart +entity.Boat.name=Boat + +entity.generic.name=unknown + +death.fell.accident.ladder=%1$s fell off a ladder +death.fell.accident.vines=%1$s fell off some vines +death.fell.accident.water=%1$s fell out of the water +death.fell.accident.generic=%1$s fell from a high place +death.fell.killer=%1$s was doomed to fall +death.fell.assist=%1$s was doomed to fall by %2$s +death.fell.assist.item=%1$s was doomed to fall by %2$s using %3$s +death.fell.finish=%1$s fell too far and was finished by %2$s +death.fell.finish.item=%1$s fell too far and was finished by %2$s using %3$s + +death.attack.lightningBolt=%1$s was struck by lightning +death.attack.inFire=%1$s went up in flames +death.attack.inFire.player=%1$s walked into fire whilst fighting %2$s +death.attack.onFire=%1$s burned to death +death.attack.onFire.player=%1$s was burnt to a crisp whilst fighting %2$s +death.attack.lava=%1$s tried to swim in lava +death.attack.lava.player=%1$s tried to swim in lava to escape %2$s +death.attack.inWall=%1$s suffocated in a wall +death.attack.drown=%1$s drowned +death.attack.drown.player=%1$s drowned whilst trying to escape %2$s +death.attack.starve=%1$s starved to death +death.attack.cactus=%1$s was pricked to death +death.attack.cactus.player=%1$s walked into a cactus whilst trying to escape %2$s +death.attack.generic=%1$s died +death.attack.explosion=%1$s blew up +death.attack.explosion.player=%1$s was blown up by %2$s +death.attack.magic=%1$s was killed by magic +death.attack.wither=%1$s withered away +death.attack.anvil=%1$s was squashed by a falling anvil +death.attack.fallingBlock=%1$s was squashed by a falling block +death.attack.mob=%1$s was slain by %2$s +death.attack.player=%1$s was slain by %2$s +death.attack.player.item=%1$s was slain by %2$s using %3$s +death.attack.arrow=%1$s was shot by %2$s +death.attack.arrow.item=%1$s was shot by %2$s using %3$s +death.attack.fireball=%1$s was fireballed by %2$s +death.attack.fireball.item=%1$s was fireballed by %2$s using %3$s +death.attack.thrown=%1$s was pummeled by %2$s +death.attack.thrown.item=%1$s was pummeled by %2$s using %3$s +death.attack.indirectMagic=%1$s was killed by %2$s using magic +death.attack.indirectMagic.item=%1$s was killed by %2$s using %3$s +death.attack.thorns=%1$s was killed trying to hurt %2$s +death.attack.fall=%1$s hit the ground too hard +death.attack.outOfWorld=%1$s fell out of the world + +deathScreen.respawn=Respawn +deathScreen.deleteWorld=Delete world +deathScreen.titleScreen=Title screen +deathScreen.score=Score +deathScreen.title.hardcore=Game over! +deathScreen.hardcoreInfo=You cannot respawn in hardcore mode! +deathScreen.title=You died! +deathScreen.leaveServer=Leave server +deathScreen.quit.confirm=Are you sure you want to quit? + +potion.effects.whenDrank=When Applied: +potion.empty=No Effects +potion.moveSpeed=Speed +potion.moveSlowdown=Slowness +potion.digSpeed=Haste +potion.digSlowDown=Mining Fatigue +potion.damageBoost=Strength +potion.heal=Instant Health +potion.harm=Instant Damage +potion.jump=Jump Boost +potion.confusion=Nausea +potion.regeneration=Regeneration +potion.resistance=Resistance +potion.fireResistance=Fire Resistance +potion.waterBreathing=Water Breathing +potion.invisibility=Invisibility +potion.blindness=Blindness +potion.nightVision=Night Vision +potion.hunger=Hunger +potion.weakness=Weakness +potion.poison=Poison +potion.wither=Wither +potion.healthBoost=Health Boost +potion.absorption=Absorption +potion.saturation=Saturation + +potion.moveSpeed.postfix=Potion of Swiftness +potion.moveSlowdown.postfix=Potion of Slowness +potion.digSpeed.postfix=Potion of Haste +potion.digSlowDown.postfix=Potion of Dullness +potion.damageBoost.postfix=Potion of Strength +potion.weakness.postfix=Potion of Weakness +potion.heal.postfix=Potion of Healing +potion.harm.postfix=Potion of Harming +potion.jump.postfix=Potion of Leaping +potion.confusion.postfix=Potion of Nausea +potion.regeneration.postfix=Potion of Regeneration +potion.resistance.postfix=Potion of Resistance +potion.fireResistance.postfix=Potion of Fire Resistance +potion.waterBreathing.postfix=Potion of Water Breathing +potion.invisibility.postfix=Potion of Invisibility +potion.blindness.postfix=Potion of Blindness +potion.nightVision.postfix=Potion of Night Vision +potion.hunger.postfix=Potion of Hunger +potion.poison.postfix=Potion of Poison +potion.wither.postfix=Potion of Decay +potion.healthBoost.postfix=Potion of Health Boost +potion.absorption.postfix=Potion of Absorption +potion.saturation.postfix=Potion of Saturation + +potion.potency.0= +potion.potency.1=II +potion.potency.2=III +potion.potency.3=IV + +potion.prefix.grenade=Splash +potion.prefix.mundane=Mundane +potion.prefix.uninteresting=Uninteresting +potion.prefix.bland=Bland +potion.prefix.clear=Clear +potion.prefix.milky=Milky +potion.prefix.diffuse=Diffuse +potion.prefix.artless=Artless +potion.prefix.thin=Thin +potion.prefix.awkward=Awkward +potion.prefix.flat=Flat +potion.prefix.bulky=Bulky +potion.prefix.bungling=Bungling +potion.prefix.buttered=Buttered +potion.prefix.smooth=Smooth +potion.prefix.suave=Suave +potion.prefix.debonair=Debonair +potion.prefix.thick=Thick +potion.prefix.elegant=Elegant +potion.prefix.fancy=Fancy +potion.prefix.charming=Charming +potion.prefix.dashing=Dashing +potion.prefix.refined=Refined +potion.prefix.cordial=Cordial +potion.prefix.sparkling=Sparkling +potion.prefix.potent=Potent +potion.prefix.foul=Foul +potion.prefix.odorless=Odorless +potion.prefix.rank=Rank +potion.prefix.harsh=Harsh +potion.prefix.acrid=Acrid +potion.prefix.gross=Gross +potion.prefix.stinky=Stinky + +enchantment.damage.all=Sharpness +enchantment.damage.undead=Smite +enchantment.damage.arthropods=Bane of Arthropods +enchantment.knockback=Knockback +enchantment.fire=Fire Aspect +enchantment.protect.all=Protection +enchantment.protect.fire=Fire Protection +enchantment.protect.fall=Feather Falling +enchantment.protect.explosion=Blast Protection +enchantment.protect.projectile=Projectile Protection +enchantment.oxygen=Respiration +enchantment.waterWorker=Aqua Affinity +enchantment.waterWalker=Depth Strider +enchantment.digging=Efficiency +enchantment.untouching=Silk Touch +enchantment.durability=Unbreaking +enchantment.lootBonus=Looting +enchantment.lootBonusDigger=Fortune +enchantment.lootBonusFishing=Luck of the Sea +enchantment.fishingSpeed=Lure +enchantment.arrowDamage=Power +enchantment.arrowFire=Flame +enchantment.arrowKnockback=Punch +enchantment.arrowInfinite=Infinity +enchantment.thorns=Thorns + +enchantment.level.1=I +enchantment.level.2=II +enchantment.level.3=III +enchantment.level.4=IV +enchantment.level.5=V +enchantment.level.6=VI +enchantment.level.7=VII +enchantment.level.8=VIII +enchantment.level.9=IX +enchantment.level.10=X + +gui.achievements=Achievements +gui.stats=Statistics + +stats.tooltip.type.achievement=Achievement +stats.tooltip.type.statistic=Statistic +stat.generalButton=General +stat.blocksButton=Blocks +stat.itemsButton=Items +stat.mobsButton=Mobs + +stat.used=Times Used +stat.mined=Times Mined +stat.depleted=Times Depleted +stat.crafted=Times Crafted +stat.entityKills=You killed %d %s +stat.entityKilledBy=%s killed you %d time(s) +stat.entityKills.none=You have never killed %s +stat.entityKilledBy.none=You have never been killed by %s + +stat.startGame=Times played +stat.createWorld=Worlds created +stat.loadWorld=Saves loaded +stat.joinMultiplayer=Multiplayer joins +stat.leaveGame=Games quit + +stat.playOneMinute=Minutes Played +stat.timeSinceDeath=Since Last Death + +stat.walkOneCm=Distance Walked +stat.crouchOneCm=Distance Crouched +stat.sprintOneCm=Distance Sprinted +stat.fallOneCm=Distance Fallen +stat.swimOneCm=Distance Swum +stat.flyOneCm=Distance Flown +stat.climbOneCm=Distance Climbed +stat.diveOneCm=Distance Dove +stat.minecartOneCm=Distance by Minecart +stat.boatOneCm=Distance by Boat +stat.pigOneCm=Distance by Pig +stat.horseOneCm=Distance by Horse +stat.jump=Jumps +stat.drop=Items Dropped + +stat.damageDealt=Damage Dealt +stat.damageTaken=Damage Taken +stat.deaths=Number of Deaths +stat.mobKills=Mob Kills +stat.animalsBred=Animals Bred +stat.playerKills=Player Kills +stat.fishCaught=Fish Caught +stat.treasureFished=Treasure Fished +stat.junkFished=Junk Fished +stat.talkedToVillager=Talked to Villagers +stat.tradedWithVillager=Traded with Villagers + +stat.cakeSlicesEaten=Cake Slices Eaten +stat.cauldronFilled=Cauldrons Filled +stat.cauldronUsed=Water Taken from Cauldron +stat.armorCleaned=Armor Pieces Cleaned +stat.bannerCleaned=Banners Cleaned +stat.brewingstandInteraction=Interactions with Brewing Stand +stat.beaconInteraction=Interactions with Beacon +stat.dropperInspected=Droppers Searched +stat.hopperInspected=Hoppers Searched +stat.dispenserInspected=Dispensers Searched +stat.noteblockPlayed=Noteblocks played +stat.noteblockTuned=Noteblocks tuned +stat.flowerPotted=Plants potted +stat.trappedChestTriggered=Trapped Chests Triggered +stat.enderchestOpened=Ender Chests Opened +stat.itemEnchanted=Items Enchanted +stat.recordPlayed=Records Played +stat.furnaceInteraction=Interactions with Furnace +stat.workbenchInteraction=Interactions with Crafting Table +stat.chestOpened=Chests Opened + +stat.mineBlock=%1$s Mined +stat.craftItem=%1$s Crafted +stat.useItem=%1$s Used +stat.breakItem=%1$s Depleted + +achievement.get=Achievement get! + +achievement.taken=Taken! +achievement.unknown=??? + +achievement.requires=Requires '%1$s' +achievement.openInventory=Taking Inventory +achievement.openInventory.desc=Press '%1$s' to open your inventory. +achievement.mineWood=Getting Wood +achievement.mineWood.desc=Attack a tree until a block of wood pops out +achievement.buildWorkBench=Benchmarking +achievement.buildWorkBench.desc=Craft a workbench with four blocks of planks +achievement.buildPickaxe=Time to Mine! +achievement.buildPickaxe.desc=Use planks and sticks to make a pickaxe +achievement.buildFurnace=Hot Topic +achievement.buildFurnace.desc=Construct a furnace out of eight stone blocks +achievement.acquireIron=Acquire Hardware +achievement.acquireIron.desc=Smelt an iron ingot +achievement.buildHoe=Time to Farm! +achievement.buildHoe.desc=Use planks and sticks to make a hoe +achievement.makeBread=Bake Bread +achievement.makeBread.desc=Turn wheat into bread +achievement.bakeCake=The Lie +achievement.bakeCake.desc=Wheat, sugar, milk and eggs! +achievement.buildBetterPickaxe=Getting an Upgrade +achievement.buildBetterPickaxe.desc=Construct a better pickaxe +achievement.overpowered=Overpowered +achievement.overpowered.desc=Build a Notch apple +achievement.cookFish=Delicious Fish +achievement.cookFish.desc=Catch and cook fish! +achievement.onARail=On A Rail +achievement.onARail.desc=Travel by minecart at least 1 km from where you started +achievement.buildSword=Time to Strike! +achievement.buildSword.desc=Use planks and sticks to make a sword +achievement.killEnemy=Monster Hunter +achievement.killEnemy.desc=Attack and destroy a monster +achievement.killCow=Cow Tipper +achievement.killCow.desc=Harvest some leather +achievement.breedCow=Repopulation +achievement.breedCow.desc=Breed two cows with wheat +achievement.flyPig=When Pigs Fly +achievement.flyPig.desc=Fly a pig off a cliff +achievement.snipeSkeleton=Sniper Duel +achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters +achievement.diamonds=DIAMONDS! +achievement.diamonds.desc=Acquire diamonds with your iron tools +achievement.diamondsToYou=Diamonds to you! +achievement.diamondsToYou.desc=Throw diamonds at another player. +achievement.portal=We Need to Go Deeper +achievement.portal.desc=Build a portal to the Nether +achievement.ghast=Return to Sender +achievement.ghast.desc=Destroy a Ghast with a fireball +achievement.blazeRod=Into Fire +achievement.blazeRod.desc=Relieve a Blaze of its rod +achievement.potion=Local Brewery +achievement.potion.desc=Brew a potion +achievement.theEnd=The End? +achievement.theEnd.desc=Locate the End +achievement.theEnd2=The End. +achievement.theEnd2.desc=Defeat the Ender Dragon +achievement.spawnWither=The Beginning? +achievement.spawnWither.desc=Spawn the Wither +achievement.killWither=The Beginning. +achievement.killWither.desc=Kill the Wither +achievement.fullBeacon=Beaconator +achievement.fullBeacon.desc=Create a full beacon +achievement.exploreAllBiomes=Adventuring Time +achievement.exploreAllBiomes.desc=Discover all biomes +achievement.enchantments=Enchanter +achievement.enchantments.desc=Use a book, obsidian and diamonds to construct an enchantment table +achievement.overkill=Overkill +achievement.overkill.desc=Deal nine hearts of damage in a single hit +achievement.bookcase=Librarian +achievement.bookcase.desc=Build some bookshelves to improve your enchantment table + +commands.generic.exception=An unknown error occurred while attempting to perform this command +commands.generic.permission=You do not have permission to use this command +commands.generic.syntax=Invalid command syntax +commands.generic.player.notFound=That player cannot be found +commands.generic.entity.notFound=That entity cannot be found +commands.generic.entity.invalidUuid=The entity UUID provided is in an invalid format +commands.generic.entity.invalidType=Entity type '%s' is invalid +commands.generic.notFound=Unknown command. Try /help for a list of commands +commands.generic.parameter.invalid='%s' is not a valid parameter +commands.generic.num.invalid='%s' is not a valid number +commands.generic.boolean.invalid='%s' is not true or false +commands.generic.num.tooSmall=The number you have entered (%d) is too small, it must be at least %d +commands.generic.num.tooBig=The number you have entered (%d) is too big, it must be at most %d +commands.generic.double.tooSmall=The number you have entered (%.2f) is too small, it must be at least %.2f +commands.generic.double.tooBig=The number you have entered (%.2f) is too big, it must be at most %.2f +commands.generic.usage=Usage: %s + +commands.setidletimeout.usage=/setidletimeout +commands.setidletimeout.success=Successfully set the idle timeout to %d minutes. +commands.xp.failure.widthdrawXp=Cannot give player negative experience points +commands.xp.success=Given %d experience to %s +commands.xp.success.levels=Given %d levels to %s +commands.xp.success.negative.levels=Taken %d levels from %s +commands.xp.usage=/xp [player] OR /xp L [player] +commands.playsound.usage=/playsound [x] [y] [z] [volume] [pitch] [minimumVolume] +commands.playsound.success=Played sound '%s' to %s +commands.playsound.playerTooFar=Player %s is too far away to hear the sound +commands.give.usage=/give [amount] [data] [dataTag] +commands.give.item.notFound=There is no such item with name %d +commands.give.block.notFound=There is no such block with name %d +commands.give.success=Given %s * %d to %s +commands.give.tagError=Data tag parsing failed: %s +commands.replaceitem.usage=/replaceitem ... +commands.replaceitem.entity.usage=/replaceitem entity [amount] [data] [dataTag] +commands.replaceitem.block.usage=/replaceitem block [amount] [data] [dataTag] +commands.replaceitem.tagError=Data tag parsing failed: %s +commands.replaceitem.noContainer=Block at %d, %d, %d is not a container +commands.replaceitem.failed=Could not replace slot %d with %d * %s +commands.replaceitem.success=Replaced slot %d with %d * %s +commands.stats.usage=/stats ... +commands.stats.entity.usage=/stats entity +commands.stats.entity.set.usage=/stats entity set +commands.stats.entity.clear.usage=/stats entity clear +commands.stats.block.usage=/stats block ... +commands.stats.block.set.usage=/stats block set +commands.stats.block.clear.usage=/stats block clear +commands.stats.noCompatibleBlock=Block at %d, %d, %d can not track stats +commands.stats.failed=Invalid parameters +commands.stats.cleared=Cleared %s stats +commands.stats.success=Storing %s stats in %s on %s +commands.summon.usage=/summon [x] [y] [z] [dataTag] +commands.summon.success=Object successfully summoned +commands.summon.failed=Unable to summon object +commands.summon.tagError=Data tag parsing failed: %s +commands.summon.outOfWorld=Cannot summon the object out of the world +commands.testforblock.usage=/testforblock [dataValue] [dataTag] +commands.testforblock.failed.tile=The block at %d,%d,%d is %s (expected: %s). +commands.testforblock.failed.data=The block at %d,%d,%d had the data value of %s (expected: %s). +commands.testforblock.failed.nbt=The block at %d,%d,%d did not have the required NBT keys. +commands.testforblock.failed.tileEntity=The block at %d,%d,%d is not a tile entity and cannot support tag matching. +commands.testforblock.success=Successfully found the block at %d,%d,%d. +commands.testforblock.outOfWorld=Cannot test for block outside of the world +commands.setblock.usage=/setblock [dataValue] [oldBlockHandling] [dataTag] +commands.setblock.success=Block placed +commands.setblock.failed=Unable to place block +commands.setblock.tagError=Data tag parsing failed: %s +commands.setblock.outOfWorld=Cannot place block outside of the world +commands.setblock.notFound=There is no such block with ID/name %s +commands.setblock.noChange=The block couldn't be placed +commands.fill.usage=/fill [dataValue] [oldBlockHandling] [dataTag] +commands.fill.outOfWorld=Cannot place blocks outside of the world +commands.fill.tagError=Data tag parsing failed: %s +commands.fill.success=%d blocks filled +commands.fill.failed=No blocks filled +commands.fill.tooManyBlocks=Too many blocks in the specified area (%d > %d) +commands.clone.usage=/clone [maskMode] [cloneMode] +commands.clone.outOfWorld=Cannot access blocks outside of the world +commands.clone.noOverlap=Source and destination can not overlap +commands.clone.success=%d blocks cloned +commands.clone.failed=No blocks cloned +commands.clone.tooManyBlocks=Too many blocks in the specified area (%d > %d) +commands.compare.usage=/testforblocks [mode] +commands.compare.outOfWorld=Cannot access blocks outside of the world +commands.compare.failed=Source and destination are not identical +commands.compare.success=%d blocks compared +commands.compare.tooManyBlocks=Too many blocks in the specified area (%d > %d) +commands.blockdata.usage=/blockdata +commands.blockdata.success=Block data updated to: %s +commands.blockdata.tagError=Data tag parsing failed: %s +commands.blockdata.outOfWorld=Cannot change block outside of the world +commands.blockdata.notValid=The target block is not a data holder block +commands.blockdata.failed=The data tag did not change: %s +commands.entitydata.usage=/entitydata +commands.entitydata.success=Entity data updated to: %s +commands.entitydata.tagError=Data tag parsing failed: %s +commands.entitydata.noPlayers=%s is a player and cannot be changed +commands.entitydata.failed=The data tag did not change: %s +commands.effect.usage=/effect [seconds] [amplifier] [hideParticles] OR /effect clear +commands.effect.notFound=There is no such mob effect with ID %d +commands.effect.success=Given %1$s (ID %2$d) * %3$d to %4$s for %5$d seconds +commands.effect.success.removed=Took %1$s from %2$s +commands.effect.success.removed.all=Took all effects from %s +commands.effect.failure.notActive=Couldn't take %1$s from %2$s as they do not have the effect +commands.effect.failure.notActive.all=Couldn't take any effects from %s as they do not have any +commands.enchant.usage=/enchant [level] +commands.enchant.notFound=There is no such enchantment with ID %d +commands.enchant.noItem=The target doesn't hold an item +commands.enchant.cantEnchant=The selected enchantment can't be added to the target item +commands.enchant.cantCombine=%1$s can't be combined with %2$s +commands.enchant.success=Enchanting succeeded +commands.particle.usage=/particle [count] [mode] +commands.particle.success=Playing effect %s for %d times +commands.particle.notFound=Unknown effect name (%s) +commands.clear.usage=/clear [player] [item] [data] [maxCount] [dataTag] +commands.clear.success=Cleared the inventory of %s, removing %d items +commands.clear.testing=%s has %d items that match the criteria +commands.clear.failure=Could not clear the inventory of %s, no items to remove +commands.clear.tagError=Data tag parsing failed: %s +commands.downfall.usage=/toggledownfall +commands.downfall.success=Toggled downfall +commands.time.usage=/time +commands.time.added=Added %d to the time +commands.time.set=Set the time to %d +commands.time.query=Time is %d +commands.players.usage=/list +commands.players.list=There are %d/%d players online: +commands.banlist.ips=There are %d total banned IP addresses: +commands.banlist.players=There are %d total banned players: +commands.banlist.usage=/banlist [ips|players] +commands.kill.usage=/kill [player|entity] +commands.kill.successful=Killed %s +commands.kick.success=Kicked %s from the game +commands.kick.success.reason=Kicked %s from the game: '%s' +commands.kick.usage=/kick [reason ...] +commands.op.success=Opped %s +commands.op.failed=Could not op %s +commands.op.usage=/op +commands.deop.success=De-opped %s +commands.deop.failed=Could not de-op %s +commands.deop.usage=/deop +commands.say.usage=/say +commands.ban.success=Banned player %s +commands.ban.failed=Could not ban player %s +commands.ban.usage=/ban [reason ...] +commands.unban.success=Unbanned player %s +commands.unban.failed=Could not unban player %s +commands.unban.usage=/pardon +commands.banip.invalid=You have entered an invalid IP address or a player that is not online +commands.banip.success=Banned IP address %s +commands.banip.success.players=Banned IP address %s belonging to %s +commands.banip.usage=/ban-ip [reason ...] +commands.unbanip.invalid=You have entered an invalid IP address +commands.unbanip.success=Unbanned IP address %s +commands.unbanip.usage=/pardon-ip
+commands.save.usage=/save-all +commands.save-on.alreadyOn=Saving is already turned on. +commands.save-on.usage=/save-on +commands.save-off.alreadyOff=Saving is already turned off. +commands.save-off.usage=/save-off +commands.save.enabled=Turned on world auto-saving +commands.save.disabled=Turned off world auto-saving +commands.save.start=Saving... +commands.save.success=Saved the world +commands.save.failed=Saving failed: %s +commands.stop.usage=/stop +commands.stop.start=Stopping the server +commands.tp.success=Teleported %s to %s +commands.tp.success.coordinates=Teleported %s to %s, %s, %s +commands.tp.usage=/tp [target player] OR /tp [target player] [ ] +commands.tp.notSameDimension=Unable to teleport because players are not in the same dimension +commands.whitelist.list=There are %d (out of %d seen) whitelisted players: +commands.whitelist.enabled=Turned on the whitelist +commands.whitelist.disabled=Turned off the whitelist +commands.whitelist.reloaded=Reloaded the whitelist +commands.whitelist.add.success=Added %s to the whitelist +commands.whitelist.add.failed=Could not add %s to the whitelist +commands.whitelist.add.usage=/whitelist add +commands.whitelist.remove.success=Removed %s from the whitelist +commands.whitelist.remove.failed=Could not remove %s from the whitelist +commands.whitelist.remove.usage=/whitelist remove +commands.whitelist.usage=/whitelist +commands.scoreboard.usage=/scoreboard ... +commands.scoreboard.noMultiWildcard=Only one user wildcard allowed +commands.scoreboard.allMatchesFailed=All matches failed +commands.scoreboard.teamNotFound=No team was found by the name '%s' +commands.scoreboard.objectiveNotFound=No objective was found by the name '%s' +commands.scoreboard.objectiveReadOnly=The objective '%s' is read-only and cannot be set +commands.scoreboard.objectives.usage=/scoreboard objectives ... +commands.scoreboard.objectives.setdisplay.usage=/scoreboard objectives setdisplay [objective] +commands.scoreboard.objectives.setdisplay.invalidSlot=No such display slot '%s' +commands.scoreboard.objectives.setdisplay.successCleared=Cleared objective display slot '%s' +commands.scoreboard.objectives.setdisplay.successSet=Set the display objective in slot '%s' to '%s' +commands.scoreboard.objectives.add.usage=/scoreboard objectives add [display name ...] +commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type '%s' +commands.scoreboard.objectives.add.alreadyExists=An objective with the name '%s' already exists +commands.scoreboard.objectives.add.tooLong=The name '%s' is too long for an objective, it can be at most %d characters long +commands.scoreboard.objectives.add.displayTooLong=The display name '%s' is too long for an objective, it can be at most %d characters long +commands.scoreboard.objectives.add.success=Added new objective '%s' successfully +commands.scoreboard.objectives.remove.usage=/scoreboard objectives remove +commands.scoreboard.objectives.remove.success=Removed objective '%s' successfully +commands.scoreboard.objectives.list.count=Showing %d objective(s) on scoreboard: +commands.scoreboard.objectives.list.entry=- %s: displays as '%s' and is type '%s' +commands.scoreboard.objectives.list.empty=There are no objectives on the scoreboard +commands.scoreboard.players.usage=/scoreboard players ... +commands.scoreboard.players.name.tooLong=The name '%s' is too long for a player, it can be at most %d characters long +commands.scoreboard.players.set.success=Set score of %s for player %s to %d +commands.scoreboard.players.set.tagMismatch=The dataTag does not match for %s +commands.scoreboard.players.set.tagError=Could not parse dataTag, reason: %s +commands.scoreboard.players.set.usage=/scoreboard players set [dataTag] +commands.scoreboard.players.add.usage=/scoreboard players add [dataTag] +commands.scoreboard.players.remove.usage=/scoreboard players remove [dataTag] +commands.scoreboard.players.reset.usage=/scoreboard players reset [objective] +commands.scoreboard.players.reset.success=Reset scores of player %s +commands.scoreboard.players.resetscore.success=Reset score %s of player %s +commands.scoreboard.players.list.usage=/scoreboard players list [name] +commands.scoreboard.players.list.count=Showing %d tracked players on the scoreboard: +commands.scoreboard.players.list.empty=There are no tracked players on the scoreboard +commands.scoreboard.players.list.player.count=Showing %d tracked objective(s) for %s: +commands.scoreboard.players.list.player.entry=- %2$s: %1$d (%3$s) +commands.scoreboard.players.list.player.empty=Player %s has no scores recorded +commands.scoreboard.players.enable.usage=/scoreboard players enable +commands.scoreboard.players.enable.success=Enabled trigger %s for %s +commands.scoreboard.players.enable.noTrigger=Objective %s is not a trigger +commands.scoreboard.players.test.usage=/scoreboard players test +commands.scoreboard.players.test.notFound=No %s score for %s found +commands.scoreboard.players.test.failed=Score %d is NOT in range %d to %d +commands.scoreboard.players.test.success=Score %d is in range %d to %d +commands.scoreboard.players.operation.usage=/scoreboard players operation +commands.scoreboard.players.operation.notFound=No %s score for %s found +commands.scoreboard.players.operation.invalidOperation=Invalid operation %s +commands.scoreboard.players.operation.success=Operation applied successfully +commands.scoreboard.teams.usage=/scoreboard teams ... +commands.scoreboard.teams.add.usage=/scoreboard teams add [display name ...] +commands.scoreboard.teams.add.alreadyExists=A team with the name '%s' already exists +commands.scoreboard.teams.add.tooLong=The name '%s' is too long for a team, it can be at most %d characters long +commands.scoreboard.teams.add.displayTooLong=The display name '%s' is too long for a team, it can be at most %d characters long +commands.scoreboard.teams.add.success=Added new team '%s' successfully +commands.scoreboard.teams.list.usage=/scoreboard teams list [name] +commands.scoreboard.teams.list.count=Showing %d teams on the scoreboard: +commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$d players +commands.scoreboard.teams.list.empty=There are no teams registered on the scoreboard +commands.scoreboard.teams.list.player.count=Showing %d player(s) in team %s: +commands.scoreboard.teams.list.player.entry=- %2$s: %1$d (%3$s) +commands.scoreboard.teams.list.player.empty=Team %s has no players +commands.scoreboard.teams.empty.usage=/scoreboard teams empty +commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant players +commands.scoreboard.teams.empty.success=Removed all %d player(s) from team %s +commands.scoreboard.teams.remove.usage=/scoreboard teams remove +commands.scoreboard.teams.remove.success=Removed team %s +commands.scoreboard.teams.join.usage=/scoreboard teams join [player] +commands.scoreboard.teams.join.success=Added %d player(s) to team %s: %s +commands.scoreboard.teams.join.failure=Could not add %d player(s) to team %s: %s +commands.scoreboard.teams.leave.usage=/scoreboard teams leave [player] +commands.scoreboard.teams.leave.success=Removed %d player(s) from their teams: %s +commands.scoreboard.teams.leave.failure=Could not remove %d player(s) from their teams: %s +commands.scoreboard.teams.leave.noTeam=You are not in a team +commands.scoreboard.teams.option.usage=/scoreboard teams option +commands.scoreboard.teams.option.noValue=Valid values for option %s are: %s +commands.scoreboard.teams.option.success=Set option %s for team %s to %s +commands.execute.usage=/execute OR /execute detect +commands.execute.allInvocationsFailed=All invocations failed: '%s' +commands.execute.failed=Failed to execute '%s' as %s +commands.gamemode.success.self=Set own game mode to %s +commands.gamemode.success.other=Set %s's game mode to %s +commands.gamemode.usage=/gamemode [player] +commands.defaultgamemode.usage=/defaultgamemode +commands.defaultgamemode.success=The world's default game mode is now %s +commands.me.usage=/me +commands.help.header=--- Showing help page %d of %d (/help ) --- +commands.help.footer=Tip: Use the key while typing a command to auto-complete the command or its arguments +commands.help.usage=/help [page|command name] +commands.trigger.usage=/trigger +commands.trigger.invalidObjective=Invalid trigger name %s +commands.trigger.invalidMode=Invalid trigger mode %s +commands.trigger.disabled=Trigger %s is not enabled +commands.trigger.invalidPlayer=Only players can use the /trigger command +commands.trigger.success=Trigger %s changed with %s %s +commands.publish.usage=/publish +commands.publish.started=Local game hosted on port %s +commands.publish.failed=Unable to host local game +commands.debug.start=Started debug profiling +commands.debug.stop=Stopped debug profiling after %.2f seconds (%d ticks) +commands.debug.notStarted=Can't stop profiling when we haven't started yet! +commands.debug.usage=/debug +commands.chunkinfo.usage=/chunkinfo [ ] +commands.chunkinfo.location=Chunk location: (%d, %d, %d) +commands.chunkinfo.noChunk=No chunk found at chunk position %d, %d, %d +commands.chunkinfo.notEmpty=Chunk is not empty. +commands.chunkinfo.empty=Chunk is empty. +commands.chunkinfo.notCompiled=Chunk is not compiled. +commands.chunkinfo.compiled=Chunk is compiled. +commands.chunkinfo.hasNoRenderableLayers=Chunk has no renderable layers. +commands.chunkinfo.hasLayers=Chunk has layers: %s +commands.chunkinfo.isEmpty=Chunk has empty layers: %s +commands.chunkinfo.vertices=%s layer's buffer contains %d vertices +commands.chunkinfo.data=First 64 vertices are: %s +commands.tellraw.usage=/tellraw +commands.tellraw.jsonException=Invalid json: %s +commands.message.usage=/tell +commands.message.sameTarget=You can't send a private message to yourself! +commands.message.display.outgoing=You whisper to %s: %s +commands.message.display.incoming=%s whispers to you: %s +commands.difficulty.usage=/difficulty +commands.difficulty.success=Set game difficulty to %s +commands.spawnpoint.usage=/spawnpoint [player] [ ] +commands.spawnpoint.success=Set %s's spawn point to (%d, %d, %d) +commands.setworldspawn.usage=/setworldspawn [ ] +commands.setworldspawn.success=Set the world spawn point to (%d, %d, %d) +commands.gamerule.usage=/gamerule [value] +commands.gamerule.success=Game rule has been updated +commands.gamerule.norule=No game rule called '%s' is available +commands.gamerule.nopermission=Only server owners can change '%s' +commands.weather.usage=/weather [duration in seconds] +commands.weather.clear=Changing to clear weather +commands.weather.rain=Changing to rainy weather +commands.weather.thunder=Changing to rain and thunder +commands.testfor.usage=/testfor [dataTag] +commands.testfor.failure=%s did not match the required data structure +commands.testfor.success=Found %s +commands.testfor.tagError=Data tag parsing failed: %s +commands.seed.usage=/seed +commands.seed.success=Seed: %s +commands.spreadplayers.usage=/spreadplayers +commands.spreadplayers.spreading.teams=Spreading %s teams %s blocks around %s,%s (min %s blocks apart) +commands.spreadplayers.spreading.players=Spreading %s players %s blocks around %s,%s (min %s blocks apart) +commands.spreadplayers.success.teams=Successfully spread %s teams around %s,%s +commands.spreadplayers.success.players=Successfully spread %s players around %s,%s +commands.spreadplayers.info.teams=(Average distance between teams is %s blocks apart after %s iterations) +commands.spreadplayers.info.players=(Average distance between players is %s blocks apart after %s iterations) +commands.spreadplayers.failure.teams=Could not spread %s teams around %s,%s (too many players for space - try using spread of at most %s) +commands.spreadplayers.failure.players=Could not spread %s players around %s,%s (too many players for space - try using spread of at most %s) +commands.achievement.usage=/achievement [player] +commands.achievement.unknownAchievement=Unknown achievement or statistic '%s' +commands.achievement.alreadyHave=Player %s already has achievement %s +commands.achievement.dontHave=Player %s doesn't have achievement %s +commands.achievement.give.success.all=Successfully given all achievements to %s +commands.achievement.give.success.one=Successfully given %s the stat %s +commands.achievement.take.success.all=Successfully taken all achievements from %s +commands.achievement.take.success.one=Successfully taken the stat %s from %s +commands.achievement.statTooLow=Player %s does not have the stat %s +commands.worldborder.usage=/worldborder ... +commands.worldborder.add.usage=/worldborder add [timeInSeconds] +commands.worldborder.set.usage=/worldborder set [timeInSeconds] +commands.worldborder.set.success=Set world border to %s blocks wide (from %s blocks) +commands.worldborder.get.success=World border is currently %s blocks wide +commands.worldborder.setSlowly.shrink.success=Shrinking world border to %s blocks wide (down from %s blocks) over %s seconds +commands.worldborder.setSlowly.grow.success=Growing world border to %s blocks wide (up from %s blocks) over %s seconds +commands.worldborder.center.usage=/worldborder center +commands.worldborder.center.success=Set world border center to %s,%s +commands.worldborder.damage.usage=/worldborder damage +commands.worldborder.damage.buffer.usage=/worldborder damage buffer +commands.worldborder.damage.buffer.success=Set world border damage buffer to %s blocks (from %s blocks) +commands.worldborder.damage.amount.usage=/worldborder damage amount +commands.worldborder.damage.amount.success=Set world border damage amount to %s per block (from %s per block) +commands.worldborder.warning.usage=/worldborder warning +commands.worldborder.warning.time.usage=/worldborder warning time +commands.worldborder.warning.time.success=Set world border warning to %s seconds away (from %s seconds) +commands.worldborder.warning.distance.usage=/worldborder warning distance +commands.worldborder.warning.distance.success=Set world border warning to %s blocks away (from %s blocks) +commands.title.usage=/title ... +commands.title.usage.title=/title title|subtitle +commands.title.usage.clear=/title clear|reset +commands.title.usage.times=/title times +commands.title.success=Title command successfully executed + +itemGroup.buildingBlocks=Building Blocks +itemGroup.decorations=Decoration Blocks +itemGroup.redstone=Redstone +itemGroup.transportation=Transportation +itemGroup.misc=Miscellaneous +itemGroup.search=Search Items +itemGroup.food=Foodstuffs +itemGroup.tools=Tools +itemGroup.combat=Combat +itemGroup.brewing=Brewing +itemGroup.materials=Materials +itemGroup.inventory=Survival Inventory + +inventory.binSlot=Destroy Item + +advMode.setCommand=Set Console Command for Block +advMode.setCommand.success=Command set: %s +advMode.command=Console Command +advMode.nearestPlayer=Use "@p" to target nearest player +advMode.randomPlayer=Use "@r" to target random player +advMode.allPlayers=Use "@a" to target all players +advMode.allEntities=Use "@e" to target all entities +advMode.previousOutput=Previous Output + +advMode.notEnabled=Command blocks are not enabled on this server +advMode.notAllowed=Must be an opped player in creative mode + +mount.onboard=Press %1$s to dismount + +build.tooHigh=Height limit for building is %s blocks + +attribute.modifier.plus.0=+%d %s +attribute.modifier.plus.1=+%d%% %s +attribute.modifier.plus.2=+%d%% %s +attribute.modifier.take.0=-%d %s +attribute.modifier.take.1=-%d%% %s +attribute.modifier.take.2=-%d%% %s + +attribute.name.horse.jumpStrength=Horse Jump Strength +attribute.name.zombie.spawnReinforcements=Zombie Reinforcements +attribute.name.generic.maxHealth=Max Health +attribute.name.generic.followRange=Mob Follow Range +attribute.name.generic.knockbackResistance=Knockback Resistance +attribute.name.generic.movementSpeed=Speed +attribute.name.generic.attackDamage=Attack Damage + +screenshot.success=Saved screenshot as %s +screenshot.failure=Couldn't save screenshot: %s + +stream.user.mode.moderator=Moderator +stream.user.mode.moderator.self=Moderator on your channel +stream.user.mode.moderator.other=Moderator on %s's channel +stream.user.mode.broadcaster=Broadcaster +stream.user.mode.broadcaster.self=Broadcaster (You!) +stream.user.mode.broadcaster.other=Broadcaster +stream.user.mode.administrator=Twitch Administrator +stream.user.mode.staff=Twitch Staff +stream.user.mode.banned=Banned +stream.user.mode.banned.self=Banned on your channel +stream.user.mode.banned.other=Banned on %s's channel +stream.user.subscription.subscriber=Subscriber +stream.user.subscription.subscriber.self=Subscriber to your channel +stream.user.subscription.subscriber.other=Subscriber to %s's channel +stream.user.subscription.turbo=Twitch Turbo + +stream.unavailable.title=Twitch Broadcasting Unavailable +stream.unavailable.report_to_mojang=Report to Mojang + +stream.confirm_start=Are you sure you want to start broadcasting? + +stream.unavailable.account_not_bound=Before you can broadcast Minecraft through Twitch, you will need to link your Twitch account on mojang.com. Would you like to do that now? +stream.unavailable.account_not_bound.okay=Link Accounts +stream.unavailable.account_not_migrated=Before you can broadcast Minecraft through Twitch, you will need to migrate your Minecraft account to a Mojang account. Would you like to do that now? +stream.unavailable.account_not_migrated.okay=Migrate Account +stream.unavailable.failed_auth=Authentication to Twitch failed. Please go to mojang.com and rebind your Twitch account. +stream.unavailable.failed_auth.okay=Rebind Accounts +stream.unavailable.failed_auth_error=Unable to authenticate to Twitch. Please try again later. +stream.unavailable.initialization_failure=Unable to initialize the Twitch SDK. +stream.unavailable.initialization_failure.extra=(Reason: %s) +stream.unavailable.library_arch_mismatch=The custom java version used to launch Minecraft has a different architecture than the one used to run the launcher. Please make sure these are the same, either 32-bit or 64-bit for both. +stream.unavailable.library_failure=Unable to load the libraries needed for the integrated Twitch broadcasting service. +stream.unavailable.no_fbo=Your video card needs to support at least OpenGL version 3.0 or support Framebuffer Objects via an extension to use the integrated Twitch broadcasting. +stream.unavailable.no_fbo.version=You are currently using: %s +stream.unavailable.no_fbo.blend=Separate blending support via EXT is: %s +stream.unavailable.no_fbo.arb=Framebuffer object support via ARB is: %s +stream.unavailable.no_fbo.ext=Framebuffer object support via EXT is: %s +stream.unavailable.not_supported.windows=Unfortunately the integrated Twitch broadcasting requires a newer version of Windows than you are on. You must have at least Windows Vista or newer. +stream.unavailable.not_supported.mac=Unfortunately the integrated Twitch broadcasting on Mac requires a version of OSX newer than the one you are on. You must use 10.7 (Mac OS X Lion) or newer to be able to use this service. Would you like to visit apple.com to learn about upgrading? +stream.unavailable.not_supported.mac.okay=Upgrade +stream.unavailable.not_supported.other=Unfortunately the integrated Twitch broadcasting service requires Windows (Vista or newer) or Mac OS X (10.7/Lion or newer) +stream.unavailable.unknown=Unfortunately you cannot broadcast to Twitch at this time. And we don't know why :'( +stream.unavailable.unknown.chat=Could not start stream: %s + +stream.unavailable.soundflower.chat=Soundflower is required to be able to stream on Mac. %s +stream.unavailable.soundflower.chat.link=Please click here to install it. + +stream.userinfo.chatTooltip=Click to manage user +stream.userinfo.timeout=Timeout +stream.userinfo.ban=Ban +stream.userinfo.unban=Unban +stream.userinfo.mod=Promote to Moderator +stream.userinfo.unmod=Demote from Moderator + +item.banner.black.name=Black Banner +item.banner.red.name=Red Banner +item.banner.green.name=Green Banner +item.banner.brown.name=Brown Banner +item.banner.blue.name=Blue Banner +item.banner.purple.name=Purple Banner +item.banner.cyan.name=Cyan Banner +item.banner.silver.name=Light Gray Banner +item.banner.gray.name=Gray Banner +item.banner.pink.name=Pink Banner +item.banner.lime.name=Lime Banner +item.banner.yellow.name=Yellow Banner +item.banner.lightBlue.name=Light Blue Banner +item.banner.magenta.name=Magenta Banner +item.banner.orange.name=Orange Banner +item.banner.white.name=White Banner + +item.banner.square_bottom_left.black=Black Base Dexter Canton +item.banner.square_bottom_left.red=Red Base Dexter Canton +item.banner.square_bottom_left.green=Green Base Dexter Canton +item.banner.square_bottom_left.brown=Brown Base Dexter Canton +item.banner.square_bottom_left.blue=Blue Base Dexter Canton +item.banner.square_bottom_left.purple=Purple Base Dexter Canton +item.banner.square_bottom_left.cyan=Cyan Base Dexter Canton +item.banner.square_bottom_left.silver=Light Gray Base Dexter Canton +item.banner.square_bottom_left.gray=Gray Base Dexter Canton +item.banner.square_bottom_left.pink=Pink Base Dexter Canton +item.banner.square_bottom_left.lime=Lime Base Dexter Canton +item.banner.square_bottom_left.yellow=Yellow Base Dexter Canton +item.banner.square_bottom_left.lightBlue=Light Blue Base Dexter Canton +item.banner.square_bottom_left.magenta=Magenta Base Dexter Canton +item.banner.square_bottom_left.orange=Orange Base Dexter Canton +item.banner.square_bottom_left.white=White Base Dexter Canton + +item.banner.square_bottom_right.black=Black Base Sinister Canton +item.banner.square_bottom_right.red=Red Base Sinister Canton +item.banner.square_bottom_right.green=Green Base Sinister Canton +item.banner.square_bottom_right.brown=Brown Base Sinister Canton +item.banner.square_bottom_right.blue=Blue Base Sinister Canton +item.banner.square_bottom_right.purple=Purple Base Sinister Canton +item.banner.square_bottom_right.cyan=Cyan Base Sinister Canton +item.banner.square_bottom_right.silver=Light Gray Base Sinister Canton +item.banner.square_bottom_right.gray=Gray Base Sinister Canton +item.banner.square_bottom_right.pink=Pink Base Sinister Canton +item.banner.square_bottom_right.lime=Lime Base Sinister Canton +item.banner.square_bottom_right.yellow=Yellow Base Sinister Canton +item.banner.square_bottom_right.lightBlue=Light Blue Base Sinister Canton +item.banner.square_bottom_right.magenta=Magenta Base Sinister Canton +item.banner.square_bottom_right.orange=Orange Base Sinister Canton +item.banner.square_bottom_right.white=White Base Sinister Canton + +item.banner.square_top_left.black=Black Chief Dexter Canton +item.banner.square_top_left.red=Red Chief Dexter Canton +item.banner.square_top_left.green=Green Chief Dexter Canton +item.banner.square_top_left.brown=Brown Chief Dexter Canton +item.banner.square_top_left.blue=Blue Chief Dexter Canton +item.banner.square_top_left.purple=Purple Chief Dexter Canton +item.banner.square_top_left.cyan=Cyan Chief Dexter Canton +item.banner.square_top_left.silver=Light Gray Chief Dexter Canton +item.banner.square_top_left.gray=Gray Chief Dexter Canton +item.banner.square_top_left.pink=Pink Chief Dexter Canton +item.banner.square_top_left.lime=Lime Chief Dexter Canton +item.banner.square_top_left.yellow=Yellow Chief Dexter Canton +item.banner.square_top_left.lightBlue=Light Blue Chief Dexter Canton +item.banner.square_top_left.magenta=Magenta Chief Dexter Canton +item.banner.square_top_left.orange=Orange Chief Dexter Canton +item.banner.square_top_left.white=White Chief Dexter Canton + +item.banner.square_top_right.black=Black Chief Sinister Canton +item.banner.square_top_right.red=Red Chief Sinister Canton +item.banner.square_top_right.green=Green Chief Sinister Canton +item.banner.square_top_right.brown=Brown Chief Sinister Canton +item.banner.square_top_right.blue=Blue Chief Sinister Canton +item.banner.square_top_right.purple=Purple Chief Sinister Canton +item.banner.square_top_right.cyan=Cyan Chief Sinister Canton +item.banner.square_top_right.silver=Light Gray Chief Sinister Canton +item.banner.square_top_right.gray=Gray Chief Sinister Canton +item.banner.square_top_right.pink=Pink Chief Sinister Canton +item.banner.square_top_right.lime=Lime Chief Sinister Canton +item.banner.square_top_right.yellow=Yellow Chief Sinister Canton +item.banner.square_top_right.lightBlue=Light Blue Chief Sinister Canton +item.banner.square_top_right.magenta=Magenta Chief Sinister Canton +item.banner.square_top_right.orange=Orange Chief Sinister Canton +item.banner.square_top_right.white=White Chief Sinister Canton + +item.banner.stripe_bottom.black=Black Base Fess +item.banner.stripe_bottom.red=Red Base Fess +item.banner.stripe_bottom.green=Green Base Fess +item.banner.stripe_bottom.brown=Brown Base Fess +item.banner.stripe_bottom.blue=Blue Base Fess +item.banner.stripe_bottom.purple=Purple Base Fess +item.banner.stripe_bottom.cyan=Cyan Base Fess +item.banner.stripe_bottom.silver=Light Gray Base Fess +item.banner.stripe_bottom.gray=Gray Base Fess +item.banner.stripe_bottom.pink=Pink Base Fess +item.banner.stripe_bottom.lime=Lime Base Fess +item.banner.stripe_bottom.yellow=Yellow Base Fess +item.banner.stripe_bottom.lightBlue=Light Blue Base Fess +item.banner.stripe_bottom.magenta=Magenta Base Fess +item.banner.stripe_bottom.orange=Orange Base Fess +item.banner.stripe_bottom.white=White Base Fess + +item.banner.stripe_top.black=Black Chief Fess +item.banner.stripe_top.red=Red Chief Fess +item.banner.stripe_top.green=Green Chief Fess +item.banner.stripe_top.brown=Brown Chief Fess +item.banner.stripe_top.blue=Blue Chief Fess +item.banner.stripe_top.purple=Purple Chief Fess +item.banner.stripe_top.cyan=Cyan Chief Fess +item.banner.stripe_top.silver=Light Gray Chief Fess +item.banner.stripe_top.gray=Gray Chief Fess +item.banner.stripe_top.pink=Pink Chief Fess +item.banner.stripe_top.lime=Lime Chief Fess +item.banner.stripe_top.yellow=Yellow Chief Fess +item.banner.stripe_top.lightBlue=Light Blue Chief Fess +item.banner.stripe_top.magenta=Magenta Chief Fess +item.banner.stripe_top.orange=Orange Chief Fess +item.banner.stripe_top.white=White Chief Fess + +item.banner.stripe_left.black=Black Pale Dexter +item.banner.stripe_left.red=Red Pale Dexter +item.banner.stripe_left.green=Green Pale Dexter +item.banner.stripe_left.brown=Brown Pale Dexter +item.banner.stripe_left.blue=Blue Pale Dexter +item.banner.stripe_left.purple=Purple Pale Dexter +item.banner.stripe_left.cyan=Cyan Pale Dexter +item.banner.stripe_left.silver=Light Gray Pale Dexter +item.banner.stripe_left.gray=Gray Pale Dexter +item.banner.stripe_left.pink=Pink Pale Dexter +item.banner.stripe_left.lime=Lime Pale Dexter +item.banner.stripe_left.yellow=Yellow Pale Dexter +item.banner.stripe_left.lightBlue=Light Blue Pale Dexter +item.banner.stripe_left.magenta=Magenta Pale Dexter +item.banner.stripe_left.orange=Orange Pale Dexter +item.banner.stripe_left.white=White Pale Dexter + +item.banner.stripe_right.black=Black Pale Sinister +item.banner.stripe_right.red=Red Pale Sinister +item.banner.stripe_right.green=Green Pale Sinister +item.banner.stripe_right.brown=Brown Pale Sinister +item.banner.stripe_right.blue=Blue Pale Sinister +item.banner.stripe_right.purple=Purple Pale Sinister +item.banner.stripe_right.cyan=Cyan Pale Sinister +item.banner.stripe_right.silver=Light Gray Pale Sinister +item.banner.stripe_right.gray=Gray Pale Sinister +item.banner.stripe_right.pink=Pink Pale Sinister +item.banner.stripe_right.lime=Lime Pale Sinister +item.banner.stripe_right.yellow=Yellow Pale Sinister +item.banner.stripe_right.lightBlue=Light Blue Pale Sinister +item.banner.stripe_right.magenta=Magenta Pale Sinister +item.banner.stripe_right.orange=Orange Pale Sinister +item.banner.stripe_right.white=White Pale Sinister + +item.banner.stripe_center.black=Black Pale +item.banner.stripe_center.red=Red Pale +item.banner.stripe_center.green=Green Pale +item.banner.stripe_center.brown=Brown Pale +item.banner.stripe_center.blue=Blue Pale +item.banner.stripe_center.purple=Purple Pale +item.banner.stripe_center.cyan=Cyan Pale +item.banner.stripe_center.silver=Light Gray Pale +item.banner.stripe_center.gray=Gray Pale +item.banner.stripe_center.pink=Pink Pale +item.banner.stripe_center.lime=Lime Pale +item.banner.stripe_center.yellow=Yellow Pale +item.banner.stripe_center.lightBlue=Light Blue Pale +item.banner.stripe_center.magenta=Magenta Pale +item.banner.stripe_center.orange=Orange Pale +item.banner.stripe_center.white=White Pale + +item.banner.stripe_middle.black=Black Fess +item.banner.stripe_middle.red=Red Fess +item.banner.stripe_middle.green=Green Fess +item.banner.stripe_middle.brown=Brown Fess +item.banner.stripe_middle.blue=Blue Fess +item.banner.stripe_middle.purple=Purple Fess +item.banner.stripe_middle.cyan=Cyan Fess +item.banner.stripe_middle.silver=Light Gray Fess +item.banner.stripe_middle.gray=Gray Fess +item.banner.stripe_middle.pink=Pink Fess +item.banner.stripe_middle.lime=Lime Fess +item.banner.stripe_middle.yellow=Yellow Fess +item.banner.stripe_middle.lightBlue=Light Blue Fess +item.banner.stripe_middle.magenta=Magenta Fess +item.banner.stripe_middle.orange=Orange Fess +item.banner.stripe_middle.white=White Fess + +item.banner.stripe_downright.black=Black Bend +item.banner.stripe_downright.red=Red Bend +item.banner.stripe_downright.green=Green Bend +item.banner.stripe_downright.brown=Brown Bend +item.banner.stripe_downright.blue=Blue Bend +item.banner.stripe_downright.purple=Purple Bend +item.banner.stripe_downright.cyan=Cyan Bend +item.banner.stripe_downright.silver=Light Gray Bend +item.banner.stripe_downright.gray=Gray Bend +item.banner.stripe_downright.pink=Pink Bend +item.banner.stripe_downright.lime=Lime Bend +item.banner.stripe_downright.yellow=Yellow Bend +item.banner.stripe_downright.lightBlue=Light Blue Bend +item.banner.stripe_downright.magenta=Magenta Bend +item.banner.stripe_downright.orange=Orange Bend +item.banner.stripe_downright.white=White Bend + +item.banner.stripe_downleft.black=Black Bend Sinister +item.banner.stripe_downleft.red=Red Bend Sinister +item.banner.stripe_downleft.green=Green Bend Sinister +item.banner.stripe_downleft.brown=Brown Bend Sinister +item.banner.stripe_downleft.blue=Blue Bend Sinister +item.banner.stripe_downleft.purple=Purple Bend Sinister +item.banner.stripe_downleft.cyan=Cyan Bend Sinister +item.banner.stripe_downleft.silver=Light Gray Bend Sinister +item.banner.stripe_downleft.gray=Gray Bend Sinister +item.banner.stripe_downleft.pink=Pink Bend Sinister +item.banner.stripe_downleft.lime=Lime Bend Sinister +item.banner.stripe_downleft.yellow=Yellow Bend Sinister +item.banner.stripe_downleft.lightBlue=Light Blue Bend Sinister +item.banner.stripe_downleft.magenta=Magenta Bend Sinister +item.banner.stripe_downleft.orange=Orange Bend Sinister +item.banner.stripe_downleft.white=White Bend Sinister + +item.banner.small_stripes.black=Black Paly +item.banner.small_stripes.red=Red Paly +item.banner.small_stripes.green=Green Paly +item.banner.small_stripes.brown=Brown Paly +item.banner.small_stripes.blue=Blue Paly +item.banner.small_stripes.purple=Purple Paly +item.banner.small_stripes.cyan=Cyan Paly +item.banner.small_stripes.silver=Light Gray Paly +item.banner.small_stripes.gray=Gray Paly +item.banner.small_stripes.pink=Pink Paly +item.banner.small_stripes.lime=Lime Paly +item.banner.small_stripes.yellow=Yellow Paly +item.banner.small_stripes.lightBlue=Light Blue Paly +item.banner.small_stripes.magenta=Magenta Paly +item.banner.small_stripes.orange=Orange Paly +item.banner.small_stripes.white=White Paly + +item.banner.cross.black=Black Saltire +item.banner.cross.red=Red Saltire +item.banner.cross.green=Green Saltire +item.banner.cross.brown=Brown Saltire +item.banner.cross.blue=Blue Saltire +item.banner.cross.purple=Purple Saltire +item.banner.cross.cyan=Cyan Saltire +item.banner.cross.silver=Light Gray Saltire +item.banner.cross.gray=Gray Saltire +item.banner.cross.pink=Pink Saltire +item.banner.cross.lime=Lime Saltire +item.banner.cross.yellow=Yellow Saltire +item.banner.cross.lightBlue=Light Blue Saltire +item.banner.cross.magenta=Magenta Saltire +item.banner.cross.orange=Orange Saltire +item.banner.cross.white=White Saltire + +item.banner.triangle_bottom.black=Black Chevron +item.banner.triangle_bottom.red=Red Chevron +item.banner.triangle_bottom.green=Green Chevron +item.banner.triangle_bottom.brown=Brown Chevron +item.banner.triangle_bottom.blue=Blue Chevron +item.banner.triangle_bottom.purple=Purple Chevron +item.banner.triangle_bottom.cyan=Cyan Chevron +item.banner.triangle_bottom.silver=Light Gray Chevron +item.banner.triangle_bottom.gray=Gray Chevron +item.banner.triangle_bottom.pink=Pink Chevron +item.banner.triangle_bottom.lime=Lime Chevron +item.banner.triangle_bottom.yellow=Yellow Chevron +item.banner.triangle_bottom.lightBlue=Light Blue Chevron +item.banner.triangle_bottom.magenta=Magenta Chevron +item.banner.triangle_bottom.orange=Orange Chevron +item.banner.triangle_bottom.white=White Chevron + +item.banner.triangle_top.black=Black Inverted Chevron +item.banner.triangle_top.red=Red Inverted Chevron +item.banner.triangle_top.green=Green Inverted Chevron +item.banner.triangle_top.brown=Brown Inverted Chevron +item.banner.triangle_top.blue=Blue Inverted Chevron +item.banner.triangle_top.purple=Purple Inverted Chevron +item.banner.triangle_top.cyan=Cyan Inverted Chevron +item.banner.triangle_top.silver=Light Gray Inverted Chevron +item.banner.triangle_top.gray=Gray Inverted Chevron +item.banner.triangle_top.pink=Pink Inverted Chevron +item.banner.triangle_top.lime=Lime Inverted Chevron +item.banner.triangle_top.yellow=Yellow Inverted Chevron +item.banner.triangle_top.lightBlue=Light Blue Inverted Chevron +item.banner.triangle_top.magenta=Magenta Inverted Chevron +item.banner.triangle_top.orange=Orange Inverted Chevron +item.banner.triangle_top.white=White Inverted Chevron + +item.banner.triangles_bottom.black=Black Base Indented +item.banner.triangles_bottom.red=Red Base Indented +item.banner.triangles_bottom.green=Green Base Indented +item.banner.triangles_bottom.brown=Brown Base Indented +item.banner.triangles_bottom.blue=Blue Base Indented +item.banner.triangles_bottom.purple=Purple Base Indented +item.banner.triangles_bottom.cyan=Cyan Base Indented +item.banner.triangles_bottom.silver=Light Gray Base Indented +item.banner.triangles_bottom.gray=Gray Base Indented +item.banner.triangles_bottom.pink=Pink Base Indented +item.banner.triangles_bottom.lime=Lime Base Indented +item.banner.triangles_bottom.yellow=Yellow Base Indented +item.banner.triangles_bottom.lightBlue=Light Blue Base Indented +item.banner.triangles_bottom.magenta=Magenta Base Indented +item.banner.triangles_bottom.orange=Orange Base Indented +item.banner.triangles_bottom.white=White Base Indented + +item.banner.triangles_top.black=Black Chief Indented +item.banner.triangles_top.red=Red Chief Indented +item.banner.triangles_top.green=Green Chief Indented +item.banner.triangles_top.brown=Brown Chief Indented +item.banner.triangles_top.blue=Blue Chief Indented +item.banner.triangles_top.purple=Purple Chief Indented +item.banner.triangles_top.cyan=Cyan Chief Indented +item.banner.triangles_top.silver=Light Gray Chief Indented +item.banner.triangles_top.gray=Gray Chief Indented +item.banner.triangles_top.pink=Pink Chief Indented +item.banner.triangles_top.lime=Lime Chief Indented +item.banner.triangles_top.yellow=Yellow Chief Indented +item.banner.triangles_top.lightBlue=Light Blue Chief Indented +item.banner.triangles_top.magenta=Magenta Chief Indented +item.banner.triangles_top.orange=Orange Chief Indented +item.banner.triangles_top.white=White Chief Indented + +item.banner.diagonal_left.black=Black Per Bend Sinister +item.banner.diagonal_left.red=Red Per Bend Sinister +item.banner.diagonal_left.green=Green Per Bend Sinister +item.banner.diagonal_left.brown=Brown Per Bend Sinister +item.banner.diagonal_left.blue=Blue Per Bend Sinister +item.banner.diagonal_left.purple=Purple Per Bend Sinister +item.banner.diagonal_left.cyan=Cyan Per Bend Sinister +item.banner.diagonal_left.silver=Light Gray Per Bend Sinister +item.banner.diagonal_left.gray=Gray Per Bend Sinister +item.banner.diagonal_left.pink=Pink Per Bend Sinister +item.banner.diagonal_left.lime=Lime Per Bend Sinister +item.banner.diagonal_left.yellow=Yellow Per Bend Sinister +item.banner.diagonal_left.lightBlue=Light Blue Per Bend Sinister +item.banner.diagonal_left.magenta=Magenta Per Bend Sinister +item.banner.diagonal_left.orange=Orange Per Bend Sinister +item.banner.diagonal_left.white=White Per Bend Sinister + +item.banner.diagonal_right.black=Black Per Bend +item.banner.diagonal_right.red=Red Per Bend +item.banner.diagonal_right.green=Green Per Bend +item.banner.diagonal_right.brown=Brown Per Bend +item.banner.diagonal_right.blue=Blue Per Bend +item.banner.diagonal_right.purple=Purple Per Bend +item.banner.diagonal_right.cyan=Cyan Per Bend +item.banner.diagonal_right.silver=Light Gray Per Bend +item.banner.diagonal_right.gray=Gray Per Bend +item.banner.diagonal_right.pink=Pink Per Bend +item.banner.diagonal_right.lime=Lime Per Bend +item.banner.diagonal_right.yellow=Yellow Per Bend +item.banner.diagonal_right.lightBlue=Light Blue Per Bend +item.banner.diagonal_right.magenta=Magenta Per Bend +item.banner.diagonal_right.orange=Orange Per Bend +item.banner.diagonal_right.white=White Per Bend + +item.banner.diagonal_up_left.black=Black Per Bend Inverted +item.banner.diagonal_up_left.red=Red Per Bend Inverted +item.banner.diagonal_up_left.green=Green Per Bend Inverted +item.banner.diagonal_up_left.brown=Brown Per Bend Inverted +item.banner.diagonal_up_left.blue=Blue Per Bend Inverted +item.banner.diagonal_up_left.purple=Purple Per Bend Inverted +item.banner.diagonal_up_left.cyan=Cyan Per Bend Inverted +item.banner.diagonal_up_left.silver=Light Gray Per Bend Inverted +item.banner.diagonal_up_left.gray=Gray Per Bend Inverted +item.banner.diagonal_up_left.pink=Pink Per Bend Inverted +item.banner.diagonal_up_left.lime=Lime Per Bend Inverted +item.banner.diagonal_up_left.yellow=Yellow Per Bend Inverted +item.banner.diagonal_up_left.lightBlue=Light Blue Per Bend Inverted +item.banner.diagonal_up_left.magenta=Magenta Per Bend Inverted +item.banner.diagonal_up_left.orange=Orange Per Bend Inverted +item.banner.diagonal_up_left.white=White Per Bend Inverted + +item.banner.diagonal_up_right.black=Black Per Bend Sinister Inverted +item.banner.diagonal_up_right.red=Red Per Bend Sinister Inverted +item.banner.diagonal_up_right.green=Green Per Bend Sinister Inverted +item.banner.diagonal_up_right.brown=Brown Per Bend Sinister Inverted +item.banner.diagonal_up_right.blue=Blue Per Bend Sinister Inverted +item.banner.diagonal_up_right.purple=Purple Per Bend Sinister Inverted +item.banner.diagonal_up_right.cyan=Cyan Per Bend Sinister Inverted +item.banner.diagonal_up_right.silver=Light Gray Per Bend Sinister Inverted +item.banner.diagonal_up_right.gray=Gray Per Bend Sinister Inverted +item.banner.diagonal_up_right.pink=Pink Per Bend Sinister Inverted +item.banner.diagonal_up_right.lime=Lime Per Bend Sinister Inverted +item.banner.diagonal_up_right.yellow=Yellow Per Bend Sinister Inverted +item.banner.diagonal_up_right.lightBlue=Light Blue Per Bend Sinister Inverted +item.banner.diagonal_up_right.magenta=Magenta Per Bend Sinister Inverted +item.banner.diagonal_up_right.orange=Orange Per Bend Sinister Inverted +item.banner.diagonal_up_right.white=White Per Bend Sinister Inverted + +item.banner.circle.black=Black Roundel +item.banner.circle.red=Red Roundel +item.banner.circle.green=Green Roundel +item.banner.circle.brown=Brown Roundel +item.banner.circle.blue=Blue Roundel +item.banner.circle.purple=Purple Roundel +item.banner.circle.cyan=Cyan Roundel +item.banner.circle.silver=Light Gray Roundel +item.banner.circle.gray=Gray Roundel +item.banner.circle.pink=Pink Roundel +item.banner.circle.lime=Lime Roundel +item.banner.circle.yellow=Yellow Roundel +item.banner.circle.lightBlue=Light Blue Roundel +item.banner.circle.magenta=Magenta Roundel +item.banner.circle.orange=Orange Roundel +item.banner.circle.white=White Roundel + +item.banner.rhombus.black=Black Lozenge +item.banner.rhombus.red=Red Lozenge +item.banner.rhombus.green=Green Lozenge +item.banner.rhombus.brown=Brown Lozenge +item.banner.rhombus.blue=Blue Lozenge +item.banner.rhombus.purple=Purple Lozenge +item.banner.rhombus.cyan=Cyan Lozenge +item.banner.rhombus.silver=Light Gray Lozenge +item.banner.rhombus.gray=Gray Lozenge +item.banner.rhombus.pink=Pink Lozenge +item.banner.rhombus.lime=Lime Lozenge +item.banner.rhombus.yellow=Yellow Lozenge +item.banner.rhombus.lightBlue=Light Blue Lozenge +item.banner.rhombus.magenta=Magenta Lozenge +item.banner.rhombus.orange=Orange Lozenge +item.banner.rhombus.white=White Lozenge + +item.banner.half_vertical.black=Black Per Pale +item.banner.half_vertical.red=Red Per Pale +item.banner.half_vertical.green=Green Per Pale +item.banner.half_vertical.brown=Brown Per Pale +item.banner.half_vertical.blue=Blue Per Pale +item.banner.half_vertical.purple=Purple Per Pale +item.banner.half_vertical.cyan=Cyan Per Pale +item.banner.half_vertical.silver=Light Gray Per Pale +item.banner.half_vertical.gray=Gray Per Pale +item.banner.half_vertical.pink=Pink Per Pale +item.banner.half_vertical.lime=Lime Per Pale +item.banner.half_vertical.yellow=Yellow Per Pale +item.banner.half_vertical.lightBlue=Light Blue Per Pale +item.banner.half_vertical.magenta=Magenta Per Pale +item.banner.half_vertical.orange=Orange Per Pale +item.banner.half_vertical.white=White Per Pale + +item.banner.half_horizontal.black=Black Per Fess +item.banner.half_horizontal.red=Red Per Fess +item.banner.half_horizontal.green=Green Per Fess +item.banner.half_horizontal.brown=Brown Per Fess +item.banner.half_horizontal.blue=Blue Per Fess +item.banner.half_horizontal.purple=Purple Per Fess +item.banner.half_horizontal.cyan=Cyan Per Fess +item.banner.half_horizontal.silver=Light Gray Per Fess +item.banner.half_horizontal.gray=Gray Per Fess +item.banner.half_horizontal.pink=Pink Per Fess +item.banner.half_horizontal.lime=Lime Per Fess +item.banner.half_horizontal.yellow=Yellow Per Fess +item.banner.half_horizontal.lightBlue=Light Blue Per Fess +item.banner.half_horizontal.magenta=Magenta Per Fess +item.banner.half_horizontal.orange=Orange Per Fess +item.banner.half_horizontal.white=White Per Fess + +item.banner.half_vertical_right.black=Black Per Pale Inverted +item.banner.half_vertical_right.red=Red Per Pale Inverted +item.banner.half_vertical_right.green=Green Per Pale Inverted +item.banner.half_vertical_right.brown=Brown Per Pale Inverted +item.banner.half_vertical_right.blue=Blue Per Pale Inverted +item.banner.half_vertical_right.purple=Purple Per Pale Inverted +item.banner.half_vertical_right.cyan=Cyan Per Pale Inverted +item.banner.half_vertical_right.silver=Light Gray Per Pale Inverted +item.banner.half_vertical_right.gray=Gray Per Pale Inverted +item.banner.half_vertical_right.pink=Pink Per Pale Inverted +item.banner.half_vertical_right.lime=Lime Per Pale Inverted +item.banner.half_vertical_right.yellow=Yellow Per Pale Inverted +item.banner.half_vertical_right.lightBlue=Light Blue Per Pale Inverted +item.banner.half_vertical_right.magenta=Magenta Per Pale Inverted +item.banner.half_vertical_right.orange=Orange Per Pale Inverted +item.banner.half_vertical_right.white=White Per Pale Inverted + +item.banner.half_horizontal_bottom.black=Black Per Fess Inverted +item.banner.half_horizontal_bottom.red=Red Per Fess Inverted +item.banner.half_horizontal_bottom.green=Green Per Fess Inverted +item.banner.half_horizontal_bottom.brown=Brown Per Fess Inverted +item.banner.half_horizontal_bottom.blue=Blue Per Fess Inverted +item.banner.half_horizontal_bottom.purple=Purple Per Fess Inverted +item.banner.half_horizontal_bottom.cyan=Cyan Per Fess Inverted +item.banner.half_horizontal_bottom.silver=Light Gray Per Fess Inverted +item.banner.half_horizontal_bottom.gray=Gray Per Fess Inverted +item.banner.half_horizontal_bottom.pink=Pink Per Fess Inverted +item.banner.half_horizontal_bottom.lime=Lime Per Fess Inverted +item.banner.half_horizontal_bottom.yellow=Yellow Per Fess Inverted +item.banner.half_horizontal_bottom.lightBlue=Light Blue Per Fess Inverted +item.banner.half_horizontal_bottom.magenta=Magenta Per Fess Inverted +item.banner.half_horizontal_bottom.orange=Orange Per Fess Inverted +item.banner.half_horizontal_bottom.white=White Per Fess Inverted + +item.banner.creeper.black=Black Creeper Charge +item.banner.creeper.red=Red Creeper Charge +item.banner.creeper.green=Green Creeper Charge +item.banner.creeper.brown=Brown Creeper Charge +item.banner.creeper.blue=Blue Creeper Charge +item.banner.creeper.purple=Purple Creeper Charge +item.banner.creeper.cyan=Cyan Creeper Charge +item.banner.creeper.silver=Light Gray Creeper Charge +item.banner.creeper.gray=Gray Creeper Charge +item.banner.creeper.pink=Pink Creeper Charge +item.banner.creeper.lime=Lime Creeper Charge +item.banner.creeper.yellow=Yellow Creeper Charge +item.banner.creeper.lightBlue=Light Blue Creeper Charge +item.banner.creeper.magenta=Magenta Creeper Charge +item.banner.creeper.orange=Orange Creeper Charge +item.banner.creeper.white=White Creeper Charge + +item.banner.bricks.black=Black Field Masoned +item.banner.bricks.red=Red Field Masoned +item.banner.bricks.green=Green Field Masoned +item.banner.bricks.brown=Brown Field Masoned +item.banner.bricks.blue=Blue Field Masoned +item.banner.bricks.purple=Purple Field Masoned +item.banner.bricks.cyan=Cyan Field Masoned +item.banner.bricks.silver=Light Gray Field Masoned +item.banner.bricks.gray=Gray Field Masoned +item.banner.bricks.pink=Pink Field Masoned +item.banner.bricks.lime=Lime Field Masoned +item.banner.bricks.yellow=Yellow Field Masoned +item.banner.bricks.lightBlue=Light Blue Field Masoned +item.banner.bricks.magenta=Magenta Field Masoned +item.banner.bricks.orange=Orange Field Masoned +item.banner.bricks.white=White Field Masoned + +item.banner.gradient.black=Black Gradient +item.banner.gradient.red=Red Gradient +item.banner.gradient.green=Green Gradient +item.banner.gradient.brown=Brown Gradient +item.banner.gradient.blue=Blue Gradient +item.banner.gradient.purple=Purple Gradient +item.banner.gradient.cyan=Cyan Gradient +item.banner.gradient.silver=Light Gray Gradient +item.banner.gradient.gray=Gray Gradient +item.banner.gradient.pink=Pink Gradient +item.banner.gradient.lime=Lime Gradient +item.banner.gradient.yellow=Yellow Gradient +item.banner.gradient.lightBlue=Light Blue Gradient +item.banner.gradient.magenta=Magenta Gradient +item.banner.gradient.orange=Orange Gradient +item.banner.gradient.white=White Gradient + +item.banner.gradient_up.black=Black Base Gradient +item.banner.gradient_up.red=Red Base Gradient +item.banner.gradient_up.green=Green Base Gradient +item.banner.gradient_up.brown=Brown Base Gradient +item.banner.gradient_up.blue=Blue Base Gradient +item.banner.gradient_up.purple=Purple Base Gradient +item.banner.gradient_up.cyan=Cyan Base Gradient +item.banner.gradient_up.silver=Light Gray Base Gradient +item.banner.gradient_up.gray=Gray Base Gradient +item.banner.gradient_up.pink=Pink Base Gradient +item.banner.gradient_up.lime=Lime Base Gradient +item.banner.gradient_up.yellow=Yellow Base Gradient +item.banner.gradient_up.lightBlue=Light Blue Base Gradient +item.banner.gradient_up.magenta=Magenta Base Gradient +item.banner.gradient_up.orange=Orange Base Gradient +item.banner.gradient_up.white=White Base Gradient + +item.banner.skull.black=Black Skull Charge +item.banner.skull.red=Red Skull Charge +item.banner.skull.green=Green Skull Charge +item.banner.skull.brown=Brown Skull Charge +item.banner.skull.blue=Blue Skull Charge +item.banner.skull.purple=Purple Skull Charge +item.banner.skull.cyan=Cyan Skull Charge +item.banner.skull.silver=Light Gray Skull Charge +item.banner.skull.gray=Gray Skull Charge +item.banner.skull.pink=Pink Skull Charge +item.banner.skull.lime=Lime Skull Charge +item.banner.skull.yellow=Yellow Skull Charge +item.banner.skull.lightBlue=Light Blue Skull Charge +item.banner.skull.magenta=Magenta Skull Charge +item.banner.skull.orange=Orange Skull Charge +item.banner.skull.white=White Skull Charge + +item.banner.flower.black=Black Flower Charge +item.banner.flower.red=Red Flower Charge +item.banner.flower.green=Green Flower Charge +item.banner.flower.brown=Brown Flower Charge +item.banner.flower.blue=Blue Flower Charge +item.banner.flower.purple=Purple Flower Charge +item.banner.flower.cyan=Cyan Flower Charge +item.banner.flower.silver=Light Gray Flower Charge +item.banner.flower.gray=Gray Flower Charge +item.banner.flower.pink=Pink Flower Charge +item.banner.flower.lime=Lime Flower Charge +item.banner.flower.yellow=Yellow Flower Charge +item.banner.flower.lightBlue=Light Blue Flower Charge +item.banner.flower.magenta=Magenta Flower Charge +item.banner.flower.orange=Orange Flower Charge +item.banner.flower.white=White Flower Charge + +item.banner.border.black=Black Bordure +item.banner.border.red=Red Bordure +item.banner.border.green=Green Bordure +item.banner.border.brown=Brown Bordure +item.banner.border.blue=Blue Bordure +item.banner.border.purple=Purple Bordure +item.banner.border.cyan=Cyan Bordure +item.banner.border.silver=Light Gray Bordure +item.banner.border.gray=Gray Bordure +item.banner.border.pink=Pink Bordure +item.banner.border.lime=Lime Bordure +item.banner.border.yellow=Yellow Bordure +item.banner.border.lightBlue=Light Blue Bordure +item.banner.border.magenta=Magenta Bordure +item.banner.border.orange=Orange Bordure +item.banner.border.white=White Bordure + +item.banner.curly_border.black=Black Bordure Indented +item.banner.curly_border.red=Red Bordure Indented +item.banner.curly_border.green=Green Bordure Indented +item.banner.curly_border.brown=Brown Bordure Indented +item.banner.curly_border.blue=Blue Bordure Indented +item.banner.curly_border.purple=Purple Bordure Indented +item.banner.curly_border.cyan=Cyan Bordure Indented +item.banner.curly_border.silver=Light Gray Bordure Indented +item.banner.curly_border.gray=Gray Bordure Indented +item.banner.curly_border.pink=Pink Bordure Indented +item.banner.curly_border.lime=Lime Bordure Indented +item.banner.curly_border.yellow=Yellow Bordure Indented +item.banner.curly_border.lightBlue=Light Blue Bordure Indented +item.banner.curly_border.magenta=Magenta Bordure Indented +item.banner.curly_border.orange=Orange Bordure Indented +item.banner.curly_border.white=White Bordure Indented + +item.banner.mojang.black=Black Thing +item.banner.mojang.red=Red Thing +item.banner.mojang.green=Green Thing +item.banner.mojang.brown=Brown Thing +item.banner.mojang.blue=Blue Thing +item.banner.mojang.purple=Purple Thing +item.banner.mojang.cyan=Cyan Thing +item.banner.mojang.silver=Light Gray Thing +item.banner.mojang.gray=Gray Thing +item.banner.mojang.pink=Pink Thing +item.banner.mojang.lime=Lime Thing +item.banner.mojang.yellow=Yellow Thing +item.banner.mojang.lightBlue=Light Blue Thing +item.banner.mojang.magenta=Magenta Thing +item.banner.mojang.orange=Orange Thing +item.banner.mojang.white=White Thing + +item.banner.straight_cross.black=Black Cross +item.banner.straight_cross.red=Red Cross +item.banner.straight_cross.green=Green Cross +item.banner.straight_cross.brown=Brown Cross +item.banner.straight_cross.blue=Blue Cross +item.banner.straight_cross.purple=Purple Cross +item.banner.straight_cross.cyan=Cyan Cross +item.banner.straight_cross.silver=Light Gray Cross +item.banner.straight_cross.gray=Gray Cross +item.banner.straight_cross.pink=Pink Cross +item.banner.straight_cross.lime=Lime Cross +item.banner.straight_cross.yellow=Yellow Cross +item.banner.straight_cross.lightBlue=Light Blue Cross +item.banner.straight_cross.magenta=Magenta Cross +item.banner.straight_cross.orange=Orange Cross +item.banner.straight_cross.white=White Cross diff --git a/TacoSpigot-Server/src/main/resources/configurations/bukkit.yml b/eSpigot-Server/src/main/resources/configurations/bukkit.yml similarity index 100% rename from TacoSpigot-Server/src/main/resources/configurations/bukkit.yml rename to eSpigot-Server/src/main/resources/configurations/bukkit.yml diff --git a/TacoSpigot-Server/src/main/resources/configurations/commands.yml b/eSpigot-Server/src/main/resources/configurations/commands.yml similarity index 100% rename from TacoSpigot-Server/src/main/resources/configurations/commands.yml rename to eSpigot-Server/src/main/resources/configurations/commands.yml diff --git a/TacoSpigot-Server/src/main/resources/configurations/help.yml b/eSpigot-Server/src/main/resources/configurations/help.yml similarity index 100% rename from TacoSpigot-Server/src/main/resources/configurations/help.yml rename to eSpigot-Server/src/main/resources/configurations/help.yml diff --git a/eSpigot-Server/src/main/resources/log4j2.component.properties b/eSpigot-Server/src/main/resources/log4j2.component.properties new file mode 100644 index 0000000..0694b21 --- /dev/null +++ b/eSpigot-Server/src/main/resources/log4j2.component.properties @@ -0,0 +1 @@ +log4j.skipJansi=true diff --git a/TacoSpigot-Server/src/main/resources/log4j2.xml b/eSpigot-Server/src/main/resources/log4j2.xml similarity index 73% rename from TacoSpigot-Server/src/main/resources/log4j2.xml rename to eSpigot-Server/src/main/resources/log4j2.xml index 0452fbc..9af4553 100644 --- a/TacoSpigot-Server/src/main/resources/log4j2.xml +++ b/eSpigot-Server/src/main/resources/log4j2.xml @@ -1,12 +1,11 @@ - - - - + + + - + @@ -18,7 +17,6 @@ - diff --git a/eSpigot-Server/src/main/resources/yggdrasil_session_pubkey.der b/eSpigot-Server/src/main/resources/yggdrasil_session_pubkey.der new file mode 100644 index 0000000..9c79a3a Binary files /dev/null and b/eSpigot-Server/src/main/resources/yggdrasil_session_pubkey.der differ diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/ArtTest.java b/eSpigot-Server/src/test/java/org/bukkit/ArtTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/ArtTest.java rename to eSpigot-Server/src/test/java/org/bukkit/ArtTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/DyeColorsTest.java b/eSpigot-Server/src/test/java/org/bukkit/DyeColorsTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/DyeColorsTest.java rename to eSpigot-Server/src/test/java/org/bukkit/DyeColorsTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/MaterialTest.java b/eSpigot-Server/src/test/java/org/bukkit/MaterialTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/MaterialTest.java rename to eSpigot-Server/src/test/java/org/bukkit/MaterialTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/PerMaterialTest.java b/eSpigot-Server/src/test/java/org/bukkit/PerMaterialTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/PerMaterialTest.java rename to eSpigot-Server/src/test/java/org/bukkit/PerMaterialTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/SoundTest.java b/eSpigot-Server/src/test/java/org/bukkit/SoundTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/SoundTest.java rename to eSpigot-Server/src/test/java/org/bukkit/SoundTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/StatisticsAndAchievementsTest.java b/eSpigot-Server/src/test/java/org/bukkit/StatisticsAndAchievementsTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/StatisticsAndAchievementsTest.java rename to eSpigot-Server/src/test/java/org/bukkit/StatisticsAndAchievementsTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/WorldTypeTest.java b/eSpigot-Server/src/test/java/org/bukkit/WorldTypeTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/WorldTypeTest.java rename to eSpigot-Server/src/test/java/org/bukkit/WorldTypeTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/CompositeSerialization.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/CompositeSerialization.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/CompositeSerialization.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/CompositeSerialization.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/FactoryItemMaterialTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/FactoryItemMaterialTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/FactoryItemMaterialTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/FactoryItemMaterialTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemFactoryTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemFactoryTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemFactoryTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemFactoryTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackBookTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackBookTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackBookTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackBookTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackEnchantStorageTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackEnchantStorageTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackEnchantStorageTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackEnchantStorageTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkChargeTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkChargeTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkChargeTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkChargeTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackFireworkTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLeatherTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLeatherTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLeatherTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLeatherTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLoreEnchantmentTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLoreEnchantmentTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLoreEnchantmentTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackLoreEnchantmentTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackMapTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackMapTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackMapTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackMapTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackPotionsTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackPotionsTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackPotionsTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackPotionsTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackSkullTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackSkullTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackSkullTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackSkullTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/ItemStackTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/NMSCraftItemStackTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/NMSCraftItemStackTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/NMSCraftItemStackTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/inventory/NMSCraftItemStackTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/metadata/BlockMetadataTest.java b/eSpigot-Server/src/test/java/org/bukkit/craftbukkit/metadata/BlockMetadataTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/craftbukkit/metadata/BlockMetadataTest.java rename to eSpigot-Server/src/test/java/org/bukkit/craftbukkit/metadata/BlockMetadataTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/map/MapTest.java b/eSpigot-Server/src/test/java/org/bukkit/map/MapTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/map/MapTest.java rename to eSpigot-Server/src/test/java/org/bukkit/map/MapTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/potion/PotionTest.java b/eSpigot-Server/src/test/java/org/bukkit/potion/PotionTest.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/potion/PotionTest.java rename to eSpigot-Server/src/test/java/org/bukkit/potion/PotionTest.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/AbstractTestingBase.java b/eSpigot-Server/src/test/java/org/bukkit/support/AbstractTestingBase.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/AbstractTestingBase.java rename to eSpigot-Server/src/test/java/org/bukkit/support/AbstractTestingBase.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/DummyEnchantments.java b/eSpigot-Server/src/test/java/org/bukkit/support/DummyEnchantments.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/DummyEnchantments.java rename to eSpigot-Server/src/test/java/org/bukkit/support/DummyEnchantments.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/DummyPotions.java b/eSpigot-Server/src/test/java/org/bukkit/support/DummyPotions.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/DummyPotions.java rename to eSpigot-Server/src/test/java/org/bukkit/support/DummyPotions.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/DummyServer.java b/eSpigot-Server/src/test/java/org/bukkit/support/DummyServer.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/DummyServer.java rename to eSpigot-Server/src/test/java/org/bukkit/support/DummyServer.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/Matchers.java b/eSpigot-Server/src/test/java/org/bukkit/support/Matchers.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/Matchers.java rename to eSpigot-Server/src/test/java/org/bukkit/support/Matchers.java diff --git a/TacoSpigot-Server/src/test/java/org/bukkit/support/Util.java b/eSpigot-Server/src/test/java/org/bukkit/support/Util.java similarity index 100% rename from TacoSpigot-Server/src/test/java/org/bukkit/support/Util.java rename to eSpigot-Server/src/test/java/org/bukkit/support/Util.java diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..7454180 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..69a9715 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..744e882 --- /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 + ;; + MSYS* | 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/pom.xml b/pom.xml deleted file mode 100644 index 674eedc..0000000 --- a/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - 4.0.0 - - - org.sonatype.oss - oss-parent - 7 - - - net.techcable.tacospigot - parent - dev-SNAPSHOT - pom - - TacoSpigot-Parent - Parent project for all TacoSpigot modules. - https://github.com/TacoSpigot/TacoSpigot - - - TacoSpigot-Server - TacoSpigot-API - - - - UTF-8 - - - - - md_5-releases - https://repo.md-5.net/content/repositories/releases/ - - - velocity-repo - https://repo.velocitypowered.com/snapshots/ - - - - - - destroystokyo-releases - https://repo.destroystokyo.com/content/repositories/releases/ - - - destroystokyo-snapshots - https://repo.destroystokyo.com/content/repositories/snapshots/ - - - diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..ad7bdb5 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,9 @@ +rootProject.name = "espigot" + +this.setupSubproject("espigot-server", "eSpigot-Server") +this.setupSubproject("espigot-api", "eSpigot-API") + +fun setupSubproject(name: String, dir: String) { + include(":$name") + project(":$name").projectDir = file(dir) +}