Skip to content

Instantly share code, notes, and snippets.

@Jezza
Created May 7, 2014 11:44
Show Gist options
  • Select an option

  • Save Jezza/89c006ec71262f60bac4 to your computer and use it in GitHub Desktop.

Select an option

Save Jezza/89c006ec71262f60bac4 to your computer and use it in GitHub Desktop.
package me.jezzadabomb.es2.common.core;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import me.jezzadabomb.es2.common.core.utils.coordset.CoordSet;
import me.jezzadabomb.es2.common.lib.Reference;
public class IPylonRegistry {
private static HashMap<Integer, HashSet<CoordSetTier>> pylonMap = new HashMap<Integer, HashSet<CoordSetTier>>();
public static boolean registerPylon(World world, CoordSet coordSet, int tier) {
int dimID = world.provider.dimensionId;
confirm(dimID);
pylonMap.get(dimID).add(new CoordSetTier(coordSet, tier));
return pylonMap.get(dimID).contains(coordSet);
}
public static boolean registerPylon(World world, int x, int y, int z, int tier) {
return registerPylon(world, new CoordSet(x, y, z), tier);
}
public static boolean removePylon(World world, CoordSet coordSet) {
int dimID = world.provider.dimensionId;
confirm(dimID);
pylonMap.get(dimID).remove(coordSet);
return !pylonMap.get(dimID).contains(coordSet);
}
public static boolean removePylon(World world, int x, int y, int z) {
return removePylon(world, new CoordSet(x, y, z));
}
public static boolean isPowered(World world, CoordSet coordSet) {
int dimID = world.provider.dimensionId;
confirm(dimID);
HashSet<CoordSetTier> tempSet = new HashSet<CoordSetTier>();
tempSet.addAll(pylonMap.get(dimID));
for (CoordSetTier coordSetTier : tempSet)
if (coordSetTier.coordSet.withinRangeDEBUG(coordSet, coordSetTier.tier))
return true;
return false;
}
public static boolean isPowered(World world, int x, int y, int z) {
return isPowered(world, new CoordSet(x, y, z));
}
private static void confirm(int dimID) {
if (!pylonMap.containsKey(dimID))
pylonMap.put(dimID, new HashSet<CoordSetTier>());
}
private static class CoordSetTier {
private CoordSet coordSet;
private int tier;
private CoordSetTier(CoordSet coordSet, int tier) {
this.coordSet = coordSet;
this.tier = tier;
}
@Override
public boolean equals(Object obj) {
return coordSet.equals(obj);
}
@Override
public int hashCode() {
return coordSet.hashCode();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment