@@ -8,14 +8,14 @@ public OItemEnderEye(int var1) {
public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
int var8 = var3.a(var4, var5, var6);
int var9 = var3.c(var4, var5, var6);
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
((OEntityPlayerMP) var2).getPlayer(),
this.getBlockInfo(var3, var4, var5, var6, var7), null, new Item(var1)))
return true;

if (var2.d(var4, var5, var6) && var8 == OBlock.bK.bO && !OBlockEndPortalFrame.d(var9)) {
if (var3.I) {
if (var2.d(var4, var5, var6) && var8 == OBlock.bI.bO && !OBlockEndPortalFrame.d(var9)) {
if (var3.F) {
return true;
} else {
var3.c(var4, var5, var6, var9 + 4);
@@ -51,7 +51,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
var29 = var4 + ODirection.a[var27] * var28;
var30 = var6 + ODirection.b[var27] * var28;
var31 = var3.a(var29, var5, var30);
if (var31 == OBlock.bK.bO) {
if (var31 == OBlock.bI.bO) {
var32 = var3.c(var29, var5, var30);
if (!OBlockEndPortalFrame.d(var32)) {
var26 = false;
@@ -76,7 +76,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
var30 += ODirection.b[var10] * 4;
var31 = var3.a(var29, var5, var30);
var32 = var3.c(var29, var5, var30);
if (var31 != OBlock.bK.bO || !OBlockEndPortalFrame.d(var32)) {
if (var31 != OBlock.bI.bO || !OBlockEndPortalFrame.d(var32)) {
var26 = false;
break;
}
@@ -91,7 +91,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
var32 = var3.a(var30, var5, var31);
int var33 = var3.c(var30, var5, var31);

if (var32 != OBlock.bK.bO || !OBlockEndPortalFrame.d(var33)) {
if (var32 != OBlock.bI.bO || !OBlockEndPortalFrame.d(var33)) {
var26 = false;
break;
}
@@ -105,7 +105,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
var31 = var6 + ODirection.b[var27] * var28;
var30 += ODirection.a[var10] * var29;
var31 += ODirection.b[var10] * var29;
var3.e(var30, var5, var31, OBlock.bJ.bO);
var3.e(var30, var5, var31, OBlock.bH.bO);
}
}
}
@@ -124,12 +124,12 @@ public OItemStack a(OItemStack var1, OWorld var2, OEntityPlayer var3) {
if (var4 != null && var4.a == OEnumMovingObjectType.a) {
int var5 = var2.a(var4.b, var4.c, var4.d);

if (var5 == OBlock.bK.bO) {
if (var5 == OBlock.bI.bO) {
return var1;
}
}

if (!var2.I) {
if (!var2.F) {
OChunkPosition var7 = var2.b("Stronghold", (int) var3.bm, (int) var3.bn, (int) var3.bo);

if (var7 != null) {
@@ -3,16 +3,16 @@ public class OItemFlintAndSteel extends OItem {

public OItemFlintAndSteel(int var1) {
super(var1);
this.bO = 1;
this.bQ = 1;
this.f(64);
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
// CanaryMod: Store block data clicked
// CanaryMod: Store block data clicked
Block blockClicked = new Block(var3.world, var3.a(var4, var5, var6), var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));

if (var7 == 0) {
--var5;
}
@@ -43,7 +43,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
int var8 = var3.a(var4, var5, var6);

if (var8 == 0) {
// CanaryMod: Hook to control ignites AND ligther use
// CanaryMod: Hook to control ignites AND ligther use
Block blockPlaced = new Block(var3.world, Block.Type.Fire.getType(), var4, var5, var6);
Player player = ((OEntityPlayerMP) var2).getPlayer();

@@ -55,9 +55,9 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
if (preventIgnite || preventLighter) {
return false;
}

var3.a((double) var4 + 0.5D, (double) var5 + 0.5D, (double) var6 + 0.5D, "fire.ignite", 1.0F, c.nextFloat() * 0.4F + 0.8F);
var3.e(var4, var5, var6, OBlock.at.bO);
var3.e(var4, var5, var6, OBlock.ar.bO);
}

var1.a(1, var2);
@@ -3,7 +3,7 @@ public class OItemHoe extends OItem {

public OItemHoe(int var1, OEnumToolMaterial var2) {
super(var1);
this.bO = 1;
this.bQ = 1;
this.f(var2.a());
}

@@ -14,10 +14,10 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
int var8 = var3.a(var4, var5, var6);
int var9 = var3.a(var4, var5 + 1, var6);

if ((var7 == 0 || var9 != 0 || var8 != OBlock.w.bO) && var8 != OBlock.x.bO) {
if ((var7 == 0 || var9 != 0 || var8 != OBlock.u.bO) && var8 != OBlock.v.bO) {
return false;
} else {
// CanaryMod: Hoes
// CanaryMod: Hoes
Block blockClicked = new Block(var3.world, var8, var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));
@@ -31,10 +31,11 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
return false;
}
}
OBlock var10 = OBlock.aC;

OBlock var10 = OBlock.aA;

var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), var10.bZ.c(), (var10.bZ.a() + 1.0F) / 2.0F, var10.bZ.b() * 0.8F);
if (var3.I) {
var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), var10.cb.c(), (var10.cb.a() + 1.0F) / 2.0F, var10.cb.b() * 0.8F);
if (var3.F) {
return true;
} else {
var3.e(var4, var5, var6, var10.bO);
@@ -1,4 +1,3 @@

import java.util.ArrayList;


@@ -77,10 +76,13 @@ public void c() {
}

public void a(int var1, int var2, int var3, int var4) {
this.a.a((OEntityPlayer) null, var1, var2, var3, var4);
if (this.b()) {
this.c(var1, var2, var3);
if (!this.a.a((OEntityPlayer) null, var1, var2, var3, var4)) {
this.c(var1, var2, var3);
}

} else {
this.a.a((OEntityPlayer) null, var1, var2, var3, var4);
this.e = this.i;
int var5 = this.a.a(var1, var2, var3);

@@ -136,7 +138,7 @@ public boolean b(int var1, int var2, int var3) {
}

public boolean c(int var1, int var2, int var3) {
// CanaryMod start - portal destroy
// CanaryMod start - portal destroy
Block block = ((OEntityPlayerMP) b).getPlayer().getWorld().getBlockAt(var1, var2, var3); //

if (block.getType() == Block.Type.Obsidian.getType()) {
@@ -160,7 +162,7 @@ public boolean c(int var1, int var2, int var3) {
} else {
for (int j = 0; j < 3; j += 1) {
for (int k = 0; k < 2; k += 1) {
block.getWorld().getWorld().c(blocks[j][k].getX() >> 4, blocks[j][k].getZ() >> 4).a(blocks[j][k].getX() & 15, blocks[j][k].getY(), blocks[j][k].getZ() & 15, 0, false);
block.getWorld().getWorld().c(blocks[j][k].getX() >> 4, blocks[j][k].getZ() >> 4).a(blocks[j][k].getX() & 15, blocks[j][k].getY(), blocks[j][k].getZ() & 15, 0, 0, false);
for (Player player : updatedPlayers) {
player.getUser().a.b(new OPacket53BlockChange(blocks[j][k].getX(), blocks[j][k].getY(), blocks[j][k].getZ(), block.getWorld().getWorld()));
}
@@ -178,24 +180,24 @@ public boolean c(int var1, int var2, int var3) {
return true;
}
// CanaryMod end
int var4 = this.a.a(var1, var2, var3);
int var5 = this.a.c(var1, var2, var3);

this.a.a(this.b, 2001, var1, var2, var3, var4 + this.a.c(var1, var2, var3) * 256);
this.a.a(this.b, 2001, var1, var2, var3, var4 + (this.a.c(var1, var2, var3) << 12));
boolean var6 = this.b(var1, var2, var3);

if (this.b()) {
((OEntityPlayerMP) this.b).a.b((OPacket) (new OPacket53BlockChange(var1, var2, var3, this.a)));
} else {
OItemStack var7 = this.b.Q();
OItemStack var7 = this.b.T();
boolean var8 = this.b.b(OBlock.m[var4]);

if (var7 != null) {
var7.a(var4, var1, var2, var3, this.b);
if (var7.a == 0) {
var7.a(this.b);
this.b.R();
this.b.U();
}
}

@@ -206,31 +208,8 @@ public boolean c(int var1, int var2, int var3) {

return var6;
}

/**
* Called when a player right-click air with an item in hand. We intercept
* it.
*
* @param player
* @param world
* @param item
* @param blockToPlace
* @param blockClicked
* @return
*/
public boolean itemUsed(OEntityPlayer player, OWorld world, OItemStack item, Block blockToPlace, Block blockClicked) {
// CanaryMod: only call this hook if we're not using buckets/signs
if (item != null) {
if (item.a > 0 && item.c != Item.Type.Sign.getId() && item.c != Item.Type.Bucket.getId() && item.c != Item.Type.WaterBucket.getId() && item.c != Item.Type.LavaBucket.getId() && item.c != Item.Type.MilkBucket.getId()) {
if (player instanceof OEntityPlayerMP && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, ((OEntityPlayerMP) player).getPlayer(), blockToPlace, blockClicked, new Item(item))) {
return false;
}
}
}
return this.a(player, world, item);
}

public boolean a(OEntityPlayer var1, OWorld var2, OItemStack var3) {
public boolean a(OEntityPlayer var1, OWorld var2, OItemStack var3) {
int var4 = var3.a;
int var5 = var3.h();
OItemStack var6 = var3.a(var2, var1);
@@ -251,6 +230,29 @@ public boolean a(OEntityPlayer var1, OWorld var2, OItemStack var3) {
return true;
}
}

/**
* Called when a player right-click air with an item in hand. We intercept
* it.
*
* @param player
* @param world
* @param item
* @param blockToPlace
* @param blockClicked
* @return
*/
public boolean itemUsed(OEntityPlayer player, OWorld world, OItemStack item, Block blockToPlace, Block blockClicked) {
// CanaryMod: only call this hook if we're not using buckets/signs
if (item != null) {
if (item.a > 0 && item.c != Item.Type.Sign.getId() && item.c != Item.Type.Bucket.getId() && item.c != Item.Type.WaterBucket.getId() && item.c != Item.Type.LavaBucket.getId() && item.c != Item.Type.MilkBucket.getId()) {
if (player instanceof OEntityPlayerMP && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, ((OEntityPlayerMP) player).getPlayer(), blockToPlace, blockClicked, new Item(item))) {
return false;
}
}
}
return this.a(player, world, item);
}

public boolean a(OEntityPlayer var1, OWorld var2, OItemStack var3, int var4, int var5, int var6, int var7) {
int var8 = var2.a(var4, var5, var6);
@@ -275,8 +277,8 @@ public boolean a(OEntityPlayer var1, OWorld var2, OItemStack var3, int var4, int
public void a(OWorldServer var1) {
this.a = var1;
}
// CanaryMod start - getPortalBlocks
// CanaryMod start - getPortalBlocks
private Block[][] getPortalBlocks(World world, int x, int y, int z) {
int portalId = Block.Type.Portal.getType();

@@ -5,23 +5,22 @@ public class OItemMinecart extends OItem {

public OItemMinecart(int var1, int var2) {
super(var1);
this.bO = 1;
this.bQ = 1;
this.a = var2;
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
int var8 = var3.a(var4, var5, var6);

if (OBlockRail.d(var8)) {
if (!var3.I) {
// CanaryMod: placing of a mine cart
if (!var3.F) {
// CanaryMod: placing of a mine cart
Block block = new Block(var3.world, var8, var4, var5, var6);
Player player = ((OEntityPlayerMP) var2).getPlayer();

if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, player, block, block, new Item(var1))) {
return false;
}

var3.b((OEntity) (new OEntityMinecart(var3, (double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), this.a)));
}

@@ -6,11 +6,11 @@ public OItemPainting(int var1) {
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
// CanaryMod: store clicked block data
// CanaryMod: store clicked block data
Block blockClicked = new Block(var3.world, var3.world.getBlockIdAt(var4, var5, var6), var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));

if (var7 == 0) {
return false;
} else if (var7 == 1) {
@@ -35,9 +35,9 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
} else {
OEntityPainting var9 = new OEntityPainting(var3, var4, var5, var6, var8);

if (var9.j()) {
if (!var3.I) {
// CanaryMod: Painting place hook
if (var9.k()) {
if (!var3.F) {
// CanaryMod: Painting place hook
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, ((OEntityPlayerMP) var2).getPlayer(), null, blockClicked, new Item(var1))) {
return false;
}
@@ -31,7 +31,7 @@ public List b(int var1) {

public OItemStack b(OItemStack var1, OWorld var2, OEntityPlayer var3) {
--var1.a;
if (!var2.I) {
if (!var2.F) {
List var4 = this.b(var1);

if (var4 != null) {
@@ -65,7 +65,7 @@ public OItemStack a(OItemStack var1, OWorld var2, OEntityPlayer var3) {
if (c(var1.h())) {
--var1.a;
var2.a(var3, "random.bow", 0.5F, 0.4F / (c.nextFloat() * 0.4F + 0.8F));
if (!var2.I) {
if (!var2.F) {
var2.b((OEntity) (new OEntityPotion(var2, var3, var1.h())));
}

@@ -6,20 +6,20 @@ public class OItemRecord extends OItem {
protected OItemRecord(int var1, String var2) {
super(var1);
this.a = var2;
this.bO = 1;
this.bQ = 1;
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
((OEntityPlayerMP) var2).getPlayer(),
this.getBlockInfo(var3, var4, var5, var6, var7), null, new Item(var1)))
return true;
if (var3.a(var4, var5, var6) == OBlock.ba.bO && var3.c(var4, var5, var6) == 0) {
if (var3.I) {
if (var3.a(var4, var5, var6) == OBlock.aY.bO && var3.c(var4, var5, var6) == 0) {
if (var3.F) {
return true;
} else {
((OBlockJukeBox) OBlock.ba).f(var3, var4, var5, var6, this.bN);
var3.a((OEntityPlayer) null, 1005, var4, var5, var6, this.bN);
((OBlockJukeBox) OBlock.aY).f(var3, var4, var5, var6, this.bP);
var3.a((OEntityPlayer) null, 1005, var4, var5, var6, this.bP);
--var1.a;
return true;
}
@@ -6,12 +6,12 @@ public OItemRedstone(int var1) {
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
// CanaryMod: Store block data clicked
// CanaryMod: Store block data clicked
Block blockClicked = new Block(var3.world, var3.a(var4, var5, var6), var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));

if (var3.a(var4, var5, var6) != OBlock.aU.bO) {
if (var3.a(var4, var5, var6) != OBlock.aS.bO) {
if (var7 == 0) {
--var5;
}
@@ -36,16 +36,16 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
++var4;
}

if (!var3.f(var4, var5, var6)) {
if (!var3.g(var4, var5, var6)) {
return false;
}
}

if (!var2.d(var4, var5, var6)) {
return false;
} else {
if (OBlock.ax.c(var3, var4, var5, var6)) {
// CanaryMod: Redstone dust hook!
if (OBlock.av.c(var3, var4, var5, var6)) {
// CanaryMod: Redstone dust hook!
Block blockPlaced = new Block(var3.world, Block.Type.RedstoneWire.getType(), var4, var5, var6);
Player player = ((OEntityPlayerMP) var2).getPlayer();

@@ -54,7 +54,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
}

--var1.a;
var3.e(var4, var5, var6, OBlock.ax.bO);
var3.e(var4, var5, var6, OBlock.av.bO);
}

return true;
@@ -9,15 +9,15 @@ public OItemReed(int var1, OBlock var2) {
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
// CanaryMod: Store blockClicked
// CanaryMod: Store blockClicked
int clicked = var3.a(var4, var5, var6);
Block blockClicked = new Block(var3.world, clicked, var4, var5, var6);

int var8 = var3.a(var4, var5, var6);

if (var8 == OBlock.aU.bO) {
var7 = 0;
} else if (var8 != OBlock.bw.bO) {
if (var8 == OBlock.aS.bO) {
var7 = 1;
} else if (var8 != OBlock.bu.bO && var8 != OBlock.X.bO && var8 != OBlock.Y.bO) {
if (var7 == 0) {
--var5;
}
@@ -49,7 +49,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
return false;
} else {
if (var3.a(this.a, var4, var5, var6, false, var7)) {
// CanaryMod: Reed placement
// CanaryMod: Reed placement
Block blockPlaced = new Block(var3.world, var3.a(var4, var5, var6), var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));
@@ -58,7 +58,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, player, blockPlaced, blockClicked, new Item(var1))) {
return false;
}

OBlock var9 = OBlock.m[this.a];

if (var3.e(var4, var5, var6, this.a)) {
@@ -67,7 +67,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
OBlock.m[this.a].a(var3, var4, var5, var6, (OEntityLiving) var2);
}

var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), var9.bZ.c(), (var9.bZ.a() + 1.0F) / 2.0F, var9.bZ.b() * 0.8F);
var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), var9.cb.c(), (var9.cb.a() + 1.0F) / 2.0F, var9.cb.b() * 0.8F);
--var1.a;
}
}
@@ -16,8 +16,8 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
} else if (var2.d(var4, var5, var6) && var2.d(var4, var5 + 1, var6)) {
int var8 = var3.a(var4, var5, var6);

if (var8 == this.b && var3.f(var4, var5 + 1, var6)) {
// CanaryMod: Seeds
if (var8 == this.b && var3.g(var4, var5 + 1, var6)) {
// CanaryMod: Seeds
Block blockClicked = new Block(var3.world, var8, var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));
@@ -29,7 +29,7 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, player, blockPlaced, blockClicked, new Item(var1))) {
return false;
}

var3.e(var4, var5 + 1, var6, this.a);
--var1.a;
return true;
@@ -3,7 +3,7 @@ public class OItemSign extends OItem {

public OItemSign(int var1) {
super(var1);
this.bO = 1;
this.bQ = 1;
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
@@ -12,11 +12,11 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int
} else if (!var3.d(var4, var5, var6).a()) {
return false;
} else {
// CanaryMod: Store block data clicked
// CanaryMod: Store block data clicked
Block blockClicked = new Block(var3.world, var3.a(var4, var5, var6), var4, var5, var6);

blockClicked.setFaceClicked(Block.Face.fromId(var7));

if (var7 == 1) {
++var5;
}
@@ -39,22 +39,22 @@ public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int

if (!var2.d(var4, var5, var6)) {
return false;
} else if (!OBlock.aF.c(var3, var4, var5, var6)) {
} else if (!OBlock.aD.c(var3, var4, var5, var6)) {
return false;
} else {
// CanaryMod: Now we can call itemUse :)
// CanaryMod: Now we can call itemUse :)
Block blockPlaced = new Block(var3.world, (var7 == 1 ? OBlock.aF.bO : OBlock.aK.bO), var4, var5, var6);

if (var2 instanceof OEntityPlayerMP && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE, ((OEntityPlayerMP) var2).getPlayer(), blockPlaced, blockClicked, new Item(var1))) {
return false;
}

if (var7 == 1) {
int var8 = OMathHelper.b((double) ((var2.bs + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15;

var3.b(var4, var5, var6, OBlock.aF.bO, var8);
var3.b(var4, var5, var6, OBlock.aD.bO, var8);
} else {
var3.b(var4, var5, var6, OBlock.aK.bO, var7);
var3.b(var4, var5, var6, OBlock.aI.bO, var7);
}

--var1.a;
@@ -22,23 +22,24 @@ public String a(OItemStack var1) {
}

public boolean a(OItemStack var1, OEntityPlayer var2, OWorld var3, int var4, int var5, int var6, int var7) {
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
if ((Boolean) etc.getLoader().callHook(PluginLoader.Hook.ITEM_USE,
((OEntityPlayerMP) var2).getPlayer(), this.getBlockInfo(var3, var4, var5, var6, var7),
null, new Item(var1)))
return true;



if (var1.a == 0) {
return false;
} else if (!var2.d(var4, var5, var6)) {
return false;
} else {
int var8 = var3.a(var4, var5, var6);
int var9 = var3.c(var4, var5, var6);
int var10 = var9 & 7;
boolean var11 = (var9 & 8) != 0;

if (var7 == 1 && var8 == OBlock.am.bO && var9 == var1.h()) {
if (var3.b(var4, var5, var6, OBlock.al.bO, var9)) {
var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), OBlock.al.bZ.c(), (OBlock.al.bZ.a() + 1.0F) / 2.0F, OBlock.al.bZ.b() * 0.8F);
if ((var7 == 1 && !var11 || var7 == 0 && var11) && var8 == OBlock.ak.bO && var10 == var1.h()) {
if (var3.b(var4, var5, var6, OBlock.aj.bO, var10)) {
var3.a((double) ((float) var4 + 0.5F), (double) ((float) var5 + 0.5F), (double) ((float) var6 + 0.5F), OBlock.aj.cb.c(), (OBlock.aj.cb.a() + 1.0F) / 2.0F, OBlock.aj.cb.b() * 0.8F);
--var1.a;
}

@@ -18,7 +18,7 @@ public class ONetLoginHandler extends ONetHandler {
private OPacket1Login h = null;
private String i = "";

public ONetLoginHandler(MinecraftServer var1, Socket var2, String var3) throws IOException {
public ONetLoginHandler(MinecraftServer var1, Socket var2, String var3) throws IOException {
super();
this.e = var1;
this.b = new ONetworkManager(var2, var3, this);
@@ -62,16 +62,16 @@ public void a(OPacket2Handshake var1) {
}

public void a(OPacket1Login var1) {
//CanaryMod: Filter bad player names and remove them from the login process
//CanaryMod: Filter bad player names and remove them from the login process
if(!var1.b.toLowerCase().matches("[a-zA-Z0-9-_]+")) {
c=true; //finished processing
b.a("This name has been assimilated and you have been kicked.");
return;
}
//CanaryMod End
this.g = var1.b;
if (var1.a != 23) {
if (var1.a > 23) {
if (var1.a != 28) {
if (var1.a > 28) {
this.a("Outdated server!");
} else {
this.a("Outdated client!");
@@ -96,13 +96,13 @@ public void b(OPacket1Login var1) {
var2.c.a((OWorldServer) var2.bi);
a.info(this.b() + " logged in with entity id " + var2.bd + " at (" + var2.bm + ", " + var2.bn + ", " + var2.bo + ")");
OWorldServer var3 = this.e.a(var2.w);
OChunkCoordinates var4 = var3.o();
OChunkCoordinates var4 = var3.p();

var2.c.b(var3.r().n());
var2.c.b(var3.s().m());
ONetServerHandler var5 = new ONetServerHandler(this.e, this.b, var2);

// CanaryMod - if seed is hidden send 0 instead.
var5.b((OPacket) (new OPacket1Login("", var2.bd, etc.getInstance().getHideSeed() == true ? 0 : var3.m(), var3.r().q(), var2.c.a(), (byte) var3.y.h, (byte) var3.v, (byte) var3.c, (byte) this.e.h.k())));
// CanaryMod - if seed is hidden send 0 instead.
var5.b((OPacket) (new OPacket1Login("", var2.bd, var3.s().p(), var2.c.a(), var3.t.g, (byte) var3.q, (byte) var3.y(), (byte) this.e.h.k())));
var5.b((OPacket) (new OPacket6SpawnPosition(var4.a, var4.b, var4.c)));
this.e.h.a(var2, var3);
// CanaryMod - onPlayerConnect Hook
@@ -121,24 +121,26 @@ public void b(OPacket1Login var1) {
var2.getPlayer().toggleMute();
}
// CanaryMod END


this.e.h.a(var2, var3);
this.e.h.a((OPacket) (new OPacket3Chat("\u00a7e" + var2.v + " joined the game.")));
this.e.h.c(var2);
var5.a(var2.bm, var2.bn, var2.bo, var2.bs, var2.bt);
this.e.c.a(var5);
var5.b((OPacket) (new OPacket4UpdateTime(var3.n())));
var5.b((OPacket) (new OPacket4UpdateTime(var3.o())));

// CanaryMod - enable/disable potion effects on login
// CanaryMod - enable/disable potion effects on login
if (hookResult.applyPotionsEffects()) {
Iterator var6 = var2.aD().iterator();
Iterator var6 = var2.aL().iterator();

while (var6.hasNext()) {
OPotionEffect var7 = (OPotionEffect) var6.next();
OPotionEffect var7 = (OPotionEffect) var6.next();

var5.b((OPacket) (new OPacket41EntityEffect(var2.bd, var7)));
}
var5.b((OPacket) (new OPacket41EntityEffect(var2.bd, var7)));
}
}

var2.v();
var2.x();
}

this.c = true;
@@ -150,15 +152,15 @@ public void a(String var1, Object[] var2) {
}

public void a(OPacket254ServerPing var1) {
if (this.b.f() == null) {
if (this.b.f() == null) {
return;
} // CanaryMod - Fix if we don't have a socket, don't do anything
try {
String var2 = this.e.s + "\u00a7" + this.e.h.j() + "\u00a7" + this.e.h.k();

this.b.a((OPacket) (new OPacket255KickDisconnect(var2)));
// CanaryMod swapped lines below. The network connection should be terminated AFTER removing the socket from the connection list.
this.e.c.a(this.b.f());
// CanaryMod swapped lines below. The network connection should be terminated AFTER removing the socket from the connection list.
this.e.c.a(this.b.f());
this.b.d();
this.c = true;
} catch (Exception var3) {