Transition to Maven
This commit is contained in:
252
src/main/java/net/minecraft/server/BlockFlowing.java
Normal file
252
src/main/java/net/minecraft/server/BlockFlowing.java
Normal file
@@ -0,0 +1,252 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.BlockFace;
|
||||
import org.bukkit.craftbukkit.CraftBlock;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.block.BlockFromToEvent;
|
||||
|
||||
public class BlockFlowing extends BlockFluids
|
||||
{
|
||||
|
||||
protected BlockFlowing(int i1, Material material)
|
||||
{
|
||||
super(i1, material);
|
||||
a = 0;
|
||||
b = new boolean[4];
|
||||
c = new int[4];
|
||||
}
|
||||
|
||||
private void i(World world, int i1, int j1, int k1)
|
||||
{
|
||||
int l1 = world.b(i1, j1, k1);
|
||||
world.a(i1, j1, k1, bh + 1, l1);
|
||||
world.b(i1, j1, k1, i1, j1, k1);
|
||||
world.g(i1, j1, k1);
|
||||
}
|
||||
|
||||
public void a(World world, int i1, int j1, int k1, Random random)
|
||||
{
|
||||
int l1 = g(world, i1, j1, k1);
|
||||
byte byte0 = 1;
|
||||
if(bs == Material.g && !world.q.d)
|
||||
byte0 = 2;
|
||||
boolean flag = true;
|
||||
if(l1 > 0)
|
||||
{
|
||||
int i2 = -100;
|
||||
a = 0;
|
||||
i2 = e(world, i1 - 1, j1, k1, i2);
|
||||
i2 = e(world, i1 + 1, j1, k1, i2);
|
||||
i2 = e(world, i1, j1, k1 - 1, i2);
|
||||
i2 = e(world, i1, j1, k1 + 1, i2);
|
||||
int j2 = i2 + byte0;
|
||||
if(j2 >= 8 || i2 < 0)
|
||||
j2 = -1;
|
||||
if(g(world, i1, j1 + 1, k1) >= 0)
|
||||
{
|
||||
int l2 = g(world, i1, j1 + 1, k1);
|
||||
if(l2 >= 8)
|
||||
j2 = l2;
|
||||
else
|
||||
j2 = l2 + 8;
|
||||
}
|
||||
if(a >= 2 && bs == Material.f)
|
||||
if(world.d(i1, j1 - 1, k1))
|
||||
j2 = 0;
|
||||
else
|
||||
if(world.c(i1, j1 - 1, k1) == bs && world.b(i1, j1, k1) == 0)
|
||||
j2 = 0;
|
||||
if(bs == Material.g && l1 < 8 && j2 < 8 && j2 > l1 && random.nextInt(4) != 0)
|
||||
{
|
||||
j2 = l1;
|
||||
flag = false;
|
||||
}
|
||||
if(j2 != l1)
|
||||
{
|
||||
l1 = j2;
|
||||
if(l1 < 0)
|
||||
{
|
||||
world.d(i1, j1, k1, 0);
|
||||
} else
|
||||
{
|
||||
world.b(i1, j1, k1, l1);
|
||||
world.h(i1, j1, k1, bh);
|
||||
world.g(i1, j1, k1, bh);
|
||||
}
|
||||
} else
|
||||
if(flag)
|
||||
i(world, i1, j1, k1);
|
||||
} else
|
||||
{
|
||||
i(world, i1, j1, k1);
|
||||
}
|
||||
|
||||
// Craftbukkit start
|
||||
CraftBlock source = (CraftBlock) ((WorldServer) world).getWorld().getBlockAt(i1, j1, k1);
|
||||
|
||||
if(l(world, i1, j1 - 1, k1))
|
||||
{
|
||||
// Craftbucket send "down" to the server
|
||||
BlockFromToEvent blockFlow = new BlockFromToEvent(Type.BLOCK_FLOW, source, BlockFace.Down);
|
||||
((WorldServer) world).getServer().getPluginManager().callEvent(blockFlow);
|
||||
|
||||
if (!blockFlow.isCancelled()) {
|
||||
if(l1 >= 8)
|
||||
world.b(i1, j1 - 1, k1, bh, l1);
|
||||
else
|
||||
world.b(i1, j1 - 1, k1, bh, l1 + 8);
|
||||
}
|
||||
} else
|
||||
if(l1 >= 0 && (l1 == 0 || k(world, i1, j1 - 1, k1)))
|
||||
{
|
||||
boolean aflag[] = j(world, i1, j1, k1);
|
||||
int k2 = l1 + byte0;
|
||||
if(l1 >= 8)
|
||||
k2 = 1;
|
||||
if(k2 >= 8)
|
||||
return;
|
||||
|
||||
// Craftbukkit start
|
||||
BlockFace[] faces = new BlockFace[]{ BlockFace.North, BlockFace.South, BlockFace.East, BlockFace.West };
|
||||
for (BlockFace currentFace : faces) {
|
||||
int index = 0;
|
||||
if (aflag[index]) {
|
||||
BlockFromToEvent event = new BlockFromToEvent(Type.BLOCK_FLOW, source, currentFace);
|
||||
((WorldServer) world).getServer().getPluginManager().callEvent(event);
|
||||
if (!event.isCancelled())
|
||||
f(world, i1 + currentFace.getModX(), j1, k1 + currentFace.getModZ(), k2);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
// Craftbukkit stop
|
||||
}
|
||||
}
|
||||
|
||||
private void f(World world, int i1, int j1, int k1, int l1)
|
||||
{
|
||||
if(l(world, i1, j1, k1))
|
||||
{
|
||||
int i2 = world.a(i1, j1, k1);
|
||||
if(i2 > 0)
|
||||
if(bs == Material.g)
|
||||
h(world, i1, j1, k1);
|
||||
else
|
||||
Block.m[i2].a_(world, i1, j1, k1, world.b(i1, j1, k1));
|
||||
world.b(i1, j1, k1, bh, l1);
|
||||
}
|
||||
}
|
||||
|
||||
private int a(World world, int i1, int j1, int k1, int l1, int i2)
|
||||
{
|
||||
int j2 = 1000;
|
||||
for(int k2 = 0; k2 < 4; k2++)
|
||||
{
|
||||
if(k2 == 0 && i2 == 1 || k2 == 1 && i2 == 0 || k2 == 2 && i2 == 3 || k2 == 3 && i2 == 2)
|
||||
continue;
|
||||
int l2 = i1;
|
||||
int i3 = j1;
|
||||
int j3 = k1;
|
||||
if(k2 == 0)
|
||||
l2--;
|
||||
if(k2 == 1)
|
||||
l2++;
|
||||
if(k2 == 2)
|
||||
j3--;
|
||||
if(k2 == 3)
|
||||
j3++;
|
||||
if(k(world, l2, i3, j3) || world.c(l2, i3, j3) == bs && world.b(l2, i3, j3) == 0)
|
||||
continue;
|
||||
if(!k(world, l2, i3 - 1, j3))
|
||||
return l1;
|
||||
if(l1 >= 4)
|
||||
continue;
|
||||
int k3 = a(world, l2, i3, j3, l1 + 1, k2);
|
||||
if(k3 < j2)
|
||||
j2 = k3;
|
||||
}
|
||||
|
||||
return j2;
|
||||
}
|
||||
|
||||
private boolean[] j(World world, int i1, int j1, int k1)
|
||||
{
|
||||
for(int l1 = 0; l1 < 4; l1++)
|
||||
{
|
||||
c[l1] = 1000;
|
||||
int j2 = i1;
|
||||
int i3 = j1;
|
||||
int j3 = k1;
|
||||
if(l1 == 0)
|
||||
j2--;
|
||||
if(l1 == 1)
|
||||
j2++;
|
||||
if(l1 == 2)
|
||||
j3--;
|
||||
if(l1 == 3)
|
||||
j3++;
|
||||
if(k(world, j2, i3, j3) || world.c(j2, i3, j3) == bs && world.b(j2, i3, j3) == 0)
|
||||
continue;
|
||||
if(!k(world, j2, i3 - 1, j3))
|
||||
c[l1] = 0;
|
||||
else
|
||||
c[l1] = a(world, j2, i3, j3, 1, l1);
|
||||
}
|
||||
|
||||
int i2 = c[0];
|
||||
for(int k2 = 1; k2 < 4; k2++)
|
||||
if(c[k2] < i2)
|
||||
i2 = c[k2];
|
||||
|
||||
for(int l2 = 0; l2 < 4; l2++)
|
||||
b[l2] = c[l2] == i2;
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
private boolean k(World world, int i1, int j1, int k1)
|
||||
{
|
||||
int l1 = world.a(i1, j1, k1);
|
||||
if(l1 == Block.aE.bh || l1 == Block.aL.bh || l1 == Block.aD.bh || l1 == Block.aF.bh || l1 == Block.aX.bh)
|
||||
return true;
|
||||
if(l1 == 0)
|
||||
return false;
|
||||
Material material = Block.m[l1].bs;
|
||||
return material.a();
|
||||
}
|
||||
|
||||
protected int e(World world, int i1, int j1, int k1, int l1)
|
||||
{
|
||||
int i2 = g(world, i1, j1, k1);
|
||||
if(i2 < 0)
|
||||
return l1;
|
||||
if(i2 == 0)
|
||||
a++;
|
||||
if(i2 >= 8)
|
||||
i2 = 0;
|
||||
return l1 >= 0 && i2 >= l1 ? l1 : i2;
|
||||
}
|
||||
|
||||
private boolean l(World world, int i1, int j1, int k1)
|
||||
{
|
||||
Material material = world.c(i1, j1, k1);
|
||||
if(material == bs)
|
||||
return false;
|
||||
if(material == Material.g)
|
||||
return false;
|
||||
else
|
||||
return !k(world, i1, j1, k1);
|
||||
}
|
||||
|
||||
public void e(World world, int i1, int j1, int k1)
|
||||
{
|
||||
super.e(world, i1, j1, k1);
|
||||
if(world.a(i1, j1, k1) == bh)
|
||||
world.h(i1, j1, k1, bh);
|
||||
}
|
||||
|
||||
int a;
|
||||
boolean b[];
|
||||
int c[];
|
||||
}
|
||||
487
src/main/java/net/minecraft/server/MinecraftServer.java
Normal file
487
src/main/java/net/minecraft/server/MinecraftServer.java
Normal file
@@ -0,0 +1,487 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
|
||||
|
||||
public class MinecraftServer
|
||||
implements ICommandListener, Runnable {
|
||||
|
||||
public static Logger a = Logger.getLogger("Minecraft");
|
||||
public static HashMap b = new HashMap();
|
||||
public NetworkListenThread c;
|
||||
public PropertyManager d;
|
||||
public WorldServer e;
|
||||
public ServerConfigurationManager f;
|
||||
private boolean o;
|
||||
public boolean g;
|
||||
int h;
|
||||
public String i;
|
||||
public int j;
|
||||
private List p;
|
||||
private List q;
|
||||
public EntityTracker k;
|
||||
public boolean l;
|
||||
public boolean m;
|
||||
public boolean n;
|
||||
|
||||
public CraftServer server; // CraftBukkit
|
||||
|
||||
public MinecraftServer() {
|
||||
o = true;
|
||||
g = false;
|
||||
h = 0;
|
||||
p = new ArrayList();
|
||||
q = Collections.synchronizedList(new ArrayList());
|
||||
new ThreadSleepForever(this);
|
||||
}
|
||||
|
||||
// CraftBukkit: added throws UnknownHostException
|
||||
private boolean d() throws UnknownHostException {
|
||||
ThreadCommandReader threadcommandreader = new ThreadCommandReader(this);
|
||||
|
||||
threadcommandreader.setDaemon(true);
|
||||
threadcommandreader.start();
|
||||
ConsoleLogManager.a();
|
||||
a.info("Starting minecraft server version Beta 1.1_02");
|
||||
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
|
||||
a.warning("**** NOT ENOUGH RAM!");
|
||||
a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
|
||||
}
|
||||
a.info("Loading properties");
|
||||
d = new PropertyManager(new File("server.properties"));
|
||||
String s = d.a("server-ip", "");
|
||||
|
||||
l = d.a("online-mode", true);
|
||||
m = d.a("spawn-animals", true);
|
||||
n = d.a("pvp", true);
|
||||
InetAddress inetaddress = null;
|
||||
|
||||
if (s.length() > 0) {
|
||||
inetaddress = InetAddress.getByName(s);
|
||||
}
|
||||
int i1 = d.a("server-port", 25565);
|
||||
|
||||
a.info((new StringBuilder()).append("Starting Minecraft server on ").append(s.length() != 0 ? s : "*").append(":").append(i1).toString());
|
||||
try {
|
||||
c = new NetworkListenThread(this, inetaddress, i1);
|
||||
// CraftBukkit: Be more generic; IOException -> Throwable
|
||||
} catch (Throwable ioexception) {
|
||||
a.warning("**** FAILED TO BIND TO PORT!");
|
||||
a.log(Level.WARNING, (new StringBuilder()).append("The exception was: ").append(ioexception.toString()).toString());
|
||||
a.warning("Perhaps a server is already running on that port?");
|
||||
return false;
|
||||
}
|
||||
if (!l) {
|
||||
a.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
||||
a.warning("The server will make no attempt to authenticate usernames. Beware.");
|
||||
a.warning("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.");
|
||||
a.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file.");
|
||||
}
|
||||
|
||||
server = new CraftServer(this, "1.1"); // CraftBukkit
|
||||
|
||||
f = new ServerConfigurationManager(this);
|
||||
k = new EntityTracker(this);
|
||||
String s1 = d.a("level-name", "world");
|
||||
|
||||
a.info((new StringBuilder()).append("Preparing level \"").append(s1).append("\"").toString());
|
||||
c(s1);
|
||||
a.info("Done! For help, type \"help\" or \"?\"");
|
||||
return true;
|
||||
}
|
||||
|
||||
private void c(String s) {
|
||||
a.info("Preparing start region");
|
||||
e = new WorldServer(this, new File("."), s, d.a("hellworld", false) ? -1 : 0);
|
||||
e.a(new WorldManager(this));
|
||||
e.k = d.a("spawn-monsters", true) ? 1 : 0;
|
||||
f.a(e);
|
||||
byte byte0 = 10;
|
||||
|
||||
for (int i1 = -byte0; i1 <= byte0; i1++) {
|
||||
a("Preparing spawn area", ((i1 + byte0) * 100) / (byte0 + byte0 + 1));
|
||||
for (int j1 = -byte0; j1 <= byte0; j1++) {
|
||||
if (!o) {
|
||||
return;
|
||||
}
|
||||
e.A.d((e.m >> 4) + i1, (e.o >> 4) + j1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
e();
|
||||
}
|
||||
|
||||
private void a(String s, int i1) {
|
||||
i = s;
|
||||
j = i1;
|
||||
System.out.println((new StringBuilder()).append(s).append(": ").append(i1).append("%").toString());
|
||||
}
|
||||
|
||||
private void e() {
|
||||
i = null;
|
||||
j = 0;
|
||||
}
|
||||
|
||||
private void f() {
|
||||
a.info("Saving chunks");
|
||||
e.a(true, null);
|
||||
}
|
||||
|
||||
private void g() {
|
||||
a.info("Stopping server");
|
||||
if (f != null) {
|
||||
f.d();
|
||||
}
|
||||
if (e != null) {
|
||||
f();
|
||||
}
|
||||
}
|
||||
|
||||
public void a() {
|
||||
o = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
if (d()) {
|
||||
long l1 = System.currentTimeMillis();
|
||||
long l2 = 0L;
|
||||
|
||||
while (o) {
|
||||
long l3 = System.currentTimeMillis();
|
||||
long l4 = l3 - l1;
|
||||
|
||||
if (l4 > 2000L) {
|
||||
a.warning("Can't keep up! Did the system time change, or is the server overloaded?");
|
||||
l4 = 2000L;
|
||||
}
|
||||
if (l4 < 0L) {
|
||||
a.warning("Time ran backwards! Did the system time change?");
|
||||
l4 = 0L;
|
||||
}
|
||||
l2 += l4;
|
||||
l1 = l3;
|
||||
while (l2 > 50L) {
|
||||
l2 -= 50L;
|
||||
h();
|
||||
}
|
||||
Thread.sleep(1L);
|
||||
}
|
||||
} else {
|
||||
while (o) {
|
||||
b();
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException interruptedexception) {
|
||||
interruptedexception.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
a.log(Level.SEVERE, "Unexpected exception", exception);
|
||||
while (o) {
|
||||
b();
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException interruptedexception1) {
|
||||
interruptedexception1.printStackTrace();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
g();
|
||||
g = true;
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void h() {
|
||||
ArrayList arraylist = new ArrayList();
|
||||
|
||||
for (Iterator iterator = b.keySet().iterator(); iterator.hasNext();) {
|
||||
String s = (String) iterator.next();
|
||||
int k1 = ((Integer) b.get(s)).intValue();
|
||||
|
||||
if (k1 > 0) {
|
||||
b.put(s, Integer.valueOf(k1 - 1));
|
||||
} else {
|
||||
arraylist.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i1 = 0; i1 < arraylist.size(); i1++) {
|
||||
b.remove(arraylist.get(i1));
|
||||
}
|
||||
|
||||
AxisAlignedBB.a();
|
||||
Vec3D.a();
|
||||
h++;
|
||||
if (h % 20 == 0) {
|
||||
f.a(new Packet4UpdateTime(e.e));
|
||||
}
|
||||
e.f();
|
||||
while (e.d()) {
|
||||
;
|
||||
}
|
||||
e.c();
|
||||
c.a();
|
||||
f.b();
|
||||
k.a();
|
||||
for (int j1 = 0; j1 < p.size(); j1++) {
|
||||
((IUpdatePlayerListBox) p.get(j1)).a();
|
||||
}
|
||||
|
||||
try {
|
||||
b();
|
||||
} catch (Exception exception) {
|
||||
a.log(Level.WARNING, "Unexpected exception while parsing console command", exception);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(String s, ICommandListener icommandlistener) {
|
||||
q.add(new ServerCommand(s, icommandlistener));
|
||||
}
|
||||
|
||||
public void b() {
|
||||
do {
|
||||
if (q.size() <= 0) {
|
||||
break;
|
||||
}
|
||||
ServerCommand servercommand = (ServerCommand) q.remove(0);
|
||||
String s = servercommand.a;
|
||||
ICommandListener icommandlistener = servercommand.b;
|
||||
String s1 = icommandlistener.c();
|
||||
|
||||
if (s.toLowerCase().startsWith("help") || s.toLowerCase().startsWith("?")) {
|
||||
icommandlistener.b("To run the server without a gui, start it like this:");
|
||||
icommandlistener.b(" java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui");
|
||||
icommandlistener.b("Console commands:");
|
||||
icommandlistener.b(" help or ? shows this message");
|
||||
icommandlistener.b(" kick <player> removes a player from the server");
|
||||
icommandlistener.b(" ban <player> bans a player from the server");
|
||||
icommandlistener.b(" pardon <player> pardons a banned player so that they can connect again");
|
||||
icommandlistener.b(" ban-ip <ip> bans an IP address from the server");
|
||||
icommandlistener.b(" pardon-ip <ip> pardons a banned IP address so that they can connect again");
|
||||
icommandlistener.b(" op <player> turns a player into an op");
|
||||
icommandlistener.b(" deop <player> removes op status from a player");
|
||||
icommandlistener.b(" tp <player1> <player2> moves one player to the same location as another player");
|
||||
icommandlistener.b(" give <player> <id> [num] gives a player a resource");
|
||||
icommandlistener.b(" tell <player> <message> sends a private message to a player");
|
||||
icommandlistener.b(" stop gracefully stops the server");
|
||||
icommandlistener.b(" save-all forces a server-wide level save");
|
||||
icommandlistener.b(" save-off disables terrain saving (useful for backup scripts)");
|
||||
icommandlistener.b(" save-on re-enables terrain saving");
|
||||
icommandlistener.b(" list lists all currently connected players");
|
||||
icommandlistener.b(" say <message> broadcasts a message to all players");
|
||||
} else if (s.toLowerCase().startsWith("list")) {
|
||||
icommandlistener.b((new StringBuilder()).append("Connected players: ").append(f.c()).toString());
|
||||
} else if (s.toLowerCase().startsWith("stop")) {
|
||||
a(s1, "Stopping the server..");
|
||||
o = false;
|
||||
} else if (s.toLowerCase().startsWith("save-all")) {
|
||||
a(s1, "Forcing save..");
|
||||
e.a(true, null);
|
||||
a(s1, "Save complete.");
|
||||
} else if (s.toLowerCase().startsWith("save-off")) {
|
||||
a(s1, "Disabling level saving..");
|
||||
e.C = true;
|
||||
} else if (s.toLowerCase().startsWith("save-on")) {
|
||||
a(s1, "Enabling level saving..");
|
||||
e.C = false;
|
||||
} else if (s.toLowerCase().startsWith("op ")) {
|
||||
String s2 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.e(s2);
|
||||
a(s1, (new StringBuilder()).append("Opping ").append(s2).toString());
|
||||
f.a(s2, "\247eYou are now op!");
|
||||
} else if (s.toLowerCase().startsWith("deop ")) {
|
||||
String s3 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.f(s3);
|
||||
f.a(s3, "\247eYou are no longer op!");
|
||||
a(s1, (new StringBuilder()).append("De-opping ").append(s3).toString());
|
||||
} else if (s.toLowerCase().startsWith("ban-ip ")) {
|
||||
String s4 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.c(s4);
|
||||
a(s1, (new StringBuilder()).append("Banning ip ").append(s4).toString());
|
||||
} else if (s.toLowerCase().startsWith("pardon-ip ")) {
|
||||
String s5 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.d(s5);
|
||||
a(s1, (new StringBuilder()).append("Pardoning ip ").append(s5).toString());
|
||||
} else if (s.toLowerCase().startsWith("ban ")) {
|
||||
String s6 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.a(s6);
|
||||
a(s1, (new StringBuilder()).append("Banning ").append(s6).toString());
|
||||
EntityPlayerMP entityplayermp = f.h(s6);
|
||||
|
||||
if (entityplayermp != null) {
|
||||
entityplayermp.a.a("Banned by admin");
|
||||
}
|
||||
} else if (s.toLowerCase().startsWith("pardon ")) {
|
||||
String s7 = s.substring(s.indexOf(" ")).trim();
|
||||
|
||||
f.b(s7);
|
||||
a(s1, (new StringBuilder()).append("Pardoning ").append(s7).toString());
|
||||
} else if (s.toLowerCase().startsWith("kick ")) {
|
||||
String s8 = s.substring(s.indexOf(" ")).trim();
|
||||
EntityPlayerMP entityplayermp1 = null;
|
||||
|
||||
for (int i1 = 0; i1 < f.b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp5 = (EntityPlayerMP) f.b.get(i1);
|
||||
|
||||
if (entityplayermp5.aw.equalsIgnoreCase(s8)) {
|
||||
entityplayermp1 = entityplayermp5;
|
||||
}
|
||||
}
|
||||
|
||||
if (entityplayermp1 != null) {
|
||||
entityplayermp1.a.a("Kicked by admin");
|
||||
a(s1, (new StringBuilder()).append("Kicking ").append(entityplayermp1.aw).toString());
|
||||
} else {
|
||||
icommandlistener.b((new StringBuilder()).append("Can't find user ").append(s8).append(". No kick.").toString());
|
||||
}
|
||||
} else if (s.toLowerCase().startsWith("tp ")) {
|
||||
String as[] = s.split(" ");
|
||||
|
||||
if (as.length == 3) {
|
||||
EntityPlayerMP entityplayermp2 = f.h(as[1]);
|
||||
EntityPlayerMP entityplayermp3 = f.h(as[2]);
|
||||
|
||||
if (entityplayermp2 == null) {
|
||||
icommandlistener.b((new StringBuilder()).append("Can't find user ").append(as[1]).append(". No tp.").toString());
|
||||
} else if (entityplayermp3 == null) {
|
||||
icommandlistener.b((new StringBuilder()).append("Can't find user ").append(as[2]).append(". No tp.").toString());
|
||||
} else {
|
||||
entityplayermp2.a.a(entityplayermp3.p, entityplayermp3.q, entityplayermp3.r, entityplayermp3.v, entityplayermp3.w);
|
||||
a(s1, (new StringBuilder()).append("Teleporting ").append(as[1]).append(" to ").append(as[2]).append(".").toString());
|
||||
}
|
||||
} else {
|
||||
icommandlistener.b("Syntax error, please provice a source and a target.");
|
||||
}
|
||||
} else if (s.toLowerCase().startsWith("give ")) {
|
||||
String as1[] = s.split(" ");
|
||||
|
||||
if (as1.length != 3 && as1.length != 4) {
|
||||
return;
|
||||
}
|
||||
String s9 = as1[1];
|
||||
EntityPlayerMP entityplayermp4 = f.h(s9);
|
||||
|
||||
if (entityplayermp4 != null) {
|
||||
try {
|
||||
int j1 = Integer.parseInt(as1[2]);
|
||||
|
||||
if (Item.c[j1] != null) {
|
||||
a(s1, (new StringBuilder()).append("Giving ").append(entityplayermp4.aw).append(" some ").append(j1).toString());
|
||||
int k1 = 1;
|
||||
|
||||
if (as1.length > 3) {
|
||||
k1 = b(as1[3], 1);
|
||||
}
|
||||
if (k1 < 1) {
|
||||
k1 = 1;
|
||||
}
|
||||
if (k1 > 64) {
|
||||
k1 = 64;
|
||||
}
|
||||
entityplayermp4.b(new ItemStack(j1, k1));
|
||||
} else {
|
||||
icommandlistener.b((new StringBuilder()).append("There's no item with id ").append(j1).toString());
|
||||
}
|
||||
} catch (NumberFormatException numberformatexception) {
|
||||
icommandlistener.b((new StringBuilder()).append("There's no item with id ").append(as1[2]).toString());
|
||||
}
|
||||
} else {
|
||||
icommandlistener.b((new StringBuilder()).append("Can't find user ").append(s9).toString());
|
||||
}
|
||||
} else if (s.toLowerCase().startsWith("say ")) {
|
||||
s = s.substring(s.indexOf(" ")).trim();
|
||||
a.info((new StringBuilder()).append("[").append(s1).append("] ").append(s).toString());
|
||||
f.a(new Packet3Chat((new StringBuilder()).append("\247d[Server] ").append(s).toString()));
|
||||
} else if (s.toLowerCase().startsWith("tell ")) {
|
||||
String as2[] = s.split(" ");
|
||||
|
||||
if (as2.length >= 3) {
|
||||
s = s.substring(s.indexOf(" ")).trim();
|
||||
s = s.substring(s.indexOf(" ")).trim();
|
||||
a.info((new StringBuilder()).append("[").append(s1).append("->").append(as2[1]).append("] ").append(s).toString());
|
||||
s = (new StringBuilder()).append("\2477").append(s1).append(" whispers ").append(s).toString();
|
||||
a.info(s);
|
||||
if (!f.a(as2[1], new Packet3Chat(s))) {
|
||||
icommandlistener.b("There's no player by that name online.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
a.info("Unknown console command. Type \"help\" for help.");
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
|
||||
private void a(String s, String s1) {
|
||||
String s2 = (new StringBuilder()).append(s).append(": ").append(s1).toString();
|
||||
|
||||
f.i((new StringBuilder()).append("\2477(").append(s2).append(")").toString());
|
||||
a.info(s2);
|
||||
}
|
||||
|
||||
private int b(String s, int i1) {
|
||||
try {
|
||||
return Integer.parseInt(s);
|
||||
} catch (NumberFormatException numberformatexception) {
|
||||
return i1;
|
||||
}
|
||||
}
|
||||
|
||||
public void a(IUpdatePlayerListBox iupdateplayerlistbox) {
|
||||
p.add(iupdateplayerlistbox);
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
try {
|
||||
MinecraftServer minecraftserver = new MinecraftServer();
|
||||
|
||||
if (!java.awt.GraphicsEnvironment.isHeadless() && (args.length <= 0 || !args[0].equals("nogui"))) {
|
||||
ServerGUI.a(minecraftserver);
|
||||
}
|
||||
(new ThreadServerApplication("Server thread", minecraftserver)).start();
|
||||
} catch (Exception exception) {
|
||||
a.log(Level.SEVERE, "Failed to start the minecraft server", exception);
|
||||
}
|
||||
}
|
||||
|
||||
public File a(String s) {
|
||||
return new File(s);
|
||||
}
|
||||
|
||||
public void b(String s) {
|
||||
a.info(s);
|
||||
}
|
||||
|
||||
public String c() {
|
||||
return "CONSOLE";
|
||||
}
|
||||
|
||||
public static boolean a(MinecraftServer minecraftserver) {
|
||||
return minecraftserver.o;
|
||||
}
|
||||
|
||||
}
|
||||
567
src/main/java/net/minecraft/server/NetServerHandler.java
Normal file
567
src/main/java/net/minecraft/server/NetServerHandler.java
Normal file
@@ -0,0 +1,567 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.*;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Player;
|
||||
import org.bukkit.craftbukkit.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.player.PlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
|
||||
public class NetServerHandler extends NetHandler
|
||||
implements ICommandListener {
|
||||
|
||||
public static Logger a = Logger.getLogger("Minecraft");
|
||||
public NetworkManager b;
|
||||
public boolean c;
|
||||
private MinecraftServer d;
|
||||
private EntityPlayerMP e;
|
||||
private int f;
|
||||
private double g;
|
||||
private double h;
|
||||
private double i;
|
||||
private boolean j;
|
||||
private Map k;
|
||||
|
||||
// CraftBukkit - next 2 lines
|
||||
private final CraftServer server;
|
||||
private final CraftPlayer player;
|
||||
|
||||
public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayerMP entityplayermp) {
|
||||
c = false;
|
||||
f = 0;
|
||||
j = true;
|
||||
k = new HashMap();
|
||||
d = minecraftserver;
|
||||
b = networkmanager;
|
||||
networkmanager.a(this);
|
||||
e = entityplayermp;
|
||||
entityplayermp.a = this;
|
||||
|
||||
// CraftBukkit - next 2 lines
|
||||
server = minecraftserver.server;
|
||||
player = new CraftPlayer(server, e);
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
public CraftPlayer getPlayer() {
|
||||
return player;
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
public void a() {
|
||||
b.a();
|
||||
if (f++ % 20 == 0) {
|
||||
b.a(new Packet0KeepAlive());
|
||||
}
|
||||
}
|
||||
|
||||
public void a(String s) {
|
||||
b.a(new Packet255KickDisconnect(s));
|
||||
b.c();
|
||||
d.f.a(new Packet3Chat((new StringBuilder()).append("\247e").append(e.aw).append(" left the game.").toString()));
|
||||
d.f.c(e);
|
||||
c = true;
|
||||
}
|
||||
|
||||
public void a(Packet10Flying packet10flying) {
|
||||
if (!j) {
|
||||
double d1 = packet10flying.b - h;
|
||||
|
||||
if (packet10flying.a == g && d1 * d1 < 0.01D && packet10flying.c == i) {
|
||||
j = true;
|
||||
}
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
Location from = new Location(player.getWorld(), g, h, i, e.v, e.w);
|
||||
Location to = player.getLocation();
|
||||
if (!from.equals(to)) {
|
||||
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
|
||||
server.getPluginManager().callEvent(event);
|
||||
|
||||
from = event.getFrom();
|
||||
to = event.isCancelled() ? from : event.getTo();
|
||||
|
||||
e.p = to.getX();
|
||||
e.q = to.getY();
|
||||
e.r = to.getZ();
|
||||
e.v = to.getYaw();
|
||||
e.w = to.getPitch();
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
if (j) {
|
||||
if (e.k != null) {
|
||||
float f1 = e.v;
|
||||
float f2 = e.w;
|
||||
|
||||
e.k.A();
|
||||
double d3 = e.p;
|
||||
double d5 = e.q;
|
||||
double d7 = e.r;
|
||||
double d9 = 0.0D;
|
||||
double d10 = 0.0D;
|
||||
|
||||
if (packet10flying.i) {
|
||||
f1 = packet10flying.e;
|
||||
f2 = packet10flying.f;
|
||||
}
|
||||
if (packet10flying.h && packet10flying.b == -999D && packet10flying.d == -999D) {
|
||||
d9 = packet10flying.a;
|
||||
d10 = packet10flying.c;
|
||||
}
|
||||
e.A = packet10flying.g;
|
||||
e.F();
|
||||
e.c(d9, 0.0D, d10);
|
||||
e.b(d3, d5, d7, f1, f2);
|
||||
e.s = d9;
|
||||
e.u = d10;
|
||||
if (e.k != null) {
|
||||
d.e.b(e.k, true);
|
||||
}
|
||||
if (e.k != null) {
|
||||
e.k.A();
|
||||
}
|
||||
d.f.b(e);
|
||||
g = e.p;
|
||||
h = e.q;
|
||||
i = e.r;
|
||||
d.e.f(e);
|
||||
return;
|
||||
}
|
||||
double d2 = e.q;
|
||||
|
||||
g = e.p;
|
||||
h = e.q;
|
||||
i = e.r;
|
||||
double d4 = e.p;
|
||||
double d6 = e.q;
|
||||
double d8 = e.r;
|
||||
float f3 = e.v;
|
||||
float f4 = e.w;
|
||||
|
||||
if (packet10flying.h && packet10flying.b == -999D && packet10flying.d == -999D) {
|
||||
packet10flying.h = false;
|
||||
}
|
||||
if (packet10flying.h) {
|
||||
d4 = packet10flying.a;
|
||||
d6 = packet10flying.b;
|
||||
d8 = packet10flying.c;
|
||||
double d11 = packet10flying.d - packet10flying.b;
|
||||
|
||||
if (d11 > 1.6499999999999999D || d11 < 0.10000000000000001D) {
|
||||
a("Illegal stance");
|
||||
a.warning((new StringBuilder()).append(e.aw).append(" had an illegal stance: ").append(d11).toString());
|
||||
}
|
||||
e.ak = packet10flying.d;
|
||||
}
|
||||
if (packet10flying.i) {
|
||||
f3 = packet10flying.e;
|
||||
f4 = packet10flying.f;
|
||||
}
|
||||
e.F();
|
||||
e.R = 0.0F;
|
||||
e.b(g, h, i, f3, f4);
|
||||
double d12 = d4 - e.p;
|
||||
double d13 = d6 - e.q;
|
||||
double d14 = d8 - e.r;
|
||||
float f5 = 0.0625F;
|
||||
boolean flag = d.e.a(e, e.z.b().e(f5, f5, f5)).size() == 0;
|
||||
|
||||
e.c(d12, d13, d14);
|
||||
d12 = d4 - e.p;
|
||||
d13 = d6 - e.q;
|
||||
if (d13 > -0.5D || d13 < 0.5D) {
|
||||
d13 = 0.0D;
|
||||
}
|
||||
d14 = d8 - e.r;
|
||||
double d15 = d12 * d12 + d13 * d13 + d14 * d14;
|
||||
boolean flag1 = false;
|
||||
|
||||
if (d15 > 0.0625D) {
|
||||
flag1 = true;
|
||||
a.warning((new StringBuilder()).append(e.aw).append(" moved wrongly!").toString());
|
||||
System.out.println((new StringBuilder()).append("Got position ").append(d4).append(", ").append(d6).append(", ").append(d8).toString());
|
||||
System.out.println((new StringBuilder()).append("Expected ").append(e.p).append(", ").append(e.q).append(", ").append(e.r).toString());
|
||||
}
|
||||
e.b(d4, d6, d8, f3, f4);
|
||||
boolean flag2 = d.e.a(e, e.z.b().e(f5, f5, f5)).size() == 0;
|
||||
|
||||
if (flag && (flag1 || !flag2)) {
|
||||
a(g, h, i, f3, f4);
|
||||
return;
|
||||
}
|
||||
e.A = packet10flying.g;
|
||||
d.f.b(e);
|
||||
e.b(e.q - d2, packet10flying.g);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(double d1, double d2, double d3, float f1,
|
||||
float f2) {
|
||||
|
||||
// CraftBukkit start
|
||||
Location from = player.getLocation();
|
||||
Location to = new Location(player.getWorld(), d1, d2, d3, f1, f2);
|
||||
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_TELEPORT, player, from, to);
|
||||
server.getPluginManager().callEvent(event);
|
||||
|
||||
from = event.getFrom();
|
||||
to = event.isCancelled() ? from : event.getTo();
|
||||
|
||||
d1 = to.getX();
|
||||
d2 = to.getY();
|
||||
d3 = to.getZ();
|
||||
f1 = to.getYaw();
|
||||
f2 = to.getPitch();
|
||||
// CraftBukkit end
|
||||
|
||||
j = false;
|
||||
g = d1;
|
||||
h = d2;
|
||||
i = d3;
|
||||
e.b(d1, d2, d3, f1, f2);
|
||||
e.a.b(new Packet13PlayerLookMove(d1, d2 + 1.6200000047683716D, d2, d3, f1, f2, false));
|
||||
}
|
||||
|
||||
public void a(Packet14BlockDig packet14blockdig) {
|
||||
if (packet14blockdig.e == 4) {
|
||||
e.L();
|
||||
return;
|
||||
}
|
||||
boolean flag = d.e.B = d.f.g(e.aw);
|
||||
boolean flag1 = false;
|
||||
|
||||
if (packet14blockdig.e == 0) {
|
||||
flag1 = true;
|
||||
}
|
||||
if (packet14blockdig.e == 1) {
|
||||
flag1 = true;
|
||||
}
|
||||
int l = packet14blockdig.a;
|
||||
int i1 = packet14blockdig.b;
|
||||
int j1 = packet14blockdig.c;
|
||||
|
||||
if (flag1) {
|
||||
double d1 = e.p - ((double) l + 0.5D);
|
||||
double d2 = e.q - ((double) i1 + 0.5D);
|
||||
double d3 = e.r - ((double) j1 + 0.5D);
|
||||
double d4 = d1 * d1 + d2 * d2 + d3 * d3;
|
||||
|
||||
if (d4 > 36D) {
|
||||
return;
|
||||
}
|
||||
double d5 = e.q;
|
||||
|
||||
e.q = e.ak;
|
||||
e.q = d5;
|
||||
}
|
||||
int k1 = packet14blockdig.d;
|
||||
int l1 = (int) MathHelper.e(l - d.e.m);
|
||||
int i2 = (int) MathHelper.e(j1 - d.e.o);
|
||||
|
||||
if (l1 > i2) {
|
||||
i2 = l1;
|
||||
}
|
||||
if (packet14blockdig.e == 0) {
|
||||
if (i2 > 16 || flag) {
|
||||
e.c.a(l, i1, j1);
|
||||
}
|
||||
} else if (packet14blockdig.e == 2) {
|
||||
e.c.a();
|
||||
} else if (packet14blockdig.e == 1) {
|
||||
if (i2 > 16 || flag) {
|
||||
e.c.a(l, i1, j1, k1);
|
||||
}
|
||||
} else if (packet14blockdig.e == 3) {
|
||||
double d6 = e.p - ((double) l + 0.5D);
|
||||
double d7 = e.q - ((double) i1 + 0.5D);
|
||||
double d8 = e.r - ((double) j1 + 0.5D);
|
||||
double d9 = d6 * d6 + d7 * d7 + d8 * d8;
|
||||
|
||||
if (d9 < 256D) {
|
||||
e.a.b(new Packet53BlockChange(l, i1, j1, d.e));
|
||||
}
|
||||
}
|
||||
d.e.B = false;
|
||||
}
|
||||
|
||||
public void a(Packet15Place packet15place) {
|
||||
ItemStack itemstack = e.an.e();
|
||||
boolean flag = d.e.B = d.f.g(e.aw);
|
||||
|
||||
if (packet15place.d == 255) {
|
||||
if (itemstack == null) {
|
||||
return;
|
||||
}
|
||||
e.c.a(e, d.e, itemstack);
|
||||
} else {
|
||||
int l = packet15place.a;
|
||||
int i1 = packet15place.b;
|
||||
int j1 = packet15place.c;
|
||||
int k1 = packet15place.d;
|
||||
int l1 = (int) MathHelper.e(l - d.e.m);
|
||||
int i2 = (int) MathHelper.e(j1 - d.e.o);
|
||||
|
||||
if (l1 > i2) {
|
||||
i2 = l1;
|
||||
}
|
||||
if (i2 > 16 || flag) {
|
||||
e.c.a(e, d.e, itemstack, l, i1, j1, k1);
|
||||
}
|
||||
e.a.b(new Packet53BlockChange(l, i1, j1, d.e));
|
||||
if (k1 == 0) {
|
||||
i1--;
|
||||
}
|
||||
if (k1 == 1) {
|
||||
i1++;
|
||||
}
|
||||
if (k1 == 2) {
|
||||
j1--;
|
||||
}
|
||||
if (k1 == 3) {
|
||||
j1++;
|
||||
}
|
||||
if (k1 == 4) {
|
||||
l--;
|
||||
}
|
||||
if (k1 == 5) {
|
||||
l++;
|
||||
}
|
||||
e.a.b(new Packet53BlockChange(l, i1, j1, d.e));
|
||||
}
|
||||
if (itemstack != null && itemstack.a == 0) {
|
||||
e.an.a[e.an.c] = null;
|
||||
}
|
||||
e.am = true;
|
||||
e.an.a[e.an.c] = ItemStack.a(e.an.a[e.an.c]);
|
||||
Slot slot = e.ap.a(e.an, e.an.c);
|
||||
|
||||
e.ap.a();
|
||||
e.am = false;
|
||||
if (!ItemStack.a(e.an.e(), packet15place.e)) {
|
||||
b(new Packet103(e.ap.f, slot.c, e.an.e()));
|
||||
}
|
||||
d.e.B = false;
|
||||
}
|
||||
|
||||
public void a(String s, Object aobj[]) {
|
||||
a.info((new StringBuilder()).append(e.aw).append(" lost connection: ").append(s).toString());
|
||||
d.f.a(new Packet3Chat((new StringBuilder()).append("\247e").append(e.aw).append(" left the game.").toString()));
|
||||
d.f.c(e);
|
||||
c = true;
|
||||
}
|
||||
|
||||
public void a(Packet packet) {
|
||||
a.warning((new StringBuilder()).append(getClass()).append(" wasn't prepared to deal with a ").append(packet.getClass()).toString());
|
||||
a("Protocol error, unexpected packet");
|
||||
}
|
||||
|
||||
public void b(Packet packet) {
|
||||
b.a(packet);
|
||||
}
|
||||
|
||||
public void a(Packet16BlockItemSwitch packet16blockitemswitch) {
|
||||
e.an.c = packet16blockitemswitch.a;
|
||||
}
|
||||
|
||||
public void a(Packet3Chat packet3chat) {
|
||||
String s = packet3chat.a;
|
||||
|
||||
if (s.length() > 100) {
|
||||
a("Chat message too long");
|
||||
return;
|
||||
}
|
||||
s = s.trim();
|
||||
for (int l = 0; l < s.length(); l++) {
|
||||
if (FontAllowedCharacters.a.indexOf(s.charAt(l)) < 0) {
|
||||
a("Illegal characters in chat");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (s.startsWith("/")) {
|
||||
c(s);
|
||||
} else {
|
||||
// CraftBukkit start
|
||||
PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_CHAT, player, s);
|
||||
server.getPluginManager().callEvent(event);
|
||||
s = (new StringBuilder()).append("<").append(event.getPlayer().getName()).append("> ").append(event.getMessage()).toString();
|
||||
// CraftBukkit stop
|
||||
|
||||
a.info(s);
|
||||
d.f.a(new Packet3Chat(s));
|
||||
}
|
||||
}
|
||||
|
||||
private void c(String s) {
|
||||
// CraftBukkit start
|
||||
PlayerChatEvent event = new PlayerChatEvent(Type.PLAYER_COMMAND, player, s);
|
||||
server.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) return;
|
||||
s = event.getMessage();
|
||||
CraftPlayer player = (CraftPlayer)event.getPlayer();
|
||||
EntityPlayerMP e = player.getHandle();
|
||||
// CraftBukkit stop
|
||||
|
||||
if (s.toLowerCase().startsWith("/me ")) {
|
||||
s = (new StringBuilder()).append("* ").append(e.aw).append(" ").append(s.substring(s.indexOf(" ")).trim()).toString();
|
||||
a.info(s);
|
||||
d.f.a(new Packet3Chat(s));
|
||||
} else if (s.toLowerCase().startsWith("/kill")) {
|
||||
e.a(null, 1000);
|
||||
} else if (s.toLowerCase().startsWith("/tell ")) {
|
||||
String as[] = s.split(" ");
|
||||
|
||||
if (as.length >= 3) {
|
||||
s = s.substring(s.indexOf(" ")).trim();
|
||||
s = s.substring(s.indexOf(" ")).trim();
|
||||
s = (new StringBuilder()).append("\2477").append(e.aw).append(" whispers ").append(s).toString();
|
||||
a.info((new StringBuilder()).append(s).append(" to ").append(as[1]).toString());
|
||||
if (!d.f.a(as[1], new Packet3Chat(s))) {
|
||||
b(new Packet3Chat("\247cThere's no player by that name online."));
|
||||
}
|
||||
}
|
||||
} else if (d.f.g(e.aw)) {
|
||||
String s1 = s.substring(1);
|
||||
|
||||
a.info((new StringBuilder()).append(e.aw).append(" issued server command: ").append(s1).toString());
|
||||
d.a(s1, this);
|
||||
} else {
|
||||
String s2 = s.substring(1);
|
||||
|
||||
a.info((new StringBuilder()).append(e.aw).append(" tried command: ").append(s2).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet18ArmAnimation packet18armanimation) {
|
||||
if (packet18armanimation.b == 1) {
|
||||
e.H();
|
||||
} else if (packet18armanimation.b == 104) {
|
||||
e.al = true;
|
||||
} else if (packet18armanimation.b == 105) {
|
||||
e.al = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet255KickDisconnect packet255kickdisconnect) {
|
||||
b.a("disconnect.quitting", new Object[0]);
|
||||
}
|
||||
|
||||
public int b() {
|
||||
return b.d();
|
||||
}
|
||||
|
||||
public void b(String s) {
|
||||
b(((Packet) (new Packet3Chat((new StringBuilder()).append("\2477").append(s).toString()))));
|
||||
}
|
||||
|
||||
public String c() {
|
||||
return e.aw;
|
||||
}
|
||||
|
||||
public void a(Packet7 packet7) {
|
||||
Entity entity = d.e.a(packet7.b);
|
||||
|
||||
if (entity != null && e.i(entity)) {
|
||||
if (packet7.c == 0) {
|
||||
e.g(entity);
|
||||
} else if (packet7.c == 1) {
|
||||
e.h(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet9 packet9) {
|
||||
if (e.ba > 0) {
|
||||
return;
|
||||
} else {
|
||||
e = d.f.d(e);
|
||||
player.setHandle(e); // CraftBukkit
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet101 packet101) {
|
||||
e.K();
|
||||
}
|
||||
|
||||
public void a(Packet102 packet102) {
|
||||
if (e.ap.f == packet102.a && e.ap.c(e)) {
|
||||
ItemStack itemstack = e.ap.a(packet102.b, packet102.c, e);
|
||||
|
||||
if (ItemStack.a(packet102.e, itemstack)) {
|
||||
e.a.b(new Packet106(packet102.a, packet102.d, true));
|
||||
e.am = true;
|
||||
e.ap.a();
|
||||
e.J();
|
||||
e.am = false;
|
||||
} else {
|
||||
k.put(Integer.valueOf(e.ap.f), Short.valueOf(packet102.d));
|
||||
e.a.b(new Packet106(packet102.a, packet102.d, false));
|
||||
e.ap.a(e, false);
|
||||
ArrayList arraylist = new ArrayList();
|
||||
|
||||
for (int l = 0; l < e.ap.e.size(); l++) {
|
||||
arraylist.add(((Slot) e.ap.e.get(l)).c());
|
||||
}
|
||||
|
||||
e.a(e.ap, arraylist);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet106 packet106) {
|
||||
Short short1 = (Short) k.get(Integer.valueOf(e.ap.f));
|
||||
|
||||
if (short1 != null && packet106.b == short1.shortValue() && e.ap.f == packet106.a && !e.ap.c(e)) {
|
||||
e.ap.a(e, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet130 packet130) {
|
||||
if (d.e.f(packet130.a, packet130.b, packet130.c)) {
|
||||
TileEntity tileentity = d.e.l(packet130.a, packet130.b, packet130.c);
|
||||
|
||||
for (int l = 0; l < 4; l++) {
|
||||
boolean flag = true;
|
||||
|
||||
if (packet130.d[l].length() > 15) {
|
||||
flag = false;
|
||||
} else {
|
||||
for (int k1 = 0; k1 < packet130.d[l].length(); k1++) {
|
||||
if (FontAllowedCharacters.a.indexOf(packet130.d[l].charAt(k1)) < 0) {
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (!flag) {
|
||||
packet130.d[l] = "!?";
|
||||
}
|
||||
}
|
||||
|
||||
if (tileentity instanceof TileEntitySign) {
|
||||
int i1 = packet130.a;
|
||||
int j1 = packet130.b;
|
||||
int l1 = packet130.c;
|
||||
TileEntitySign tileentitysign = (TileEntitySign) tileentity;
|
||||
|
||||
for (int i2 = 0; i2 < 4; i2++) {
|
||||
tileentitysign.e[i2] = packet130.d[i2];
|
||||
}
|
||||
|
||||
tileentitysign.d();
|
||||
d.e.g(i1, j1, l1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,369 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.craftbukkit.CraftPlayer;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.player.PlayerEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
|
||||
|
||||
public class ServerConfigurationManager {
|
||||
|
||||
public static Logger a = Logger.getLogger("Minecraft");
|
||||
public List b;
|
||||
private MinecraftServer c;
|
||||
private PlayerManager d;
|
||||
private int e;
|
||||
private Set f;
|
||||
private Set g;
|
||||
private Set h;
|
||||
private File i;
|
||||
private File j;
|
||||
private File k;
|
||||
private PlayerNBTManager l;
|
||||
private CraftServer server; // Craftbukkit
|
||||
|
||||
public ServerConfigurationManager(MinecraftServer minecraftserver) {
|
||||
server = minecraftserver.server; // Craftbukkit
|
||||
|
||||
b = new ArrayList();
|
||||
f = new HashSet();
|
||||
g = new HashSet();
|
||||
h = new HashSet();
|
||||
c = minecraftserver;
|
||||
i = minecraftserver.a("banned-players.txt");
|
||||
j = minecraftserver.a("banned-ips.txt");
|
||||
k = minecraftserver.a("ops.txt");
|
||||
d = new PlayerManager(minecraftserver);
|
||||
e = minecraftserver.d.a("max-players", 20);
|
||||
e();
|
||||
g();
|
||||
i();
|
||||
f();
|
||||
h();
|
||||
j();
|
||||
}
|
||||
|
||||
public void a(WorldServer worldserver) {
|
||||
l = new PlayerNBTManager(new File(worldserver.t, "players"));
|
||||
}
|
||||
|
||||
public int a() {
|
||||
return d.b();
|
||||
}
|
||||
|
||||
public void a(EntityPlayerMP entityplayermp) {
|
||||
b.add(entityplayermp);
|
||||
l.b(entityplayermp);
|
||||
c.e.A.d((int) entityplayermp.p >> 4, (int) entityplayermp.r >> 4);
|
||||
for (; c.e.a(entityplayermp, entityplayermp.z).size() != 0; entityplayermp.a(entityplayermp.p, entityplayermp.q + 1.0D, entityplayermp.r)) {
|
||||
;
|
||||
}
|
||||
c.e.a(entityplayermp);
|
||||
d.a(entityplayermp);
|
||||
|
||||
// Craftbukkit
|
||||
server.getPluginManager().callEvent(new PlayerEvent(PlayerEvent.Type.PLAYER_JOIN, server.getPlayer(entityplayermp)));
|
||||
}
|
||||
|
||||
public void b(EntityPlayerMP entityplayermp) {
|
||||
d.c(entityplayermp);
|
||||
}
|
||||
|
||||
public void c(EntityPlayerMP entityplayermp) {
|
||||
l.a(entityplayermp);
|
||||
c.e.d(entityplayermp);
|
||||
b.remove(entityplayermp);
|
||||
d.b(entityplayermp);
|
||||
|
||||
// Craftbukkit
|
||||
server.getPluginManager().callEvent(new PlayerEvent(PlayerEvent.Type.PLAYER_QUIT, server.getPlayer(entityplayermp)));
|
||||
}
|
||||
|
||||
public EntityPlayerMP a(NetLoginHandler netloginhandler, String s, String s1) {
|
||||
// Craftbukkit note: this entire method needs to be changed
|
||||
// Instead of kicking then returning, we need to store the kick reason
|
||||
// in the event, check with plugins to see if it's ok, and THEN kick
|
||||
// depending on the outcome.
|
||||
|
||||
EntityPlayerMP entity = new EntityPlayerMP(c, c.e, s, new ItemInWorldManager(c.e));
|
||||
PlayerLoginEvent event = new PlayerLoginEvent(Type.PLAYER_LOGIN, new CraftPlayer(server, entity));
|
||||
|
||||
String s2 = netloginhandler.b.b().toString();
|
||||
s2 = s2.substring(s2.indexOf("/") + 1);
|
||||
s2 = s2.substring(0, s2.indexOf(":"));
|
||||
|
||||
if (f.contains(s.trim().toLowerCase())) {
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "You are banned from this server!");
|
||||
} else if (g.contains(s2)) {
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "Your IP address is banned from this server!");
|
||||
} else if (b.size() >= e) {
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full!");
|
||||
}
|
||||
|
||||
server.getPluginManager().callEvent(event);
|
||||
if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) {
|
||||
netloginhandler.a(event.getKickMessage());
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1);
|
||||
|
||||
if (entityplayermp.aw.equalsIgnoreCase(s)) {
|
||||
entityplayermp.a.a("You logged in from another location");
|
||||
}
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public EntityPlayerMP d(EntityPlayerMP entityplayermp) {
|
||||
c.k.a(entityplayermp);
|
||||
c.k.b(entityplayermp);
|
||||
d.b(entityplayermp);
|
||||
b.remove(entityplayermp);
|
||||
c.e.e(entityplayermp);
|
||||
EntityPlayerMP entityplayermp1 = new EntityPlayerMP(c, c.e, entityplayermp.aw, new ItemInWorldManager(c.e));
|
||||
|
||||
entityplayermp1.g = entityplayermp.g;
|
||||
entityplayermp1.a = entityplayermp.a;
|
||||
c.e.A.d((int) entityplayermp1.p >> 4, (int) entityplayermp1.r >> 4);
|
||||
for (; c.e.a(entityplayermp1, entityplayermp1.z).size() != 0; entityplayermp1.a(entityplayermp1.p, entityplayermp1.q + 1.0D, entityplayermp1.r)) {
|
||||
;
|
||||
}
|
||||
entityplayermp1.a.b(new Packet9());
|
||||
entityplayermp1.a.a(entityplayermp1.p, entityplayermp1.q, entityplayermp1.r, entityplayermp1.v, entityplayermp1.w);
|
||||
d.a(entityplayermp1);
|
||||
c.e.a(entityplayermp1);
|
||||
b.add(entityplayermp1);
|
||||
entityplayermp1.k();
|
||||
return entityplayermp1;
|
||||
}
|
||||
|
||||
public void b() {
|
||||
d.a();
|
||||
}
|
||||
|
||||
public void a(int i1, int j1, int k1) {
|
||||
d.a(i1, j1, k1);
|
||||
}
|
||||
|
||||
public void a(Packet packet) {
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1);
|
||||
|
||||
entityplayermp.a.b(packet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String c() {
|
||||
String s = "";
|
||||
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
if (i1 > 0) {
|
||||
s = (new StringBuilder()).append(s).append(", ").toString();
|
||||
}
|
||||
s = (new StringBuilder()).append(s).append(((EntityPlayerMP) b.get(i1)).aw).toString();
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
public void a(String s) {
|
||||
f.add(s.toLowerCase());
|
||||
f();
|
||||
}
|
||||
|
||||
public void b(String s) {
|
||||
f.remove(s.toLowerCase());
|
||||
f();
|
||||
}
|
||||
|
||||
private void e() {
|
||||
try {
|
||||
f.clear();
|
||||
BufferedReader bufferedreader = new BufferedReader(new FileReader(i));
|
||||
|
||||
for (String s = ""; (s = bufferedreader.readLine()) != null;) {
|
||||
f.add(s.trim().toLowerCase());
|
||||
}
|
||||
|
||||
bufferedreader.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to load ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void f() {
|
||||
try {
|
||||
PrintWriter printwriter = new PrintWriter(new FileWriter(i, false));
|
||||
String s;
|
||||
|
||||
for (Iterator iterator = f.iterator(); iterator.hasNext(); printwriter.println(s)) {
|
||||
s = (String) iterator.next();
|
||||
}
|
||||
|
||||
printwriter.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to save ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void c(String s) {
|
||||
g.add(s.toLowerCase());
|
||||
h();
|
||||
}
|
||||
|
||||
public void d(String s) {
|
||||
g.remove(s.toLowerCase());
|
||||
h();
|
||||
}
|
||||
|
||||
private void g() {
|
||||
try {
|
||||
g.clear();
|
||||
BufferedReader bufferedreader = new BufferedReader(new FileReader(j));
|
||||
|
||||
for (String s = ""; (s = bufferedreader.readLine()) != null;) {
|
||||
g.add(s.trim().toLowerCase());
|
||||
}
|
||||
|
||||
bufferedreader.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to load ip ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void h() {
|
||||
try {
|
||||
PrintWriter printwriter = new PrintWriter(new FileWriter(j, false));
|
||||
String s;
|
||||
|
||||
for (Iterator iterator = g.iterator(); iterator.hasNext(); printwriter.println(s)) {
|
||||
s = (String) iterator.next();
|
||||
}
|
||||
|
||||
printwriter.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to save ip ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void e(String s) {
|
||||
h.add(s.toLowerCase());
|
||||
j();
|
||||
}
|
||||
|
||||
public void f(String s) {
|
||||
h.remove(s.toLowerCase());
|
||||
j();
|
||||
}
|
||||
|
||||
private void i() {
|
||||
try {
|
||||
h.clear();
|
||||
BufferedReader bufferedreader = new BufferedReader(new FileReader(k));
|
||||
|
||||
for (String s = ""; (s = bufferedreader.readLine()) != null;) {
|
||||
h.add(s.trim().toLowerCase());
|
||||
}
|
||||
|
||||
bufferedreader.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to load ip ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void j() {
|
||||
try {
|
||||
PrintWriter printwriter = new PrintWriter(new FileWriter(k, false));
|
||||
String s;
|
||||
|
||||
for (Iterator iterator = h.iterator(); iterator.hasNext(); printwriter.println(s)) {
|
||||
s = (String) iterator.next();
|
||||
}
|
||||
|
||||
printwriter.close();
|
||||
} catch (Exception exception) {
|
||||
a.warning((new StringBuilder()).append("Failed to save ip ban list: ").append(exception).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean g(String s) {
|
||||
return h.contains(s.trim().toLowerCase());
|
||||
}
|
||||
|
||||
public EntityPlayerMP h(String s) {
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1);
|
||||
|
||||
if (entityplayermp.aw.equalsIgnoreCase(s)) {
|
||||
return entityplayermp;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void a(String s, String s1) {
|
||||
EntityPlayerMP entityplayermp = h(s);
|
||||
|
||||
if (entityplayermp != null) {
|
||||
entityplayermp.a.b(new Packet3Chat(s1));
|
||||
}
|
||||
}
|
||||
|
||||
public void a(double d1, double d2, double d3, double d4, Packet packet) {
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1);
|
||||
double d5 = d1 - entityplayermp.p;
|
||||
double d6 = d2 - entityplayermp.q;
|
||||
double d7 = d3 - entityplayermp.r;
|
||||
|
||||
if (d5 * d5 + d6 * d6 + d7 * d7 < d4 * d4) {
|
||||
entityplayermp.a.b(packet);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void i(String s) {
|
||||
Packet3Chat packet3chat = new Packet3Chat(s);
|
||||
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) b.get(i1);
|
||||
|
||||
if (g(entityplayermp.aw)) {
|
||||
entityplayermp.a.b(packet3chat);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean a(String s, Packet packet) {
|
||||
EntityPlayerMP entityplayermp = h(s);
|
||||
|
||||
if (entityplayermp != null) {
|
||||
entityplayermp.a.b(packet);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void d() {
|
||||
for (int i1 = 0; i1 < b.size(); i1++) {
|
||||
l.a((EntityPlayerMP) b.get(i1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void a(int i1, int j1, int k1, TileEntity tileentity) {}
|
||||
|
||||
}
|
||||
182
src/main/java/net/minecraft/server/WorldServer.java
Normal file
182
src/main/java/net/minecraft/server/WorldServer.java
Normal file
@@ -0,0 +1,182 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Random;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.block.BlockCanBuildEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
|
||||
|
||||
public class WorldServer extends World {
|
||||
|
||||
public ChunkProviderServer A;
|
||||
public boolean B;
|
||||
public boolean C;
|
||||
private MinecraftServer D;
|
||||
private MCHashTable E;
|
||||
private final CraftWorld world; // CraftBukkit
|
||||
private final CraftServer server; // CraftBukkit
|
||||
|
||||
public WorldServer(MinecraftServer minecraftserver, File file, String s, int i) {
|
||||
super(file, s, (new Random()).nextLong(), WorldProvider.a(i));
|
||||
B = false;
|
||||
E = new MCHashTable();
|
||||
D = minecraftserver;
|
||||
world = new CraftWorld(this); // CraftBukkit
|
||||
server = minecraftserver.server; // CraftBukkit
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
@Override
|
||||
public boolean c(int i1, int j1, int k1, int l1) {
|
||||
boolean result = super.c(i1, j1, k1, l1);
|
||||
world.updateBlock(i1, j1, k1);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean d(int i1, int j1, int k1, int l1) {
|
||||
boolean result = super.d(i1, j1, k1, l1);
|
||||
world.updateBlock(i1, j1, k1);
|
||||
return result;
|
||||
}
|
||||
|
||||
public CraftWorld getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
public CraftServer getServer() {
|
||||
return server;
|
||||
}
|
||||
// CraftBukkit stop
|
||||
|
||||
// CraftBukkit start - note: the following methods are straight from the
|
||||
// World.java with tweaks as noted. KEEP THEM UPDATED!
|
||||
@Override
|
||||
public void g(int i1, int j1, int k1, int l1) {
|
||||
k(i1 - 1, j1, k1, l1);
|
||||
k(i1 + 1, j1, k1, l1);
|
||||
k(i1, j1 - 1, k1, l1);
|
||||
k(i1, j1 + 1, k1, l1);
|
||||
k(i1, j1, k1 - 1, l1);
|
||||
k(i1, j1, k1 + 1, l1);
|
||||
}
|
||||
|
||||
private void k(int i1, int j1, int k1, int l1) {
|
||||
if (i || z) {
|
||||
return;
|
||||
}
|
||||
Block block = Block.m[a(i1, j1, k1)];
|
||||
|
||||
if (block != null) {
|
||||
// CraftBukkit start
|
||||
BlockPhysicsEvent event = new BlockPhysicsEvent(Event.Type.BLOCK_PHYSICS, world.getBlockAt(i1, j1, k1), l1);
|
||||
server.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit stop
|
||||
|
||||
block.b(this, i1, j1, k1, l1);
|
||||
}
|
||||
}
|
||||
// CraftBukkit stop
|
||||
|
||||
// CraftBukkit start
|
||||
@Override
|
||||
public boolean a(int i1, int j1, int k1, int l1, boolean flag) {
|
||||
boolean superResult = super.a(i1, j1, k1, l1, flag);
|
||||
|
||||
if (!flag) {
|
||||
BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j1, k1, l1), i1, superResult);
|
||||
server.getPluginManager().callEvent(event);
|
||||
|
||||
return event.isBuildable();
|
||||
} else {
|
||||
return superResult;
|
||||
}
|
||||
}
|
||||
// CraftBukkit stop
|
||||
|
||||
public void f() {
|
||||
super.f();
|
||||
}
|
||||
|
||||
public void a(Entity entity, boolean flag) {
|
||||
if (!D.m && (entity instanceof EntityAnimals)) {
|
||||
entity.l();
|
||||
}
|
||||
if (entity.j == null || !(entity.j instanceof EntityPlayer)) {
|
||||
super.a(entity, flag);
|
||||
}
|
||||
}
|
||||
|
||||
public void b(Entity entity, boolean flag) {
|
||||
super.a(entity, flag);
|
||||
}
|
||||
|
||||
protected IChunkProvider a(File file) {
|
||||
A = new ChunkProviderServer(this, q.a(file), q.c());
|
||||
return A;
|
||||
}
|
||||
|
||||
public List d(int i, int j, int k, int l, int i1, int j1) {
|
||||
ArrayList arraylist = new ArrayList();
|
||||
|
||||
for (int k1 = 0; k1 < c.size(); k1++) {
|
||||
TileEntity tileentity = (TileEntity) c.get(k1);
|
||||
|
||||
if (tileentity.b >= i && tileentity.c >= j && tileentity.d >= k && tileentity.b < l && tileentity.c < i1 && tileentity.d < j1) {
|
||||
arraylist.add(tileentity);
|
||||
}
|
||||
}
|
||||
|
||||
return arraylist;
|
||||
}
|
||||
|
||||
public boolean a(EntityPlayer entityplayer, int i, int j, int k) {
|
||||
int l = (int) MathHelper.e(i - m);
|
||||
int i1 = (int) MathHelper.e(k - o);
|
||||
|
||||
if (l > i1) {
|
||||
i1 = l;
|
||||
}
|
||||
return i1 > 16 || D.f.g(entityplayer.aw);
|
||||
}
|
||||
|
||||
protected void b(Entity entity) {
|
||||
super.b(entity);
|
||||
E.a(entity.g, entity);
|
||||
}
|
||||
|
||||
protected void c(Entity entity) {
|
||||
super.c(entity);
|
||||
E.d(entity.g);
|
||||
}
|
||||
|
||||
public Entity a(int i) {
|
||||
return (Entity) E.a(i);
|
||||
}
|
||||
|
||||
public void a(Entity entity, byte byte0) {
|
||||
Packet38 packet38 = new Packet38(entity.g, byte0);
|
||||
|
||||
D.k.b(entity, packet38);
|
||||
}
|
||||
|
||||
public Explosion a(Entity entity, double d1, double d2, double d3,
|
||||
float f1, boolean flag) {
|
||||
Explosion explosion = super.a(entity, d1, d2, d3, f1, flag);
|
||||
|
||||
D.f.a(d1, d2, d3, 64D, new Packet60(d1, d2, d3, f1, explosion.g));
|
||||
return explosion;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user