orebfuscator/java/Orebfuscator/Orebfuscator.java
2015-01-28 23:18:39 +07:00

90 lines
2.5 KiB
Java

package Orebfuscator;
import java.util.HashSet;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.NetHandlerPlayServer;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.ReflectionHelper;
@Mod(modid = Orebfuscator.MODID, version = Orebfuscator.VERSION, acceptableRemoteVersions = "*")
public class Orebfuscator
{
public static final String MODID = "Orebfuscator";
public static final String VERSION = "0.1";
@EventHandler
public void init(FMLInitializationEvent event)
{
}
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
FMLCommonHandler.instance().bus().register(this);
}
@SubscribeEvent
public void onPlayerLogged(PlayerEvent.PlayerLoggedInEvent event)
{
PlayerInjector.hookPlayer((EntityPlayerMP)event.player);
}
@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event)
{
PlayerInjector.cleanupPlayer((EntityPlayerMP) event.player);
}
@SubscribeEvent
public void onClientConnect(FMLNetworkEvent.ServerConnectionFromClientEvent event)
{
/*
NetHandlerPlayServer handler = (NetHandlerPlayServer)event.handler;
PlayerInjector.hookPlayer(handler.playerEntity, handler.netManager);
*/
}
private static HashSet<Integer> forcedTransparentBlocks = new HashSet<Integer>();
private static boolean[] TransparentBlocks = new boolean[4096];
private static boolean TransparentCached = false;
public static boolean isBlockTransparent(int id)
{
if (id < 0)
return true;
if (!TransparentCached)
{
// Generate TransparentBlocks by reading them from Minecraft
for (int i = 0; i < TransparentBlocks.length; i++) {
if (forcedTransparentBlocks.contains(i))
{
TransparentBlocks[i] = true;
}
else
{
Block block = Block.getBlockById(i);
if (block == null)
{
TransparentBlocks[i] = true;
}
else
{
TransparentBlocks[i] = !block.isNormalCube();
}
}
}
TransparentCached = true;
}
return TransparentBlocks[id];
}
}