From b8b41aa5846dae5a9bbf4fee82020f1d9e2b2a48 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 12 Aug 2024 17:08:54 -0400 Subject: Initial commit --- src/main/java/fyresmodjam/ModjamMod.java | 626 +++++++++++++++++++++++++++++++ 1 file changed, 626 insertions(+) create mode 100644 src/main/java/fyresmodjam/ModjamMod.java (limited to 'src/main/java/fyresmodjam/ModjamMod.java') 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 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 -- cgit v1.2.3