Computer Science Student

I am a Junior at the University of Maryland, Baltimore County and I am studying computer science. I currently hold an Associate’s Degree in Computer Science and I am working towards a Bachelor’s Degree. When I was 13 I started a registered server hosting and software development business called Executive Hosting. I ran the business for five years throughout high school and part of college. I am also a member of the UMBC cyber defense club where I attend weekly technical presentations and CTF events when available.

Events, and Hackathons

I attended and participated in the following events.

Projects

Listed below are a variety of projects I have worked on over the years and some of which are related to the game “Minecraft” which I used as a base for many of my projects in the last 5 years.

Magic Classes


Magic Classes is a server plugin I developed which allows players to choose a special class that comes with a set of abilities. Below are some featured code snippets and demonstrations for some of these abilities.

Explosion Ability

//The ability being used is the explosion ability
if(ability.getId() == Abilities.EXPLOSION.getID()){    
    //Returns the block the player is looking at within range of 32
    Block block = player.getTargetBlock(null, 32);     
        if(block == null){             
            //Send player message and return if no block is found
            C.sendFormat(player, "&cCannot create an explosion there.");
            return;
        }
    //Create an explosion at the location of the block
    block.getWorld().createExplosion(block.getX(), block.getY(), block.getZ(), 5F, false, false);
}

Explosion

Customization

This plugin organized all of these abilities and allowed for lots of customization which is saved and loaded from disk. The .gif below demonstrates switching between using a wand and activating it with a sword.

Android Development


At HackUMBC 2017 I worked with a small group of students to devlop a solution to the McCormick’s sponsor challenge. McCormick challenge was to create “an innovative solution that provides value to consumers and stimulates interest in McCormick brands” with emphasis on using their recipe database API. I created the “Get Recipe” page which pulled JSON data from the API, filtered it based on the spices selected by the user, then displayed the current recipe details on an elegant looking page.

Craft of Clans


CraftOfClansLogo

Craft of Clans is the biggest project I have ever worked on. Based on the popular mobile game Clash of Clans, this massive Minecraft mini-game included almost every feature of the original game and contained ~19,100 lines of code.

CraftOfClans CraftOfClansLines

Map Generation Algorithm

The algorithm below is used to generate the large plots and pathway between them which can be seen in the first couple frames of the .gif below. The .gif also demonstrates upgrading a structure and purchasing resources with a premium (paid) currency.

public short[][] generateExtBlockSections(World w, Random r, int cx, int cz, BiomeGrid biomeGrid){
	short[][] result = new short[w.getMaxHeight() / 16][];
	int xx = cx << 4;
	int zz = cz << 4;
	int valx;
	int valz;

	for(int x = 0; x < 16; x++){
		valx = x + xx;
		for(int y = 1; y < 16; y++){
			for (int z = 0; z < 16; z++){
				valz = z + zz;
				biomeGrid.setBiome(x, z, Biome.JUNGLE);
				if(y == 1){
					setBlock(result, x, y, z, (short) 7);
				}else if(y <= 4 && valx >= 0 && valz >= 0){
					int x1 = valx % 153;
					int z1 = valz % 153;
					if(((x1 <= 137) && (z1 <= 137))){
						if((x1 > 8 && x1 < 129) && (z1 > 8 && z1 < 129)){
							setBlock(result, x, y, z, (short) 159);
						}else{
							setBlock(result, x, y, z, (short) 2);
						}
					}else{
						setBlock(result, x, y, z, (short) 1);
					}
				}else{
					setBlock(result, x, y, z, (short) 1);

				}
			}
		}
	}
	return result;
}

Minigames


This includes a series of much smaller mini-games together in one plugin. The following mini-game is where players build shelters from the falling lava to survive the longes. Below is the code used to remove the glass to start the game.

if(y1 == y2){
	if(x1 < x2){
		for(int x = x1; x <= x2; x++){
			if(z1 < z2){
				for(int z = z1; z <= z2; z++){
					Location loc = new Location(Bukkit.getWorld(wrld), x, y1, z);
					loc.getBlock().setType(Material.AIR);
					loc = null;
				}
			}else{
				for(int z = z2; z <= z1; z++){
					Location loc = new Location(Bukkit.getWorld(wrld), x, y1, z);
					loc.getBlock().setType(Material.AIR);
					loc = null;
				}
			}
		}
	}else{
		for(int x = x2; x <= x1; x++){
			if(z1 < z2){
				for(int z = z1; z <= z2; z++){
					Location loc = new Location(Bukkit.getWorld(wrld), x, y1, z);
					loc.getBlock().setType(Material.AIR);
					loc = null;
				}
			}else{
				for(int z = z2; z <= z1; z++){
					Location loc = new Location(Bukkit.getWorld(wrld), x, y1, z);
					loc.getBlock().setType(Material.AIR);
					loc = null;
				}
			}
		}
	}
}

Minevey


Minevey

Minevey was a project that I helped to develop which gave players the ability to earn credits to purchase in-game items by completing surveys online instead of directly paying. Part of the project involved developing a server-side plugin to receive connections from the web server and distribute the purchased items to the players. The research phase involved decompiling several similar Java plugins and interpreting the reconstructed source code.

Minevey

Much More

The projects listed above are only the largest and most interesting projects that best represented my skill and knowledge. There is an additional 50-60 plugins of a smaller magnitude not listed here which were usually commissioned by others or made to further modify a server I was running at the time.

Contact