summaryrefslogtreecommitdiff
path: root/src/main/java/fyresmodjam/ModjamMod.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/fyresmodjam/ModjamMod.java')
-rw-r--r--src/main/java/fyresmodjam/ModjamMod.java626
1 files changed, 626 insertions, 0 deletions
diff --git a/src/main/java/fyresmodjam/ModjamMod.java b/src/main/java/fyresmodjam/ModjamMod.java
new file mode 100644
index 0000000..4e9c50f
--- /dev/null
+++ b/src/main/java/fyresmodjam/ModjamMod.java
@@ -0,0 +1,626 @@
+package fyresmodjam;
+
+import java.io.File;
+import java.util.EnumMap;
+import java.util.Random;
+
+import org.lwjgl.input.Keyboard;
+
+import fyresmodjam.blessings.Blessing;
+import fyresmodjam.blessings.BlessingUtils;
+import fyresmodjam.commands.CommandCraftingStats;
+import fyresmodjam.commands.CommandCurrentBlessing;
+import fyresmodjam.commands.CommandCurrentDisadvantage;
+import fyresmodjam.commands.CommandCurrentWorldTask;
+import fyresmodjam.commands.CommandKillStats;
+import fyresmodjam.commands.CommandWeaponStats;
+import fyresmodjam.handlers.CommonTickHandler;
+import fyresmodjam.handlers.GUIHandler;
+import fyresmodjam.handlers.NewPacketHandler;
+import fyresmodjam.handlers.NewPacketHandler.ChannelHandler;
+
+import fyresmodjam.misc.ArmorStatTracker;
+import fyresmodjam.misc.CreativeTabModjamMod;
+import fyresmodjam.misc.EntityStat;
+import fyresmodjam.misc.EntityStatHelper;
+import fyresmodjam.misc.EntityStatTracker;
+import fyresmodjam.misc.ItemStatHelper;
+import fyresmodjam.misc.ItemStatTracker;
+import fyresmodjam.misc.WeaponRankStat;
+import fyresmodjam.worldgen.FyresWorldData;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.command.CommandHandler;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.monster.EntityMob;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemArmor;
+import net.minecraft.item.ItemAxe;
+import net.minecraft.item.ItemBow;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemSword;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.event.AnvilUpdateEvent;
+import net.minecraftforge.event.entity.player.PlayerEvent;
+import net.minecraftforge.fml.common.FMLCommonHandler;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.common.Mod.EventHandler;
+import net.minecraftforge.fml.common.Mod.Instance;
+import net.minecraftforge.fml.common.SidedProxy;
+import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent;
+import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
+import net.minecraftforge.fml.common.network.FMLEmbeddedChannel;
+import net.minecraftforge.fml.common.network.NetworkRegistry;
+import net.minecraftforge.fml.common.registry.EntityRegistry;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.fml.relauncher.Side;
+
+@Mod(modid = "fyresmodjam", name = "Fyres ModJam Mod", version = "0.0.3d")
+public class ModjamMod extends CommandHandler {
+ @SidedProxy(clientSide = "fyresmodjam.ClientProxy", serverSide = "fyresmodjam.CommonProxy")
+ public static CommonProxy proxy;
+
+ @Instance("fyresmodjam")
+ public static ModjamMod instance;
+
+ public static EnumMap<Side, FMLEmbeddedChannel> channels = NetworkRegistry.INSTANCE
+ .newChannel("YWDMod", new ChannelHandler());
+
+ public static Random r = new Random();
+
+ public static int achievementID = 2500,
+ examineKey = Keyboard.KEY_X,
+ blessingKey = Keyboard.KEY_K;
+ public static int pillarGenChance = 75,
+ maxPillarsPerChunk = 3, towerGenChance = 225,
+ trapGenChance = 300, mushroomReplaceChance = 15;
+ public static boolean pillarGlow = true, spawnTraps = true,
+ spawnTowers = true, spawnRandomPillars = true,
+ disableDisadvantages = false,
+ versionChecking = true,
+ trapsBelowGroundOnly = false,
+ showAllPillarsInCreative = false,
+ enableWeaponKillStats = true,
+ enableMobKillStats = true,
+ enableCraftingStats = true;
+
+ public static CreativeTabs tabModjamMod = new CreativeTabModjamMod(
+ CreativeTabs.getNextID(),
+ "The \"You Will Die\" Mod");
+
+ public static Block blockPillar;
+ public static Block blockTrap;
+ public static Block mysteryMushroomBlock;
+
+ public static Item itemPillar;
+ public static Item mysteryPotion;
+ public static Item itemTrap;
+ public static Item mysteryMushroom;
+ public static Item sceptre;
+
+ public static Item crystalItem;
+ public static Item scroll;
+
+ public static Block crystal;
+ public static Block crystalStand;
+/*
+ public static Achievement startTheGame;
+ public static Achievement losingIsFun;
+ public static Achievement whoops;
+
+ public static Achievement theHunt;
+ public static Achievement jackOfAllTrades;
+
+ public static AchievementPage page;
+
+ */
+ public static String version = "v0.0.3e";
+ public static String foundVersion = "v0.0.3e";
+ public static boolean newerVersion = false;
+
+ public static String configPath = null;
+
+ @EventHandler
+ public void preInit(FMLPreInitializationEvent event) {
+ File old = new File(event.getSuggestedConfigurationFile()
+ .getAbsolutePath()
+ .replace("fyresmodjam", "YouWillDieMod"));
+
+ if (old.exists()) {
+ old.delete();
+ System.out.println(true);
+ }
+
+ configPath = event.getSuggestedConfigurationFile()
+ .getAbsolutePath().replace("fyresmodjam",
+ "TheYouWillDieMod");
+
+ Configuration config = new Configuration(
+ new File(configPath));
+
+ config.load();
+
+ proxy.loadFromConfig(config);
+
+ config.save();
+
+ // Item and Block loading
+
+ /*
+ blockPillar = new BlockPillar().setBlockUnbreakable()
+ .setResistance(6000000.0F);
+ blockTrap = new BlockTrap().setBlockUnbreakable()
+ .setResistance(6000000.0F);
+ mysteryMushroomBlock = new BlockMysteryMushroom()
+ .setHardness(0.0F)
+// .setStepSound(Block.soundTypeGrass)
+ .setLightLevel(0.125F)
+ .setRegistryName("mysteryMushroomBlock");
+
+ itemPillar = new ItemPillar()
+ .setUnlocalizedName("blockPillar");
+ GameRegistry.registerItem(itemPillar, "itemPillar");
+
+ mysteryPotion = new ItemMysteryPotion()
+ .setUnlocalizedName("mysteryPotion")
+ .setCreativeTab(CreativeTabs.BREWING);
+ GameRegistry.registerItem(mysteryPotion, "mysteryPotion");
+
+ itemTrap = new ItemTrap().setUnlocalizedName("itemTrap")
+ .setCreativeTab(CreativeTabs.REDSTONE);
+ GameRegistry.registerItem(itemTrap, "itemTrap");
+
+ mysteryMushroom = new ItemMysteryMushroom()
+ .setUnlocalizedName("mysteryMushroom")
+ .setCreativeTab(CreativeTabs.BREWING);
+ GameRegistry.registerItem(mysteryMushroom,
+ "mysteryMushroom");
+
+ sceptre = new ItemObsidianSceptre()
+ .setUnlocalizedName("sceptre")
+ .setCreativeTab(CreativeTabs.TOOLS)
+ .setFull3D();
+ GameRegistry.registerItem(sceptre, "sceptre");
+
+ GameRegistry.registerBlock(blockPillar, "blockPillar");
+ GameRegistry.registerTileEntity(TileEntityPillar.class,
+ "Pillar Tile Entity");
+
+ GameRegistry.registerBlock(blockTrap, "blockTrap");
+ GameRegistry.registerTileEntity(TileEntityTrap.class,
+ "Trap Entity");
+
+ GameRegistry.registerBlock(mysteryMushroomBlock,
+ "mysteryMushroomBlock");
+
+ */
+
+ /*
+ startTheGame = getNewAchievement(achievementID, 0, 0,
+ new ItemStack(Items.iron_sword, 1),
+ "startTheGame", "You Will Die",
+ "Join a world with this mod installed",
+ null, true);
+ losingIsFun = getNewAchievement(achievementID + 1, -2, 0,
+ new ItemStack(itemTrap, 1), "losingIsFun",
+ "Losing Is Fun", "Experience \"fun\"",
+ startTheGame, false);
+ whoops = getNewAchievement(achievementID + 2, 2, 0,
+ new ItemStack(itemTrap, 1, 1), "whoops",
+ "Whoops", "Fail to disarm a trap",
+ startTheGame, false);
+
+ theHunt = getNewAchievement(achievementID + 3, 0, -2,
+ new ItemStack(Items.bow, 1), "theHunt",
+ "The Hunt",
+ "Become a competent slayer of 5 or more different creatures",
+ startTheGame, false);
+ jackOfAllTrades = getNewAchievement(achievementID + 4, 0,
+ 2, new ItemStack(Blocks.crafting_table, 1),
+ "jackOfAllTrades", "Jack of All Trades",
+ "Become a novice user of at least 10 different weapons",
+ startTheGame, false);
+
+ page = new AchievementPage("The \"You Will Die\" Mod",
+ startTheGame, losingIsFun, whoops, theHunt,
+ jackOfAllTrades);
+
+ AchievementPage.registerAchievementPage(page);
+ */
+ }
+
+ @EventHandler
+ public void init(FMLInitializationEvent event) {
+
+ // Registering
+
+ CommonTickHandler commonHandler = new CommonTickHandler();
+ FMLCommonHandler.instance().bus().register(commonHandler);
+
+ MinecraftForge.EVENT_BUS.register(this);
+ FMLCommonHandler.instance().bus().register(this);
+
+ new ItemStatHelper().register();
+ new EntityStatHelper().register();
+
+ NetworkRegistry.INSTANCE.registerGuiHandler(this,
+ new GUIHandler());
+
+ /*
+ GameRegistry.registerWorldGenerator(new PillarGen(), 0);
+
+ GameRegistry.registerWorldGenerator(
+ new WorldGenTrapsTowersAndMore(), 0);
+
+ for (int i = 0; i < 3; i++) {
+ GameRegistry.registerWorldGenerator(
+ new WorldGenMoreDungeons(), 0);
+ }
+ */
+ //EntityRegistry.registerGlobalEntityID(
+ // EntityMysteryPotion.class, "MysteryPotion",
+ // EntityRegistry.findGlobalUniqueEntityId());
+
+ // TODO ensure this is right
+ ResourceLocation loc = new ResourceLocation("MysteryPotion");
+ /*
+ EntityRegistry.registerModEntity(loc, EntityMysteryPotion.class,
+ "MysteryPotion", 0, instance, 128, 1,
+ true);
+ */
+ // TODO figure out how to do this
+ /*
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(itemTrap, 1, 0),
+ new Object[] {
+ Blocks.heavy_weighted_pressure_plate,
+ Blocks.cactus
+ });
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(itemTrap, 1, 1),
+ new Object[] {
+ Blocks.heavy_weighted_pressure_plate,
+ Blocks.torch
+ });
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(itemTrap, 1, 2),
+ new Object[] {
+ Blocks.heavy_weighted_pressure_plate,
+ new ItemStack(Items.dye, 1,
+ 0)
+ });
+
+ for (int i = 0; i < 13; i++) {
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(mysteryPotion, 1,
+ i + 13),
+ new Object[] {
+ new ItemStack(mysteryPotion,
+ 1,
+ i),
+ Items.gunpowder
+ });
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(mysteryPotion, 1, i),
+ new Object[] {
+ new ItemStack(Items.potionitem,
+ 1,
+ 0),
+ Items.leather,
+ new ItemStack(mysteryMushroom,
+ 1,
+ i)
+ });
+ }
+
+ GameRegistry.addRecipe(new ItemStack(sceptre, 1, 0), "X",
+ "Y", "X", 'X', Blocks.obsidian, 'Y',
+ Blocks.end_stone);
+ GameRegistry.addShapelessRecipe(
+ new ItemStack(sceptre, 1, 1),
+ new Object[] {
+ new ItemStack(sceptre, 1,
+ 0),
+ Items.ender_pearl,
+ Items.book
+ });
+ */
+ proxy.register();
+
+ // Entity Trackers
+ EntityStatTracker playerTracker = new EntityStatTracker(
+ EntityPlayer.class, true);
+
+ playerTracker.addStat(new EntityStat("BlessingCooldown",
+ "" + 0));
+ playerTracker.addStat(
+ new EntityStat("BlessingCounter", "" + 0));
+
+ EntityStatTracker mobTracker = new EntityStatTracker(
+ EntityMob.class, true);
+
+ mobTracker.addStat(new EntityLevelStat("Level", ""));
+
+ EntityStatHelper.addStatTracker(mobTracker);
+
+ // Item Trackers
+
+ ItemStatTracker weaponTracker = new ItemStatTracker(
+ new Class[] {
+ ItemSword.class,
+ ItemAxe.class,
+ ItemBow.class
+ }, true);
+
+ weaponTracker.addStat(new WeaponRankStat("Rank", ""));
+
+ ItemStatHelper.addStatTracker(weaponTracker);
+
+ ItemStatTracker armorTracker = new ItemStatTracker(
+ new Class[] {
+ ItemArmor.class
+ }, true);
+
+ armorTracker.addStat(new ArmorStatTracker("Rank", ""));
+
+ ItemStatHelper.addStatTracker(armorTracker);
+
+ // Other
+
+ for (int i = 0; i < 13; i++) {
+ /*
+ ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST)
+ .addItem(new WeightedRandomChestContent(
+ mysteryPotion, i,
+ 1, 3, 2));
+ WorldGenTrapsTowersAndMore.chestGenInfo.addItem(
+ new WeightedRandomChestContent(
+ mysteryPotion, i,
+ 1, 3, 2));
+ */
+ }
+ }
+
+ @EventHandler
+ public void postInit(FMLPostInitializationEvent event) {
+
+ }
+
+ @SubscribeEvent
+ public void onPlayerLogin(PlayerLoggedInEvent event) {
+ EntityPlayer player = event.player;
+
+ if (!player.world.isRemote) {
+ NewPacketHandler.UPDATE_WORLD_DATA.sendToPlayer(
+ player,
+ CommonTickHandler.worldData.potionValues,
+ CommonTickHandler.worldData.potionDurations,
+ CommonTickHandler.worldData
+ .getDisadvantage(),
+ CommonTickHandler.worldData.currentTask,
+ CommonTickHandler.worldData.currentTaskID,
+ CommonTickHandler.worldData.currentTaskAmount,
+ CommonTickHandler.worldData.progress,
+ CommonTickHandler.worldData.tasksCompleted,
+ CommonTickHandler.worldData.enderDragonKilled,
+ ModjamMod.spawnTraps,
+ CommonTickHandler.worldData.rewardLevels,
+ CommonTickHandler.worldData.mushroomColors);
+
+ String name = CommonTickHandler.worldData.currentTask
+ .equals("Kill") ? FyresWorldData.validMobNames[CommonTickHandler.worldData.currentTaskID]
+ : FyresWorldData.validItems[CommonTickHandler.worldData.currentTaskID]
+ .getDisplayName();
+
+ if (CommonTickHandler.worldData.currentTaskAmount > 1) {
+ if (name.contains("Block")) {
+ name = name.replace("Block",
+ "Blocks")
+ .replace("block",
+ "blocks");
+ } else {
+ name += "s";
+ }
+ }
+
+ int index = -1;
+ for (int i = 0; i < FyresWorldData.validDisadvantages.length; i++) {
+ if (FyresWorldData.validDisadvantages[i]
+ .equals(CommonTickHandler.worldData
+ .getDisadvantage())) {
+ index = i;
+ break;
+ }
+ }
+
+ /*
+ * @TODO move disadvantages into a class
+ */
+ NewPacketHandler.SEND_MESSAGE.sendToPlayer(player,
+ "\u00A7eWorld disadvantage: "
+ + CommonTickHandler.worldData
+ .getDisadvantage()
+ + (index == -1 ? ""
+ : " (" + FyresWorldData.disadvantageDescriptions[index]
+ + ")"));
+
+ NewPacketHandler.SEND_MESSAGE.sendToPlayer(player,
+ "\u00A7eWorld goal: "
+ + CommonTickHandler.worldData.currentTask
+ + " "
+ + CommonTickHandler.worldData.currentTaskAmount
+ + " " + name
+ + ". ("
+ + CommonTickHandler.worldData.progress
+ + " "
+ + CommonTickHandler.worldData.currentTask
+ + "ed)");
+
+ if (!BlessingUtils.hasBlessing(player)) {
+ String selectedBlessing = BlessingUtils
+ .getPlayerBlessing();
+ Blessing blessing = BlessingUtils
+ .getBlessingInstance(
+ selectedBlessing);
+
+ player.getEntityData().setString(
+ "Blessing",
+ selectedBlessing);
+
+ NewPacketHandler.SEND_MESSAGE.sendToPlayer(
+ player,
+ "\u00A72You've been granted the "
+ + blessing.customName()
+ + ". (Use /currentBlessing to check effect)");
+ }
+
+ NewPacketHandler.UPDATE_BLESSING.sendToPlayer(
+ player,
+ player.getEntityData().getString(
+ "Blessing"));
+
+ if (EntityStatHelper.hasStat(player,
+ "BlessingCounter")) {
+ NewPacketHandler.UPDATE_STAT.sendToPlayer(
+ player, "BlessingCounter",
+ EntityStatHelper.getStat(
+ player,
+ "BlessingCounter"));
+ }
+
+ if (!player.getEntityData()
+ .hasKey("PotionKnowledge")) {
+ player.getEntityData().setIntArray(
+ "PotionKnowledge",
+ new int[] {
+ -1, -1, -1,
+ -1, -1, -1,
+ -1, -1, -1,
+ -1, -1, -1
+ });
+ }
+
+ NewPacketHandler.UPDATE_POTION_KNOWLEDGE
+ .sendToPlayer(player, player
+ .getEntityData()
+ .getIntArray("PotionKnowledge"));
+ }
+
+ if (versionChecking && newerVersion) {
+ // TODO see how chat works
+ //player.addChatComponentMessage(
+ // new ChatComponentTranslation(
+ // "fyresmodjam.newVersion"));
+ }
+
+ //player.triggerAchievement(startTheGame);
+ }
+
+ @SubscribeEvent
+ public void onPlayerChangedDimension(
+ PlayerChangedDimensionEvent event) {
+ EntityPlayer player = event.player;
+
+ NewPacketHandler.UPDATE_WORLD_DATA.sendToPlayer(player,
+ CommonTickHandler.worldData.potionValues,
+ CommonTickHandler.worldData.potionDurations,
+ CommonTickHandler.worldData
+ .getDisadvantage(),
+ CommonTickHandler.worldData.currentTask,
+ CommonTickHandler.worldData.currentTaskID,
+ CommonTickHandler.worldData.currentTaskAmount,
+ CommonTickHandler.worldData.progress,
+ CommonTickHandler.worldData.tasksCompleted,
+ CommonTickHandler.worldData.enderDragonKilled,
+ ModjamMod.spawnTraps,
+ CommonTickHandler.worldData.rewardLevels,
+ CommonTickHandler.worldData.mushroomColors);
+
+ NewPacketHandler.UPDATE_BLESSING.sendToPlayer(player,
+ BlessingUtils.getBlessing(player));
+
+ if (EntityStatHelper.hasStat(player, "BlessingCounter")) {
+ NewPacketHandler.UPDATE_STAT.sendToPlayer(player,
+ "BlessingCounter",
+ EntityStatHelper.getStat(player,
+ "BlessingCounter"));
+ }
+
+ if (!player.getEntityData().hasKey("PotionKnowledge")) {
+ player.getEntityData().setIntArray(
+ "PotionKnowledge", new int[] {
+ -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
+ -1, -1
+ });
+ }
+
+ NewPacketHandler.UPDATE_POTION_KNOWLEDGE.sendToPlayer(
+ player, player.getEntityData().getIntArray(
+ "PotionKnowledge"));
+ }
+
+ @SubscribeEvent
+ public void checkBreakSpeed(PlayerEvent.BreakSpeed event) {
+ if (event.getEntityPlayer() != null && BlessingUtils
+ .hasBlessing(event.getEntityPlayer())) {
+ BlessingUtils.getBlessingInstance(BlessingUtils
+ .getBlessing(event.getEntityPlayer()))
+ .checkBreakSpeed(event);
+ }
+ }
+
+ @EventHandler
+ public void serverStarting(FMLServerStartingEvent event) {
+ initCommands(event);
+ }
+
+ public void initCommands(FMLServerStartingEvent event) {
+ event.registerServerCommand(new CommandCurrentBlessing());
+ event.registerServerCommand(
+ new CommandCurrentDisadvantage());
+ event.registerServerCommand(new CommandCurrentWorldTask());
+ event.registerServerCommand(new CommandKillStats());
+ event.registerServerCommand(new CommandWeaponStats());
+ event.registerServerCommand(new CommandCraftingStats());
+ }
+
+ @Override
+ protected MinecraftServer getServer() {
+ // TODO is this right?
+ return Minecraft.getMinecraft().getIntegratedServer();
+ }
+
+ /*
+ @SuppressWarnings("deprecation")
+ public static Achievement getNewAchievement(int id, int x, int y,
+ ItemStack stack, String name, String displayName,
+ String desc, Achievement prereq,
+ boolean independent) {
+ Achievement achievement = new Achievement("YWD-" + id,
+ name, x, y, stack, prereq);
+ if (independent) {
+ achievement = achievement.initIndependentStat();
+ }
+ LanguageRegistry.instance().addStringLocalization(
+ "achievement." + name, "en_US",
+ displayName);
+ LanguageRegistry.instance().addStringLocalization(
+ "achievement." + name + ".desc", "en_US",
+ desc);
+ achievement.registerStat();
+ return achievement;
+ }
+ */
+} \ No newline at end of file