Created
December 9, 2014 06:11
-
-
Save zachbr/e319cc4a168b38caf465 to your computer and use it in GitHub Desktop.
Spigot BPS Patch File Sources
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 303ad6c8effffcf49b5c3e47f6e67de52288598e Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Thu, 11 Sep 2014 01:06:54 -0700 | |
Subject: [PATCH] Spigot Update - 20140909a | |
diff --git a/pom.xml b/pom.xml | |
index 0c9f243..ec56492 100644 | |
--- a/pom.xml | |
+++ b/pom.xml | |
@@ -17,6 +17,13 @@ | |
<relativePath>../pom.xml</relativePath> | |
</parent> | |
+ <repositories> | |
+ <repository> | |
+ <id>sonatype-snapshots</id> | |
+ <url>https://oss.sonatype.org/content/repositories/public</url> | |
+ </repository> | |
+ </repositories> | |
+ | |
<build> | |
<plugins> | |
<plugin> | |
@@ -74,6 +81,13 @@ | |
</build> | |
<dependencies> | |
<dependency> | |
+ <groupId>net.md-5</groupId> | |
+ <artifactId>bungeecord-chat</artifactId> | |
+ <version>1.8-SNAPSHOT</version> | |
+ <type>jar</type> | |
+ <scope>compile</scope> | |
+ </dependency> | |
+ <dependency> | |
<groupId>org.yaml</groupId> | |
<artifactId>snakeyaml</artifactId> | |
<version>1.12</version> | |
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java | |
index f861214..c560493 100644 | |
--- a/src/main/java/org/bukkit/Server.java | |
+++ b/src/main/java/org/bukkit/Server.java | |
@@ -12,6 +12,7 @@ import java.util.Set; | |
import java.util.UUID; | |
import java.util.logging.Logger; | |
+import net.md_5.bungee.api.chat.BaseComponent; | |
import org.bukkit.Warning.WarningState; | |
import org.bukkit.command.CommandException; | |
import org.bukkit.command.CommandSender; | |
@@ -915,6 +916,16 @@ public interface Server extends PluginMessageRecipient { | |
{ | |
throw new UnsupportedOperationException( "Not supported yet." ); | |
} | |
+ | |
+ public void broadcast(BaseComponent component) | |
+ { | |
+ throw new UnsupportedOperationException( "Not supported yet." ); | |
+ } | |
+ | |
+ public void broadcast(BaseComponent... components) | |
+ { | |
+ throw new UnsupportedOperationException( "Not supported yet." ); | |
+ } | |
} | |
Spigot spigot(); | |
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java | |
index b2ad5b7..2940b21 100644 | |
--- a/src/main/java/org/bukkit/entity/Player.java | |
+++ b/src/main/java/org/bukkit/entity/Player.java | |
@@ -2,6 +2,7 @@ package org.bukkit.entity; | |
import java.net.InetSocketAddress; | |
+import net.md_5.bungee.api.chat.BaseComponent; | |
import org.bukkit.Achievement; | |
import org.bukkit.ChatColor; | |
import org.bukkit.Effect; | |
@@ -1102,6 +1103,16 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline | |
{ | |
throw new UnsupportedOperationException( "Not supported yet." ); | |
} | |
+ | |
+ public void sendMessage(BaseComponent component) | |
+ { | |
+ throw new UnsupportedOperationException( "Not supported yet." ); | |
+ } | |
+ | |
+ public void sendMessage(BaseComponent... components) | |
+ { | |
+ throw new UnsupportedOperationException( "Not supported yet." ); | |
+ } | |
} | |
Spigot spigot(); | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From ef1b2e6c084a19cbb01701d87b4ef6468ea48c01 Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Fri, 12 Sep 2014 17:16:11 -0700 | |
Subject: [PATCH] Spigot Update - 20140909b | |
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java | |
index 0b53084..b3002e8 100644 | |
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java | |
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java | |
@@ -138,11 +138,6 @@ public final class SimplePluginManager implements PluginManager { | |
server.getLogger().log( Level.WARNING, "Skipping loading of Orebfuscator as it does not work with Spigot 1.8 builds!" ); | |
continue; | |
} | |
- if ( name.equalsIgnoreCase( "EchoPet" ) ) | |
- { | |
- server.getLogger().log( Level.WARNING, "Skipping loading of EchoPet as it does not work with Spigot 1.8 builds!" ); | |
- continue; | |
- } | |
// Spigot End | |
if (name.equalsIgnoreCase("bukkit") || name.equalsIgnoreCase("minecraft") || name.equalsIgnoreCase("mojang")) { | |
server.getLogger().log(Level.SEVERE, "Could not load '" + file.getPath() + "' in folder '" + directory.getPath() + "': Restricted Name"); | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 2697b81bd9a9a950ee06d717150e9dbe3d3339fb Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Fri, 12 Sep 2014 18:20:53 -0700 | |
Subject: [PATCH] Spigot Update - 20140911a | |
diff --git a/pom.xml b/pom.xml | |
index ec56492..4bfca82 100644 | |
--- a/pom.xml | |
+++ b/pom.xml | |
@@ -86,6 +86,16 @@ | |
<version>1.8-SNAPSHOT</version> | |
<type>jar</type> | |
<scope>compile</scope> | |
+ <exclusions> | |
+ <exclusion> | |
+ <groupId>com.google.code.gson</groupId> | |
+ <artifactId>gson</artifactId> | |
+ </exclusion> | |
+ <exclusion> | |
+ <groupId>net.sf.trove4j</groupId> | |
+ <artifactId>trove4j</artifactId> | |
+ </exclusion> | |
+ </exclusions> | |
</dependency> | |
<dependency> | |
<groupId>org.yaml</groupId> | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From a473134c498e6ffbfe6a89288f9510b99718fed2 Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Thu, 11 Sep 2014 01:07:52 -0700 | |
Subject: [PATCH] Spigot Update - 20140909a | |
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java | |
index 0c4976d..a993b1d 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/Main.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java | |
@@ -48,26 +48,6 @@ public class Main { | |
+ "Please report any such issues to http://www.spigotmc.org/, stating your client, server, and if applicable BungeeCord versions.\n" | |
+ "*** Any bug reports not running the very latest versions of these softwares will be ignored ***\n\n" ); | |
- Enumeration<URL> resources = Main.class.getClassLoader().getResources( "META-INF/MANIFEST.MF" ); | |
- while ( resources.hasMoreElements() ) | |
- { | |
- Manifest manifest = new Manifest( resources.nextElement().openStream() ); | |
- String ts = manifest.getMainAttributes().getValue( "Timestamp" ); | |
- if ( ts != null ) | |
- { | |
- Date buildDate = new SimpleDateFormat( "yyyyMMdd-hhmm" ).parse( ts ); | |
- | |
- Calendar cal = Calendar.getInstance(); | |
- cal.add( Calendar.DAY_OF_YEAR, -2 ); | |
- if ( buildDate.before(cal.getTime() ) ) | |
- { | |
- System.err.println( "WARNING: This build is more than 2 days old and there are likely updates available!" ); | |
- System.err.println( "You will get no support with this build unless you update from http://ci.md-5.net/job/Spigot/" ); | |
- System.err.println( "The server will start in 10 seconds!" ); | |
- Thread.sleep( TimeUnit.SECONDS.toMillis( 10 ) ); | |
- } | |
- } | |
- } | |
// Spigot End | |
// Todo: Installation script | |
OptionParser parser = new OptionParser() { | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 8d77dcd164e3f844c3bda9310b37aa857f50a72a Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Fri, 12 Sep 2014 17:16:43 -0700 | |
Subject: [PATCH] Spigot Update - 20140909b | |
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
index fdbdcc6..416a349 100644 | |
--- a/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
+++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
@@ -1,10 +1,14 @@ | |
package net.minecraft.server; | |
+import net.md_5.bungee.api.chat.BaseComponent; | |
+import net.md_5.bungee.chat.ComponentSerializer; | |
+ | |
import java.io.IOException; | |
public class PacketPlayOutChat extends Packet { | |
private IChatBaseComponent a; | |
+ public BaseComponent[] components; // Spigot - Update 20140909b | |
private boolean b; | |
public PacketPlayOutChat() { | |
@@ -26,7 +30,16 @@ public class PacketPlayOutChat extends Packet { | |
} | |
public void b(PacketDataSerializer packetdataserializer) throws IOException { | |
- packetdataserializer.a(ChatSerializer.a(this.a)); | |
+ // Spigot start - Update 20140909b | |
+ if (components != null) | |
+ { | |
+ packetdataserializer.a( ComponentSerializer.toString(components) ); | |
+ } | |
+ else { | |
+ packetdataserializer.a( ChatSerializer.a(a) ); | |
+ } | |
+ // Spigot end | |
+ | |
// Spigot start - protocol patch | |
if ( packetdataserializer.version >= 16 ) | |
{ | |
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java | |
index 5b6aa3f..3964ba0 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java | |
@@ -23,6 +23,7 @@ import java.util.regex.Pattern; | |
import javax.imageio.ImageIO; | |
+import net.md_5.bungee.api.chat.BaseComponent; | |
import net.minecraft.server.ChunkCoordinates; | |
import net.minecraft.server.CommandAchievement; | |
import net.minecraft.server.CommandBan; | |
@@ -1837,6 +1838,24 @@ public final class CraftServer implements Server { | |
{ | |
return org.spigotmc.SpigotConfig.config; | |
} | |
+ | |
+ @Override | |
+ public void broadcast( BaseComponent component ) | |
+ { | |
+ for ( Player player : getOnlinePlayers() ) | |
+ { | |
+ player.spigot().sendMessage( component ); | |
+ } | |
+ } | |
+ | |
+ @Override | |
+ public void broadcast( BaseComponent... components ) | |
+ { | |
+ for ( Player player : getOnlinePlayers() ) | |
+ { | |
+ player.spigot().sendMessage( components ); | |
+ } | |
+ } | |
}; | |
public Spigot spigot() | |
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java | |
index a993b1d..ba744b1 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/Main.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java | |
@@ -22,33 +22,6 @@ public class Main { | |
public static boolean useConsole = true; | |
public static void main(String[] args) throws Exception { | |
- // Spigot Start | |
- File lock = new File( ".update-lock" ); | |
- if ( !new File( "update-lock" ).exists() && !lock.exists() && System.getProperty( "IReallyKnowWhatIAmDoingThisUpdate" ) == null ) | |
- { | |
- System.err.println( "WARNING: This Minecraft update alters the way in which saved data is stored." ); | |
- System.err.println( "Please ensure your server is in the correct online/offline mode state, as the changes made are PERMANENT" ); | |
- System.err.println( "If you are running in offline mode, but your BungeeCord is in online mode, it is imperative that BungeeCord support is enabled in spigot.yml and BungeeCord's config.yml" ); | |
- System.err.println( "By typing `yes` you acknowledge that you have taken the necessary backups and are aware of this conversion" ); | |
- System.err.println( "Please type yes to continue starting the server. You have been warned :)" ); | |
- System.err.println( "See http://www.spigotmc.org/wiki/uuid-conversion/ if you have any questions and remember BACKUP BACKUP BACKUP" ); | |
- System.err.println( "=================================================================================" ); | |
- System.err.println( "Starting server in 10 seconds" ); | |
- lock.createNewFile(); | |
- try | |
- { | |
- Thread.sleep( TimeUnit.SECONDS.toMillis( 10 ) ); | |
- } catch ( InterruptedException ex ) | |
- { | |
- } | |
- } | |
- | |
- System.err.println( "This Spigot build supports Minecraft clients both of versions 1.7.x and of 1.8.x.\n" | |
- + "*** It is imperative that backups be taken before running this build on your server! ***\n" | |
- + "Please report any such issues to http://www.spigotmc.org/, stating your client, server, and if applicable BungeeCord versions.\n" | |
- + "*** Any bug reports not running the very latest versions of these softwares will be ignored ***\n\n" ); | |
- | |
- // Spigot End | |
// Todo: Installation script | |
OptionParser parser = new OptionParser() { | |
{ | |
@@ -166,6 +139,34 @@ public class Main { | |
} else if (options.has("v")) { | |
System.out.println(CraftServer.class.getPackage().getImplementationVersion()); | |
} else { | |
+ // Spigot start - Update 20140909b | |
+ File lock = new File( ".update-lock" ); | |
+ if ( !new File( "update-lock" ).exists() && !lock.exists() && System.getProperty( "IReallyKnowWhatIAmDoingThisUpdate" ) == null ) | |
+ { | |
+ System.err.println( "WARNING: This Minecraft update alters the way in which saved data is stored." ); | |
+ System.err.println( "Please ensure your server is in the correct online/offline mode state, as the changes made are PERMANENT" ); | |
+ System.err.println( "If you are running in offline mode, but your BungeeCord is in online mode, it is imperative that BungeeCord support is enabled in spigot.yml and BungeeCord's config.yml" ); | |
+ System.err.println( "By typing `yes` you acknowledge that you have taken the necessary backups and are aware of this conversion" ); | |
+ System.err.println( "Please type yes to continue starting the server. You have been warned :)" ); | |
+ System.err.println( "See http://www.spigotmc.org/wiki/uuid-conversion/ if you have any questions and remember BACKUP BACKUP BACKUP" ); | |
+ System.err.println( "=================================================================================" ); | |
+ System.err.println( "Starting server in 10 seconds" ); | |
+ lock.createNewFile(); | |
+ try | |
+ { | |
+ Thread.sleep( TimeUnit.SECONDS.toMillis( 10 ) ); | |
+ } catch ( InterruptedException ex ) | |
+ { | |
+ } | |
+ } | |
+ | |
+ System.err.println( "This Spigot build supports Minecraft clients both of versions 1.7.x and of 1.8.x.\n" | |
+ + "*** It is imperative that backups be taken before running this build on your server! ***\n" | |
+ + "Please report any such issues to http://www.spigotmc.org/, stating your client, server, and if applicable BungeeCord versions.\n" | |
+ + "*** Any bug reports not running the very latest versions of these softwares will be ignored ***\n\n" ); | |
+ | |
+ // Spigot end | |
+ | |
try { | |
// 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'}); | |
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
index 35f2bfa..ca1d027 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | |
@@ -17,6 +17,7 @@ import java.util.UUID; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
+import net.md_5.bungee.api.chat.BaseComponent; | |
import net.minecraft.server.*; | |
import net.minecraft.util.com.mojang.authlib.GameProfile; | |
@@ -1402,6 +1403,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player { | |
return java.util.Collections.unmodifiableSet( ret ); | |
} | |
+ | |
+ @Override | |
+ public void sendMessage( BaseComponent component ) | |
+ { | |
+ sendMessage( new BaseComponent[] { component } ); | |
+ } | |
+ | |
+ @Override | |
+ public void sendMessage( BaseComponent... components ) | |
+ { | |
+ if ( getHandle().playerConnection == null ) return; | |
+ | |
+ PacketPlayOutChat packet = new PacketPlayOutChat(); | |
+ packet.components = components; | |
+ getHandle().playerConnection.sendPacket( packet ); | |
+ } | |
}; | |
public Player.Spigot spigot() | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 0c60a2d1e7ae744f963071a20be7f6039df1444d Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Sun, 21 Sep 2014 12:57:40 -0700 | |
Subject: [PATCH] Spigot Update - 20140916a | |
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
index 46c4fb8..8dad7ca 100644 | |
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
@@ -147,7 +147,7 @@ public class EntityTrackerEntry { | |
this.scanPlayers(new java.util.ArrayList(this.trackedPlayers)); | |
} | |
// CraftBukkit end | |
- object = new PacketPlayOutEntityTeleport(this.tracker.getId(), i, j, k, (byte) l, (byte) i1, tracker.onGround); // Spigot - protocol patch | |
+ object = new PacketPlayOutEntityTeleport(this.tracker.getId(), i, j, k, (byte) l, (byte) i1, tracker.onGround, tracker instanceof EntityFallingBlock || tracker instanceof EntityTNTPrimed); // Spigot - protocol patch // Spigot Update - 20140916a | |
} | |
} | |
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java b/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java | |
index 87260d5..b637d25 100644 | |
--- a/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java | |
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntityTeleport.java | |
@@ -9,6 +9,7 @@ public class PacketPlayOutEntityTeleport extends Packet { | |
private byte e; | |
private byte f; | |
private boolean onGround; // Spigot - protocol patch | |
+ private boolean heightCorrection; // Spigot Update - 20140916a | |
public PacketPlayOutEntityTeleport() {} | |
@@ -21,7 +22,7 @@ public class PacketPlayOutEntityTeleport extends Packet { | |
this.f = (byte) ((int) (entity.pitch * 256.0F / 360.0F)); | |
} | |
- public PacketPlayOutEntityTeleport(int i, int j, int k, int l, byte b0, byte b1, boolean onGround) { // Spigot - protocol patch | |
+ public PacketPlayOutEntityTeleport(int i, int j, int k, int l, byte b0, byte b1, boolean onGround, boolean heightCorrection) { // Spigot - protocol patch // Spigot Update - 20140916a | |
this.a = i; | |
this.b = j; | |
this.c = k; | |
@@ -29,6 +30,7 @@ public class PacketPlayOutEntityTeleport extends Packet { | |
this.e = b0; | |
this.f = b1; | |
this.onGround = onGround; // Spigot - protocol patch | |
+ this.heightCorrection = heightCorrection; // Spigot Update - 20140916a | |
} | |
public void a(PacketDataSerializer packetdataserializer) { | |
@@ -51,7 +53,7 @@ public class PacketPlayOutEntityTeleport extends Packet { | |
} | |
// Spigot end | |
packetdataserializer.writeInt(this.b); | |
- packetdataserializer.writeInt(this.c); | |
+ packetdataserializer.writeInt((packetdataserializer.version >= 16 && heightCorrection) ? (this.c - 16) : this.c); // Spigot Update - 20140916a | |
packetdataserializer.writeInt(this.d); | |
packetdataserializer.writeByte(this.e); | |
packetdataserializer.writeByte(this.f); | |
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java | |
index dcf1204..eef9de2 100644 | |
--- a/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java | |
+++ b/src/main/java/net/minecraft/server/PacketPlayOutSpawnEntity.java | |
@@ -116,6 +116,12 @@ public class PacketPlayOutSpawnEntity extends Packet { | |
int data = k >> 16; | |
k = id | ( data << 12 ); | |
} | |
+ | |
+ if ( ( j == 50 || j == 70 || j == 74 ) && packetdataserializer.version >= 16 ) // Spigot Update - 20140916a | |
+ { | |
+ c -= 16; | |
+ } | |
+ | |
// Spigot end | |
packetdataserializer.writeInt(this.b); | |
packetdataserializer.writeInt(this.c); | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From dd9186f3ff7054b05e2b5379badb7204718bc50d Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Sun, 21 Sep 2014 18:11:43 -0700 | |
Subject: [PATCH] Spigot Update - 20140921a | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java | |
new file mode 100644 | |
index 0000000..deda472 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentManager.java | |
@@ -0,0 +1,364 @@ | |
+package net.minecraft.server; | |
+ | |
+import java.util.ArrayList; | |
+import java.util.HashMap; | |
+import java.util.Iterator; | |
+import java.util.LinkedHashMap; | |
+import java.util.List; | |
+import java.util.Map; | |
+import java.util.Random; | |
+ | |
+public class EnchantmentManager { | |
+ | |
+ private static final Random random = new Random(); | |
+ private static final EnchantmentModifierProtection b = new EnchantmentModifierProtection((EmptyClass) null); | |
+ private static final EnchantmentModifierDamage c = new EnchantmentModifierDamage((EmptyClass) null); | |
+ private static final EnchantmentModifierThorns d = new EnchantmentModifierThorns((EmptyClass) null); | |
+ private static final EnchantmentModifierArthropods e = new EnchantmentModifierArthropods((EmptyClass) null); | |
+ | |
+ public static int getEnchantmentLevel(int i, ItemStack itemstack) { | |
+ if (itemstack == null) { | |
+ return 0; | |
+ } else { | |
+ NBTTagList nbttaglist = itemstack.getEnchantments(); | |
+ | |
+ if (nbttaglist == null) { | |
+ return 0; | |
+ } else { | |
+ for (int j = 0; j < nbttaglist.size(); ++j) { | |
+ short short1 = nbttaglist.get(j).getShort("id"); | |
+ short short2 = nbttaglist.get(j).getShort("lvl"); | |
+ | |
+ if (short1 == i) { | |
+ return short2; | |
+ } | |
+ } | |
+ | |
+ return 0; | |
+ } | |
+ } | |
+ } | |
+ | |
+ public static Map a(ItemStack itemstack) { | |
+ LinkedHashMap linkedhashmap = new LinkedHashMap(); | |
+ NBTTagList nbttaglist = itemstack.getItem() == Items.ENCHANTED_BOOK ? Items.ENCHANTED_BOOK.g(itemstack) : itemstack.getEnchantments(); | |
+ | |
+ if (nbttaglist != null) { | |
+ for (int i = 0; i < nbttaglist.size(); ++i) { | |
+ short short1 = nbttaglist.get(i).getShort("id"); | |
+ short short2 = nbttaglist.get(i).getShort("lvl"); | |
+ | |
+ linkedhashmap.put(Integer.valueOf(short1), Integer.valueOf(short2)); | |
+ } | |
+ } | |
+ | |
+ return linkedhashmap; | |
+ } | |
+ | |
+ public static void a(Map map, ItemStack itemstack) { | |
+ NBTTagList nbttaglist = new NBTTagList(); | |
+ Iterator iterator = map.keySet().iterator(); | |
+ | |
+ while (iterator.hasNext()) { | |
+ int i = ((Integer) iterator.next()).intValue(); | |
+ NBTTagCompound nbttagcompound = new NBTTagCompound(); | |
+ | |
+ nbttagcompound.setShort("id", (short) i); | |
+ nbttagcompound.setShort("lvl", (short) ((Integer) map.get(Integer.valueOf(i))).intValue()); | |
+ nbttaglist.add(nbttagcompound); | |
+ if (itemstack.getItem() == Items.ENCHANTED_BOOK) { | |
+ Items.ENCHANTED_BOOK.a(itemstack, new EnchantmentInstance(i, ((Integer) map.get(Integer.valueOf(i))).intValue())); | |
+ } | |
+ } | |
+ | |
+ if (nbttaglist.size() > 0) { | |
+ if (itemstack.getItem() != Items.ENCHANTED_BOOK) { | |
+ itemstack.a("ench", (NBTBase) nbttaglist); | |
+ } | |
+ } else if (itemstack.hasTag()) { | |
+ itemstack.getTag().remove("ench"); | |
+ } | |
+ } | |
+ | |
+ public static int getEnchantmentLevel(int i, ItemStack[] aitemstack) { | |
+ if (aitemstack == null) { | |
+ return 0; | |
+ } else { | |
+ int j = 0; | |
+ ItemStack[] aitemstack1 = aitemstack; | |
+ int k = aitemstack.length; | |
+ | |
+ for (int l = 0; l < k; ++l) { | |
+ ItemStack itemstack = aitemstack1[l]; | |
+ int i1 = getEnchantmentLevel(i, itemstack); | |
+ | |
+ if (i1 > j) { | |
+ j = i1; | |
+ } | |
+ } | |
+ | |
+ return j; | |
+ } | |
+ } | |
+ | |
+ private static void a(EnchantmentModifier enchantmentmodifier, ItemStack itemstack) { | |
+ if (itemstack != null) { | |
+ NBTTagList nbttaglist = itemstack.getEnchantments(); | |
+ | |
+ if (nbttaglist != null) { | |
+ for (int i = 0; i < nbttaglist.size(); ++i) { | |
+ short short1 = nbttaglist.get(i).getShort("id"); | |
+ short short2 = nbttaglist.get(i).getShort("lvl"); | |
+ | |
+ if (Enchantment.byId[short1] != null) { | |
+ enchantmentmodifier.a(Enchantment.byId[short1], short2); | |
+ } | |
+ } | |
+ } | |
+ } | |
+ } | |
+ | |
+ private static void a(EnchantmentModifier enchantmentmodifier, ItemStack[] aitemstack) { | |
+ ItemStack[] aitemstack1 = aitemstack; | |
+ int i = aitemstack.length; | |
+ | |
+ for (int j = 0; j < i; ++j) { | |
+ ItemStack itemstack = aitemstack1[j]; | |
+ | |
+ a(enchantmentmodifier, itemstack); | |
+ } | |
+ } | |
+ | |
+ public static int a(ItemStack[] aitemstack, DamageSource damagesource) { | |
+ b.a = 0; | |
+ b.b = damagesource; | |
+ a((EnchantmentModifier) b, aitemstack); | |
+ if (b.a > 25) { | |
+ b.a = 25; | |
+ } | |
+ | |
+ return (b.a + 1 >> 1) + random.nextInt((b.a >> 1) + 1); | |
+ } | |
+ | |
+ public static float a(EntityLiving entityliving, EntityLiving entityliving1) { | |
+ return a(entityliving.be(), entityliving1.getMonsterType()); | |
+ } | |
+ | |
+ public static float a(ItemStack itemstack, EnumMonsterType enummonstertype) { | |
+ c.a = 0.0F; | |
+ c.b = enummonstertype; | |
+ a((EnchantmentModifier) c, itemstack); | |
+ return c.a; | |
+ } | |
+ | |
+ public static void a(EntityLiving entityliving, Entity entity) { | |
+ d.b = entity; | |
+ d.a = entityliving; | |
+ a((EnchantmentModifier) d, entityliving.getEquipment()); | |
+ if (entity instanceof EntityHuman) { | |
+ a((EnchantmentModifier) d, entityliving.be()); | |
+ } | |
+ d.b = null; | |
+ d.a = null; | |
+ } | |
+ | |
+ public static void b(EntityLiving entityliving, Entity entity) { | |
+ e.a = entityliving; | |
+ e.b = entity; | |
+ a((EnchantmentModifier) e, entityliving.getEquipment()); | |
+ if (entityliving instanceof EntityHuman) { | |
+ a((EnchantmentModifier) e, entityliving.be()); | |
+ } | |
+ e.a = null; | |
+ e.b = null; | |
+ } | |
+ | |
+ public static int getKnockbackEnchantmentLevel(EntityLiving entityliving, EntityLiving entityliving1) { | |
+ return getEnchantmentLevel(Enchantment.KNOCKBACK.id, entityliving.be()); | |
+ } | |
+ | |
+ public static int getFireAspectEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.FIRE_ASPECT.id, entityliving.be()); | |
+ } | |
+ | |
+ public static int getOxygenEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.OXYGEN.id, entityliving.getEquipment()); | |
+ } | |
+ | |
+ public static int getDigSpeedEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.DIG_SPEED.id, entityliving.be()); | |
+ } | |
+ | |
+ public static boolean hasSilkTouchEnchantment(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.SILK_TOUCH.id, entityliving.be()) > 0; | |
+ } | |
+ | |
+ public static int getBonusBlockLootEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS.id, entityliving.be()); | |
+ } | |
+ | |
+ public static int getLuckEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.LUCK.id, entityliving.be()); | |
+ } | |
+ | |
+ public static int getLureEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.LURE.id, entityliving.be()); | |
+ } | |
+ | |
+ public static int getBonusMonsterLootEnchantmentLevel(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS.id, entityliving.be()); | |
+ } | |
+ | |
+ public static boolean hasWaterWorkerEnchantment(EntityLiving entityliving) { | |
+ return getEnchantmentLevel(Enchantment.WATER_WORKER.id, entityliving.getEquipment()) > 0; | |
+ } | |
+ | |
+ public static ItemStack a(Enchantment enchantment, EntityLiving entityliving) { | |
+ ItemStack[] aitemstack = entityliving.getEquipment(); | |
+ int i = aitemstack.length; | |
+ | |
+ for (int j = 0; j < i; ++j) { | |
+ ItemStack itemstack = aitemstack[j]; | |
+ | |
+ if (itemstack != null && getEnchantmentLevel(enchantment.id, itemstack) > 0) { | |
+ return itemstack; | |
+ } | |
+ } | |
+ | |
+ return null; | |
+ } | |
+ | |
+ public static int a(Random random, int i, int j, ItemStack itemstack) { | |
+ Item item = itemstack.getItem(); | |
+ int k = item.c(); | |
+ | |
+ if (k <= 0) { | |
+ return 0; | |
+ } else { | |
+ if (j > 15) { | |
+ j = 15; | |
+ } | |
+ | |
+ int l = random.nextInt(8) + 1 + (j >> 1) + random.nextInt(j + 1); | |
+ | |
+ return i == 0 ? Math.max(l / 3, 1) : (i == 1 ? l * 2 / 3 + 1 : Math.max(l, j * 2)); | |
+ } | |
+ } | |
+ | |
+ public static ItemStack a(Random random, ItemStack itemstack, int i) { | |
+ List list = b(random, itemstack, i); | |
+ boolean flag = itemstack.getItem() == Items.BOOK; | |
+ | |
+ if (flag) { | |
+ itemstack.setItem(Items.ENCHANTED_BOOK); | |
+ } | |
+ | |
+ if (list != null) { | |
+ Iterator iterator = list.iterator(); | |
+ | |
+ while (iterator.hasNext()) { | |
+ EnchantmentInstance enchantmentinstance = (EnchantmentInstance) iterator.next(); | |
+ | |
+ if (flag) { | |
+ Items.ENCHANTED_BOOK.a(itemstack, enchantmentinstance); | |
+ } else { | |
+ itemstack.addEnchantment(enchantmentinstance.enchantment, enchantmentinstance.level); | |
+ } | |
+ } | |
+ } | |
+ | |
+ return itemstack; | |
+ } | |
+ | |
+ public static List b(Random random, ItemStack itemstack, int i) { | |
+ Item item = itemstack.getItem(); | |
+ int j = item.c(); | |
+ | |
+ if (j <= 0) { | |
+ return null; | |
+ } else { | |
+ j /= 2; | |
+ j = 1 + random.nextInt((j >> 1) + 1) + random.nextInt((j >> 1) + 1); | |
+ int k = j + i; | |
+ float f = (random.nextFloat() + random.nextFloat() - 1.0F) * 0.15F; | |
+ int l = (int) ((float) k * (1.0F + f) + 0.5F); | |
+ | |
+ if (l < 1) { | |
+ l = 1; | |
+ } | |
+ | |
+ ArrayList arraylist = null; | |
+ Map map = b(l, itemstack); | |
+ | |
+ if (map != null && !map.isEmpty()) { | |
+ EnchantmentInstance enchantmentinstance = (EnchantmentInstance) WeightedRandom.a(random, map.values()); | |
+ | |
+ if (enchantmentinstance != null) { | |
+ arraylist = new ArrayList(); | |
+ arraylist.add(enchantmentinstance); | |
+ | |
+ for (int i1 = l; random.nextInt(50) <= i1; i1 >>= 1) { | |
+ Iterator iterator = map.keySet().iterator(); | |
+ | |
+ while (iterator.hasNext()) { | |
+ Integer integer = (Integer) iterator.next(); | |
+ boolean flag = true; | |
+ Iterator iterator1 = arraylist.iterator(); | |
+ | |
+ while (true) { | |
+ if (iterator1.hasNext()) { | |
+ EnchantmentInstance enchantmentinstance1 = (EnchantmentInstance) iterator1.next(); | |
+ | |
+ if (enchantmentinstance1.enchantment.a(Enchantment.byId[integer.intValue()])) { | |
+ continue; | |
+ } | |
+ | |
+ flag = false; | |
+ } | |
+ | |
+ if (!flag) { | |
+ iterator.remove(); | |
+ } | |
+ break; | |
+ } | |
+ } | |
+ | |
+ if (!map.isEmpty()) { | |
+ EnchantmentInstance enchantmentinstance2 = (EnchantmentInstance) WeightedRandom.a(random, map.values()); | |
+ | |
+ arraylist.add(enchantmentinstance2); | |
+ } | |
+ } | |
+ } | |
+ } | |
+ | |
+ return arraylist; | |
+ } | |
+ } | |
+ | |
+ public static Map b(int i, ItemStack itemstack) { | |
+ Item item = itemstack.getItem(); | |
+ HashMap hashmap = null; | |
+ boolean flag = itemstack.getItem() == Items.BOOK; | |
+ Enchantment[] aenchantment = Enchantment.byId; | |
+ int j = aenchantment.length; | |
+ | |
+ for (int k = 0; k < j; ++k) { | |
+ Enchantment enchantment = aenchantment[k]; | |
+ | |
+ if (enchantment != null && (enchantment.slot.canEnchant(item) || flag)) { | |
+ for (int l = enchantment.getStartLevel(); l <= enchantment.getMaxLevel(); ++l) { | |
+ if (i >= enchantment.a(l) && i <= enchantment.b(l)) { | |
+ if (hashmap == null) { | |
+ hashmap = new HashMap(); | |
+ } | |
+ | |
+ hashmap.put(Integer.valueOf(enchantment.id), new EnchantmentInstance(enchantment, l)); | |
+ } | |
+ } | |
+ } | |
+ } | |
+ | |
+ return hashmap; | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentModifierArthropods.java b/src/main/java/net/minecraft/server/EnchantmentModifierArthropods.java | |
new file mode 100644 | |
index 0000000..c8e11db | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentModifierArthropods.java | |
@@ -0,0 +1,17 @@ | |
+package net.minecraft.server; | |
+ | |
+final class EnchantmentModifierArthropods implements EnchantmentModifier { | |
+ | |
+ public EntityLiving a; | |
+ public Entity b; | |
+ | |
+ private EnchantmentModifierArthropods() {} | |
+ | |
+ public void a(Enchantment enchantment, int i) { | |
+ enchantment.a(this.a, this.b, i); | |
+ } | |
+ | |
+ EnchantmentModifierArthropods(EmptyClass emptyclass) { | |
+ this(); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentModifierDamage.java b/src/main/java/net/minecraft/server/EnchantmentModifierDamage.java | |
new file mode 100644 | |
index 0000000..8610c7a | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentModifierDamage.java | |
@@ -0,0 +1,17 @@ | |
+package net.minecraft.server; | |
+ | |
+final class EnchantmentModifierDamage implements EnchantmentModifier { | |
+ | |
+ public float a; | |
+ public EnumMonsterType b; | |
+ | |
+ private EnchantmentModifierDamage() {} | |
+ | |
+ public void a(Enchantment enchantment, int i) { | |
+ this.a += enchantment.a(i, this.b); | |
+ } | |
+ | |
+ EnchantmentModifierDamage(EmptyClass emptyclass) { | |
+ this(); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentModifierProtection.java b/src/main/java/net/minecraft/server/EnchantmentModifierProtection.java | |
new file mode 100644 | |
index 0000000..8c03320 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentModifierProtection.java | |
@@ -0,0 +1,17 @@ | |
+package net.minecraft.server; | |
+ | |
+final class EnchantmentModifierProtection implements EnchantmentModifier { | |
+ | |
+ public int a; | |
+ public DamageSource b; | |
+ | |
+ private EnchantmentModifierProtection() {} | |
+ | |
+ public void a(Enchantment enchantment, int i) { | |
+ this.a += enchantment.a(i, this.b); | |
+ } | |
+ | |
+ EnchantmentModifierProtection(EmptyClass emptyclass) { | |
+ this(); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentModifierThorns.java b/src/main/java/net/minecraft/server/EnchantmentModifierThorns.java | |
new file mode 100644 | |
index 0000000..41993e0 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentModifierThorns.java | |
@@ -0,0 +1,17 @@ | |
+package net.minecraft.server; | |
+ | |
+final class EnchantmentModifierThorns implements EnchantmentModifier { | |
+ | |
+ public EntityLiving a; | |
+ public Entity b; | |
+ | |
+ private EnchantmentModifierThorns() {} | |
+ | |
+ public void a(Enchantment enchantment, int i) { | |
+ enchantment.b(this.a, this.b, i); | |
+ } | |
+ | |
+ EnchantmentModifierThorns(EmptyClass emptyclass) { | |
+ this(); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EnchantmentThorns.java b/src/main/java/net/minecraft/server/EnchantmentThorns.java | |
new file mode 100644 | |
index 0000000..6841259 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/EnchantmentThorns.java | |
@@ -0,0 +1,54 @@ | |
+package net.minecraft.server; | |
+ | |
+import java.util.Random; | |
+ | |
+public class EnchantmentThorns extends Enchantment { | |
+ | |
+ public EnchantmentThorns(int i, int j) { | |
+ super(i, j, EnchantmentSlotType.ARMOR_TORSO); | |
+ this.b("thorns"); | |
+ } | |
+ | |
+ public int a(int n) { | |
+ return 10 + 20 * (n - 1); | |
+ } | |
+ | |
+ public int b(int i) { | |
+ return super.a(i) + 50; | |
+ } | |
+ | |
+ public int getMaxLevel() { | |
+ return 3; | |
+ } | |
+ | |
+ public boolean canEnchant(ItemStack itemstack) { | |
+ return itemstack.getItem() instanceof ItemArmor ? true : super.canEnchant(itemstack); | |
+ } | |
+ | |
+ public void b(EntityLiving entityliving, Entity entity, int n) { | |
+ Random ai = entityliving.aI(); | |
+ ItemStack a = EnchantmentManager.a(Enchantment.THORNS, entityliving); | |
+ | |
+ if (a(n, ai)) { | |
+ entity.damageEntity(DamageSource.a(entityliving), b(n, ai)); | |
+ entity.makeSound("damage.thorns", 0.5F, 1.0F); | |
+ if (a != null) { | |
+ a.damage(3, entityliving); | |
+ } | |
+ } else if (a != null) { | |
+ a.damage(1, entityliving); | |
+ } | |
+ } | |
+ | |
+ public static boolean a(int n, Random random) { | |
+ return n > 0 && random.nextFloat() < 0.15f * n; | |
+ } | |
+ | |
+ public static int b(int n, Random random) { | |
+ if (n > 10) { | |
+ return n - 10; | |
+ } | |
+ | |
+ return 1 + random.nextInt(4); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java | |
index 617f7d4..cf0c38f 100644 | |
--- a/src/main/java/net/minecraft/server/EntityInsentient.java | |
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java | |
@@ -1,5 +1,6 @@ | |
package net.minecraft.server; | |
+import java.lang.ref.WeakReference; | |
import java.util.Iterator; | |
import java.util.List; | |
import java.util.UUID; | |
@@ -21,7 +22,7 @@ public abstract class EntityInsentient extends EntityLiving { | |
private Navigation navigation; | |
protected final PathfinderGoalSelector goalSelector; | |
protected final PathfinderGoalSelector targetSelector; | |
- private EntityLiving goalTarget; | |
+ private WeakReference<EntityLiving> goalTarget = new WeakReference<EntityLiving>(null); // Spigot Update - 20140921a | |
private EntitySenses bq; | |
private ItemStack[] equipment = new ItemStack[5]; | |
public float[] dropChances = new float[5]; // CraftBukkit - protected -> public | |
@@ -76,11 +77,11 @@ public abstract class EntityInsentient extends EntityLiving { | |
} | |
public EntityLiving getGoalTarget() { | |
- return this.goalTarget; | |
+ return this.goalTarget.get(); | |
} | |
public void setGoalTarget(EntityLiving entityliving) { | |
- this.goalTarget = entityliving; | |
+ this.goalTarget = new WeakReference<EntityLiving>(entityliving); | |
} | |
public boolean a(Class oclass) { | |
diff --git a/src/main/java/net/minecraft/server/ItemEnchantedBook.java b/src/main/java/net/minecraft/server/ItemEnchantedBook.java | |
new file mode 100644 | |
index 0000000..0829e4c | |
--- /dev/null | |
+++ b/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 e_(ItemStack itemStack) { | |
+ return false; | |
+ } | |
+ | |
+ public EnumItemRarity f(ItemStack itemstack) { | |
+ if (this.g(itemstack).size() > 0) { | |
+ return EnumItemRarity.UNCOMMON; | |
+ } | |
+ return super.f(itemstack); | |
+ } | |
+ | |
+ public NBTTagList g(ItemStack itemStack) { | |
+ if (itemStack.tag == null || !itemStack.tag.hasKeyOfType("StoredEnchantments", 9)) { | |
+ return new NBTTagList(); | |
+ } | |
+ return (NBTTagList)itemStack.tag.get("StoredEnchantments"); | |
+ } | |
+ | |
+ public void a(ItemStack itemStack, EnchantmentInstance enchantmentInstance) { | |
+ NBTTagList g = this.g(itemStack); | |
+ boolean b = true; | |
+ for (int i = 0; i < g.size(); ++i) { | |
+ NBTTagCompound value = g.get(i); | |
+ if (value.getShort("id") == enchantmentInstance.enchantment.id) { | |
+ if (value.getShort("lvl") < enchantmentInstance.level) { | |
+ value.setShort("lvl", (short)enchantmentInstance.level); | |
+ } | |
+ | |
+ b = false; | |
+ break; | |
+ } | |
+ } | |
+ | |
+ if (b) { | |
+ NBTTagCompound nbtTagCompound = new NBTTagCompound(); | |
+ nbtTagCompound.setShort("id", (short)enchantmentInstance.enchantment.id); | |
+ nbtTagCompound.setShort("lvl", (short)enchantmentInstance.level); | |
+ g.add(nbtTagCompound); | |
+ } | |
+ | |
+ if (!itemStack.hasTag()) { | |
+ itemStack.setTag(new NBTTagCompound()); | |
+ } | |
+ | |
+ itemStack.getTag().set("StoredEnchantments", g); | |
+ } | |
+ | |
+ public ItemStack a(EnchantmentInstance enchantmentInstance) { | |
+ ItemStack itemStack = new ItemStack(this); | |
+ this.a(itemStack, enchantmentInstance); | |
+ return itemStack; | |
+ } | |
+ | |
+ public StructurePieceTreasure b(Random random) { | |
+ return this.a(random, 1, 1, 1); | |
+ } | |
+ | |
+ public StructurePieceTreasure a(final Random random, final int n, final int n2, final int n3) { | |
+ ItemStack itemstack = new ItemStack(Items.BOOK, 1, 0); | |
+ | |
+ EnchantmentManager.a(random, itemstack, 30); | |
+ return new StructurePieceTreasure(itemstack, n, n2, n3); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java | |
index 0cae021..76a5403 100644 | |
--- a/src/main/java/net/minecraft/server/NetworkManager.java | |
+++ b/src/main/java/net/minecraft/server/NetworkManager.java | |
@@ -199,6 +199,8 @@ public class NetworkManager extends SimpleChannelInboundHandler { | |
public void close(IChatBaseComponent ichatbasecomponent) { | |
// Spigot Start | |
this.preparing = false; | |
+ this.k.clear(); // Spigot Update - 20140921a | |
+ this.l.clear(); // Spigot Update - 20140921a | |
// Spigot End | |
if (this.m.isOpen()) { | |
this.m.close(); | |
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java | |
new file mode 100644 | |
index 0000000..30a05c6 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java | |
@@ -0,0 +1,54 @@ | |
+package net.minecraft.server; | |
+ | |
+import java.lang.ref.WeakReference; | |
+import java.util.Collections; | |
+import java.util.List; | |
+ | |
+public class PathfinderGoalNearestAttackableTarget extends PathfinderGoalTarget { | |
+ | |
+ private final Class a; | |
+ private final int b; | |
+ private final DistanceComparator e; | |
+ private final IEntitySelector f; | |
+ private WeakReference<EntityLiving> g; // Spigot Update - 20140921a | |
+ | |
+ public PathfinderGoalNearestAttackableTarget(EntityCreature entitycreature, Class oclass, int i, boolean flag) { | |
+ this(entitycreature, oclass, i, flag, false); | |
+ } | |
+ | |
+ public PathfinderGoalNearestAttackableTarget(EntityCreature entitycreature, Class oclass, int i, boolean flag, boolean flag1) { | |
+ this(entitycreature, oclass, i, flag, flag1, (IEntitySelector) null); | |
+ } | |
+ | |
+ public PathfinderGoalNearestAttackableTarget(EntityCreature entitycreature, Class oclass, int i, boolean flag, boolean flag1, IEntitySelector ientityselector) { | |
+ super(entitycreature, flag, flag1); | |
+ this.g = new WeakReference<EntityLiving>(null); | |
+ this.a = oclass; | |
+ this.b = i; | |
+ this.e = new DistanceComparator(entitycreature); | |
+ this.a(1); | |
+ this.f = new EntitySelectorNearestAttackableTarget(this, ientityselector); | |
+ } | |
+ | |
+ public boolean a() { | |
+ if (this.b > 0 && this.c.aI().nextInt(this.b) != 0) { | |
+ return false; | |
+ } else { | |
+ double d0 = this.f(); | |
+ List list = this.c.world.a(this.a, this.c.boundingBox.grow(d0, 4.0D, d0), this.f); | |
+ | |
+ Collections.sort(list, this.e); | |
+ if (list.isEmpty()) { | |
+ return false; | |
+ } else { | |
+ this.g = new WeakReference<EntityLiving>((EntityLiving) list.get(0)); | |
+ return true; | |
+ } | |
+ } | |
+ } | |
+ | |
+ public void c() { | |
+ this.c.setGoalTarget(this.g.get()); | |
+ super.c(); | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java | |
new file mode 100644 | |
index 0000000..9a31d82 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java | |
@@ -0,0 +1,36 @@ | |
+package net.minecraft.server; | |
+ | |
+public class PathfinderGoalSwell extends PathfinderGoal { | |
+ | |
+ EntityCreeper a; | |
+ | |
+ public PathfinderGoalSwell(EntityCreeper entitycreeper) { | |
+ this.a = entitycreeper; | |
+ this.a(1); | |
+ } | |
+ | |
+ public boolean a() { | |
+ EntityLiving entityliving = this.a.getGoalTarget(); | |
+ | |
+ return this.a.cb() > 0 || entityliving != null && this.a.f(entityliving) < 9.0D; | |
+ } | |
+ | |
+ public void c() { | |
+ this.a.getNavigation().h(); | |
+ } | |
+ | |
+ public void d() {} | |
+ | |
+ public void e() { | |
+ EntityLiving b = this.a.getGoalTarget(); // Spigot Update - 20140921a | |
+ if (b == null) { | |
+ this.a.a(-1); | |
+ } else if (this.a.f(b) > 49.0D) { | |
+ this.a.a(-1); | |
+ } else if (!this.a.getEntitySenses().canSee(b)) { | |
+ this.a.a(-1); | |
+ } else { | |
+ this.a.a(1); | |
+ } | |
+ } | |
+} | |
diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHash.java b/src/main/java/org/bukkit/craftbukkit/util/LongHash.java | |
index 9d54472..1765c79 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/util/LongHash.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/util/LongHash.java | |
@@ -10,6 +10,6 @@ public class LongHash { | |
} | |
public static int lsw(long l) { | |
- return (int) (l) + Integer.MIN_VALUE; // Spigot - remove redundant & | |
+ return (int) (l & -1L) + Integer.MIN_VALUE; // Spigot - remove redundant & // Spigot Update - 20140921a | |
} | |
} | |
diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java b/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java | |
index 7f659b7..22c96c5 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java | |
@@ -31,7 +31,6 @@ public class LongHashSet { | |
private int elements; | |
private long[] values; | |
private int modCount; | |
- private org.spigotmc.FlatMap<Boolean> flat = new org.spigotmc.FlatMap<Boolean>(); // Spigot | |
public LongHashSet() { | |
this(INITIAL_SIZE); | |
@@ -57,30 +56,10 @@ public class LongHashSet { | |
} | |
public boolean contains(int msw, int lsw) { | |
- // Spigot start | |
- if ( elements == 0 ) | |
- { | |
- return false; | |
- } | |
- if ( flat.contains( msw, lsw ) ) | |
- { | |
- return true; | |
- } | |
- // Spigot end | |
return contains(LongHash.toLong(msw, lsw)); | |
} | |
public boolean contains(long value) { | |
- // Spigot start | |
- if ( elements == 0 ) | |
- { | |
- return false; | |
- } | |
- if ( flat.contains( value ) ) | |
- { | |
- return true; | |
- } | |
- // Spigot end | |
int hash = hash(value); | |
int index = (hash & 0x7FFFFFFF) % values.length; | |
int offset = 1; | |
@@ -103,7 +82,6 @@ public class LongHashSet { | |
} | |
public boolean add(long value) { | |
- flat.put( value, Boolean.TRUE ); // Spigot | |
int hash = hash(value); | |
int index = (hash & 0x7FFFFFFF) % values.length; | |
int offset = 1; | |
@@ -147,18 +125,10 @@ public class LongHashSet { | |
} | |
public void remove(int msw, int lsw) { | |
- // Spigot start | |
- flat.remove(msw, lsw); | |
- remove0(LongHash.toLong(msw, lsw)); | |
+ remove(LongHash.toLong(msw, lsw)); | |
} | |
public boolean remove(long value) { | |
- flat.remove(value); | |
- return remove0(value); | |
- } | |
- | |
- private boolean remove0(long value) { | |
- // Spigot end | |
int hash = hash(value); | |
int index = (hash & 0x7FFFFFFF) % values.length; | |
int offset = 1; | |
@@ -191,7 +161,6 @@ public class LongHashSet { | |
freeEntries = values.length; | |
modCount++; | |
- flat = new org.spigotmc.FlatMap<Boolean>(); | |
} | |
public long[] toArray() { | |
diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java b/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java | |
index 2e5b436..01861cc 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/util/LongObjectHashMap.java | |
@@ -28,7 +28,6 @@ public class LongObjectHashMap<V> implements Cloneable, Serializable { | |
private transient V[][] values; | |
private transient int modCount; | |
private transient int size; | |
- private transient org.spigotmc.FlatMap<V> flat = new org.spigotmc.FlatMap<V>(); // Spigot | |
public LongObjectHashMap() { | |
initialize(); | |
@@ -62,17 +61,6 @@ public class LongObjectHashMap<V> implements Cloneable, Serializable { | |
} | |
public V get(long key) { | |
- // Spigot start | |
- if ( size == 0 ) | |
- { | |
- return null; | |
- } | |
- V val = flat.get( key ); | |
- if ( val != null ) | |
- { | |
- return val; | |
- } | |
- // Spigot end | |
int index = (int) (keyIndex(key) & (BUCKET_SIZE - 1)); | |
long[] inner = keys[index]; | |
if (inner == null) return null; | |
@@ -90,7 +78,6 @@ public class LongObjectHashMap<V> implements Cloneable, Serializable { | |
} | |
public V put(long key, V value) { | |
- flat.put(key, value); // Spigot | |
int index = (int) (keyIndex(key) & (BUCKET_SIZE - 1)); | |
long[] innerKeys = keys[index]; | |
V[] innerValues = values[index]; | |
@@ -137,7 +124,6 @@ public class LongObjectHashMap<V> implements Cloneable, Serializable { | |
} | |
public V remove(long key) { | |
- flat.remove(key); // Spigot | |
int index = (int) (keyIndex(key) & (BUCKET_SIZE - 1)); | |
long[] inner = keys[index]; | |
if (inner == null) { | |
@@ -188,7 +174,6 @@ public class LongObjectHashMap<V> implements Cloneable, Serializable { | |
size = 0; | |
Arrays.fill(keys, null); | |
Arrays.fill(values, null); | |
- flat = new org.spigotmc.FlatMap<V>(); | |
} | |
public Set<Long> keySet() { | |
diff --git a/src/main/java/org/spigotmc/FlatMap.java b/src/main/java/org/spigotmc/FlatMap.java | |
deleted file mode 100644 | |
index 9416f6e..0000000 | |
--- a/src/main/java/org/spigotmc/FlatMap.java | |
+++ /dev/null | |
@@ -1,64 +0,0 @@ | |
-package org.spigotmc; | |
- | |
-import org.bukkit.craftbukkit.util.LongHash; | |
- | |
-public class FlatMap<V> | |
-{ | |
- | |
- private static final int FLAT_LOOKUP_SIZE = 512; | |
- private final Object[][] flatLookup = new Object[ FLAT_LOOKUP_SIZE * 2 ][ FLAT_LOOKUP_SIZE * 2 ]; | |
- | |
- public void put(long msw, long lsw, V value) | |
- { | |
- long acx = Math.abs( msw ); | |
- long acz = Math.abs( lsw ); | |
- if ( acx < FLAT_LOOKUP_SIZE && acz < FLAT_LOOKUP_SIZE ) | |
- { | |
- flatLookup[(int) ( msw + FLAT_LOOKUP_SIZE )][(int) ( lsw + FLAT_LOOKUP_SIZE )] = value; | |
- } | |
- } | |
- | |
- public void put(long key, V value) | |
- { | |
- put( LongHash.msw( key ), LongHash.lsw( key ), value ); | |
- | |
- } | |
- | |
- public void remove(long key) | |
- { | |
- put( key, null ); | |
- } | |
- | |
- public void remove(long msw, long lsw) | |
- { | |
- put( msw, lsw, null ); | |
- } | |
- | |
- public boolean contains(long msw, long lsw) | |
- { | |
- return get( msw, lsw ) != null; | |
- } | |
- | |
- public boolean contains(long key) | |
- { | |
- return get( key ) != null; | |
- } | |
- | |
- public V get(long msw, long lsw) | |
- { | |
- long acx = Math.abs( msw ); | |
- long acz = Math.abs( lsw ); | |
- if ( acx < FLAT_LOOKUP_SIZE && acz < FLAT_LOOKUP_SIZE ) | |
- { | |
- return (V) flatLookup[(int) ( msw + FLAT_LOOKUP_SIZE )][(int) ( lsw + FLAT_LOOKUP_SIZE )]; | |
- } else | |
- { | |
- return null; | |
- } | |
- } | |
- | |
- public V get(long key) | |
- { | |
- return get( LongHash.msw( key ), LongHash.lsw( key ) ); | |
- } | |
-} | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From feaaf50a42e83b918d3a2c9f36e24ef7a4c6d8a7 Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Wed, 1 Oct 2014 00:27:39 -0700 | |
Subject: [PATCH] Spigot Update - 20140927a | |
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
index 8dad7ca..78e0965 100644 | |
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
@@ -324,6 +324,10 @@ public class EntityTrackerEntry { | |
if ( tracker instanceof EntityPlayer ) | |
{ | |
entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.addPlayer( (EntityPlayer) tracker ) ); | |
+ | |
+ if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a | |
+ entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( (EntityPlayer) this.tracker ) ); | |
+ } | |
} | |
// Spigot end | |
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java | |
index 0359cb3..86b0343 100644 | |
--- a/src/main/java/net/minecraft/server/PlayerList.java | |
+++ b/src/main/java/net/minecraft/server/PlayerList.java | |
@@ -285,11 +285,17 @@ public abstract class PlayerList { | |
// CraftBukkit start - sendAll above replaced with this loop | |
PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.addPlayer( entityplayer ); // Spigot - protocol patch | |
+ PacketPlayOutPlayerInfo displayPacket = PacketPlayOutPlayerInfo.updateDisplayName( entityplayer ); // Spigot Update - 20140927a | |
for (int i = 0; i < this.players.size(); ++i) { | |
EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); | |
if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { | |
entityplayer1.playerConnection.sendPacket(packet); | |
+ // Spigot start - Update 20140927a | |
+ if ( entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { | |
+ entityplayer1.playerConnection.sendPacket( displayPacket ); | |
+ } | |
+ // Spigot end | |
} | |
} | |
// CraftBukkit end | |
@@ -303,6 +309,11 @@ public abstract class PlayerList { | |
} | |
// .name -> .listName | |
entityplayer.playerConnection.sendPacket(PacketPlayOutPlayerInfo.addPlayer( entityplayer1 )); // Spigot - protocol patch | |
+ // Spigot start - Update 20140927a | |
+ if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { | |
+ entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( entityplayer1 ) ); | |
+ } | |
+ // Spigot end | |
// CraftBukkit end | |
} | |
} | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From cd9384eed6798cc8638659fa40d161f0ad56b8b6 Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Wed, 1 Oct 2014 03:00:09 -0700 | |
Subject: [PATCH] Spigot Update - 20141001a | |
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
index 78e0965..886feed 100644 | |
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java | |
@@ -325,7 +325,7 @@ public class EntityTrackerEntry { | |
{ | |
entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.addPlayer( (EntityPlayer) tracker ) ); | |
- if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a | |
+ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a // Spigot Update - 20141001a | |
entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( (EntityPlayer) this.tracker ) ); | |
} | |
} | |
diff --git a/src/main/java/net/minecraft/server/ItemDoor.java b/src/main/java/net/minecraft/server/ItemDoor.java | |
new file mode 100644 | |
index 0000000..3fa6e11 | |
--- /dev/null | |
+++ b/src/main/java/net/minecraft/server/ItemDoor.java | |
@@ -0,0 +1,79 @@ | |
+package net.minecraft.server; | |
+ | |
+public class ItemDoor extends Item { | |
+ | |
+ private Material a; | |
+ | |
+ public ItemDoor(Material material) { | |
+ this.a = material; | |
+ this.maxStackSize = 1; | |
+ this.a(CreativeModeTab.d); | |
+ } | |
+ | |
+ public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { | |
+ if (l != 1) { | |
+ return false; | |
+ } else { | |
+ ++j; | |
+ Block block; | |
+ | |
+ if (this.a == Material.WOOD) { | |
+ block = Blocks.WOODEN_DOOR; | |
+ } else { | |
+ block = Blocks.IRON_DOOR_BLOCK; | |
+ } | |
+ | |
+ if (entityhuman.a(i, j, k, l, itemstack) && entityhuman.a(i, j + 1, k, l, itemstack)) { | |
+ if (!block.canPlace(world, i, j, k)) { | |
+ return false; | |
+ } else { | |
+ int i1 = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; | |
+ | |
+ place(world, i, j, k, i1, block); | |
+ --itemstack.count; | |
+ return true; | |
+ } | |
+ } else { | |
+ return false; | |
+ } | |
+ } | |
+ } | |
+ | |
+ public static void place(World world, int i, int j, int k, int l, Block block) { | |
+ byte b0 = 0; | |
+ byte b1 = 0; | |
+ | |
+ if (l == 0) { | |
+ b1 = 1; | |
+ } | |
+ | |
+ if (l == 1) { | |
+ b0 = -1; | |
+ } | |
+ | |
+ if (l == 2) { | |
+ b1 = -1; | |
+ } | |
+ | |
+ if (l == 3) { | |
+ b0 = 1; | |
+ } | |
+ | |
+ int i1 = (world.getType(i - b0, j, k - b1).r() ? 1 : 0) + (world.getType(i - b0, j + 1, k - b1).r() ? 1 : 0); | |
+ int j1 = (world.getType(i + b0, j, k + b1).r() ? 1 : 0) + (world.getType(i + b0, j + 1, k + b1).r() ? 1 : 0); | |
+ boolean flag = world.getType(i - b0, j, k - b1) == block || world.getType(i - b0, j + 1, k - b1) == block; | |
+ boolean flag1 = world.getType(i + b0, j, k + b1) == block || world.getType(i + b0, j + 1, k + b1) == block; | |
+ boolean flag2 = false; | |
+ | |
+ if (flag && !flag1) { | |
+ flag2 = true; | |
+ } else if (j1 > i1) { | |
+ flag2 = true; | |
+ } | |
+ | |
+ world.setTypeAndData(i, j, k, block, l, 3); // Spigot Update - 20141001a | |
+ world.setTypeAndData(i, j + 1, k, block, 8 | (flag2 ? 1 : 0), 3); // Spigot Update - 20141001a | |
+ //world.applyPhysics(i, j, k, block); // Spigot Update - 20141001a | |
+ //world.applyPhysics(i, j + 1, k, block); // Spigot Update - 20141001a | |
+ } | |
+} | |
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
index 27c34f6..05edc52 100644 | |
--- a/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
+++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java | |
@@ -10,6 +10,7 @@ public class PacketPlayOutChat extends Packet { | |
private IChatBaseComponent a; | |
public BaseComponent[] components; // Spigot - Update 20140909b | |
private boolean b; | |
+ private int pos; // Spigot - Update 20141001a | |
public PacketPlayOutChat() { | |
this.b = true; | |
@@ -19,10 +20,19 @@ public class PacketPlayOutChat extends Packet { | |
this(ichatbasecomponent, true); | |
} | |
+ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, int pos) { | |
+ this(ichatbasecomponent, pos, true); | |
+ } | |
+ | |
public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, boolean flag) { | |
+ this(ichatbasecomponent, 0, flag); | |
+ } | |
+ | |
+ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, int pos, boolean flag) { | |
this.b = true; | |
this.a = ichatbasecomponent; | |
this.b = flag; | |
+ this.pos = pos; | |
} | |
public void a(PacketDataSerializer packetdataserializer) throws IOException { | |
@@ -43,7 +53,7 @@ public class PacketPlayOutChat extends Packet { | |
// Spigot start - protocol patch | |
if ( packetdataserializer.version >= 16 ) | |
{ | |
- packetdataserializer.writeByte(0); | |
+ packetdataserializer.writeByte( this.pos ); | |
} | |
// Spigot end | |
} | |
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPosition.java b/src/main/java/net/minecraft/server/PacketPlayOutPosition.java | |
index b3c0ccf..7520af8 100644 | |
--- a/src/main/java/net/minecraft/server/PacketPlayOutPosition.java | |
+++ b/src/main/java/net/minecraft/server/PacketPlayOutPosition.java | |
@@ -8,16 +8,22 @@ public class PacketPlayOutPosition extends Packet { | |
private float d; | |
private float e; | |
private boolean f; | |
+ private byte relativeBitMask; // Spigot Update - 20141001a | |
public PacketPlayOutPosition() {} | |
public PacketPlayOutPosition(double d0, double d1, double d2, float f, float f1, boolean flag) { | |
+ this(d0, d1, d2, f, f1, flag, (byte)0); | |
+ } | |
+ | |
+ public PacketPlayOutPosition(double d0, double d1, double d2, float f, float f1, boolean flag, byte relativeBitMask) { | |
this.a = d0; | |
this.b = d1; | |
this.c = d2; | |
this.d = f; | |
this.e = f1; | |
this.f = flag; | |
+ this.relativeBitMask = relativeBitMask; | |
} | |
public void a(PacketDataSerializer packetdataserializer) { | |
@@ -41,7 +47,7 @@ public class PacketPlayOutPosition extends Packet { | |
packetdataserializer.writeBoolean( this.f ); | |
} else | |
{ | |
- packetdataserializer.writeByte( 0 ); | |
+ packetdataserializer.writeByte( this.relativeBitMask ); | |
} | |
// Spigot end | |
} | |
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java | |
index 86b0343..bc10c4e 100644 | |
--- a/src/main/java/net/minecraft/server/PlayerList.java | |
+++ b/src/main/java/net/minecraft/server/PlayerList.java | |
@@ -291,8 +291,8 @@ public abstract class PlayerList { | |
if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { | |
entityplayer1.playerConnection.sendPacket(packet); | |
- // Spigot start - Update 20140927a | |
- if ( entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { | |
+ // Spigot start - Update 20140927a // Update - 20141001a | |
+ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { | |
entityplayer1.playerConnection.sendPacket( displayPacket ); | |
} | |
// Spigot end | |
@@ -309,8 +309,8 @@ public abstract class PlayerList { | |
} | |
// .name -> .listName | |
entityplayer.playerConnection.sendPacket(PacketPlayOutPlayerInfo.addPlayer( entityplayer1 )); // Spigot - protocol patch | |
- // Spigot start - Update 20140927a | |
- if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { | |
+ // Spigot start - Update 20140927a // Update - 20141001a | |
+ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer.playerConnection.networkManager.getVersion() > 28 ) { | |
entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( entityplayer1 ) ); | |
} | |
// Spigot end | |
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | |
index d452df7..0d025bc 100644 | |
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | |
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | |
@@ -844,6 +844,9 @@ public class CraftEventFactory { | |
} | |
public static void handleInventoryCloseEvent(EntityHuman human) { | |
+ if (human.activeContainer == human.defaultContainer) { // Spigot Update - 20141001a | |
+ return; | |
+ } | |
InventoryCloseEvent event = new InventoryCloseEvent(human.activeContainer.getBukkitView()); | |
human.world.getServer().getPluginManager().callEvent(event); | |
human.activeContainer.transferTo(human.defaultContainer, human.getBukkitEntity()); | |
-- | |
1.9.4.msysgit.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 1a72afa69bf31016e7b053e0c70393eb5062a76f Mon Sep 17 00:00:00 2001 | |
From: md_5 <git@md-5.net> | |
Date: Thu, 13 Nov 2014 20:41:31 -0600 | |
Subject: [PATCH] Spigot Update - 20141113a | |
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java | |
index 26ce4ed..8d60366 100644 | |
--- a/src/main/java/net/minecraft/server/PlayerConnection.java | |
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java | |
@@ -1753,6 +1753,12 @@ public class PlayerConnection implements PacketPlayInListener { | |
} | |
public void a(PacketPlayInTabComplete packetplayintabcomplete) { | |
+ // Spigot start - Update 20141113a | |
+ if (PlayerConnection.chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.getProfile())) { | |
+ this.disconnect("disconnect.spam"); | |
+ return; | |
+ } | |
+ // Spigot end | |
ArrayList arraylist = Lists.newArrayList(); | |
Iterator iterator = this.minecraftServer.a(this.player, packetplayintabcomplete.c()).iterator(); | |
-- | |
1.9.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment