180 lines
No EOL
6.3 KiB
Java
180 lines
No EOL
6.3 KiB
Java
package StevenDimDoors.mod_pocketDim;
|
|
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
|
|
import StevenDimDoors.mod_pocketDim.helpers.dimHelper;
|
|
import StevenDimDoors.mod_pocketDim.items.ItemRiftBlade;
|
|
import StevenDimDoors.mod_pocketDim.world.LimboGenerator;
|
|
import StevenDimDoors.mod_pocketDim.world.LimboProvider;
|
|
import StevenDimDoors.mod_pocketDim.world.PocketGenerator;
|
|
import StevenDimDoors.mod_pocketDim.world.pocketProvider;
|
|
|
|
import cpw.mods.fml.client.FMLClientHandler;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.entity.EntityLiving;
|
|
import net.minecraft.entity.monster.EntityEnderman;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
import net.minecraft.item.ItemBlock;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.util.EnumMovingObjectType;
|
|
import net.minecraft.util.MathHelper;
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
import net.minecraft.util.Vec3;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldServer;
|
|
import net.minecraftforge.client.event.sound.SoundLoadEvent;
|
|
import net.minecraftforge.event.Event.Result;
|
|
import net.minecraftforge.event.ForgeSubscribe;
|
|
import net.minecraftforge.event.entity.living.LivingFallEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerDropsEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
|
|
import net.minecraftforge.event.world.WorldEvent;
|
|
|
|
public class EventHookContainer
|
|
{
|
|
private static Random rand = new Random();
|
|
private static DDProperties properties = null;
|
|
|
|
public EventHookContainer()
|
|
{
|
|
if (properties == null)
|
|
properties = DDProperties.instance();
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
@ForgeSubscribe
|
|
public void onSoundLoad(SoundLoadEvent event)
|
|
{
|
|
File dataDir = Minecraft.getMinecraft().mcDataDir;
|
|
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/monk.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/monk.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/crack.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/crack.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/tearing.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/tearing.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/rift.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/rift.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftStart.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftStart.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftEnd.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftEnd.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftClose.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftClose.ogg")));
|
|
event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftDoor.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftDoor.ogg")));
|
|
|
|
}
|
|
|
|
@ForgeSubscribe
|
|
public void onWorldLoad(WorldEvent.Load event)
|
|
{
|
|
if(!mod_pocketDim.hasInitDims&&event.world.provider.dimensionId==0&&!event.world.isRemote)
|
|
{
|
|
System.out.println("Registering Pocket Dims");
|
|
mod_pocketDim.hasInitDims=true;
|
|
dimHelper.instance.unregsisterDims();
|
|
dimHelper.dimList.clear();
|
|
dimHelper.instance.interDimLinkList.clear();
|
|
dimHelper.instance.initPockets();
|
|
}
|
|
for(Integer ids : dimHelper.getIDs())
|
|
{
|
|
World world = dimHelper.getWorld(ids);
|
|
int linkCount=0;
|
|
|
|
if(dimHelper.dimList.containsKey(world.provider.dimensionId))
|
|
{
|
|
//TODO added temporary Try/catch block to prevent a crash here, getLinksInDim needs to be looked at
|
|
try
|
|
{
|
|
for(LinkData link:dimHelper.dimList.get(world.provider.dimensionId).getLinksInDim())
|
|
{
|
|
if(linkCount>100)
|
|
{
|
|
break;
|
|
}
|
|
linkCount++;
|
|
int blocktoReplace = world.getBlockId(link.locXCoord, link.locYCoord, link.locZCoord);
|
|
if(!mod_pocketDim.blocksImmuneToRift.contains(blocktoReplace))
|
|
{
|
|
dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID);
|
|
}
|
|
}
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@ForgeSubscribe
|
|
public void EntityJoinWorldEvent(net.minecraftforge.event.entity.EntityJoinWorldEvent event)
|
|
{
|
|
if(event.entity instanceof EntityPlayer)
|
|
{
|
|
// System.out.println(event.entity.worldObj.provider.dimensionId);
|
|
// PacketDispatcher.sendPacketToPlayer(DimUpdatePacket.sendPacket(event.world.provider.dimensionId,1),(Player) event.entity);
|
|
}
|
|
}
|
|
@ForgeSubscribe
|
|
public void onPlayerFall(LivingFallEvent event)
|
|
{
|
|
event.setCanceled(event.entity.worldObj.provider.dimensionId==properties.LimboDimensionID);
|
|
}
|
|
|
|
@ForgeSubscribe
|
|
public void onPlayerInteract(PlayerInteractEvent event)
|
|
{
|
|
if(event.entityPlayer.worldObj.provider.dimensionId==properties.LimboDimensionID&&event.action==PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK)
|
|
{
|
|
int x = event.x;
|
|
int y = event.y;
|
|
int z = event.z;
|
|
|
|
if(event.entityPlayer.getHeldItem()!=null)
|
|
{
|
|
if(event.entityPlayer.getHeldItem().getItem() instanceof ItemBlock)
|
|
{
|
|
if(event.entityPlayer instanceof EntityPlayerMP)
|
|
{
|
|
Point3D point = new Point3D(x,y,z);
|
|
dimHelper.blocksToDecay.add(point);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@ForgeSubscribe
|
|
public void onPlayerDrops(PlayerDropsEvent event)
|
|
{
|
|
mod_pocketDim.limboSpawnInventory.put(event.entityPlayer.username, event.drops);
|
|
}
|
|
|
|
@ForgeSubscribe
|
|
public void onWorldunload(WorldEvent.Unload event)
|
|
{
|
|
|
|
|
|
}
|
|
|
|
@ForgeSubscribe
|
|
public void onWorldsave(WorldEvent.Save event)
|
|
{
|
|
|
|
if(mod_pocketDim.hasInitDims&&event.world.provider.dimensionId==0)
|
|
{
|
|
dimHelper.instance.save();
|
|
}
|
|
}
|
|
} |