public override void use(ItemInInventory item) { base.use(item); MainForm instance = MainForm.getInstance(); Point cursorLocation = MainForm.getInstance().getCursorBlockLocation(); if (cursorLocation.X < instance.world.blocks.Count() && cursorLocation.Y < instance.world.blocks[5].Count()) { if (instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y) != null && instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).prototype.breakableBy.Equals(toolType)) { if (Util.distanceBetween(MainForm.getInstance().getCursorWorldLocation(), MainForm.getInstance().player.location) > 200) { return; } if (instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).prototype.hardness > instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).brokenness) { instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).brokenness += type.hardness; Particle.spawnParticlesAround(Util.addPoints(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, new Point(10, 10)), instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype.color, 1); return; } instance.player.inventory.addItem(instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype, 1); bool shouldDoFullUpdate = false; shouldDoFullUpdate = true; instance.world.blocks[cursorLocation.X][cursorLocation.Y].prepareForRemoval(); DamageIndicator indicator = new DamageIndicator(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, instance.world.blocks[cursorLocation.X][cursorLocation.Y].getName()); //DamageIndicator indicator2 = new DamageIndicator(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, "■", Color.Brown); Particle.spawnParticlesAround(Util.addPoints(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, new Point(10, 10)), instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype.color, 30); instance.world.blocks[cursorLocation.X][cursorLocation.Y] = Block.createNewBlock(BlockPrototype.air, new Point(cursorLocation.X * 20, cursorLocation.Y * 20)); if (shouldDoFullUpdate) { LightingEngine.doFullLightingUpdate(false); } else { instance.world.updateSkyLightForColumn(cursorLocation.X); } } } }
public virtual void use(ItemInInventory item) { if (!(item.item is BlockPrototype)) { throw new ArgumentException("The provided item is not a BlockPrototype."); } BlockPrototype b = (BlockPrototype)item.item; /*Point p = MainForm.getInstance().getCursorBlockLocation(); * if (MainForm.getInstance().world.blocks[p.X][p.Y].prototype == BlockPrototype.air) { * Point pos = MainForm.getInstance().getTotalCursorPos(); * MainForm.getInstance().world.blocks[p.X][p.Y] = Block.createNewBlock(this, pos); * item.useUp(1); * }*/ Player player = MainForm.getInstance().player; MainForm mainform = MainForm.getInstance(); World w = mainform.world; Point cursorBlock = mainform.getCursorBlockLocation();//new Point(mainform.player.blockX, mainform.player.blockY);//getCursorBlockLocation(); Block block = w.getBlockAt(cursorBlock.X, cursorBlock.Y); if (block == null) { return; } if (Util.distanceBetween(block.location, mainform.player.location) > 200) { return; } if (block.prototype.id == "OpenTerraria:Air") { w.blocks[cursorBlock.X][cursorBlock.Y].prepareForRemoval(); w.blocks[cursorBlock.X][cursorBlock.Y] = Block.createNewBlock(this, new Point(cursorBlock.X * 20, cursorBlock.Y * 20)); w.updateSkyLightForColumn(cursorBlock.X); } Inventory inventory = MainForm.getInstance().getParentInventory(item); inventory.removeAmount(this, 1); LightingEngine.doFullLightingUpdate(false); }