Compare commits

...

22 Commits

Author SHA1 Message Date
Electroblob 267fb2daf4 Cleanup 2018-04-07 22:50:08 +01:00
Electroblob b96526b284 Fix ice wraith not attacking 2018-04-07 22:49:44 +01:00
Electroblob e01b5c728c Flip the item on the arcane workbench the right way up 2018-04-07 22:48:10 +01:00
Electroblob 0cf1d74fd5 Fix buttons rendering incorrectly in wizard's handbook 2018-04-07 20:31:48 +01:00
Electroblob 8316dcad70 Change some advancement icon frames and add new background 2018-04-07 17:49:59 +01:00
Electroblob df1eb68f35 Remove last few harcoded mod ID strings 2018-04-07 12:47:18 +01:00
Electroblob 416868bafb More cleanup 2018-04-07 00:08:43 +01:00
Electroblob 0424e409fc Fix root advancement localisations and rename all advancement translation keys to bring them in line with everything else 2018-04-07 00:08:26 +01:00
Electroblob a5b38e8f83 Stop mana flask charging recipes appearing in recipe book; fixes #11 2018-04-06 23:52:30 +01:00
Electroblob 1e0613c949 Cleanup 2018-04-06 22:53:53 +01:00
Electroblob d33290d890 Fix various warnings (deprecated method usage, etc.) 2018-04-06 22:53:41 +01:00
Electroblob e22d428016 Update version number 2018-04-06 22:51:07 +01:00
Electroblob baa407ce61 Merge pull request #10 from 12foo/1.12.2-corail
1.12 port update
2018-03-18 16:27:49 +00:00
Philipp Rustemeier ea11910af2 Post-merge fixups
In particular, act as if a spellbook has been discovered during tooltip
generation if player is null. This allows JEI to index all the spell
names.
2018-03-16 18:09:40 +01:00
Philipp Rustemeier 873b5a4f4d Fix Arcane Workbench GUI
- Explicitly render inventory mouseover tooltips (this is apparently required now for them to appear)
- When a wand is in, report the actual new xSize to Minecraft so things like JEI don't overdraw the tooltip on the right
2018-03-16 18:08:55 +01:00
Philipp Rustemeier 6890ae765a Fix JSON recipe crafting with ore dictionary
In current Forge, you can use OD entries in normal crafting recipes; using the special forge crafting recipe types is no longer necessary.
2018-03-16 18:08:55 +01:00
Philipp Rustemeier b9d240799d Finish changing modid to 'ebwizardry'
- Fix up translations, resource IDs, paths etc.
- Where possible, the modid part in most strings now just reuses Wizardry.MODID
2018-03-16 18:08:47 +01:00
Philipp Rustemeier 612bbdb64d Replace Achievements with Advancements
- Advancements are now in JSON files, converted by the included migration script.
- WizardryAdvancementTrigger is a generic achievement trigger that can be reused throughout the code to trigger custom advancements not covered by the JSON conditions.
- Plus some other small and obvious fixes.
2018-03-16 18:08:34 +01:00
Philipp Rustemeier 62c2a9e9b8 Various small fixes for 1.12 2018-03-16 18:07:37 +01:00
Electroblob bc3051fcf0 Merge pull request #8 from Corail31/1.12.2
1.12 conversion
2018-03-16 00:00:53 +00:00
Corail31 489fb82fbd 1.12 conversion 2018-03-09 11:56:31 +01:00
Electroblob edff82acca Update README.md 2018-03-09 10:05:01 +00:00
759 changed files with 5499 additions and 4817 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
![Image not found](https://media-elerium.cursecdn.com/attachments/203/387/banner7.png) ![Image not found](https://media-elerium.cursecdn.com/attachments/203/387/banner7.png)
Source code for Electroblob's Wizardry, a Minecraft mod currently for versions 1.7.10 and 1.10.2. Wizardry adds an RPG-style system of magic spells to Minecraft with the aim of being as playable as possible. No crazy constructs, no perk trees, no complex recipes - simply find spell books, cast spells, and master the arcane! Source code for Electroblob's Wizardry, a Minecraft mod currently for versions 1.7.10, 1.10.2 and 1.11.2. Wizardry adds an RPG-style system of magic spells to Minecraft with the aim of being as playable as possible. No crazy constructs, no perk trees, no complex recipes - simply find spell books, cast spells, and master the arcane!
Please read the [guide for contributing](guide_for_contributing.md) before submitting an issue or a PR. Please read the [guide for contributing](guide_for_contributing.md) before submitting an issue or a PR.
+4 -4
View File
@@ -4,14 +4,14 @@ buildscript {
maven { url = "http://files.minecraftforge.net/maven" } maven { url = "http://files.minecraftforge.net/maven" }
} }
dependencies { dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
} }
} }
apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'net.minecraftforge.gradle.forge'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
version = " 3.1.0 - MC 1.11.2" version = " 4.1.0 - MC 1.12.2"
group= "electroblob.wizardry"// http://maven.apache.org/guides/mini/guide-naming-conventions.html group= "electroblob.wizardry"// http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "Electroblob's Wizardry " archivesBaseName = "Electroblob's Wizardry "
@@ -21,7 +21,7 @@ compileJava {
} }
minecraft { minecraft {
version = "1.11.2-13.20.1.2588" version = "1.12.2-14.23.2.2611"
runDir = "run" runDir = "run"
// the mappings can be changed at any time, and must be in the following format. // the mappings can be changed at any time, and must be in the following format.
@@ -29,7 +29,7 @@ minecraft {
// stable_# stables are built at the discretion of the MCP team. // stable_# stables are built at the discretion of the MCP team.
// Use non-default mappings at your own risk. they may not always work. // Use non-default mappings at your own risk. they may not always work.
// simply re-run your setup task after changing the mappings to update your workspace. // simply re-run your setup task after changing the mappings to update your workspace.
mappings = "stable_32" mappings = "snapshot_20180316"
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
} }
@@ -150,7 +150,7 @@ public class CommonProxy {
Spell spell = Spell.get(scroll.getItemDamage()); Spell spell = Spell.get(scroll.getItemDamage());
if(spell.isContinuous) spell = Spells.none; if(spell.isContinuous) spell = Spells.none;
return I18n.translateToLocalFormatted("item.wizardry:wizardry:scroll.name", return I18n.translateToLocalFormatted("item." + Wizardry.MODID + ":scroll.name",
I18n.translateToLocal("spell." + spell.getUnlocalisedName())).trim(); I18n.translateToLocal("spell." + spell.getUnlocalisedName())).trim();
} }
@@ -298,7 +298,7 @@ public final class Settings {
property = config.get(Configuration.CATEGORY_GENERAL, "towerRarity", 8, property = config.get(Configuration.CATEGORY_GENERAL, "towerRarity", 8,
"Rarity of wizard towers. Higher numbers are rarer. Set to 0 to disable wizard towers completely.", 0, "Rarity of wizard towers. Higher numbers are rarer. Set to 0 to disable wizard towers completely.", 0,
50); 50);
property.setLanguageKey("config.wizardry.tower_rarity"); property.setLanguageKey("config." + Wizardry.MODID + ".tower_rarity");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
Wizardry.proxy.setToNumberSliderEntry(property); Wizardry.proxy.setToNumberSliderEntry(property);
towerRarity = property.getInt(); towerRarity = property.getInt();
@@ -307,108 +307,108 @@ public final class Settings {
property = config.get(Configuration.CATEGORY_GENERAL, "spellBookDropChance", 3, property = config.get(Configuration.CATEGORY_GENERAL, "spellBookDropChance", 3,
"The chance for mobs to drop a spell book when killed. The greater this number, the more often they will drop. Set to 0 to disable spell book drops. Set to 200 for guaranteed drops.", "The chance for mobs to drop a spell book when killed. The greater this number, the more often they will drop. Set to 0 to disable spell book drops. Set to 200 for guaranteed drops.",
0, 200); 0, 200);
property.setLanguageKey("config.wizardry.spell_book_drop_chance"); property.setLanguageKey("config." + Wizardry.MODID + ".spell_book_drop_chance");
Wizardry.proxy.setToNumberSliderEntry(property); Wizardry.proxy.setToNumberSliderEntry(property);
spellBookDropChance = property.getInt(); spellBookDropChance = property.getInt();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "oreDimensions", new int[]{0}, property = config.get(Configuration.CATEGORY_GENERAL, "oreDimensions", new int[]{0},
"List of dimension ids in which crystal ore will generate. Note that removing the overworld (id 0) from this list will make the mod VERY difficult to play!"); "List of dimension ids in which crystal ore will generate. Note that removing the overworld (id 0) from this list will make the mod VERY difficult to play!");
property.setLanguageKey("config.wizardry.ore_dimensions"); property.setLanguageKey("config." + Wizardry.MODID + ".ore_dimensions");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
oreDimensions = property.getIntList(); oreDimensions = property.getIntList();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "flowerDimensions", new int[]{0}, property = config.get(Configuration.CATEGORY_GENERAL, "flowerDimensions", new int[]{0},
"List of dimension ids in which crystal flowers will generate."); "List of dimension ids in which crystal flowers will generate.");
property.setLanguageKey("config.wizardry.flower_dimensions"); property.setLanguageKey("config." + Wizardry.MODID + ".flower_dimensions");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
flowerDimensions = property.getIntList(); flowerDimensions = property.getIntList();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "towerDimensions", new int[]{0}, property = config.get(Configuration.CATEGORY_GENERAL, "towerDimensions", new int[]{0},
"List of dimension ids in which wizard towers will generate."); "List of dimension ids in which wizard towers will generate.");
property.setLanguageKey("config.wizardry.tower_dimensions"); property.setLanguageKey("config." + Wizardry.MODID + ".tower_dimensions");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
towerDimensions = property.getIntList(); towerDimensions = property.getIntList();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "generateLoot", true, property = config.get(Configuration.CATEGORY_GENERAL, "generateLoot", true,
"Whether to generate wizardry loot in dungeon chests."); "Whether to generate wizardry loot in dungeon chests.");
property.setLanguageKey("config.wizardry.generate_loot"); property.setLanguageKey("config." + Wizardry.MODID + ".generate_loot");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
generateLoot = property.getBoolean(); generateLoot = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "firebombIsCraftable", true, property = config.get(Configuration.CATEGORY_GENERAL, "firebombIsCraftable", true,
"Whether firebombs can be crafted or not."); "Whether firebombs can be crafted or not.");
property.setLanguageKey("config.wizardry.firebomb_is_craftable"); property.setLanguageKey("config." + Wizardry.MODID + ".firebomb_is_craftable");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
firebombIsCraftable = property.getBoolean(); firebombIsCraftable = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "poisonBombIsCraftable", true, property = config.get(Configuration.CATEGORY_GENERAL, "poisonBombIsCraftable", true,
"Whether poison bombs can be crafted or not."); "Whether poison bombs can be crafted or not.");
property.setLanguageKey("config.wizardry.poison_bomb_is_craftable"); property.setLanguageKey("config." + Wizardry.MODID + ".poison_bomb_is_craftable");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
poisonBombIsCraftable = property.getBoolean(); poisonBombIsCraftable = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "smokeBombIsCraftable", true, property = config.get(Configuration.CATEGORY_GENERAL, "smokeBombIsCraftable", true,
"Whether smoke bombs can be crafted or not."); "Whether smoke bombs can be crafted or not.");
property.setLanguageKey("config.wizardry.smoke_bomb_is_craftable"); property.setLanguageKey("config." + Wizardry.MODID + ".smoke_bomb_is_craftable");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
smokeBombIsCraftable = property.getBoolean(); smokeBombIsCraftable = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "useAlternateScrollRecipe", false, property = config.get(Configuration.CATEGORY_GENERAL, "useAlternateScrollRecipe", false,
"Whether to require a magic crystal in the shapeless crafting recipe for blank scrolls. Set to true if another mod adds a conflicting recipe."); "Whether to require a magic crystal in the shapeless crafting recipe for blank scrolls. Set to true if another mod adds a conflicting recipe.");
property.setLanguageKey("config.wizardry.use_alternate_scroll_recipe"); property.setLanguageKey("config." + Wizardry.MODID + ".use_alternate_scroll_recipe");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
useAlternateScrollRecipe = property.getBoolean(); useAlternateScrollRecipe = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "teleportThroughUnbreakableBlocks", false, property = config.get(Configuration.CATEGORY_GENERAL, "teleportThroughUnbreakableBlocks", false,
"Whether players are allowed to teleport through unbreakable blocks (e.g. bedrock) using the phase step spell."); "Whether players are allowed to teleport through unbreakable blocks (e.g. bedrock) using the phase step spell.");
property.setLanguageKey("config.wizardry.teleport_through_unbreakable_blocks"); property.setLanguageKey("config." + Wizardry.MODID + ".teleport_through_unbreakable_blocks");
teleportThroughUnbreakableBlocks = property.getBoolean(); teleportThroughUnbreakableBlocks = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "showSummonedCreatureNames", true, property = config.get(Configuration.CATEGORY_GENERAL, "showSummonedCreatureNames", true,
"Whether to show summoned creatures' names and owners above their heads."); "Whether to show summoned creatures' names and owners above their heads.");
property.setLanguageKey("config.wizardry.show_summoned_creature_names"); property.setLanguageKey("config." + Wizardry.MODID + ".show_summoned_creature_names");
showSummonedCreatureNames = property.getBoolean(); showSummonedCreatureNames = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "friendlyFire", true, property = config.get(Configuration.CATEGORY_GENERAL, "friendlyFire", true,
"Whether to allow players to damage their designated allies using magic."); "Whether to allow players to damage their designated allies using magic.");
property.setLanguageKey("config.wizardry.friendly_fire"); property.setLanguageKey("config." + Wizardry.MODID + ".friendly_fire");
friendlyFire = property.getBoolean(); friendlyFire = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "telekineticDisarmament", true, property = config.get(Configuration.CATEGORY_GENERAL, "telekineticDisarmament", true,
"Whether to allow players to disarm other players using the telekinesis spell. Set to false to prevent stealing of items."); "Whether to allow players to disarm other players using the telekinesis spell. Set to false to prevent stealing of items.");
property.setLanguageKey("config.wizardry.telekinetic_disarmament"); property.setLanguageKey("config." + Wizardry.MODID + ".telekinetic_disarmament");
telekineticDisarmament = property.getBoolean(); telekineticDisarmament = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "discoveryMode", true, property = config.get(Configuration.CATEGORY_GENERAL, "discoveryMode", true,
"For those who like a sense of mystery! When set to true, spells you haven't cast yet will be unreadable until you cast them (on a per-world basis). Has no effect when in creative mode. Spells of identification will be unobtainable in survival mode if this is false."); "For those who like a sense of mystery! When set to true, spells you haven't cast yet will be unreadable until you cast them (on a per-world basis). Has no effect when in creative mode. Spells of identification will be unobtainable in survival mode if this is false.");
property.setLanguageKey("config.wizardry.discovery_mode"); property.setLanguageKey("config." + Wizardry.MODID + ".discovery_mode");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
discoveryMode = property.getBoolean(); discoveryMode = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "enableShiftScrolling", true, property = config.get(Configuration.CATEGORY_GENERAL, "enableShiftScrolling", true,
"Whether you can switch between spells on a wand by scrolling with the mouse wheel while sneaking. Note that this will only affect you; other players connected to the same server obey their own settings."); "Whether you can switch between spells on a wand by scrolling with the mouse wheel while sneaking. Note that this will only affect you; other players connected to the same server obey their own settings.");
property.setLanguageKey("config.wizardry.enable_shift_scrolling"); property.setLanguageKey("config." + Wizardry.MODID + ".enable_shift_scrolling");
property.setRequiresWorldRestart(false); property.setRequiresWorldRestart(false);
enableShiftScrolling = property.getBoolean(); enableShiftScrolling = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "minionRevengeTargeting", true, property = config.get(Configuration.CATEGORY_GENERAL, "minionRevengeTargeting", true,
"Whether summoned creatures can revenge attack their owner if their owner attacks them."); "Whether summoned creatures can revenge attack their owner if their owner attacks them.");
property.setLanguageKey("config.wizardry.minion_revenge_targeting"); property.setLanguageKey("config." + Wizardry.MODID + ".minion_revenge_targeting");
property.setRequiresWorldRestart(false); property.setRequiresWorldRestart(false);
minionRevengeTargeting = property.getBoolean(); minionRevengeTargeting = property.getBoolean();
propOrder.add(property.getName()); propOrder.add(property.getName());
@@ -419,13 +419,13 @@ public final class Settings {
// it doesn't give fine enough control for values less than 1. // it doesn't give fine enough control for values less than 1.
property = config.get(Configuration.CATEGORY_GENERAL, "playerDamageScaling", 1.0, property = config.get(Configuration.CATEGORY_GENERAL, "playerDamageScaling", 1.0,
"Global damage scaling factor for the damage dealt by players casting spells, relative to 1.", 0, 20); "Global damage scaling factor for the damage dealt by players casting spells, relative to 1.", 0, 20);
property.setLanguageKey("config.wizardry.player_damage_scaling"); property.setLanguageKey("config." + Wizardry.MODID + ".player_damage_scaling");
playerDamageScale = property.getDouble(); playerDamageScale = property.getDouble();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "npcDamageScaling", 1.0, property = config.get(Configuration.CATEGORY_GENERAL, "npcDamageScaling", 1.0,
"Global damage scaling factor for the damage dealt by NPCs casting spells, relative to 1.", 0, 20); "Global damage scaling factor for the damage dealt by NPCs casting spells, relative to 1.", 0, 20);
property.setLanguageKey("config.wizardry.npc_damage_scaling"); property.setLanguageKey("config." + Wizardry.MODID + ".npc_damage_scaling");
npcDamageScale = property.getDouble(); npcDamageScale = property.getDouble();
propOrder.add(property.getName()); propOrder.add(property.getName());
@@ -434,13 +434,13 @@ public final class Settings {
property = config.get(Configuration.CATEGORY_GENERAL, "castCommandMultiplierLimit", 20.0, property = config.get(Configuration.CATEGORY_GENERAL, "castCommandMultiplierLimit", 20.0,
"Upper limit for the multipliers passed into the /cast command. This is here to stop players from accidentally breaking a world/server. Large blast mutipliers can cause extreme lag - you have been warned!", "Upper limit for the multipliers passed into the /cast command. This is here to stop players from accidentally breaking a world/server. Large blast mutipliers can cause extreme lag - you have been warned!",
1, 255); 1, 255);
property.setLanguageKey("config.wizardry.cast_command_multiplier_limit"); property.setLanguageKey("config." + Wizardry.MODID + ".cast_command_multiplier_limit");
maxSpellCommandMultiplier = property.getDouble(); maxSpellCommandMultiplier = property.getDouble();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "summonedCreatureTargetsWhitelist", new String[0], property = config.get(Configuration.CATEGORY_GENERAL, "summonedCreatureTargetsWhitelist", new String[0],
"List of names of entities which summoned creatures and wizards are allowed to attack, in addition to the defaults. Add mod creatures to this list if you want summoned creatures to attack them and they aren't already doing so. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities which summoned creatures and wizards are allowed to attack, in addition to the defaults. Add mod creatures to this list if you want summoned creatures to attack them and they aren't already doing so. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.summoned_creature_targets_whitelist"); property.setLanguageKey("config." + Wizardry.MODID + ".summoned_creature_targets_whitelist");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
summonedCreatureTargetsWhitelist = property.getStringList(); summonedCreatureTargetsWhitelist = property.getStringList();
@@ -452,8 +452,8 @@ public final class Settings {
property = config.get(Configuration.CATEGORY_GENERAL, "summonedCreatureTargetsBlacklist", property = config.get(Configuration.CATEGORY_GENERAL, "summonedCreatureTargetsBlacklist",
new String[]{"creeper"}, new String[]{"creeper"},
"List of names of entities which summoned creatures and wizards are specifically not allowed to attack, overriding the defaults and the whitelist. Add creatures to this list if allowing them to be attacked causes problems or is too destructive (removing creepers from this list is done at your own risk!). Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities which summoned creatures and wizards are specifically not allowed to attack, overriding the defaults and the whitelist. Add creatures to this list if allowing them to be attacked causes problems or is too destructive (removing creepers from this list is done at your own risk!). Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.summoned_creature_targets_blacklist"); property.setLanguageKey("config." + Wizardry.MODID + ".summoned_creature_targets_blacklist");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
summonedCreatureTargetsBlacklist = property.getStringList(); summonedCreatureTargetsBlacklist = property.getStringList();
@@ -465,34 +465,34 @@ public final class Settings {
property = config.get(Configuration.CATEGORY_GENERAL, "spellHUDPosition", GuiPosition.BOTTOM_LEFT.name, property = config.get(Configuration.CATEGORY_GENERAL, "spellHUDPosition", GuiPosition.BOTTOM_LEFT.name,
"The position of the spell HUD.", GuiPosition.names); "The position of the spell HUD.", GuiPosition.names);
property.setLanguageKey("config.wizardry.spell_hud_position"); property.setLanguageKey("config." + Wizardry.MODID + ".spell_hud_position");
spellHUDPosition = GuiPosition.fromName(property.getString()); spellHUDPosition = GuiPosition.fromName(property.getString());
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "castCommandName", "cast", property = config.get(Configuration.CATEGORY_GENERAL, "castCommandName", "cast",
"The name of the /cast command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /cast you would type /magic instead."); "The name of the /cast command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /cast you would type /magic instead.");
property.setLanguageKey("config.wizardry.cast_command_name"); property.setLanguageKey("config." + Wizardry.MODID + ".cast_command_name");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
castCommandName = property.getString(); castCommandName = property.getString();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "discoverspellCommandName", "discoverspell", property = config.get(Configuration.CATEGORY_GENERAL, "discoverspellCommandName", "discoverspell",
"The name of the /discoverspell command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /discoverspell you would type /magic instead."); "The name of the /discoverspell command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /discoverspell you would type /magic instead.");
property.setLanguageKey("config.wizardry.discoverspell_command_name"); property.setLanguageKey("config." + Wizardry.MODID + ".discoverspell_command_name");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
discoverspellCommandName = property.getString(); discoverspellCommandName = property.getString();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "allyCommandName", "ally", property = config.get(Configuration.CATEGORY_GENERAL, "allyCommandName", "ally",
"The name of the /ally command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /ally you would type /magic instead."); "The name of the /ally command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /ally you would type /magic instead.");
property.setLanguageKey("config.wizardry.ally_command_name"); property.setLanguageKey("config." + Wizardry.MODID + ".ally_command_name");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
allyCommandName = property.getString(); allyCommandName = property.getString();
propOrder.add(property.getName()); propOrder.add(property.getName());
property = config.get(Configuration.CATEGORY_GENERAL, "alliesCommandName", "allies", property = config.get(Configuration.CATEGORY_GENERAL, "alliesCommandName", "allies",
"The name of the /allies command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /allies you would type /magic instead."); "The name of the /allies command. This is what you type directly after the /; for example if this was set to 'magic' then instead of typing /allies you would type /magic instead.");
property.setLanguageKey("config.wizardry.allies_command_name"); property.setLanguageKey("config." + Wizardry.MODID + ".allies_command_name");
property.setRequiresWorldRestart(true); property.setRequiresWorldRestart(true);
alliesCommandName = property.getString(); alliesCommandName = property.getString();
propOrder.add(property.getName()); propOrder.add(property.getName());
@@ -507,8 +507,8 @@ public final class Settings {
"Settings which allow entities to be made immune to certain types of magic. In multiplayer, the server/LAN host settings will apply."); "Settings which allow entities to be made immune to certain types of magic. In multiplayer, the server/LAN host settings will apply.");
property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToFire", new String[]{}, property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToFire", new String[]{},
"List of names of entities that are immune to fire, in addition to the defaults. Add mod creatures to this list if you want them to be immune to fire magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities that are immune to fire, in addition to the defaults. Add mod creatures to this list if you want them to be immune to fire magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.mobs_immune_to_fire"); property.setLanguageKey("config." + Wizardry.MODID + ".mobs_immune_to_fire");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
// Converts all strings in the list to lower case, to ignore case sensitivity, and trims them. // Converts all strings in the list to lower case, to ignore case sensitivity, and trims them.
@@ -520,8 +520,8 @@ public final class Settings {
propOrder1.add(property.getName()); propOrder1.add(property.getName());
property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToIce", new String[]{}, property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToIce", new String[]{},
"List of names of entities that are immune to ice, in addition to the defaults. Add mod creatures to this list if you want them to be immune to ice magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities that are immune to ice, in addition to the defaults. Add mod creatures to this list if you want them to be immune to ice magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.mobs_immune_to_ice"); property.setLanguageKey("config." + Wizardry.MODID + ".mobs_immune_to_ice");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
// Converts all strings in the list to lower case, to ignore case sensitivity, and trims them. // Converts all strings in the list to lower case, to ignore case sensitivity, and trims them.
@@ -533,8 +533,8 @@ public final class Settings {
propOrder1.add(property.getName()); propOrder1.add(property.getName());
property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToLightning", new String[]{}, property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToLightning", new String[]{},
"List of names of entities that are immune to lightning, in addition to the defaults. Add mod creatures to this list if you want them to be immune to lightning magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities that are immune to lightning, in addition to the defaults. Add mod creatures to this list if you want them to be immune to lightning magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.mobs_immune_to_lightning"); property.setLanguageKey("config." + Wizardry.MODID + ".mobs_immune_to_lightning");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
// Converts all strings in the list to lower case, to ignore case sensitivity, and trims them. // Converts all strings in the list to lower case, to ignore case sensitivity, and trims them.
@@ -546,8 +546,8 @@ public final class Settings {
propOrder1.add(property.getName()); propOrder1.add(property.getName());
property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToWither", new String[]{}, property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToWither", new String[]{},
"List of names of entities that are immune to wither effects, in addition to the defaults. Add mod creatures to this list if you want them to be immune to withering magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities that are immune to wither effects, in addition to the defaults. Add mod creatures to this list if you want them to be immune to withering magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.mobs_immune_to_wither"); property.setLanguageKey("config." + Wizardry.MODID + ".mobs_immune_to_wither");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
// Converts all strings in the list to lower case, to ignore case sensitivity, and trims them. // Converts all strings in the list to lower case, to ignore case sensitivity, and trims them.
@@ -559,8 +559,8 @@ public final class Settings {
propOrder1.add(property.getName()); propOrder1.add(property.getName());
property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToPoison", new String[]{}, property = config.get(RESISTANCES_CATEGORY, "mobsImmuneToPoison", new String[]{},
"List of names of entities that are immune to poison, in addition to the defaults. Add mod creatures to this list if you want them to be immune to poison magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. wizardry:Wizard)."); "List of names of entities that are immune to poison, in addition to the defaults. Add mod creatures to this list if you want them to be immune to poison magic and they aren't already. Entity names are not case sensitive. For mod entities, prefix with the mod ID (e.g. " + Wizardry.MODID + ":Wizard).");
property.setLanguageKey("config.wizardry.mobs_immune_to_poison"); property.setLanguageKey("config." + Wizardry.MODID + ".mobs_immune_to_poison");
property.setRequiresMcRestart(true); property.setRequiresMcRestart(true);
// Wizardry.proxy.setToEntityNameEntry(property); // Wizardry.proxy.setToEntityNameEntry(property);
// Converts all strings in the list to lower case, to ignore case sensitivity, and trims them. // Converts all strings in the list to lower case, to ignore case sensitivity, and trims them.
@@ -15,7 +15,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData; import net.minecraft.world.storage.WorldSavedData;
import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.Constants.NBT;
import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -20,7 +20,7 @@ import electroblob.wizardry.packet.PacketPlayerSync;
import electroblob.wizardry.packet.PacketTransportation; import electroblob.wizardry.packet.PacketTransportation;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.spell.None; import electroblob.wizardry.spell.None;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
@@ -67,7 +67,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
* capability, but in my opinion there are already too many classes to deal with, so I'm not adding any more than are * capability, but in my opinion there are already too many classes to deal with, so I'm not adding any more than are
* necessary, meaning those constants and values are kept here instead. * necessary, meaning those constants and values are kept here instead.
* *
* @since Wizardry 1.2 * @since Wizardry 2.1
* @author Electroblob * @author Electroblob
*/ */
// On the plus side, having to rethink this class allowed me to clean it up a lot. // On the plus side, having to rethink this class allowed me to clean it up a lot.
@@ -134,6 +134,10 @@ public class WizardData implements INBTSerializable<NBTTagCompound> {
public Set<String> allyNames; public Set<String> allyNames;
private Set<UUID> soulboundCreatures; private Set<UUID> soulboundCreatures;
public WizardData(){
this(null); // Nullary constructor for the registration method factory parameter
}
public WizardData(EntityPlayer player){ public WizardData(EntityPlayer player){
this.player = player; this.player = player;
@@ -178,13 +182,13 @@ public class WizardData implements INBTSerializable<NBTTagCompound> {
if(!spellsDiscovered.add(spell)) return false; if(!spellsDiscovered.add(spell)) return false;
// If the spell had not already been discovered, achievements can be triggered and the method returns true // If the spell had not already been discovered, achievements can be triggered and the method returns true
if(spellsDiscovered.containsAll(Spell.getSpells(Spell::isEnabled))){ if(spellsDiscovered.containsAll(Spell.getSpells(Spell::isEnabled))){
this.player.addStat(WizardryAchievements.all_spells); WizardryAdvancementTriggers.all_spells.triggerFor(this.player);
} }
for(Element element : Element.values()){ for(Element element : Element.values()){
if(element != Element.MAGIC if(element != Element.MAGIC
&& spellsDiscovered.containsAll(Spell.getSpells(new Spell.TierElementFilter(null, element)))){ && spellsDiscovered.containsAll(Spell.getSpells(new Spell.TierElementFilter(null, element)))){
this.player.addStat(WizardryAchievements.element_master); WizardryAdvancementTriggers.element_master.triggerFor(this.player);
} }
} }
@@ -7,39 +7,37 @@ import electroblob.wizardry.command.CommandDiscoverSpell;
import electroblob.wizardry.command.CommandSetAlly; import electroblob.wizardry.command.CommandSetAlly;
import electroblob.wizardry.command.CommandViewAllies; import electroblob.wizardry.command.CommandViewAllies;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryRegistry; import electroblob.wizardry.registry.WizardryRegistry;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTBase;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.AchievementPage;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.Capability.IStorage; import net.minecraftforge.common.capabilities.Capability.IStorage;
import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry.Type;
@Mod(modid = Wizardry.MODID, name = Wizardry.NAME, version = Wizardry.VERSION, guiFactory = "electroblob." + Wizardry.MODID + ".WizardryGuiFactory") @Mod(modid = Wizardry.MODID, name = Wizardry.NAME, version = Wizardry.VERSION, guiFactory = "electroblob.wizardry.WizardryGuiFactory")
public class Wizardry { public class Wizardry {
/** Wizardry's mod ID. */ /** Wizardry's mod ID. */
// This is going to have to change for 1.12 or it'll conflict with the other wizardry mod. // This is going to have to change for 1.12 or it'll conflict with the other wizardry mod.
// They were there first, it's only fair... although I wonder if that will have unintended side-effects? // They were there first, it's only fair... although I wonder if that will have unintended side-effects?
public static final String MODID = "wizardry"; // How about 'ebwizardry', to keep it short? public static final String MODID = "ebwizardry";
/** Wizardry's mod name, in readable form. */ /** Wizardry's mod name, in readable form. */
public static final String NAME = "Electroblob's Wizardry"; public static final String NAME = "Electroblob's Wizardry";
/** /**
@@ -52,7 +50,7 @@ public class Wizardry {
* 1.x.x represents Minecraft 1.7.x versions, 2.x.x represents Minecraft 1.10.x versions, 3.x.x represents Minecraft * 1.x.x represents Minecraft 1.7.x versions, 2.x.x represents Minecraft 1.10.x versions, 3.x.x represents Minecraft
* 1.11.x versions, and so on. * 1.11.x versions, and so on.
*/ */
public static final String VERSION = "3.1.0"; public static final String VERSION = "4.1.0";
// IDEA: Improve the algorithm that finds a place to summon creatures to take walls into account. // IDEA: Improve the algorithm that finds a place to summon creatures to take walls into account.
// IDEA: Replace all uses of Math.cos and Math.sin with MathHelper versions // IDEA: Replace all uses of Math.cos and Math.sin with MathHelper versions
@@ -112,9 +110,6 @@ public class Wizardry {
logger = event.getModLog(); logger = event.getModLog();
// The array in question no longer exists, so I'm pretty sure this isn't necessary any more.
// expandPotionTypesArray();
settings.initConfig(event); settings.initConfig(event);
// Yes - by the looks of it, having an interface is completely unnecessary in this case. // Yes - by the looks of it, having an interface is completely unnecessary in this case.
@@ -132,7 +127,7 @@ public class Wizardry {
@Override @Override
public void readNBT(Capability<WizardData> capability, WizardData instance, EnumFacing side, NBTBase nbt){ public void readNBT(Capability<WizardData> capability, WizardData instance, EnumFacing side, NBTBase nbt){
} }
}, WizardData.class); }, WizardData::new);
WizardryRegistry.registerTileEntities(); WizardryRegistry.registerTileEntities();
@@ -140,8 +135,7 @@ public class Wizardry {
// The check for the generateLoot setting is now done within this method. // The check for the generateLoot setting is now done within this method.
WizardryRegistry.registerLoot(); WizardryRegistry.registerLoot();
// NOTE: Will need to be moved to init for 1.12, as will anything that needs to be after the registry events. WizardryAdvancementTriggers.register();
WizardryTabs.sort();
// Moved to preInit, because apparently it has to be here now. // Moved to preInit, because apparently it has to be here now.
proxy.registerRenderers(); proxy.registerRenderers();
@@ -163,12 +157,6 @@ public class Wizardry {
NetworkRegistry.INSTANCE.registerGuiHandler(this, new WizardryGuiHandler()); NetworkRegistry.INSTANCE.registerGuiHandler(this, new WizardryGuiHandler());
WizardryPacketHandler.initPackets(); WizardryPacketHandler.initPackets();
// Achievements
AchievementPage.registerAchievementPage(WizardryAchievements.WIZARDRY_ACHIEVEMENT_PAGE);
// Recipes
WizardryRegistry.registerRecipes();
proxy.initGuiBits(); proxy.initGuiBits();
} }
@@ -181,6 +169,7 @@ public class Wizardry {
* '|'; } } // Cuts off the last '|' entityNames = entityNames.substring(0, entityNames.length()-1); * '|'; } } // Cuts off the last '|' entityNames = entityNames.substring(0, entityNames.length()-1);
* entityNamePattern = Pattern.compile(entityNames); */ * entityNamePattern = Pattern.compile(entityNames); */
proxy.initialiseLayers(); proxy.initialiseLayers();
WizardryTabs.sort();
} }
@EventHandler @EventHandler
@@ -200,17 +189,16 @@ public class Wizardry {
} }
// 2.1 changed some item ids, so this fixes them for existing worlds // 2.1 changed some item ids, so this fixes them for existing worlds
// NOTE: Needs changing to RegistryEvent.MissingMapping in 1.12, or just removing since nobody updates minecraft // Nobody updates minecraft versions when using mods, but I may as well leave this here just in case.
// versions when using mods.
@EventHandler @EventHandler
public static void onMissingMappingEvent(FMLMissingMappingsEvent event){ public static void onMissingMappingEvent(RegistryEvent.MissingMappings<Item> event){
// Just get, not getAll, since the mod id didn't change! // Just get, not getAll, since the mod id didn't change!
for(FMLMissingMappingsEvent.MissingMapping mapping : event.get()){ for(RegistryEvent.MissingMappings.Mapping<Item> mapping : event.getAllMappings()){
if(mapping.type == Type.ITEM && mapping.resourceLocation.getResourceDomain().equals(Wizardry.MODID)){ if(mapping.key.getResourceDomain().equals(Wizardry.MODID)){
Item replacement = null; Item replacement = null;
switch(mapping.resourceLocation.getResourcePath()){ switch(mapping.key.getResourcePath()){
case "wand_basic": replacement = WizardryItems.magic_wand; break; case "wand_basic": replacement = WizardryItems.magic_wand; break;
case "wand_basic_fire": replacement = WizardryItems.basic_fire_wand; break; case "wand_basic_fire": replacement = WizardryItems.basic_fire_wand; break;
@@ -10,7 +10,7 @@ import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.item.ItemWand;
import electroblob.wizardry.item.ItemWizardArmour; import electroblob.wizardry.item.ItemWizardArmour;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryEnchantments; import electroblob.wizardry.registry.WizardryEnchantments;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
@@ -56,7 +56,6 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
@@ -84,7 +83,7 @@ public final class WizardryEventHandler {
if(Wizardry.settings.generateLoot){ if(Wizardry.settings.generateLoot){
for(String location : LOOT_INJECTION_LOCATIONS){ for(String location : LOOT_INJECTION_LOCATIONS){
if(event.getName().toString().matches(location)){ if(event.getName().toString().matches(location)){
event.getTable().addPool(getAdditive("wizardry:chests/dungeon_additions")); event.getTable().addPool(getAdditive(Wizardry.MODID + ":chests/dungeon_additions"));
} }
} }
} }
@@ -353,7 +352,7 @@ public final class WizardryEventHandler {
} }
if(event.getEntityLiving() == player && event.getSource() instanceof IElementalDamage){ if(event.getEntityLiving() == player && event.getSource() instanceof IElementalDamage){
player.addStat(WizardryAchievements.self_destruct); WizardryAdvancementTriggers.self_destruct.triggerFor(player);
} }
} }
} }
@@ -383,13 +382,6 @@ public final class WizardryEventHandler {
} }
} }
@SubscribeEvent
public static void onItemPickupEvent(EntityItemPickupEvent event){
if(event.getItem().getItem().getItem() == WizardryItems.magic_crystal){
event.getEntityPlayer().addStat(WizardryAchievements.crystal, 1);
}
}
// Private helper methods // Private helper methods
// ================================================================================================================ // ================================================================================================================
@@ -13,22 +13,11 @@ public class WizardryGuiFactory implements IModGuiFactory {
public void initialize(Minecraft minecraftInstance){ public void initialize(Minecraft minecraftInstance){
} }
@Override
public Class<? extends GuiScreen> mainConfigGuiClass(){
return GuiConfigWizardry.class;
}
@Override @Override
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories(){ public Set<RuntimeOptionCategoryElement> runtimeGuiCategories(){
return null; return null;
} }
@SuppressWarnings("deprecation") // It's a bit of Forge that hasn't been tidied up, but we have to implement it.
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element){
return null;
}
@Override @Override
public boolean hasConfigGui(){ public boolean hasConfigGui(){
return true; return true;
@@ -30,8 +30,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.storage.loot.LootContext; import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootTable; import net.minecraft.world.storage.loot.LootTable;
@@ -0,0 +1,61 @@
package electroblob.wizardry.advancement;
import electroblob.wizardry.Wizardry;
import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementManager;
import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ResourceLocation;
/**
* This is a provisory class for the transition to 1.12
* It contains an enum with all the advancements of this mod
* and an helper to grant advancements on the server side only (like the command)
* @author Corail31
* @since Wizardry 4.1
*/
public class AdvancementHelper {
public enum EnumAdvancement {
crystal,
arcane_initiate,
apprentice,
master,
all_spells,
wizard_trade,
buy_master_spell,
freeze_blaze,
charge_creeper,
frankenstein,
special_upgrade,
craft_flask,
elemental,
armour_set,
legendary,
self_destruct,
pig_tornado,
jam_wizard,
slime_skeleton,
anger_wizard,
defeat_evil_wizard,
max_out_wand,
element_master,
identify_spell;
}
public static boolean grantAdvancement(EntityPlayer player, EnumAdvancement advancementName) {
if (player == null) { return false; }
if (player.world.isRemote) { return true; }
EntityPlayerMP player_mp = player.getServer().getPlayerList().getPlayerByUUID(player.getUniqueID());
AdvancementManager am = player_mp.getServerWorld().getAdvancementManager();
Advancement advancement = am.getAdvancement(new ResourceLocation(Wizardry.MODID, advancementName.name()));
if (advancement == null) { return false; }
AdvancementProgress advancementprogress = player_mp.getAdvancements().getProgress(advancement);
if (!advancementprogress.isDone()) {
for (String criteria : advancementprogress.getRemaningCriteria()) {
player_mp.getAdvancements().grantCriterion(advancement, criteria);
}
}
return true;
}
}
@@ -3,6 +3,7 @@ package electroblob.wizardry.block;
import java.util.Random; import java.util.Random;
import electroblob.wizardry.WizardData; import electroblob.wizardry.WizardData;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.item.ItemWand;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
@@ -107,7 +108,7 @@ public class BlockTransportationStone extends Block {
if(testForCircle(world, pos1)){ if(testForCircle(world, pos1)){
data.setStoneCircleLocation(pos1, world.provider.getDimension()); data.setStoneCircleLocation(pos1, world.provider.getDimension());
if(!world.isRemote) player.sendMessage( if(!world.isRemote) player.sendMessage(
new TextComponentTranslation("tile.wizardry:transportation_stone.confirm", new TextComponentTranslation("tile." + Wizardry.MODID + ":transportation_stone.confirm",
Spells.transportation.getNameForTranslationFormatted())); Spells.transportation.getNameForTranslationFormatted()));
return true; return true;
} }
@@ -115,7 +116,7 @@ public class BlockTransportationStone extends Block {
} }
if(!world.isRemote) if(!world.isRemote)
player.sendMessage(new TextComponentTranslation("tile.wizardry:transportation_stone.invalid")); player.sendMessage(new TextComponentTranslation("tile." + Wizardry.MODID + ":transportation_stone.invalid"));
return true; return true;
} }
} }
@@ -155,8 +155,8 @@ public class ClientProxy extends CommonProxy {
public static MixedFontRenderer mixedFontRenderer; public static MixedFontRenderer mixedFontRenderer;
// Key Bindings // Key Bindings
public static final KeyBinding NEXT_SPELL = new KeyBinding("key.wizardry.next_spell", Keyboard.KEY_N, "key.categories.wizardry"); public static final KeyBinding NEXT_SPELL = new KeyBinding("key." + Wizardry.MODID + ".next_spell", Keyboard.KEY_N, "key.categories." + Wizardry.MODID);
public static final KeyBinding PREVIOUS_SPELL = new KeyBinding("key.wizardry.previous_spell", Keyboard.KEY_B, "key.categories.wizardry"); public static final KeyBinding PREVIOUS_SPELL = new KeyBinding("key." + Wizardry.MODID + ".previous_spell", Keyboard.KEY_B, "key.categories." + Wizardry.MODID);
// Armour Model // Armour Model
public static final ModelBiped WIZARD_ARMOUR_MODEL = new ModelWizardArmour(0.75f); public static final ModelBiped WIZARD_ARMOUR_MODEL = new ModelWizardArmour(0.75f);
@@ -246,9 +246,9 @@ public class ClientProxy extends CommonProxy {
} }
if(discovered){ if(discovered){
return I18n.format("item.wizardry:scroll.name", spell.getDisplayName()).trim(); return I18n.format("item." + Wizardry.MODID + ":scroll.name", spell.getDisplayName()).trim();
}else{ }else{
return I18n.format("item.wizardry:scroll.undiscovered.name", "#" + SpellGlyphData.getGlyphName(spell, player.world) + "#").trim(); return I18n.format("item." + Wizardry.MODID + ":scroll.undiscovered.name", "#" + SpellGlyphData.getGlyphName(spell, player.world) + "#").trim();
} }
} }
@@ -35,8 +35,8 @@ public class EntityNameEntry extends StringEntry {
@Override @Override
public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY, public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY,
boolean isSelected){ boolean isSelected, float partialTicks){
// super.drawEntry(slotIndex, x, y, listWidth, slotHeight, tessellator, mouseX, mouseY, isSelected); //super.drawEntry(slotIndex, x, y, listWidth, slotHeight, mouseX, mouseY, isSelected, partial);
this.btnValue.x = listWidth / 4; this.btnValue.x = listWidth / 4;
this.btnValue.y = y; this.btnValue.y = y;
@@ -47,7 +47,7 @@ public class EntityNameEntry extends StringEntry {
this.btnValue.displayString = this.textFieldValue.getText(); this.btnValue.displayString = this.textFieldValue.getText();
// btnValue.packedFGColour = value ? GuiUtils.getColorCode('2', true) : GuiUtils.getColorCode('4', true); // btnValue.packedFGColour = value ? GuiUtils.getColorCode('2', true) : GuiUtils.getColorCode('4', true);
this.btnValue.drawButton(owningEntryList.getMC(), mouseX, mouseY); this.btnValue.drawButton(owningEntryList.getMC(), mouseX, mouseY, partialTicks);
} }
@Override @Override
@@ -38,11 +38,15 @@ public class GuiArcaneWorkbench extends GuiContainer {
private final int tooltipWidth = 164; private final int tooltipWidth = 164;
// We report the actual size of the GUI to Minecraft when a wand is in so JEI doesn't overdraw it.
// For calculations, we use the size without the tooltip.
private final int xSizeNoTip = 176;
public GuiArcaneWorkbench(InventoryPlayer invPlayer, TileEntityArcaneWorkbench entity){ public GuiArcaneWorkbench(InventoryPlayer invPlayer, TileEntityArcaneWorkbench entity){
super(new ContainerArcaneWorkbench(invPlayer, entity)); super(new ContainerArcaneWorkbench(invPlayer, entity));
this.playerInventory = invPlayer; this.playerInventory = invPlayer;
this.arcaneWorkbenchInventory = entity; this.arcaneWorkbenchInventory = entity;
xSize = 176; xSize = xSizeNoTip;
ySize = 220; ySize = 220;
} }
@@ -52,9 +56,11 @@ public class GuiArcaneWorkbench extends GuiContainer {
// Tests if there is a wand in the workbench and edits the positioning accordingly // Tests if there is a wand in the workbench and edits the positioning accordingly
if(this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getHasStack() && this.inventorySlots if(this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getHasStack() && this.inventorySlots
.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack().getItem() instanceof ItemWand){ .getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack().getItem() instanceof ItemWand){
guiLeft = (this.width - this.xSize - tooltipWidth) / 2; xSize = xSizeNoTip + tooltipWidth;
guiLeft = (this.width - this.xSize) / 2;
this.applyBtn.x = (this.width - tooltipWidth) / 2 + 48; this.applyBtn.x = (this.width - tooltipWidth) / 2 + 48;
}else{ }else{
xSize = xSizeNoTip;
guiLeft = (this.width - this.xSize) / 2; guiLeft = (this.width - this.xSize) / 2;
this.applyBtn.x = this.width / 2 + 48; this.applyBtn.x = this.width / 2 + 48;
} }
@@ -66,6 +72,9 @@ public class GuiArcaneWorkbench extends GuiContainer {
} }
super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
// Required now, or item mouseover tooltips won't render.
this.renderHoveredToolTip(p_73863_1_, p_73863_2_);
} }
@Override @Override
@@ -77,7 +86,7 @@ public class GuiArcaneWorkbench extends GuiContainer {
Minecraft.getMinecraft().renderEngine.bindTexture(texture); Minecraft.getMinecraft().renderEngine.bindTexture(texture);
// Main inventory // Main inventory
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSizeNoTip, ySize);
// Changing slots // Changing slots
for(int i = 0; i < ContainerArcaneWorkbench.CRYSTAL_SLOT; i++){ for(int i = 0; i < ContainerArcaneWorkbench.CRYSTAL_SLOT; i++){
@@ -91,10 +100,10 @@ public class GuiArcaneWorkbench extends GuiContainer {
.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack().getItem() instanceof ItemWand){ .getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack().getItem() instanceof ItemWand){
// Tooltip box // Tooltip box
drawTexturedModalRect(guiLeft + xSize, guiTop, xSize, 0, 256 - xSize - 4, ySize); drawTexturedModalRect(guiLeft + xSizeNoTip, guiTop, xSizeNoTip, 0, 256 - xSizeNoTip - 4, ySize);
drawTexturedModalRect(guiLeft + 252, guiTop, xSize + 4, 0, tooltipWidth - 2 * (256 - xSize - 4), ySize); drawTexturedModalRect(guiLeft + 252, guiTop, xSizeNoTip + 4, 0, tooltipWidth - 2 * (256 - xSizeNoTip - 4), ySize);
drawTexturedModalRect(guiLeft + xSize + tooltipWidth - (256 - xSize - 4), guiTop, xSize + 4, 0, drawTexturedModalRect(guiLeft + xSize - (256 - xSizeNoTip - 4), guiTop, xSizeNoTip + 4, 0,
256 - xSize - 4, ySize); 256 - xSizeNoTip - 4, ySize);
ItemStack wand = this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack(); ItemStack wand = this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack();
@@ -115,7 +124,7 @@ public class GuiArcaneWorkbench extends GuiContainer {
.bindTexture(discovered ? spell.element.getIcon() : Element.MAGIC.getIcon()); .bindTexture(discovered ? spell.element.getIcon() : Element.MAGIC.getIcon());
// Renders the little element icon // Renders the little element icon
WizardryUtilities.drawTexturedRect(guiLeft + xSize + 5, guiTop + 34 + 10 * i++, 8, 8); WizardryUtilities.drawTexturedRect(guiLeft + xSizeNoTip + 5, guiTop + 34 + 10 * i++, 8, 8);
} }
int x = 0; int x = 0;
@@ -129,8 +138,8 @@ public class GuiArcaneWorkbench extends GuiContainer {
if(level > 0){ if(level > 0){
ItemStack stack = new ItemStack(item, level); ItemStack stack = new ItemStack(item, level);
GlStateManager.enableDepth(); GlStateManager.enableDepth();
this.itemRender.renderItemAndEffectIntoGUI(stack, guiLeft + xSize + 6 + x, y); this.itemRender.renderItemAndEffectIntoGUI(stack, guiLeft + xSizeNoTip + 6 + x, y);
this.itemRender.renderItemOverlayIntoGUI(this.fontRenderer, stack, guiLeft + xSize + 6 + x, y, this.itemRender.renderItemOverlayIntoGUI(this.fontRenderer, stack, guiLeft + xSizeNoTip + 6 + x, y,
null); null);
x += 18; x += 18;
GlStateManager.disableDepth(); GlStateManager.disableDepth();
@@ -161,11 +170,11 @@ public class GuiArcaneWorkbench extends GuiContainer {
ItemStack wand = this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack(); ItemStack wand = this.inventorySlots.getSlot(ContainerArcaneWorkbench.WAND_SLOT).getStack();
this.fontRenderer.drawStringWithShadow("\u00A7f" + wand.getDisplayName(), xSize + 6, 6, 0); this.fontRenderer.drawStringWithShadow("\u00A7f" + wand.getDisplayName(), xSizeNoTip + 6, 6, 0);
this.fontRenderer.drawStringWithShadow( this.fontRenderer.drawStringWithShadow(
"\u00A77" + I18n.format("container.wizardry:arcane_workbench.mana") + " " "\u00A77" + I18n.format("container." + Wizardry.MODID + ":arcane_workbench.mana") + " "
+ (wand.getMaxDamage() - wand.getItemDamage()) + "/" + wand.getMaxDamage(), + (wand.getMaxDamage() - wand.getItemDamage()) + "/" + wand.getMaxDamage(),
xSize + 6, 20, 0); xSizeNoTip + 6, 20, 0);
Spell[] spells = WandHelper.getSpells(wand); Spell[] spells = WandHelper.getSpells(wand);
@@ -180,10 +189,10 @@ public class GuiArcaneWorkbench extends GuiContainer {
} }
if(discovered){ if(discovered){
this.fontRenderer.drawStringWithShadow(spell.getDisplayNameWithFormatting(), xSize + 16, y, 0); this.fontRenderer.drawStringWithShadow(spell.getDisplayNameWithFormatting(), xSizeNoTip + 16, y, 0);
}else{ }else{
this.mc.standardGalacticFontRenderer.drawStringWithShadow( this.mc.standardGalacticFontRenderer.drawStringWithShadow(
"\u00A79" + SpellGlyphData.getGlyphName(spell, this.mc.world), xSize + 16, y, 0); "\u00A79" + SpellGlyphData.getGlyphName(spell, this.mc.world), xSizeNoTip + 16, y, 0);
} }
y += 10; y += 10;
} }
@@ -191,7 +200,7 @@ public class GuiArcaneWorkbench extends GuiContainer {
if(WandHelper.getTotalUpgrades(wand) > 0){ if(WandHelper.getTotalUpgrades(wand) > 0){
this.fontRenderer.drawStringWithShadow( this.fontRenderer.drawStringWithShadow(
"\u00A7f" + I18n.format("container.wizardry:arcane_workbench.upgrades"), xSize + 6, y + 6, 0); "\u00A7f" + I18n.format("container." + Wizardry.MODID + ":arcane_workbench.upgrades"), xSizeNoTip + 6, y + 6, 0);
int x = 0; int x = 0;
y = 50 + spells.length * 10; y = 50 + spells.length * 10;
@@ -203,7 +212,7 @@ public class GuiArcaneWorkbench extends GuiContainer {
if(level > 0){ if(level > 0){
// The javadoc for isPointInRegion is ambiguous; what it means is that the REGION is // The javadoc for isPointInRegion is ambiguous; what it means is that the REGION is
// relative to the GUI but the POINT isn't. // relative to the GUI but the POINT isn't.
if(isPointInRegion(xSize + 6 + x, y, 16, 16, mouseX, mouseY)){ if(isPointInRegion(xSizeNoTip + 6 + x, y, 16, 16, mouseX, mouseY)){
ItemStack stack = new ItemStack(item, level); ItemStack stack = new ItemStack(item, level);
this.renderToolTip(stack, mouseX - guiLeft, mouseY - guiTop); this.renderToolTip(stack, mouseX - guiLeft, mouseY - guiTop);
} }
@@ -1,5 +1,6 @@
package electroblob.wizardry.client; package electroblob.wizardry.client;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
@@ -11,16 +12,14 @@ import net.minecraftforge.fml.relauncher.SideOnly;
class GuiButtonApply extends GuiButton { class GuiButtonApply extends GuiButton {
public GuiButtonApply(int id, int x, int y){ public GuiButtonApply(int id, int x, int y){
super(id, x, y, 32, 16, I18n.format("container." + Wizardry.MODID + ":arcane_workbench.apply"));
super(id, x, y, 32, 16, I18n.format("container.wizardry:arcane_workbench.apply"));
} }
@Override @Override
public void drawButton(Minecraft minecraft, int mouseX, int mouseY){ public void drawButton(Minecraft minecraft, int mouseX, int mouseY, float partialTicks){
// Whether the button is highlighted // Whether the button is highlighted
this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height;
&& mouseY < this.y + this.height;
int k = 36; int k = 36;
int l = 220; int l = 220;
@@ -9,16 +9,12 @@ import net.minecraftforge.fml.relauncher.SideOnly;
class GuiButtonInvisible extends GuiButton { class GuiButtonInvisible extends GuiButton {
public GuiButtonInvisible(int id, int x, int y, int width, int height){ public GuiButtonInvisible(int id, int x, int y, int width, int height){
super(id, x, y, width, height, ""); super(id, x, y, width, height, "");
} }
/** @Override
* Draws this button to the screen. public void drawButton(Minecraft minecraft, int mouseX, int mouseY, float partialTicks){
*/ this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height;
public void drawButton(Minecraft par1Minecraft, int par2, int par3){
this.hovered = par2 >= this.x && par3 >= this.y && par2 < this.x + this.width
&& par3 < this.y + this.height;
} }
} }
@@ -22,15 +22,14 @@ class GuiButtonTurnPage extends GuiButton {
this.nextPage = isNextPage; this.nextPage = isNextPage;
} }
/** @Override
* Draws this button to the screen. public void drawButton(Minecraft minecraft, int mouseX, int mouseY, float partialTicks){
*/
public void drawButton(Minecraft par1Minecraft, int par2, int par3){
if(this.visible){ if(this.visible){
boolean flag = par2 >= this.x && par3 >= this.y && par2 < this.x + this.width
&& par3 < this.y + this.height; boolean flag = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height;
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
par1Minecraft.getTextureManager().bindTexture(texture); minecraft.getTextureManager().bindTexture(texture);
int k = 0; int k = 0;
int l = 192; int l = 192;
@@ -19,13 +19,13 @@ public class GuiConfigWizardry extends GuiConfig {
public GuiConfigWizardry(GuiScreen parent){ public GuiConfigWizardry(GuiScreen parent){
super(parent, getConfigEntries(), Wizardry.MODID, false, false, super(parent, getConfigEntries(), Wizardry.MODID, false, false,
Wizardry.NAME + " - " + I18n.format("config.wizardry.title.general")); Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title.general"));
// this.titleLine2 = "File location: " + Wizardry.config.getConfigFile().getAbsolutePath(); // this.titleLine2 = "File location: " + Wizardry.config.getConfigFile().getAbsolutePath();
} }
private static List<IConfigElement> getConfigEntries(){ private static List<IConfigElement> getConfigEntries(){
List<IConfigElement> configList = new ArrayList<IConfigElement>(1); List<IConfigElement> configList = new ArrayList<IConfigElement>(1);
configList.add(new DummyCategoryElement("spellsConfig", "config.wizardry.category." + Settings.SPELLS_CATEGORY, configList.add(new DummyCategoryElement("spellsConfig", "config." + Wizardry.MODID + ".category." + Settings.SPELLS_CATEGORY,
SpellsCategory.class)); SpellsCategory.class));
configList.add(new DummyCategoryElement("resistancesConfig", configList.add(new DummyCategoryElement("resistancesConfig",
"config.wizardry.category." + Settings.RESISTANCES_CATEGORY, ResistancesCategory.class)); "config.wizardry.category." + Settings.RESISTANCES_CATEGORY, ResistancesCategory.class));
@@ -48,9 +48,9 @@ public class GuiConfigWizardry extends GuiConfig {
(new ConfigElement(Wizardry.settings.getConfigCategory(Settings.SPELLS_CATEGORY))) (new ConfigElement(Wizardry.settings.getConfigCategory(Settings.SPELLS_CATEGORY)))
.getChildElements(), .getChildElements(),
this.owningScreen.modID, Settings.SPELLS_CATEGORY, false, false, this.owningScreen.modID, Settings.SPELLS_CATEGORY, false, false,
Wizardry.NAME + " - " + I18n.format("config.wizardry.title." + Settings.SPELLS_CATEGORY)); Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title." + Settings.SPELLS_CATEGORY));
spellsMenu.titleLine2 = I18n.format("config.wizardry.subtitle." + Settings.SPELLS_CATEGORY); spellsMenu.titleLine2 = I18n.format("config." + Wizardry.MODID + ".subtitle." + Settings.SPELLS_CATEGORY);
return spellsMenu; return spellsMenu;
} }
@@ -70,9 +70,9 @@ public class GuiConfigWizardry extends GuiConfig {
(new ConfigElement(Wizardry.settings.getConfigCategory(Settings.RESISTANCES_CATEGORY))) (new ConfigElement(Wizardry.settings.getConfigCategory(Settings.RESISTANCES_CATEGORY)))
.getChildElements(), .getChildElements(),
this.owningScreen.modID, Settings.RESISTANCES_CATEGORY, false, false, this.owningScreen.modID, Settings.RESISTANCES_CATEGORY, false, false,
Wizardry.NAME + " - " + I18n.format("config.wizardry.title." + Settings.RESISTANCES_CATEGORY)); Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title." + Settings.RESISTANCES_CATEGORY));
idsMenu.titleLine2 = I18n.format("config.wizardry.subtitle." + Settings.RESISTANCES_CATEGORY); idsMenu.titleLine2 = I18n.format("config." + Wizardry.MODID + ".subtitle." + Settings.RESISTANCES_CATEGORY);
return idsMenu; return idsMenu;
} }
@@ -3,10 +3,10 @@ package electroblob.wizardry.client;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.io.Charsets;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;
@@ -22,10 +22,10 @@ import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
@@ -46,15 +46,11 @@ public class GuiWizardHandbook extends GuiScreen {
// I think this is actually ever-so-slightly lighter than pure black, but the difference is unnoticeable. // I think this is actually ever-so-slightly lighter than pure black, but the difference is unnoticeable.
private static final int BLACK = 1; private static final int BLACK = 1;
public static final ResourceLocation regularHandbook = new ResourceLocation(Wizardry.MODID, public static final ResourceLocation regularHandbook = new ResourceLocation(Wizardry.MODID, "textures/gui/handbook.png");
"textures/gui/handbook.png");
public static final ResourceLocation ore = new ResourceLocation(Wizardry.MODID, "textures/gui/ore_picture.png"); public static final ResourceLocation ore = new ResourceLocation(Wizardry.MODID, "textures/gui/ore_picture.png");
public static final ResourceLocation crystal = new ResourceLocation(Wizardry.MODID, public static final ResourceLocation crystal = new ResourceLocation(Wizardry.MODID, "textures/items/magic_crystal.png");
"textures/items/magic_crystal.png"); public static final ResourceLocation workbenchGui = new ResourceLocation(Wizardry.MODID, "textures/gui/arcane_workbench.png");
public static final ResourceLocation workbenchGui = new ResourceLocation(Wizardry.MODID, public static final ResourceLocation craftingGrids = new ResourceLocation(Wizardry.MODID, "textures/gui/handbook_recipes.png");
"textures/gui/arcane_workbench.png");
public static final ResourceLocation craftingGrids = new ResourceLocation(Wizardry.MODID,
"textures/gui/handbook_recipes.png");
private List<ArrayList<String>> text; private List<ArrayList<String>> text;
private List<Section> sections; private List<Section> sections;
@@ -267,30 +263,30 @@ public class GuiWizardHandbook extends GuiScreen {
BufferedReader bufferedreader = null; BufferedReader bufferedreader = null;
String textFilepath = "wizardry:texts/handbook_" String textFilepath = Wizardry.MODID + ":texts/handbook_"
+ Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode() + ".txt"; + Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode() + ".txt";
try{ try{
bufferedreader = new BufferedReader(new InputStreamReader( bufferedreader = new BufferedReader(new InputStreamReader(
this.mc.getResourceManager().getResource(new ResourceLocation(textFilepath)).getInputStream(), this.mc.getResourceManager().getResource(new ResourceLocation(textFilepath)).getInputStream(),
Charsets.UTF_8)); StandardCharsets.UTF_8));
}catch (IOException e){ }catch (IOException e){
Wizardry.logger.info( Wizardry.logger.info(
"Wizard handbook text file missing for the current language. Using default (English - US) instead."); "Wizard handbook text file missing for the current language. Using default (English - US) instead.");
textFilepath = "wizardry:texts/handbook_en_US.txt"; textFilepath = Wizardry.MODID + ":texts/handbook_en_us.txt";
try { try {
bufferedreader = new BufferedReader(new InputStreamReader( bufferedreader = new BufferedReader(new InputStreamReader(
this.mc.getResourceManager().getResource(new ResourceLocation(textFilepath)).getInputStream(), this.mc.getResourceManager().getResource(new ResourceLocation(textFilepath)).getInputStream(),
Charsets.UTF_8)); StandardCharsets.UTF_8));
} catch (IOException x){ } catch (IOException x){
Wizardry.logger.error("Couldn't find file: wizardry:assets/texts/handbook_en_US.txt. The file may be" Wizardry.logger.error("Couldn't find file: " + Wizardry.MODID + "/assets/texts/handbook_en_us.txt. The file may be"
+ "missing; please try re-downloading and reinstalling Wizardry.", x); + "missing; please try re-downloading and reinstalling Wizardry.", x);
} }
} }
@@ -427,7 +423,7 @@ public class GuiWizardHandbook extends GuiScreen {
}catch (IOException e){ }catch (IOException e){
Wizardry.logger.error("Something went wrong reading file: " + textFilepath Wizardry.logger.error("Something went wrong reading file: " + textFilepath
+ ". The file may be damaged;" + "please try re-downloading and reinstalling wizardry.", e); + ". The file may be damaged; please try re-downloading and reinstalling wizardry.", e);
} }
} }
} }
@@ -530,7 +526,7 @@ public class GuiWizardHandbook extends GuiScreen {
int height){ int height){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((x), y + finalHeight, 0).tex(u, v + height).endVertex(); buffer.pos((x), y + finalHeight, 0).tex(u, v + height).endVertex();
buffer.pos(x + finalWidth, y + finalHeight, 0).tex(u + width, v + height).endVertex(); buffer.pos(x + finalWidth, y + finalHeight, 0).tex(u + width, v + height).endVertex();
@@ -17,10 +17,10 @@ import electroblob.wizardry.tileentity.ContainerArcaneWorkbench;
import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WandHelper;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -153,7 +153,7 @@ public final class WizardryClientEventHandler {
&& rayTrace.entityHit == event.getEntity() && properties != null && properties.selectedMinion != null){ && rayTrace.entityHit == event.getEntity() && properties != null && properties.selectedMinion != null){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -194,7 +194,7 @@ public final class WizardryClientEventHandler {
if(properties != null && properties.selectedMinion != null && properties.selectedMinion.get() == event.getEntity()){ if(properties != null && properties.selectedMinion != null && properties.selectedMinion.get() == event.getEntity()){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -233,11 +233,11 @@ public final class WizardryClientEventHandler {
// Sixth sense // Sixth sense
if(mc.player.isPotionActive(WizardryPotions.sixth_sense) && !(event.getEntity() instanceof EntityArmorStand) && event.getEntity() != mc.player if(mc.player.isPotionActive(WizardryPotions.sixth_sense) && !(event.getEntity() instanceof EntityArmorStand) && event.getEntity() != mc.player
&& mc.player.getActivePotionEffect(WizardryPotions.sixth_sense) != null && event.getEntity().getDistanceToEntity(mc.player) < 20 && mc.player.getActivePotionEffect(WizardryPotions.sixth_sense) != null && event.getEntity().getDistance(mc.player) < 20
* (1 + mc.player.getActivePotionEffect(WizardryPotions.sixth_sense).getAmplifier() * Constants.RANGE_INCREASE_PER_LEVEL)){ * (1 + mc.player.getActivePotionEffect(WizardryPotions.sixth_sense).getAmplifier() * Constants.RANGE_INCREASE_PER_LEVEL)){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -293,7 +293,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(sixthSenseOverlayTexture); Minecraft.getMinecraft().renderEngine.bindTexture(sixthSenseOverlayTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
@@ -323,7 +323,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(frostOverlayTexture); Minecraft.getMinecraft().renderEngine.bindTexture(frostOverlayTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
@@ -371,7 +371,7 @@ public final class WizardryClientEventHandler {
GlStateManager.scale(1.1, 1.1, 1.1); GlStateManager.scale(1.1, 1.1, 1.1);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
@@ -421,7 +421,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(shadowWardTexture); Minecraft.getMinecraft().renderEngine.bindTexture(shadowWardTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.translate(0, 1.2, 0); GlStateManager.translate(0, 1.2, 0);
GlStateManager.rotate(entityplayer.world.getWorldTime() * -2, 0, 0, 1); GlStateManager.rotate(entityplayer.world.getWorldTime() * -2, 0, 0, 1);
@@ -472,7 +472,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(wingTexture); Minecraft.getMinecraft().renderEngine.bindTexture(wingTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -615,7 +615,7 @@ public final class WizardryClientEventHandler {
private static void renderShield(Tessellator tessellator){ private static void renderShield(Tessellator tessellator){
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
double widthOuter = 0.6d; double widthOuter = 0.6d;
double heightOuter = 0.7d; double heightOuter = 0.7d;
@@ -174,7 +174,7 @@ public final class WizardryItemModels {
if(item.getHasSubtypes()){ if(item.getHasSubtypes()){
NonNullList<ItemStack> items = NonNullList.create(); NonNullList<ItemStack> items = NonNullList.create();
item.getSubItems(item, null, items); // Client-only method, but we're client-side so this is OK. item.getSubItems(item.getCreativeTab(), items); // Client-only method, but we're client-side so this is OK.
for(ItemStack stack : items){ for(ItemStack stack : items){
ModelLoader.setCustomModelResourceLocation(item, stack.getMetadata(), ModelLoader.setCustomModelResourceLocation(item, stack.getMetadata(),
new ModelResourceLocation(item.getRegistryName(), "inventory")); new ModelResourceLocation(item.getRegistryName(), "inventory"));
@@ -4,11 +4,11 @@ import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -139,9 +139,9 @@ public abstract class ParticleCustomTexture extends Particle {
// Overridden to bind the new texture. I think this can be done with TextureAtlasSprite, but this works as it is // Overridden to bind the new texture. I think this can be done with TextureAtlasSprite, but this works as it is
// so I'm not changing it for the time being. // so I'm not changing it for the time being.
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity viewer, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity viewer, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.pushAttrib(); GlStateManager.pushAttrib();
@@ -1,7 +1,7 @@
package electroblob.wizardry.client.particle; package electroblob.wizardry.client.particle;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -28,7 +28,7 @@ public class ParticleDarkMagic extends Particle {
} }
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity entity, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity entity, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge * 32.0F; float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge * 32.0F;
@@ -1,7 +1,7 @@
package electroblob.wizardry.client.particle; package electroblob.wizardry.client.particle;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -32,7 +32,7 @@ public class ParticleMagicFlame extends Particle {
} }
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity entity, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity entity, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge; float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge;
this.particleScale = this.flameScale * (1.0F - f6 * f6 * 0.5F); this.particleScale = this.flameScale * (1.0F - f6 * f6 * 0.5F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.entity.EntityArc;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -38,7 +38,7 @@ public class RenderArc extends Render<EntityArc> {
// System.out.println("doRender parameters: " + d0 + ", " + d1 + ", " + d2 + ", " + fa + ", " + fb); // System.out.println("doRender parameters: " + d0 + ", " + d1 + ", " + d2 + ", " + fa + ", " + fb);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(textures[arc.textureIndex]); // This MUST be after the tessellator declaration and the gl stuff bindTexture(textures[arc.textureIndex]); // This MUST be after the tessellator declaration and the gl stuff
@@ -6,10 +6,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; import electroblob.wizardry.tileentity.ContainerArcaneWorkbench;
import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -18,16 +18,13 @@ import net.minecraft.util.ResourceLocation;
public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityArcaneWorkbench> { public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityArcaneWorkbench> {
private static final ResourceLocation runeTexture = new ResourceLocation(Wizardry.MODID, private static final ResourceLocation runeTexture = new ResourceLocation(Wizardry.MODID, "textures/entity/rune.png");
"textures/entity/rune.png");
public RenderArcaneWorkbench(){ public RenderArcaneWorkbench(){}
}
@Override @Override
public void renderTileEntityAt(TileEntityArcaneWorkbench tileentity, double x, double y, double z, public void render(TileEntityArcaneWorkbench tileentity, double x, double y, double z, float partialTicks, int destroyStage, float alpha){
float partialTicks, int destroyStage){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
// This line makes stuff render in the same place relative to the world wherever the player is. // This line makes stuff render in the same place relative to the world wherever the player is.
GlStateManager.translate((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); GlStateManager.translate((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F);
@@ -54,12 +51,11 @@ public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityA
GlStateManager.disableLighting(); GlStateManager.disableLighting();
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f);
GlStateManager.enableBlend(); GlStateManager.enableBlend();
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // This line fixes the weird GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // This line fixes the weird brightness bug.
// brightness bug.
GlStateManager.rotate(tileentity.timer, 0.0f, 1.0f, 0.0f); GlStateManager.rotate(tileentity.timer, 0.0f, 1.0f, 0.0f);
GlStateManager.translate(0.0f, 0.65f, 0.0f); GlStateManager.translate(0.0f, 0.65f, 0.0f);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(runeTexture); bindTexture(runeTexture);
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
@@ -86,14 +82,13 @@ public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityA
if(!stack.isEmpty()){ if(!stack.isEmpty()){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F); //GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(180, 0, 1, 0); GlStateManager.rotate(180, 0, 1, 0);
// View angle is negated because of the 180 flip. GlStateManager.rotate((float)(viewAngle - 90f), 0, 0, 1);
GlStateManager.rotate((float)(-viewAngle - 90f), 0, 0, 1);
// Does the floaty thing // Does the floaty thing
GlStateManager.translate(0.0F, 0.0F, (float)tileentity.yOffset / 5000.0F - 0.55f); GlStateManager.translate(0.0F, 0.0F, (float)tileentity.yOffset / 5000.0F + 0.55f);
GlStateManager.scale(0.75F, 0.75F, 0.75F); GlStateManager.scale(0.75F, 0.75F, 0.75F);
// This is what the item frame uses so it's definitely what we want. // This is what the item frame uses so it's definitely what we want.
Minecraft.getMinecraft().getRenderItem().renderItem(stack, TransformType.FIXED); Minecraft.getMinecraft().getRenderItem().renderItem(stack, TransformType.FIXED);
@@ -8,11 +8,11 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityBlackHole; import electroblob.wizardry.entity.construct.EntityBlackHole;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderBlackHole extends Render<EntityBlackHole> {
// float yaw = (float) Math.toDegrees(Math.atan(x/z)); // float yaw = (float) Math.toDegrees(Math.atan(x/z));
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
@@ -6,10 +6,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityBubble; import electroblob.wizardry.entity.construct.EntityBubble;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderBubble extends Render<EntityBubble> {
GlStateManager.disableLighting(); GlStateManager.disableLighting();
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
}else{ }else{
int j = entity.getBrightnessForRender(par9); int j = entity.getBrightnessForRender();
int k = j % 65536; int k = j % 65536;
int l = j / 65536; int l = j / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F);
@@ -70,7 +70,7 @@ public class RenderBubble extends Render<EntityBubble> {
double pixelwidth = (1.0d / 128); double pixelwidth = (1.0d / 128);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityDecay; import electroblob.wizardry.entity.construct.EntityDecay;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderDecay extends Render<EntityDecay> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.construct.EntityFireRing; import electroblob.wizardry.entity.construct.EntityFireRing;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -50,7 +50,7 @@ public class RenderFireRing extends Render<EntityFireRing> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex();
buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex();
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.projectile.EntityForceArrow; import electroblob.wizardry.entity.projectile.EntityForceArrow;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -44,7 +44,7 @@ public class RenderForceArrow extends Render<EntityForceArrow> {
0.0F, 1.0F); 0.0F, 1.0F);
GlStateManager.rotate(180, 0, 1, 0); GlStateManager.rotate(180, 0, 1, 0);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float pixel = 1.0f / 32.0f; float pixel = 1.0f / 32.0f;
float u1 = 0.0f; float u1 = 0.0f;
float u2 = pixel * 14; float u2 = pixel * 14;
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityIceSpike; import electroblob.wizardry.entity.construct.EntityIceSpike;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -32,7 +32,7 @@ public class RenderIceSpike extends Render<EntityIceSpike> {
// with setLightmapTextureCoords. // with setLightmapTextureCoords.
GlStateManager.disableLighting(); GlStateManager.disableLighting();
int j = entity.getBrightnessForRender(partialTickTime); int j = entity.getBrightnessForRender();
int k = j % 65536; int k = j % 65536;
int l = j / 65536; int l = j / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F);
@@ -40,7 +40,7 @@ public class RenderIceSpike extends Render<EntityIceSpike> {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(texture); bindTexture(texture);
@@ -3,10 +3,10 @@ package electroblob.wizardry.client.renderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityLightningDisc; import electroblob.wizardry.entity.projectile.EntityLightningDisc;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderLightningDisc extends Render<EntityLightningDisc> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityLightningPulse; import electroblob.wizardry.entity.construct.EntityLightningPulse;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderLightningPulse extends Render<EntityLightningPulse> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex();
buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex();
@@ -3,10 +3,10 @@ package electroblob.wizardry.client.renderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityMagicArrow; import electroblob.wizardry.entity.projectile.EntityMagicArrow;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -55,7 +55,7 @@ public class RenderMagicArrow extends Render<EntityMagicArrow> {
GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9, 0.0F, GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9, 0.0F,
0.0F, 1.0F); 0.0F, 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float f2 = 0.0F; float f2 = 0.0F;
float f3 = pixelsLong / 32.0F; float f3 = pixelsLong / 32.0F;
float f4 = 0.0F; float f4 = 0.0F;
@@ -5,11 +5,11 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.tileentity.TileEntityMagicLight; import electroblob.wizardry.tileentity.TileEntityMagicLight;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -22,8 +22,8 @@ public class RenderMagicLight extends TileEntitySpecialRenderer<TileEntityMagicL
"textures/entity/light_aura.png"); "textures/entity/light_aura.png");
@Override @Override
public void renderTileEntityAt(TileEntityMagicLight tileentity, double x, double y, double z, float f, public void render(TileEntityMagicLight tileentity, double x, double y, double z, float f,
int destroyStage){ int destroyStage, float alpha){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -49,7 +49,7 @@ public class RenderMagicLight extends TileEntitySpecialRenderer<TileEntityMagicL
// Renders the aura effect // Renders the aura effect
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityMagicProjectile; import electroblob.wizardry.entity.projectile.EntityMagicProjectile;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderProjectile extends Render<EntityMagicProjectile> {
GlStateManager.scale(f2 / 1.0F, f2 / 1.0F, f2 / 1.0F); GlStateManager.scale(f2 / 1.0F, f2 / 1.0F, f2 / 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float f3 = 0.0f; float f3 = 0.0f;
float f4 = 1.0f; float f4 = 1.0f;
@@ -6,10 +6,10 @@ import electroblob.wizardry.entity.construct.EntityHealAura;
import electroblob.wizardry.entity.construct.EntityMagicConstruct; import electroblob.wizardry.entity.construct.EntityMagicConstruct;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -64,7 +64,7 @@ public class RenderSigil extends Render<EntityMagicConstruct> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -13,8 +13,8 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
private int destroyStage = 0; // Gets set each time a statue is rendered to allow access from the layer renderer private int destroyStage = 0; // Gets set each time a statue is rendered to allow access from the layer renderer
@Override @Override
public void renderTileEntityAt(TileEntityStatue statue, double x, double y, double z, float partialTicks, public void render(TileEntityStatue statue, double x, double y, double z, float partialTicks,
int destroyStage){ int destroyStage, float alpha){
// Multiblock support for the breaking animation. The chest has its own way of doing this in // Multiblock support for the breaking animation. The chest has its own way of doing this in
// TileEntityRendererDispatcher, but I don't have access to that. // TileEntityRendererDispatcher, but I don't have access to that.
@@ -24,8 +24,8 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
if(tileentity instanceof TileEntityStatue){ if(tileentity instanceof TileEntityStatue){
// If this is the block breaking animation pass and this isn't the bottom block, divert the call to // If this is the block breaking animation pass and this isn't the bottom block, divert the call to
// the bottom block. // the bottom block.
this.renderTileEntityAt((TileEntityStatue)tileentity, x, y - (statue.position - 1), z, partialTicks, this.render((TileEntityStatue)tileentity, x, y - (statue.position - 1), z, partialTicks,
destroyStage); destroyStage, alpha);
} }
} }
@@ -39,7 +39,7 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
GlStateManager.enableLighting(); GlStateManager.enableLighting();
float yaw = statue.creature.prevRotationYaw; float yaw = statue.creature.prevRotationYaw;
int i = statue.creature.getBrightnessForRender(0); int i = statue.creature.getBrightnessForRender();
int j = i % 65536; int j = i % 65536;
int k = i / 65536; int k = i / 65536;
@@ -51,7 +51,7 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
if(!statue.isIce) statue.creature.setInvisible(true); if(!statue.isIce) statue.creature.setInvisible(true);
// Setting the last parameter to true prevents the debug bounding box from rendering. // Setting the last parameter to true prevents the debug bounding box from rendering.
// For some reason, passing in the partialTicks causes the entity to spin round really fast // For some reason, passing in the partialTicks causes the entity to spin round really fast
Minecraft.getMinecraft().getRenderManager().doRenderEntity(statue.creature, 0, 0, 0, 0, 0, true); Minecraft.getMinecraft().getRenderManager().renderEntity(statue.creature, 0, 0, 0, 0, 0, true);
if(!statue.isIce) statue.creature.setInvisible(false); if(!statue.isIce) statue.creature.setInvisible(false);
GlStateManager.popMatrix(); GlStateManager.popMatrix();
@@ -46,8 +46,8 @@ public class CommandCastSpell extends CommandBase {
public String getUsage(ICommandSender sender){ public String getUsage(ICommandSender sender){
// Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there // Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there
// the custom command name will not display. // the custom command name will not display.
return "commands.wizardry:cast.usage"; return "commands." + Wizardry.MODID + ":cast.usage";
// return I18n.format("commands.wizardry:cast.usage", Wizardry.settings.castCommandName); // return I18n.format("commands." + Wizardry.MODID + ":cast.usage", Wizardry.settings.castCommandName);
} }
@Override @Override
@@ -66,7 +66,7 @@ public class CommandCastSpell extends CommandBase {
public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{ public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{
if(arguments.length < 1){ if(arguments.length < 1){
throw new WrongUsageException("commands.wizardry:cast.usage", Wizardry.settings.castCommandName); throw new WrongUsageException("commands." + Wizardry.MODID + ":cast.usage", Wizardry.settings.castCommandName);
}else{ }else{
// ===== Parameter retrieval ===== // ===== Parameter retrieval =====
@@ -85,7 +85,7 @@ public class CommandCastSpell extends CommandBase {
Spell spell = Spell.get(arguments[i++]); Spell spell = Spell.get(arguments[i++]);
if(spell == null){ if(spell == null){
throw new NumberInvalidException("commands.wizardry:cast.not_found", new Object[]{arguments[i - 1]}); throw new NumberInvalidException("commands." + Wizardry.MODID + ":cast.not_found", new Object[]{arguments[i - 1]});
} }
boolean castAsOtherPlayer = false; boolean castAsOtherPlayer = false;
@@ -120,7 +120,7 @@ public class CommandCastSpell extends CommandBase {
try{ try{
modifiers = SpellModifiers.fromNBT(JsonToNBT.getTagFromJson(nbt)); modifiers = SpellModifiers.fromNBT(JsonToNBT.getTagFromJson(nbt));
}catch (NBTException nbtexception){ }catch (NBTException nbtexception){
throw new CommandException("commands.wizardry:cast.tag_error", nbtexception.getMessage()); throw new CommandException("commands." + Wizardry.MODID + ":cast.tag_error", nbtexception.getMessage());
} }
for(float multiplier : modifiers.getModifiers().values()){ for(float multiplier : modifiers.getModifiers().values()){
@@ -157,10 +157,10 @@ public class CommandCastSpell extends CommandBase {
if(castAsOtherPlayer){ if(castAsOtherPlayer){
sender.sendMessage( sender.sendMessage(
new TextComponentTranslation("commands.wizardry:cast.success_remote_continuous", new TextComponentTranslation("commands." + Wizardry.MODID + ":cast.success_remote_continuous",
spell.getNameForTranslationFormatted(), caster.getName())); spell.getNameForTranslationFormatted(), caster.getName()));
}else{ }else{
sender.sendMessage(new TextComponentTranslation("commands.wizardry:cast.success_continuous", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":cast.success_continuous",
spell.getNameForTranslationFormatted())); spell.getNameForTranslationFormatted()));
} }
} }
@@ -183,10 +183,10 @@ public class CommandCastSpell extends CommandBase {
} }
if(castAsOtherPlayer){ if(castAsOtherPlayer){
sender.sendMessage(new TextComponentTranslation("commands.wizardry:cast.success_remote", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":cast.success_remote",
spell.getNameForTranslationFormatted(), caster.getName())); spell.getNameForTranslationFormatted(), caster.getName()));
}else{ }else{
sender.sendMessage(new TextComponentTranslation("commands.wizardry:cast.success", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":cast.success",
spell.getNameForTranslationFormatted())); spell.getNameForTranslationFormatted()));
} }
return; return;
@@ -199,7 +199,7 @@ public class CommandCastSpell extends CommandBase {
/** Displays the "Unable to cast [spell]" message in the chat. */ /** Displays the "Unable to cast [spell]" message in the chat. */
private void displayFailMessage(ICommandSender sender, Spell spell){ private void displayFailMessage(ICommandSender sender, Spell spell){
ITextComponent message = new TextComponentTranslation("commands.wizardry:cast.fail", ITextComponent message = new TextComponentTranslation("commands." + Wizardry.MODID + ":cast.fail",
spell.getNameForTranslationFormatted()); spell.getNameForTranslationFormatted());
message.getStyle().setColor(TextFormatting.RED); message.getStyle().setColor(TextFormatting.RED);
sender.sendMessage(message); sender.sendMessage(message);
@@ -41,8 +41,8 @@ public class CommandDiscoverSpell extends CommandBase {
public String getUsage(ICommandSender sender){ public String getUsage(ICommandSender sender){
// Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there // Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there
// the custom command name will not display. // the custom command name will not display.
return "commands.wizardry:discoverspell.usage"; return "commands." + Wizardry.MODID + ":discoverspell.usage";
// return I18n.format("commands.wizardry:discoverspell.usage", Wizardry.settings.discoverspellCommandName); // return I18n.format("commands." + Wizardry.MODID + ":discoverspell.usage", Wizardry.settings.discoverspellCommandName);
} }
@Override @Override
@@ -61,7 +61,7 @@ public class CommandDiscoverSpell extends CommandBase {
public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{ public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{
if(arguments.length < 1){ if(arguments.length < 1){
throw new WrongUsageException("commands.wizardry:discoverspell.usage", throw new WrongUsageException("commands." + Wizardry.MODID + ":discoverspell.usage",
Wizardry.settings.discoverspellCommandName); Wizardry.settings.discoverspellCommandName);
}else{ }else{
@@ -91,7 +91,7 @@ public class CommandDiscoverSpell extends CommandBase {
spell = Spell.get(arguments[i++]); spell = Spell.get(arguments[i++]);
if(spell == null){ if(spell == null){
throw new NumberInvalidException("commands.wizardry:discoverspell.not_found", throw new NumberInvalidException("commands." + Wizardry.MODID + ":discoverspell.not_found",
new Object[]{arguments[i - 1]}); new Object[]{arguments[i - 1]});
} }
} }
@@ -116,21 +116,21 @@ public class CommandDiscoverSpell extends CommandBase {
if(clear){ if(clear){
properties.spellsDiscovered.clear(); properties.spellsDiscovered.clear();
sender.sendMessage( sender.sendMessage(
new TextComponentTranslation("commands.wizardry:discoverspell.clear", player.getName())); new TextComponentTranslation("commands." + Wizardry.MODID + ":discoverspell.clear", player.getName()));
}else if(all){ }else if(all){
properties.spellsDiscovered.addAll(Spell.getSpells(Spell.allSpells)); properties.spellsDiscovered.addAll(Spell.getSpells(Spell.allSpells));
sender.sendMessage( sender.sendMessage(
new TextComponentTranslation("commands.wizardry:discoverspell.all", player.getName())); new TextComponentTranslation("commands." + Wizardry.MODID + ":discoverspell.all", player.getName()));
}else{ }else{
if(properties.hasSpellBeenDiscovered(spell)){ if(properties.hasSpellBeenDiscovered(spell)){
properties.spellsDiscovered.remove(spell); properties.spellsDiscovered.remove(spell);
sender.sendMessage(new TextComponentTranslation("commands.wizardry:discoverspell.removespell", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":discoverspell.removespell",
spell.getNameForTranslationFormatted(), player.getName())); spell.getNameForTranslationFormatted(), player.getName()));
}else{ }else{
if(!MinecraftForge.EVENT_BUS if(!MinecraftForge.EVENT_BUS
.post(new DiscoverSpellEvent(player, spell, DiscoverSpellEvent.Source.COMMAND))){ .post(new DiscoverSpellEvent(player, spell, DiscoverSpellEvent.Source.COMMAND))){
properties.discoverSpell(spell); properties.discoverSpell(spell);
sender.sendMessage(new TextComponentTranslation("commands.wizardry:discoverspell.addspell", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":discoverspell.addspell",
spell.getNameForTranslationFormatted(), player.getName())); spell.getNameForTranslationFormatted(), player.getName()));
} }
} }
@@ -40,8 +40,8 @@ public class CommandSetAlly extends CommandBase {
public String getUsage(ICommandSender p_71518_1_){ public String getUsage(ICommandSender p_71518_1_){
// Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there // Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there
// the custom command name will not display. // the custom command name will not display.
return "commands.wizardry:ally.usage"; return "commands." + Wizardry.MODID + ":ally.usage";
// return I18n.format("commands.wizardry:ally.usage", Wizardry.settings.allyCommandName); // return I18n.format("commands." + Wizardry.MODID + ":ally.usage", Wizardry.settings.allyCommandName);
} }
@Override @Override
@@ -60,7 +60,7 @@ public class CommandSetAlly extends CommandBase {
public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{ public void execute(MinecraftServer server, ICommandSender sender, String[] arguments) throws CommandException{
if(arguments.length < 1){ if(arguments.length < 1){
throw new WrongUsageException("commands.wizardry:ally.usage", Wizardry.settings.allyCommandName); throw new WrongUsageException("commands." + Wizardry.MODID + ":ally.usage", Wizardry.settings.allyCommandName);
}else{ }else{
EntityPlayerMP allyOf = null; EntityPlayerMP allyOf = null;
@@ -86,7 +86,7 @@ public class CommandSetAlly extends CommandBase {
&& !WizardryUtilities.isPlayerOp((EntityPlayer)sender, server)){ && !WizardryUtilities.isPlayerOp((EntityPlayer)sender, server)){
// Displays a chat message if a non-op tries to modify another player's allies. // Displays a chat message if a non-op tries to modify another player's allies.
TextComponentTranslation TextComponentTranslation2 = new TextComponentTranslation( TextComponentTranslation TextComponentTranslation2 = new TextComponentTranslation(
"commands.wizardry:ally.permission"); "commands." + Wizardry.MODID + ":ally.permission");
TextComponentTranslation2.getStyle().setColor(TextFormatting.RED); TextComponentTranslation2.getStyle().setColor(TextFormatting.RED);
allyOf.sendMessage(TextComponentTranslation2); allyOf.sendMessage(TextComponentTranslation2);
return; return;
@@ -100,12 +100,12 @@ public class CommandSetAlly extends CommandBase {
if(allyOf == null) if(allyOf == null)
throw new PlayerNotFoundException("You must specify which player you wish to perform this action on."); throw new PlayerNotFoundException("You must specify which player you wish to perform this action on.");
if(allyOf == ally) throw new NumberInvalidException("commands.wizardry:ally.self"); if(allyOf == ally) throw new NumberInvalidException("commands." + Wizardry.MODID + ":ally.self");
if(WizardData.get(allyOf) != null){ if(WizardData.get(allyOf) != null){
String string = WizardData.get(allyOf).toggleAlly(ally) ? "add" : "remove"; String string = WizardData.get(allyOf).toggleAlly(ally) ? "add" : "remove";
if(executeAsOtherPlayer){ if(executeAsOtherPlayer){
sender.sendMessage(new TextComponentTranslation("commands.wizardry:ally." + string + "ally", sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":ally." + string + "ally",
ally.getName(), allyOf.getName())); ally.getName(), allyOf.getName()));
// In this case, the player whose allies have been modified is also notified. // In this case, the player whose allies have been modified is also notified.
allyOf.sendMessage(new TextComponentTranslation("item.wand." + string + "ally", ally.getName())); allyOf.sendMessage(new TextComponentTranslation("item.wand." + string + "ally", ally.getName()));
@@ -40,8 +40,8 @@ public class CommandViewAllies extends CommandBase {
public String getUsage(ICommandSender p_71518_1_){ public String getUsage(ICommandSender p_71518_1_){
// Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there // Not ideal, but the way this is implemented means I have no choice. Only used in the help command, so in there
// the custom command name will not display. // the custom command name will not display.
return "commands.wizardry:allies.usage"; return "commands." + Wizardry.MODID + ":allies.usage";
// return I18n.format("commands.wizardry:allies.usage", Wizardry.settings.alliesCommandName); // return I18n.format("commands." + Wizardry.MODID + ":allies.usage", Wizardry.settings.alliesCommandName);
} }
@Override @Override
@@ -76,7 +76,7 @@ public class CommandViewAllies extends CommandBase {
&& !WizardryUtilities.isPlayerOp((EntityPlayer)sender, server)){ && !WizardryUtilities.isPlayerOp((EntityPlayer)sender, server)){
// Displays a chat message if a non-op tries to view another player's allies. // Displays a chat message if a non-op tries to view another player's allies.
TextComponentTranslation TextComponentTranslation2 = new TextComponentTranslation( TextComponentTranslation TextComponentTranslation2 = new TextComponentTranslation(
"commands.wizardry:allies.permission"); "commands." + Wizardry.MODID + ":allies.permission");
TextComponentTranslation2.getStyle().setColor(TextFormatting.RED); TextComponentTranslation2.getStyle().setColor(TextFormatting.RED);
player.sendMessage(TextComponentTranslation2); player.sendMessage(TextComponentTranslation2);
return; return;
@@ -102,14 +102,14 @@ public class CommandViewAllies extends CommandBase {
// Cuts the last " ," off of the string. // Cuts the last " ," off of the string.
string = string.substring(0, string.length() - 2); string = string.substring(0, string.length() - 2);
}else{ }else{
string = I18n.format("commands.wizardry:allies.none"); string = I18n.format("commands." + Wizardry.MODID + ":allies.none");
} }
if(executeAsOtherPlayer){ if(executeAsOtherPlayer){
sender.sendMessage( sender.sendMessage(
new TextComponentTranslation("commands.wizardry:allies.list_other", player.getName(), string)); new TextComponentTranslation("commands." + Wizardry.MODID + ":allies.list_other", player.getName(), string));
}else{ }else{
sender.sendMessage(new TextComponentTranslation("commands.wizardry:allies.list", string)); sender.sendMessage(new TextComponentTranslation("commands." + Wizardry.MODID + ":allies.list", string));
} }
} }
} }
@@ -1,6 +1,7 @@
package electroblob.wizardry.constants; package electroblob.wizardry.constants;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.Style; import net.minecraft.util.text.Style;
@@ -39,7 +40,7 @@ public enum Element {
/** Returns the translated display name of this element, without formatting. */ /** Returns the translated display name of this element, without formatting. */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("element." + getUnlocalisedName()); return I18n.format("element." + getUnlocalisedName());
} }
/** Returns the {@link Style} object representing the colour of this element. */ /** Returns the {@link Style} object representing the colour of this element. */
@@ -1,5 +1,6 @@
package electroblob.wizardry.constants; package electroblob.wizardry.constants;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,6 +16,6 @@ public enum SpellType {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("spelltype." + unlocalisedName); return I18n.format("spelltype." + unlocalisedName);
} }
} }
@@ -2,6 +2,7 @@ package electroblob.wizardry.constants;
import java.util.Random; import java.util.Random;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.Style; import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -39,12 +40,12 @@ public enum Tier {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("tier." + unlocalisedName); return I18n.format("tier." + unlocalisedName);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayNameWithFormatting(){ public String getDisplayNameWithFormatting(){
return this.getFormattingCode() + net.minecraft.client.resources.I18n.format("tier." + unlocalisedName); return this.getFormattingCode() + I18n.format("tier." + unlocalisedName);
} }
public String getUnlocalisedName(){ public String getUnlocalisedName(){
@@ -106,12 +106,12 @@ public class EntityMeteor extends EntityFallingBlock {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -121,7 +121,7 @@ public class EntityBlackHole extends EntityMagicConstruct {
((EntityPlayerMP)target).connection.sendPacket(new SPacketEntityVelocity(target)); ((EntityPlayerMP)target).connection.sendPacket(new SPacketEntityVelocity(target));
} }
if(this.getDistanceToEntity(target) <= 2){ if(this.getDistance(target) <= 2){
// Damages the target if it is close enough // Damages the target if it is close enough
if(this.getCaster() != null){ if(this.getCaster() != null){
target.attackEntityFrom( target.attackEntityFrom(
@@ -74,7 +74,7 @@ public class EntityEarthquake extends EntityMagicConstruct {
for(EntityLivingBase target : targets){ for(EntityLivingBase target : targets){
// Searches in a 1 wide ring. // Searches in a 1 wide ring.
if(this.getDistanceToEntity(target) > (this.ticksExisted * speed) + 0.5 && target.posY < this.posY + 1 if(this.getDistance(target) > (this.ticksExisted * speed) + 0.5 && target.posY < this.posY + 1
&& target.posY > this.posY - 1){ && target.posY > this.posY - 1){
// Knockback must be removed in this instance, or the target will fall into the floor. // Knockback must be removed in this instance, or the target will fall into the floor.
@@ -3,7 +3,7 @@ package electroblob.wizardry.entity.construct;
import java.util.List; import java.util.List;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
@@ -103,7 +103,7 @@ public class EntityTornado extends EntityMagicConstruct {
// The 'Not Again...' achievement // The 'Not Again...' achievement
if(target instanceof EntityPig && WizardryUtilities.getRider(target) instanceof EntityPlayer){ if(target instanceof EntityPig && WizardryUtilities.getRider(target) instanceof EntityPlayer){
((EntityPlayer)WizardryUtilities.getRider(target)).addStat(WizardryAchievements.pig_tornado); WizardryAdvancementTriggers.pig_tornado.triggerFor((EntityPlayer)WizardryUtilities.getRider(target));
} }
} }
} }
@@ -136,7 +136,7 @@ public class EntityAIAttackSpell extends EntityAIBase {
} }
if(distanceSq <= (double)this.maxAttackDistance && this.seeTime >= 20){ if(distanceSq <= (double)this.maxAttackDistance && this.seeTime >= 20){
this.attacker.getNavigator().clearPathEntity(); this.attacker.getNavigator().clearPath();
}else{ }else{
this.attacker.getNavigator().tryMoveToEntityLiving(this.target, this.speed); this.attacker.getNavigator().tryMoveToEntityLiving(this.target, this.speed);
} }
@@ -12,7 +12,6 @@ import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemSpellBook;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -285,7 +284,7 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_WITCH_HURT; return SoundEvents.ENTITY_WITCH_HURT;
} }
@@ -318,15 +317,6 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
return LOOT_TABLE; return LOOT_TABLE;
} }
@Override
public void onDeath(DamageSource source){
super.onDeath(source);
if(source.getTrueSource() instanceof EntityPlayer){
((EntityPlayer)source.getTrueSource()).addStat(WizardryAchievements.defeat_evil_wizard);
}
}
@Override @Override
public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, IEntityLivingData data){ public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, IEntityLivingData data){
@@ -159,7 +159,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
this.moveStrafing *= 0.98F; this.moveStrafing *= 0.98F;
this.moveForward *= 0.98F; this.moveForward *= 0.98F;
this.randomYawVelocity *= 0.9F; this.randomYawVelocity *= 0.9F;
this.moveEntityWithHeading(this.moveStrafing, this.moveForward); this.travel(this.moveStrafing, this.moveVertical, this.moveForward);
this.world.profiler.endSection(); this.world.profiler.endSection();
this.world.profiler.startSection("push"); this.world.profiler.startSection("push");
this.collideWithNearbyEntities(); this.collideWithNearbyEntities();
@@ -229,7 +229,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
public void updateTask(){ public void updateTask(){
--this.attackTime; --this.attackTime;
EntityLivingBase entitylivingbase = this.blaze.getAttackTarget(); EntityLivingBase entitylivingbase = this.blaze.getAttackTarget();
double d0 = this.blaze.getDistanceSqToEntity(entitylivingbase); double d0 = this.blaze.getDistanceSq(entitylivingbase);
if(d0 < 4.0D){ if(d0 < 4.0D){
if(this.attackTime <= 0){ if(this.attackTime <= 0){
@@ -264,7 +264,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F); this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F);
}else{ }else{
this.blaze.getNavigator().clearPathEntity(); this.blaze.getNavigator().clearPath();
this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY, this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY,
entitylivingbase.posZ, 1.0D); entitylivingbase.posZ, 1.0D);
} }
@@ -127,7 +127,7 @@ public class EntityLightningWraith extends EntityBlazeMinion {
public void updateTask(){ public void updateTask(){
--this.attackTime; --this.attackTime;
EntityLivingBase entitylivingbase = this.blaze.getAttackTarget(); EntityLivingBase entitylivingbase = this.blaze.getAttackTarget();
double d0 = this.blaze.getDistanceSqToEntity(entitylivingbase); double d0 = this.blaze.getDistanceSq(entitylivingbase);
if(d0 < 4.0D){ if(d0 < 4.0D){
if(this.attackTime <= 0){ if(this.attackTime <= 0){
@@ -162,7 +162,7 @@ public class EntityLightningWraith extends EntityBlazeMinion {
this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F); this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F);
}else{ }else{
this.blaze.getNavigator().clearPathEntity(); this.blaze.getNavigator().clearPath();
this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY, this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY,
entitylivingbase.posZ, 1.0D); entitylivingbase.posZ, 1.0D);
} }
@@ -14,6 +14,7 @@ import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -103,7 +104,7 @@ public class EntityPhoenix extends EntitySummonedCreature implements ISpellCaste
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -114,12 +115,12 @@ public class EntityPhoenix extends EntitySummonedCreature implements ISpellCaste
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float par1){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float par1){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -18,6 +18,7 @@ import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.init.MobEffects; import net.minecraft.init.MobEffects;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -102,7 +103,7 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -113,12 +114,12 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -18,6 +18,7 @@ import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -95,7 +96,7 @@ public class EntityStormElemental extends EntitySummonedCreature implements ISpe
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -106,12 +107,12 @@ public class EntityStormElemental extends EntitySummonedCreature implements ISpe
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -16,7 +16,7 @@ import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemSpellBook;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -400,11 +400,11 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
// Achievements // Achievements
if(this.getCustomer() != null){ if(this.getCustomer() != null){
this.getCustomer().addStat(WizardryAchievements.wizard_trade); WizardryAdvancementTriggers.wizard_trade.triggerFor(this.getCustomer());
if(merchantrecipe.getItemToSell().getItem() instanceof ItemSpellBook if(merchantrecipe.getItemToSell().getItem() instanceof ItemSpellBook
&& Spell.get(merchantrecipe.getItemToSell().getItemDamage()).tier == Tier.MASTER){ && Spell.get(merchantrecipe.getItemToSell().getItemDamage()).tier == Tier.MASTER){
this.getCustomer().addStat(WizardryAchievements.buy_master_spell); WizardryAdvancementTriggers.buy_master_spell.triggerFor(this.getCustomer());
} }
} }
@@ -775,7 +775,7 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
public boolean attackEntityFrom(DamageSource source, float damage){ public boolean attackEntityFrom(DamageSource source, float damage){
if(source.getTrueSource() instanceof EntityPlayer){ if(source.getTrueSource() instanceof EntityPlayer){
((EntityPlayer)source.getTrueSource()).addStat(WizardryAchievements.anger_wizard); WizardryAdvancementTriggers.anger_wizard.triggerFor((EntityPlayer)source.getTrueSource());
} }
return super.attackEntityFrom(source, damage); return super.attackEntityFrom(source, damage);
@@ -794,9 +794,7 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
/** /**
* Tests whether the block at the given coordinates is part of this wizard's tower. * Tests whether the block at the given coordinates is part of this wizard's tower.
* *
* @param x * @param pos
* @param y
* @param z
* @return * @return
*/ */
public boolean isBlockPartOfTower(BlockPos pos){ public boolean isBlockPartOfTower(BlockPos pos){
@@ -817,7 +815,7 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
for(EntityWizard wizard : wizards){ for(EntityWizard wizard : wizards){
if(wizard.isBlockPartOfTower(event.getPos())){ if(wizard.isBlockPartOfTower(event.getPos())){
wizard.setRevengeTarget(event.getPlayer()); wizard.setRevengeTarget(event.getPlayer());
event.getPlayer().addStat(WizardryAchievements.anger_wizard); WizardryAdvancementTriggers.anger_wizard.triggerFor(event.getPlayer());
} }
} }
} }
@@ -85,7 +85,7 @@ import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData;
public interface ISummonedCreature extends IEntityAdditionalSpawnData { public interface ISummonedCreature extends IEntityAdditionalSpawnData {
// Remember that ALL fields are static and final in interfaces, even if they don't explicitly state that. // Remember that ALL fields are static and final in interfaces, even if they don't explicitly state that.
String NAMEPLATE_TRANSLATION_KEY = "entity.wizardry:summonedcreature.nameplate"; String NAMEPLATE_TRANSLATION_KEY = "entity." + Wizardry.MODID + ":summonedcreature.nameplate";
// Setters and getters. The subclass fields that these access should be private. // Setters and getters. The subclass fields that these access should be private.
@@ -83,7 +83,7 @@ public class EntityForceArrow extends EntityMagicArrow {
@Override @Override
protected void entityInit(){ protected void entityInit(){
// auto generated
} }
} }
@@ -68,7 +68,7 @@ public class EntityLightningDisc extends EntityMagicProjectile {
} }
} }
if(!this.isCollided && !world.isRemote){ if(!this.collided && !world.isRemote){
double seekingRange = 5.0d; double seekingRange = 5.0d;
@@ -78,7 +78,7 @@ public class EntityLightningDisc extends EntityMagicProjectile {
for(Entity possibleTarget : entities){ for(Entity possibleTarget : entities){
// Decides if current entity should be replaced. // Decides if current entity should be replaced.
if(target == null || this.getDistanceToEntity(target) > this.getDistanceToEntity(possibleTarget)){ if(target == null || this.getDistance(target) > this.getDistance(possibleTarget)){
// Decides if new entity is a valid target. // Decides if new entity is a valid target.
if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){ if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){
target = possibleTarget; target = possibleTarget;
@@ -122,7 +122,7 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
// f4 depends on the horizontal distance between the two entities and accounts for bullet drop, // f4 depends on the horizontal distance between the two entities and accounts for bullet drop,
// but of course if gravity is ignored this should be 0. // but of course if gravity is ignored this should be 0.
float bulletDropCompensation = this.doGravity() ? (float)d3 * 0.2F : 0; float bulletDropCompensation = this.doGravity() ? (float)d3 * 0.2F : 0;
this.setThrowableHeading(d0, d1 + (double)bulletDropCompensation, d2, speed, aimingError); this.shoot(d0, d1 + (double)bulletDropCompensation, d2, speed, aimingError);
} }
} }
@@ -148,7 +148,7 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI)
* MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI));
this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, speed * 1.5F, 1.0F); this.shoot(this.motionX, this.motionY, this.motionZ, speed * 1.5F, 1.0F);
} }
/** Subclasses must override this to set their own base damage. */ /** Subclasses must override this to set their own base damage. */
@@ -183,7 +183,8 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
/** /**
* Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
*/ */
public void setThrowableHeading(double x, double y, double z, float speed, float randomness){ @Override
public void shoot(double x, double y, double z, float speed, float randomness){
float f2 = MathHelper.sqrt(x * x + y * y + z * z); float f2 = MathHelper.sqrt(x * x + y * y + z * z);
x /= (double)f2; x /= (double)f2;
y /= (double)f2; y /= (double)f2;
@@ -579,4 +580,9 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
public void setShootingEntity(EntityLivingBase entity){ public void setShootingEntity(EntityLivingBase entity){
shootingEntity = new WeakReference<EntityLivingBase>(entity); shootingEntity = new WeakReference<EntityLivingBase>(entity);
} }
@Override
protected void entityInit() {
// TODO Auto-generated method stub
}
} }
@@ -40,7 +40,7 @@ public abstract class EntityMagicProjectile extends EntityThrowable {
public EntityMagicProjectile(World world, EntityLivingBase thrower, float damageMultiplier){ public EntityMagicProjectile(World world, EntityLivingBase thrower, float damageMultiplier){
super(world, thrower); super(world, thrower);
// This is the standard set of parameters for this method, used by snowballs and ender pearls amongst others. // This is the standard set of parameters for this method, used by snowballs and ender pearls amongst others.
this.setHeadingFromThrower(thrower, thrower.rotationPitch, thrower.rotationYaw, 0.0f, this.getSpeed(), 1.0f); this.shoot(thrower, thrower.rotationPitch, thrower.rotationYaw, 0.0f, this.getSpeed(), 1.0f);
this.damageMultiplier = damageMultiplier; this.damageMultiplier = damageMultiplier;
} }
@@ -61,9 +61,9 @@ public abstract class EntityMagicProjectile extends EntityThrowable {
- (this.posY + (double)(this.height / 2.0F)); - (this.posY + (double)(this.height / 2.0F));
double dz = target.posZ - this.posZ; double dz = target.posZ - this.posZ;
this.motionX = dx / this.getDistanceToEntity(target) * velocity; this.motionX = dx / this.getDistance(target) * velocity;
this.motionY = dy / this.getDistanceToEntity(target) * velocity; this.motionY = dy / this.getDistance(target) * velocity;
this.motionZ = dz / this.getDistanceToEntity(target) * velocity; this.motionZ = dz / this.getDistance(target) * velocity;
} }
@Override @Override
@@ -68,7 +68,7 @@ public class EntitySpark extends EntityMagicProjectile {
super.onUpdate(); super.onUpdate();
if(!this.isCollided && !world.isRemote){ if(!this.collided && !world.isRemote){
double seekingRange = 5.0d; double seekingRange = 5.0d;
@@ -78,7 +78,7 @@ public class EntitySpark extends EntityMagicProjectile {
for(Entity possibleTarget : entities){ for(Entity possibleTarget : entities){
// Decides if current entity should be replaced. // Decides if current entity should be replaced.
if(target == null || this.getDistanceToEntity(target) > this.getDistanceToEntity(possibleTarget)){ if(target == null || this.getDistance(target) > this.getDistance(possibleTarget)){
// Decides if new entity is a valid target. // Decides if new entity is a valid target.
if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){ if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){
target = possibleTarget; target = possibleTarget;
@@ -2,14 +2,16 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,16 +19,17 @@ public class ItemArcaneTome extends Item {
public ItemArcaneTome(){ public ItemArcaneTome(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@SideOnly(Side.CLIENT) public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> list){ if (isInCreativeTab(tab)) {
for(int i = 1; i < Tier.values().length; i++){ for(int i = 1; i < Tier.values().length; i++){
list.add(new ItemStack(item, 1, i)); list.add(new ItemStack(this, 1, i));
}
} }
} }
@@ -51,13 +54,13 @@ public class ItemArcaneTome extends Item {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean showAdvanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag showAdvanced){
Tier tier = Tier.values()[stack.getItemDamage()]; Tier tier = Tier.values()[stack.getItemDamage()];
Tier tier2 = Tier.values()[stack.getItemDamage() - 1]; Tier tier2 = Tier.values()[stack.getItemDamage() - 1];
tooltip.add(tier.getDisplayNameWithFormatting()); tooltip.add(tier.getDisplayNameWithFormatting());
tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:arcane_tome.desc1", tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":arcane_tome.desc1",
tier2.getDisplayNameWithFormatting())); tier2.getDisplayNameWithFormatting()));
tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:arcane_tome.desc2", tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":arcane_tome.desc2",
tier.getDisplayNameWithFormatting() + "\u00A77")); tier.getDisplayNameWithFormatting() + "\u00A77"));
} }
@@ -2,13 +2,15 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -16,8 +18,8 @@ public class ItemArmourUpgrade extends Item {
public ItemArmourUpgrade(){ public ItemArmourUpgrade(){
super(); super();
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -33,16 +35,10 @@ public class ItemArmourUpgrade extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:armour_upgrade.desc1", "\u00A77")); tooltip.add(net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":armour_upgrade.desc1", "\u00A77"));
tooltip.add( tooltip.add(
net.minecraft.client.resources.I18n.format("item.wizardry:armour_upgrade.desc2", "\u00A77", "\u00A7d")); net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":armour_upgrade.desc2", "\u00A77", "\u00A7d"));
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
} }
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntityFirebomb; import electroblob.wizardry.entity.projectile.EntityFirebomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemFirebomb extends Item { public class ItemFirebomb extends Item {
public ItemFirebomb(){ public ItemFirebomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,16 +32,11 @@ public class ItemFirebomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntityFirebomb firebomb = new EntityFirebomb(world, player); EntityFirebomb firebomb = new EntityFirebomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
firebomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); firebomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(firebomb); world.spawnEntity(firebomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -2,14 +2,11 @@ package electroblob.wizardry.item;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -18,9 +15,9 @@ public class ItemFlamingAxe extends ItemAxe implements IConjuredItem {
public ItemFlamingAxe(ToolMaterial material){ public ItemFlamingAxe(ToolMaterial material){
super(material, 8, -3); super(material, 8, -3);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -81,11 +78,4 @@ public class ItemFlamingAxe extends ItemAxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
// Why does this method pass in an item as an argument? It is always the same item the method is invoked on.
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> items){
items.add(new ItemStack(this, 1));
}
} }
@@ -3,15 +3,12 @@ package electroblob.wizardry.item;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -20,9 +17,9 @@ public class ItemFrostAxe extends ItemAxe implements IConjuredItem {
public ItemFrostAxe(ToolMaterial material){ public ItemFrostAxe(ToolMaterial material){
super(material, 8, -3); super(material, 8, -3);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -84,10 +81,4 @@ public class ItemFrostAxe extends ItemAxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -2,13 +2,16 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import electroblob.wizardry.WizardData; import electroblob.wizardry.WizardData;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.event.DiscoverSpellEvent; import electroblob.wizardry.event.DiscoverSpellEvent;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -16,7 +19,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@@ -27,7 +29,7 @@ public class ItemIdentificationScroll extends Item {
public ItemIdentificationScroll(){ public ItemIdentificationScroll(){
super(); super();
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -38,9 +40,9 @@ public class ItemIdentificationScroll extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean par4){ public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:identification_scroll.desc1", "\u00A77")); tooltip.add(net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":identification_scroll.desc1", "\u00A77"));
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:identification_scroll.desc2", "\u00A77")); tooltip.add(net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":identification_scroll.desc2", "\u00A77"));
} }
@Override @Override
@@ -64,7 +66,7 @@ public class ItemIdentificationScroll extends Item {
// Identification scrolls give the chat readout in creative mode, otherwise it looks like // Identification scrolls give the chat readout in creative mode, otherwise it looks like
// nothing happens! // nothing happens!
properties.discoverSpell(spell); properties.discoverSpell(spell);
player.addStat(WizardryAchievements.identify_spell); WizardryAdvancementTriggers.identify_spell.triggerFor(player);
player.playSound(SoundEvents.ENTITY_PLAYER_LEVELUP, 1.25f, 1); player.playSound(SoundEvents.ENTITY_PLAYER_LEVELUP, 1.25f, 1);
if(!player.capabilities.isCreativeMode) stack.shrink(1); if(!player.capabilities.isCreativeMode) stack.shrink(1);
if(!world.isRemote) player.sendMessage(new TextComponentTranslation("spell.discover", if(!world.isRemote) player.sendMessage(new TextComponentTranslation("spell.discover",
@@ -77,15 +79,10 @@ public class ItemIdentificationScroll extends Item {
} }
// If it found nothing to identify, it says so! // If it found nothing to identify, it says so!
if(!world.isRemote) player.sendMessage( if(!world.isRemote) player.sendMessage(
new TextComponentTranslation("item.wizardry:identification_scroll.nothing_to_identify")); new TextComponentTranslation("item." + Wizardry.MODID + ":identification_scroll.nothing_to_identify"));
} }
return new ActionResult<ItemStack>(EnumActionResult.FAIL, stack); return new ActionResult<ItemStack>(EnumActionResult.FAIL, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntityPoisonBomb; import electroblob.wizardry.entity.projectile.EntityPoisonBomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemPoisonBomb extends Item { public class ItemPoisonBomb extends Item {
public ItemPoisonBomb(){ public ItemPoisonBomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,17 +32,11 @@ public class ItemPoisonBomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntityPoisonBomb poisonbomb = new EntityPoisonBomb(world, player); EntityPoisonBomb poisonbomb = new EntityPoisonBomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
poisonbomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); poisonbomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(poisonbomb); world.spawnEntity(poisonbomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -8,6 +8,7 @@ import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -26,16 +27,17 @@ public class ItemScroll extends Item {
public ItemScroll(){ public ItemScroll(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.SPELLS); setCreativeTab(WizardryTabs.SPELLS);
} }
@Override @Override
@SideOnly(Side.CLIENT) public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, NonNullList<ItemStack> list){ if (isInCreativeTab(tab)) {
for(Spell spell : Spell.getSpells(Spell.nonContinuousSpells)){ for(Spell spell : Spell.getSpells(Spell.nonContinuousSpells)){
list.add(new ItemStack(item, 1, spell.id())); list.add(new ItemStack(this, 1, spell.id()));
}
} }
} }
@@ -114,7 +116,7 @@ public class ItemScroll extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntitySmokeBomb; import electroblob.wizardry.entity.projectile.EntitySmokeBomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemSmokeBomb extends Item { public class ItemSmokeBomb extends Item {
public ItemSmokeBomb(){ public ItemSmokeBomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,16 +32,11 @@ public class ItemSmokeBomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntitySmokeBomb smokebomb = new EntitySmokeBomb(world, player); EntitySmokeBomb smokebomb = new EntitySmokeBomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
smokebomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); smokebomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(smokebomb); world.spawnEntity(smokebomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,15 +1,14 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,11 +16,9 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemSpectralArmour extends ItemArmor implements IConjuredItem { public class ItemSpectralArmour extends ItemArmor implements IConjuredItem {
public ItemSpectralArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType){ public ItemSpectralArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType){
super(material, renderIndex, armourType); super(material, renderIndex, armourType);
setCreativeTab(null);
this.setCreativeTab(null); setMaxDamage(getBaseDuration());
this.setMaxDamage(getBaseDuration());
} }
@Override @Override
@@ -85,28 +82,23 @@ public class ItemSpectralArmour extends ItemArmor implements IConjuredItem {
@Override @Override
public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type){ public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type){
if(slot == EntityEquipmentSlot.LEGS) return "wizardry:textures/armour/spectral_armour_legs.png"; if(slot == EntityEquipmentSlot.LEGS) return "ebwizardry:textures/armour/spectral_armour_legs.png";
return "wizardry:textures/armour/spectral_armour.png"; return "ebwizardry:textures/armour/spectral_armour.png";
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default){ EntityEquipmentSlot armorSlot, ModelBiped _default){
net.minecraft.client.renderer.GlStateManager.enableBlend(); GlStateManager.enableBlend();
net.minecraft.client.renderer.GlStateManager.tryBlendFuncSeparate( GlStateManager.tryBlendFuncSeparate(
net.minecraft.client.renderer.GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.SourceFactor.SRC_ALPHA,
net.minecraft.client.renderer.GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA,
net.minecraft.client.renderer.GlStateManager.SourceFactor.ONE, GlStateManager.SourceFactor.ONE,
net.minecraft.client.renderer.GlStateManager.DestFactor.ZERO); GlStateManager.DestFactor.ZERO
);
return super.getArmorModel(entityLiving, itemStack, armorSlot, _default); return super.getArmorModel(entityLiving, itemStack, armorSlot, _default);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -4,7 +4,6 @@ import javax.annotation.Nullable;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -14,7 +13,6 @@ import net.minecraft.init.Enchantments;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.IItemPropertyGetter; import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArrow; import net.minecraft.item.ItemArrow;
import net.minecraft.item.ItemBow; import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -22,7 +20,6 @@ import net.minecraft.stats.StatList;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundCategory;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -33,9 +30,9 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
public ItemSpectralBow(){ public ItemSpectralBow(){
super(); super();
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter(){ this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter(){
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn){ public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn){
@@ -183,7 +180,7 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
ItemArrow itemarrow = (ItemArrow)Items.ARROW; ItemArrow itemarrow = (ItemArrow)Items.ARROW;
EntityArrow entityarrow = itemarrow.createArrow(world, new ItemStack(itemarrow), entityplayer); EntityArrow entityarrow = itemarrow.createArrow(world, new ItemStack(itemarrow), entityplayer);
entityarrow.setAim(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F,
f * 3.0F, 1.0F); f * 3.0F, 1.0F);
if(f == 1.0F){ if(f == 1.0F){
@@ -220,10 +217,4 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
} }
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,12 +1,9 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,9 +12,9 @@ public class ItemSpectralPickaxe extends ItemPickaxe implements IConjuredItem {
public ItemSpectralPickaxe(ToolMaterial material){ public ItemSpectralPickaxe(ToolMaterial material){
super(material); super(material);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -72,10 +69,4 @@ public class ItemSpectralPickaxe extends ItemPickaxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,12 +1,9 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword; import net.minecraft.item.ItemSword;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,9 +12,9 @@ public class ItemSpectralSword extends ItemSword implements IConjuredItem {
public ItemSpectralSword(ToolMaterial material){ public ItemSpectralSword(ToolMaterial material){
super(material); super(material);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -72,10 +69,4 @@ public class ItemSpectralSword extends ItemSword implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -8,6 +8,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.WizardryGuiHandler; import electroblob.wizardry.WizardryGuiHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -25,19 +29,21 @@ public class ItemSpellBook extends Item {
public ItemSpellBook(){ public ItemSpellBook(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.SPELLS); setCreativeTab(WizardryTabs.SPELLS);
} }
@Override @Override
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> list){ public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
// In this particular case, getTotalSpellCount() is a more efficient way of doing this since the spell instance if (isInCreativeTab(tab)) {
// is not required, only the id. // In this particular case, getTotalSpellCount() is a more efficient way of doing this since the spell instance
for(int i = 0; i < Spell.getTotalSpellCount(); i++){ // is not required, only the id.
// i+1 is used so that the metadata ties up with the id() method. In other words, the none spell has id for(int i = 0; i < Spell.getTotalSpellCount(); i++){
// 0 and since this is not used as a spell book the metadata starts at 1. // i+1 is used so that the metadata ties up with the id() method. In other words, the none spell has id
list.add(new ItemStack(item, 1, i + 1)); // 0 and since this is not used as a spell book the metadata starts at 1.
list.add(new ItemStack(this, 1, i + 1));
}
} }
} }
@@ -50,14 +56,15 @@ public class ItemSpellBook extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack itemstack, World world, List<String> tooltip, ITooltipFlag advanced){
// Tooltip is left blank for wizards buying generic spell books. // Tooltip is left blank for wizards buying generic spell books.
if(itemstack.getItemDamage() != OreDictionary.WILDCARD_VALUE){ if(itemstack.getItemDamage() != OreDictionary.WILDCARD_VALUE){
EntityPlayerSP player = Minecraft.getMinecraft().player;
Spell spell = Spell.get(itemstack.getItemDamage()); Spell spell = Spell.get(itemstack.getItemDamage());
boolean discovered = true; boolean discovered = true;
if(Wizardry.settings.discoveryMode && !player.capabilities.isCreativeMode && WizardData.get(player) != null if(player != null && Wizardry.settings.discoveryMode && !player.capabilities.isCreativeMode && WizardData.get(player) != null
&& !WizardData.get(player).hasSpellBeenDiscovered(spell)){ && !WizardData.get(player).hasSpellBeenDiscovered(spell)){
discovered = false; discovered = false;
} }
@@ -74,7 +81,7 @@ public class ItemSpellBook extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
@@ -13,7 +13,7 @@ import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.event.SpellCastEvent.Source; import electroblob.wizardry.event.SpellCastEvent.Source;
import electroblob.wizardry.packet.PacketCastSpell; import electroblob.wizardry.packet.PacketCastSpell;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
@@ -21,7 +21,10 @@ import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WandHelper;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -33,7 +36,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -70,7 +72,7 @@ public class ItemWand extends Item {
} }
this.tier = tier; this.tier = tier;
this.element = element; this.element = element;
this.setMaxDamage(this.tier.maxCharge); setMaxDamage(this.tier.maxCharge);
} }
@Override @Override
@@ -81,16 +83,10 @@ public class ItemWand extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
// Max damage is modifiable with upgrades. // Max damage is modifiable with upgrades.
@Override @Override
public int getMaxDamage(ItemStack itemstack){ public int getMaxDamage(ItemStack itemstack){
@@ -99,11 +95,6 @@ public class ItemWand extends Item {
* WandHelper.getUpgradeLevel(itemstack, WizardryItems.storage_upgrade)) + 0.5f); * WandHelper.getUpgradeLevel(itemstack, WizardryItems.storage_upgrade)) + 0.5f);
} }
@Override
public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer){
par3EntityPlayer.addStat(WizardryAchievements.arcane_initiate);
}
@Override @Override
public void onUpdate(ItemStack itemstack, World world, Entity entity, int slot, boolean isHeld){ public void onUpdate(ItemStack itemstack, World world, Entity entity, int slot, boolean isHeld){
@@ -120,10 +111,8 @@ public class ItemWand extends Item {
if(entity instanceof EntityPlayer && this.element != null && this.element != Element.MAGIC){ if(entity instanceof EntityPlayer && this.element != null && this.element != Element.MAGIC){
// As it stands, this will trigger every tick. Not ideal, but I can't find a way to detect if a player // As it stands, this will trigger every tick. Not ideal, but I can't find a way to detect if a player
// has a certain achievement. // has a certain achievement.
// EDIT: There is a way to check, using StatFileWriter#hasAchievementUnlocked, but this ends up calling the // TODO: check if this is somehow triggerable via JSON conditions.
// same WizardryAdvancementTriggers.element_master.triggerFor((EntityPlayer)entity);
// thing as addStat anyway, meaning there's no point and it's probably not much of a problem anyway.
((EntityPlayer)entity).addStat(WizardryAchievements.elemental);
} }
} }
@@ -155,10 +144,11 @@ public class ItemWand extends Item {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void addInformation(ItemStack itemstack, EntityPlayer player, List<String> text, boolean advanced){ public void addInformation(ItemStack itemstack, World world, List<String> text, ITooltipFlag advanced){
EntityPlayerSP player = Minecraft.getMinecraft().player;
if (player == null) { return; }
// +0.5f is necessary due to the error in the way floats are calculated. // +0.5f is necessary due to the error in the way floats are calculated.
if(element != null) text.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.buff", if(element != null) text.add("\u00A78" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wand.buff",
(int)((tier.level + 1) * Constants.DAMAGE_INCREASE_PER_TIER * 100 + 0.5f) + "%", (int)((tier.level + 1) * Constants.DAMAGE_INCREASE_PER_TIER * 100 + 0.5f) + "%",
element.getDisplayName())); element.getDisplayName()));
@@ -170,11 +160,11 @@ public class ItemWand extends Item {
discovered = false; discovered = false;
} }
text.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.spell", text.add("\u00A77" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wand.spell",
discovered ? "\u00A77" + spell.getDisplayNameWithFormatting() discovered ? "\u00A77" + spell.getDisplayNameWithFormatting()
: "#\u00A79" + SpellGlyphData.getGlyphName(spell, player.world))); : "#\u00A79" + SpellGlyphData.getGlyphName(spell, player.world)));
text.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.mana", text.add("\u00A79" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wand.mana",
(this.getMaxDamage(itemstack) - this.getDamage(itemstack)), this.getMaxDamage(itemstack))); (this.getMaxDamage(itemstack) - this.getDamage(itemstack)), this.getMaxDamage(itemstack)));
} }
@@ -353,8 +343,8 @@ public class ItemWand extends Item {
if(player.isSneaking() && entity instanceof EntityPlayer && WizardData.get(player) != null){ if(player.isSneaking() && entity instanceof EntityPlayer && WizardData.get(player) != null){
// This is one of those "the method doing the work looks as if it's just returning a value" situations. // This is one of those "the method doing the work looks as if it's just returning a value" situations.
// ... I know, right?! I feel very programmer-y. But it's not too confusing here, and it looks neat. // ... I know, right?! I feel very programmer-y. But it's not too confusing here, and it looks neat.
String string = WizardData.get(player).toggleAlly((EntityPlayer)entity) ? "item.wizardry:wand.addally" String string = WizardData.get(player).toggleAlly((EntityPlayer)entity) ? "item." + Wizardry.MODID + ":wand.addally"
: "item.wizardry:wand.removeally"; : "item." + Wizardry.MODID + ":wand.removeally";
if(!player.world.isRemote) player.sendMessage(new TextComponentTranslation(string, entity.getName())); if(!player.world.isRemote) player.sendMessage(new TextComponentTranslation(string, entity.getName()));
return true; return true;
} }
@@ -5,22 +5,22 @@ import java.util.List;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Petrify; import electroblob.wizardry.spell.Petrify;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumAction; import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumHandSide; import net.minecraft.util.EnumHandSide;
import net.minecraft.util.NonNullList; import net.minecraft.world.World;
import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.common.ISpecialArmor;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -36,19 +36,19 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){ public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){
super(material, renderIndex, armourType); super(material, renderIndex, armourType);
this.element = element; this.element = element;
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag advanced){
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip
.add("\u00A7d" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.legendary")); .add("\u00A7d" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wizard_armour.legendary"));
if(element != null) if(element != null)
tooltip.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.buff", tooltip.add("\u00A78" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wizard_armour.buff",
(int)(Constants.COST_REDUCTION_PER_ARMOUR * 100) + "%", element.getDisplayName())); (int)(Constants.COST_REDUCTION_PER_ARMOUR * 100) + "%", element.getDisplayName()));
tooltip.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.mana", tooltip.add("\u00A79" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wizard_armour.mana",
(this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack))); (this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack)));
} }
@@ -65,10 +65,10 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
EntityEquipmentSlot armourSlot, net.minecraft.client.model.ModelBiped _default){ EntityEquipmentSlot armourSlot, ModelBiped _default){
net.minecraft.client.model.ModelBiped model = Wizardry.proxy.getWizardArmourModel(); ModelBiped model = Wizardry.proxy.getWizardArmourModel();
// Legs use modelBiped // Legs use modelBiped
if(armourSlot == EntityEquipmentSlot.LEGS) return null; if(armourSlot == EntityEquipmentSlot.LEGS) return null;
@@ -96,29 +96,29 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
ItemStack itemstackL = leftHanded ? entityLiving.getHeldItemMainhand() : entityLiving.getHeldItemOffhand(); ItemStack itemstackL = leftHanded ? entityLiving.getHeldItemMainhand() : entityLiving.getHeldItemOffhand();
if(!itemstackR.isEmpty()){ if(!itemstackR.isEmpty()){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM; model.rightArmPose = ModelBiped.ArmPose.ITEM;
if(entityLiving.getItemInUseCount() > 0){ if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction = itemstackR.getItemUseAction(); EnumAction enumaction = itemstackR.getItemUseAction();
if(enumaction == EnumAction.BLOCK){ if(enumaction == EnumAction.BLOCK){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK; model.rightArmPose = ModelBiped.ArmPose.BLOCK;
}else if(enumaction == EnumAction.BOW){ }else if(enumaction == EnumAction.BOW){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW; model.rightArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
} }
} }
} }
if(!itemstackL.isEmpty()){ if(!itemstackL.isEmpty()){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM; model.leftArmPose = ModelBiped.ArmPose.ITEM;
if(entityLiving.getItemInUseCount() > 0){ if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction1 = itemstackL.getItemUseAction(); EnumAction enumaction1 = itemstackL.getItemUseAction();
if(enumaction1 == EnumAction.BLOCK){ if(enumaction1 == EnumAction.BLOCK){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK; model.leftArmPose = ModelBiped.ArmPose.BLOCK;
}else if(enumaction1 == EnumAction.BOW){ }else if(enumaction1 == EnumAction.BOW){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW; model.leftArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
} }
} }
} }
@@ -135,14 +135,14 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
// Do note however that a texture pack could override this. // Do note however that a texture pack could override this.
if(entity instanceof EntityLivingBase && ((EntityLivingBase)entity).isInvisible() if(entity instanceof EntityLivingBase && ((EntityLivingBase)entity).isInvisible()
&& !entity.getEntityData().getBoolean(Petrify.NBT_KEY)) && !entity.getEntityData().getBoolean(Petrify.NBT_KEY))
return "wizardry:textures/armour/invisible_armour.png"; return "ebwizardry:textures/armour/invisible_armour.png";
if(slot == EntityEquipmentSlot.LEGS) if(slot == EntityEquipmentSlot.LEGS)
return this.element == null ? "wizardry:textures/armour/wizard_armour_legs.png" return this.element == null ? "ebwizardry:textures/armour/wizard_armour_legs.png"
: "wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + "_legs.png"; : "ebwizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + "_legs.png";
return this.element == null ? "wizardry:textures/armour/wizard_armour.png" return this.element == null ? "ebwizardry:textures/armour/wizard_armour.png"
: "wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + ".png"; : "ebwizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + ".png";
} }
@Override @Override
@@ -200,12 +200,6 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
} }
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
/** /**
* Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and which * Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and which
* is an armour slot (not a hand slot). This only exists because the 1.10.2/1.11.2 versions of Forge still uses an * is an armour slot (not a hand slot). This only exists because the 1.10.2/1.11.2 versions of Forge still uses an
@@ -237,7 +231,7 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
} }
} }
// If it gets this far, then all slots must be wizard armour, so trigger the achievement. // If it gets this far, then all slots must be wizard armour, so trigger the achievement.
player.addStat(WizardryAchievements.armour_set); WizardryAdvancementTriggers.armour_set.triggerFor(player);
} }
} }
@@ -2,20 +2,19 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.WizardryGuiHandler; import electroblob.wizardry.WizardryGuiHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemWizardHandbook extends Item { public class ItemWizardHandbook extends Item {
@@ -24,14 +23,14 @@ public class ItemWizardHandbook extends Item {
public ItemWizardHandbook(){ public ItemWizardHandbook(){
super(); super();
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
tooltip.add( tooltip.add(
"\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_handbook.desc", AUTHOR)); "\u00A77" + net.minecraft.client.resources.I18n.format("item." + Wizardry.MODID + ":wizard_handbook.desc", AUTHOR));
} }
@Override @Override
@@ -41,9 +40,4 @@ public class ItemWizardHandbook extends Item {
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> items){
items.add(new ItemStack(this, 1));
}
} }
@@ -28,7 +28,7 @@ public class PotionDecay extends Potion {
public PotionDecay(boolean isBadEffect, int liquidColour){ public PotionDecay(boolean isBadEffect, int liquidColour){
super(isBadEffect, liquidColour); super(isBadEffect, liquidColour);
// This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet. // This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet.
this.setPotionName("potion.wizardry:decay"); this.setPotionName("potion." + Wizardry.MODID + ":decay");
this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED, this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
"85602e0b-4801-4a87-94f3-bf617c97014e", -Constants.DECAY_SLOWNESS_PER_LEVEL, 2); "85602e0b-4801-4a87-94f3-bf617c97014e", -Constants.DECAY_SLOWNESS_PER_LEVEL, 2);
} }
@@ -25,7 +25,7 @@ public class PotionFrost extends Potion implements ICustomPotionParticles {
public PotionFrost(boolean isBadEffect, int liquidColour){ public PotionFrost(boolean isBadEffect, int liquidColour){
super(isBadEffect, liquidColour); super(isBadEffect, liquidColour);
// This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet. // This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet.
this.setPotionName("potion.wizardry:frost"); this.setPotionName("potion." + Wizardry.MODID + ":frost");
// With -0.5 as the 'amount', frost 1 slows the entity down by a half and frost 2 roots it to the spot // With -0.5 as the 'amount', frost 1 slows the entity down by a half and frost 2 roots it to the spot
this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED, this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
"35dded48-2f19-4541-8510-b29e2dc2cd51", -Constants.FROST_SLOWNESS_PER_LEVEL, 2); "35dded48-2f19-4541-8510-b29e2dc2cd51", -Constants.FROST_SLOWNESS_PER_LEVEL, 2);
@@ -7,8 +7,8 @@ import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.fml.common.registry.RegistryBuilder; import net.minecraftforge.registries.RegistryBuilder;
/** /**
* Class responsible for defining, storing and registering all of wizardry's spells. * Class responsible for defining, storing and registering all of wizardry's spells.
@@ -1,73 +0,0 @@
package electroblob.wizardry.registry;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.stats.Achievement;
import net.minecraftforge.common.AchievementPage;
/**
* Class responsible for defining, storing and registering all of wizardry's achievements (achievements don't have a
* registry, but it make sense to do them the same way as everything else).
*
* @author Electroblob
* @since Wizardry 2.1
*/
public final class WizardryAchievements {
public static final Achievement crystal = new Achievement("crystal", "crystal", -1, -1, WizardryItems.magic_crystal,
null).registerStat();
public static final Achievement arcane_initiate = new Achievement("arcane_initiate", "arcane_initiate", 2, -1,
WizardryItems.magic_wand, crystal).registerStat();
public static final Achievement apprentice = new Achievement("apprentice", "apprentice", 2, 3,
WizardryItems.apprentice_wand, arcane_initiate).registerStat();
public static final Achievement master = new Achievement("master", "master", 3, 6, WizardryItems.master_wand,
apprentice).registerStat();
public static final Achievement all_spells = new Achievement("all_spells", "all_spells", 5, 7,
WizardryItems.wizard_handbook, master).registerStat().setSpecial();
public static final Achievement wizard_trade = new Achievement("wizard_trade", "wizard_trade", 2, -5, Items.EMERALD,
arcane_initiate).registerStat();
public static final Achievement buy_master_spell = new Achievement("buy_master_spell", "buy_master_spell", 5, -5,
WizardryItems.spell_book, wizard_trade).registerStat().setSpecial();
public static final Achievement freeze_blaze = new Achievement("freeze_blaze", "freeze_blaze", -1, 3, Blocks.ICE,
apprentice).registerStat();
public static final Achievement charge_creeper = new Achievement("charge_creeper", "charge_creeper", -1, 1,
Items.GUNPOWDER, arcane_initiate).registerStat();
public static final Achievement frankenstein = new Achievement("frankenstein", "frankenstein", -3, 1,
WizardryItems.advanced_lightning_wand, charge_creeper).registerStat().setSpecial();
public static final Achievement special_upgrade = new Achievement("special_upgrade", "special_upgrade", 4, 1,
WizardryItems.condenser_upgrade, arcane_initiate).registerStat();
public static final Achievement craft_flask = new Achievement("craft_flask", "craft_flask", 4, -2,
WizardryItems.mana_flask, arcane_initiate).registerStat();
public static final Achievement elemental = new Achievement("elemental", "elemental", 6, -1,
WizardryItems.basic_fire_wand, arcane_initiate).registerStat();
public static final Achievement armour_set = new Achievement("armour_set", "armour_set", 0, -4,
WizardryItems.wizard_hat, arcane_initiate).registerStat();
public static final Achievement legendary = new Achievement("legendary", "legendary", -2, -5,
WizardryItems.armour_upgrade, armour_set).registerStat().setSpecial();
public static final Achievement self_destruct = new Achievement("self_destruct", "self_destruct", 1, 0,
Blocks.PUMPKIN, arcane_initiate).registerStat();
public static final Achievement pig_tornado = new Achievement("pig_tornado", "pig_tornado", 6, 3, Items.SADDLE,
apprentice).registerStat().setSpecial();
public static final Achievement jam_wizard = new Achievement("jam_wizard", "jam_wizard", 4, 4, Blocks.WEB,
apprentice).registerStat();
public static final Achievement slime_skeleton = new Achievement("slime_skeleton", "slime_skeleton", 1, 5,
Items.SLIME_BALL, apprentice).registerStat();
public static final Achievement anger_wizard = new Achievement("anger_wizard", "anger_wizard", 1, -7,
Items.IRON_SWORD, wizard_trade).registerStat();
public static final Achievement defeat_evil_wizard = new Achievement("defeat_evil_wizard", "defeat_evil_wizard", 4,
-7, WizardryItems.wizard_boots_necromancy, wizard_trade).registerStat();
public static final Achievement max_out_wand = new Achievement("max_out_wand", "max_out_wand", 7, 1,
WizardryItems.arcane_tome, special_upgrade).registerStat().setSpecial();
public static final Achievement element_master = new Achievement("element_master", "element_master", 7, -3,
WizardryItems.master_ice_wand, elemental).registerStat().setSpecial();
public static final Achievement identify_spell = new Achievement("identify_spell", "identify_spell", -2, -3,
WizardryItems.identification_scroll, arcane_initiate).registerStat();
private static final Achievement[] ACHIEVEMENTS_LIST = {crystal, arcane_initiate, apprentice, master, all_spells,
wizard_trade, buy_master_spell, freeze_blaze, charge_creeper, frankenstein, special_upgrade, craft_flask,
elemental, armour_set, legendary, self_destruct, pig_tornado, jam_wizard, slime_skeleton, anger_wizard,
defeat_evil_wizard, max_out_wand, element_master, identify_spell};
public static final AchievementPage WIZARDRY_ACHIEVEMENT_PAGE = new AchievementPage("Wizardry", ACHIEVEMENTS_LIST);
}
@@ -0,0 +1,59 @@
package electroblob.wizardry.registry;
import electroblob.wizardry.util.CustomAdvancementTrigger;
import net.minecraft.advancements.CriteriaTriggers;
/**
* This class stores a collection of custom advancement triggers, for advancements that cannot be triggered
* from plain vanilla JSON definitions. It replaces the old WizardryAchievements class.
*
* @author 12foo
* @since Wizardry 4.1.0
*/
public final class WizardryAdvancementTriggers {
public static final CustomAdvancementTrigger armour_set = new CustomAdvancementTrigger("trigger_armour_set");
public static final CustomAdvancementTrigger jam_wizard = new CustomAdvancementTrigger("trigger_jam_wizard");
public static final CustomAdvancementTrigger self_destruct = new CustomAdvancementTrigger("trigger_self_destruct");
public static final CustomAdvancementTrigger all_spells = new CustomAdvancementTrigger("trigger_all_spells");
public static final CustomAdvancementTrigger element_master = new CustomAdvancementTrigger("trigger_element_master");
public static final CustomAdvancementTrigger identify_spell = new CustomAdvancementTrigger("trigger_identify_spell");
public static final CustomAdvancementTrigger elemental = new CustomAdvancementTrigger("trigger_elemental");
public static final CustomAdvancementTrigger legendary = new CustomAdvancementTrigger("trigger_legendary");
public static final CustomAdvancementTrigger max_out_wand = new CustomAdvancementTrigger("trigger_max_out_wand");
public static final CustomAdvancementTrigger special_upgrade = new CustomAdvancementTrigger("trigger_special_upgrade");
public static final CustomAdvancementTrigger pig_tornado = new CustomAdvancementTrigger("trigger_pig_tornado");
public static final CustomAdvancementTrigger master = new CustomAdvancementTrigger("trigger_master");
public static final CustomAdvancementTrigger apprentice = new CustomAdvancementTrigger("trigger_apprentice");
public static final CustomAdvancementTrigger anger_wizard = new CustomAdvancementTrigger("trigger_anger_wizard");
public static final CustomAdvancementTrigger buy_master_spell = new CustomAdvancementTrigger("trigger_buy_master_spell");
public static final CustomAdvancementTrigger wizard_trade = new CustomAdvancementTrigger("trigger_wizard_trade");
public static final CustomAdvancementTrigger slime_skeleton = new CustomAdvancementTrigger("trigger_slime_skeleton");
public static final CustomAdvancementTrigger freeze_blaze = new CustomAdvancementTrigger("trigger_freeze_blaze");
public static final CustomAdvancementTrigger frankenstein = new CustomAdvancementTrigger("trigger_frankenstein");
public static final CustomAdvancementTrigger charge_creeper = new CustomAdvancementTrigger("trigger_charge_creeper");
public static void register(){
CriteriaTriggers.register(armour_set);
CriteriaTriggers.register(jam_wizard);
CriteriaTriggers.register(self_destruct);
CriteriaTriggers.register(all_spells);
CriteriaTriggers.register(element_master);
CriteriaTriggers.register(identify_spell);
CriteriaTriggers.register(elemental);
CriteriaTriggers.register(legendary);
CriteriaTriggers.register(max_out_wand);
CriteriaTriggers.register(special_upgrade);
CriteriaTriggers.register(pig_tornado);
CriteriaTriggers.register(master);
CriteriaTriggers.register(apprentice);
CriteriaTriggers.register(anger_wizard);
CriteriaTriggers.register(buy_master_spell);
CriteriaTriggers.register(wizard_trade);
CriteriaTriggers.register(slime_skeleton);
CriteriaTriggers.register(freeze_blaze);
CriteriaTriggers.register(frankenstein);
CriteriaTriggers.register(charge_creeper);
}
}
@@ -15,7 +15,7 @@ import net.minecraft.block.material.Material;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's blocks. * Class responsible for defining, storing and registering all of wizardry's blocks.
@@ -73,7 +73,7 @@ public final class WizardryBlocks {
* @param registry The registry to register the given block to. * @param registry The registry to register the given block to.
* @param item The block to register. * @param item The block to register.
* @param name The name of the block, without the mod ID or the .name stuff. The registry name will be * @param name The name of the block, without the mod ID or the .name stuff. The registry name will be
* {@code wizardry:[name]}. The unlocalised name will be {@code tile.wizardry:[name].name}. * {@code ebwizardry:[name]}. The unlocalised name will be {@code tile.ebwizardry:[name].name}.
*/ */
public static void registerBlock(IForgeRegistry<Block> registry, Block block, String name){ public static void registerBlock(IForgeRegistry<Block> registry, Block block, String name){
block.setRegistryName(Wizardry.MODID, name); block.setRegistryName(Wizardry.MODID, name);
@@ -29,20 +29,17 @@ import electroblob.wizardry.item.ItemWand;
import electroblob.wizardry.item.ItemWizardArmour; import electroblob.wizardry.item.ItemWizardArmour;
import electroblob.wizardry.item.ItemWizardHandbook; import electroblob.wizardry.item.ItemWizardHandbook;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for * Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for
@@ -101,12 +98,7 @@ public final class WizardryItems {
public static final Item spectral_pickaxe = new ItemSpectralPickaxe(ToolMaterial.IRON); public static final Item spectral_pickaxe = new ItemSpectralPickaxe(ToolMaterial.IRON);
public static final Item spectral_bow = new ItemSpectralBow(); public static final Item spectral_bow = new ItemSpectralBow();
public static final Item mana_flask = new Item(){ public static final Item mana_flask = new Item().setCreativeTab(WizardryTabs.WIZARDRY);
@Override
public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer entityplayer){
entityplayer.addStat(WizardryAchievements.craft_flask);
}
}.setCreativeTab(WizardryTabs.WIZARDRY);
public static final Item storage_upgrade = new Item().setCreativeTab(WizardryTabs.WIZARDRY); public static final Item storage_upgrade = new Item().setCreativeTab(WizardryTabs.WIZARDRY);
public static final Item siphon_upgrade = new Item().setCreativeTab(WizardryTabs.WIZARDRY); public static final Item siphon_upgrade = new Item().setCreativeTab(WizardryTabs.WIZARDRY);
@@ -198,7 +190,7 @@ public final class WizardryItems {
public static final Map<Pair<Tier, Element>, Item> WAND_MAP = new HashMap<>(); public static final Map<Pair<Tier, Element>, Item> WAND_MAP = new HashMap<>();
public static final Map<Pair<EntityEquipmentSlot, Element>, Item> ARMOUR_MAP = new HashMap<>(); public static final Map<Pair<EntityEquipmentSlot, Element>, Item> ARMOUR_MAP = new HashMap<>();
static{ static {
WAND_MAP.put(ImmutablePair.of(Tier.BASIC, Element.MAGIC), magic_wand); WAND_MAP.put(ImmutablePair.of(Tier.BASIC, Element.MAGIC), magic_wand);
WAND_MAP.put(ImmutablePair.of(Tier.BASIC, Element.FIRE), basic_fire_wand); WAND_MAP.put(ImmutablePair.of(Tier.BASIC, Element.FIRE), basic_fire_wand);
@@ -275,7 +267,7 @@ public final class WizardryItems {
* @param registry The registry to register the given item to. * @param registry The registry to register the given item to.
* @param item The item to register. * @param item The item to register.
* @param name The name of the item, without the mod ID or the .name stuff. The registry name will be * @param name The name of the item, without the mod ID or the .name stuff. The registry name will be
* {@code wizardry:[name]}. The unlocalised name will be {@code item.wizardry:[name].name}. * {@code ebwizardry:[name]}. The unlocalised name will be {@code item.ebwizardry:[name].name}.
*/ */
public static void registerItem(IForgeRegistry<Item> registry, Item item, String name){ public static void registerItem(IForgeRegistry<Item> registry, Item item, String name){
item.setRegistryName(Wizardry.MODID, name); item.setRegistryName(Wizardry.MODID, name);
@@ -291,7 +283,6 @@ public final class WizardryItems {
@SubscribeEvent @SubscribeEvent
public static void register(RegistryEvent.Register<Item> event){ public static void register(RegistryEvent.Register<Item> event){
IForgeRegistry<Item> registry = event.getRegistry(); IForgeRegistry<Item> registry = event.getRegistry();
// ItemBlocks // ItemBlocks
@@ -13,7 +13,7 @@ import net.minecraft.world.World;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's potion effects. * Class responsible for defining, storing and registering all of wizardry's potion effects.
@@ -82,13 +82,13 @@ public final class WizardryPotions {
/** /**
* Sets both the registry and unlocalised names of the given potion, then registers it with the given registry. Use * Sets both the registry and unlocalised names of the given potion, then registers it with the given registry. Use
* this instead of {@link potion#setRegistryName(String)} and {@link potion#setUnlocalizedName(String)} during * this instead of {@link Potion#setRegistryName(String)} and {@link Potion#setUnlocalizedName(String)} during
* construction, for convenience and consistency. * construction, for convenience and consistency.
* *
* @param registry The registry to register the given potion to. * @param registry The registry to register the given potion to.
* @param potion The potion to register. * @param potion The potion to register.
* @param name The name of the potion, without the mod ID or the .name stuff. The registry name will be * @param name The name of the potion, without the mod ID or the .name stuff. The registry name will be
* {@code wizardry:[name]}. The unlocalised name will be {@code potion.wizardry:[name].name}. * {@code ebwizardry:[name]}. The unlocalised name will be {@code potion.ebwizardry:[name].name}.
*/ */
public static void registerPotion(IForgeRegistry<Potion> registry, Potion potion, String name){ public static void registerPotion(IForgeRegistry<Potion> registry, Potion potion, String name){
potion.setRegistryName(Wizardry.MODID, name); potion.setRegistryName(Wizardry.MODID, name);
@@ -1,8 +1,9 @@
package electroblob.wizardry.registry; package electroblob.wizardry.registry;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.common.collect.Lists;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
@@ -72,17 +73,25 @@ import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.EnumCreatureType;
import net.minecraft.init.Biomes; import net.minecraft.init.Biomes;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.storage.loot.LootTableList; import net.minecraft.world.storage.loot.LootTableList;
import net.minecraft.world.storage.loot.functions.LootFunctionManager; import net.minecraft.world.storage.loot.functions.LootFunctionManager;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.EntityRegistry;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for registering all the things that don't have (or need) instances: entities, loot tables, recipes, * Class responsible for registering all the things that don't have (or need) instances: entities, loot tables, recipes,
@@ -91,6 +100,7 @@ import net.minecraftforge.oredict.OreDictionary;
* @author Electroblob * @author Electroblob
* @since Wizardry 1.0 * @since Wizardry 1.0
*/ */
@Mod.EventBusSubscriber
public final class WizardryRegistry { public final class WizardryRegistry {
// NOTE: In 1.12, recipes have a registry (they can still stay here though since we don't keep references to them) // NOTE: In 1.12, recipes have a registry (they can still stay here though since we don't keep references to them)
@@ -112,16 +122,8 @@ public final class WizardryRegistry {
* random stack size, and that's before you take functions into account. * random stack size, and that's before you take functions into account.
* *
* ...oh, and entries can be entire loot tables in themselves, allowing for potentially infinite levels of * ...oh, and entries can be entire loot tables in themselves, allowing for potentially infinite levels of
* randomness. Yeah. * randomness. Yeah. */
*
* Translating to the new system: ChestGenHooks.SOME_NAME -> loot table json file ??? -> loot pool (I don't
* think it was split up like this before) ChestGenHooks.addItem() -> entry in a loot pool Stack sizes in
* WeightedRandomChestContent -> set_count function for entries Weight in WeightedRandomChestContent -> weight
* of entries Custom WeightedRandomChestContent implementations -> custom loot functions, but only for
* complex/dynamic stuff - things that serve to allow the chance for a category of items (like armour) to be
* specified but still have a random chance for which exact item you get should be done with nested loot
* tables. */
// Always registers the loot tables, but only injects the additions into vanilla if the appropriate option is // Always registers the loot tables, but only injects the additions into vanilla if the appropriate option is
// enabled in the config (see WizardryEventHandler). // enabled in the config (see WizardryEventHandler).
LootFunctionManager.registerFunction(new RandomSpell.Serializer()); LootFunctionManager.registerFunction(new RandomSpell.Serializer());
@@ -217,11 +219,9 @@ public final class WizardryRegistry {
registerEntity(EntityWitherSkeletonMinion.class, "wither_skeleton_minion", id++, 128, LIVING_UPDATE_INTERVAL, true); registerEntity(EntityWitherSkeletonMinion.class, "wither_skeleton_minion", id++, 128, LIVING_UPDATE_INTERVAL, true);
// TODO: May need fixing // TODO: May need fixing
List<Biome> biomes = new ArrayList<Biome>(); List<Biome> biomes = Lists.newArrayList();
for(Biome biome : Biome.EXPLORATION_BIOMES_LIST){ for (Biome biome : ForgeRegistries.BIOMES.getValuesCollection()) {
if(biome != null){ biomes.add(biome);
biomes.add(biome);
}
} }
biomes.remove(Biomes.MUSHROOM_ISLAND); biomes.remove(Biomes.MUSHROOM_ISLAND);
biomes.remove(Biomes.MUSHROOM_ISLAND_SHORE); biomes.remove(Biomes.MUSHROOM_ISLAND_SHORE);
@@ -246,68 +246,49 @@ public final class WizardryRegistry {
} }
/** Called from the init method in the main mod class to register all the recipes. */ /** Called from the init method in the main mod class to register all the recipes. */
public static void registerRecipes(){ @SubscribeEvent
public static void registerRecipes(RegistryEvent.Register<IRecipe> event){
IForgeRegistry<IRecipe> registry = event.getRegistry();
ItemStack magicCrystalStack = new ItemStack(WizardryItems.magic_crystal); ItemStack magicCrystalStack = new ItemStack(WizardryItems.magic_crystal);
ItemStack magicWandStack = new ItemStack(WizardryItems.magic_wand, 1, Tier.BASIC.maxCharge); ItemStack magicWandStack = new ItemStack(WizardryItems.magic_wand, 1, Tier.BASIC.maxCharge);
ItemStack goldNuggetStack = new ItemStack(Items.GOLD_NUGGET); ItemStack goldNuggetStack = new ItemStack(Items.GOLD_NUGGET);
ItemStack stickStack = new ItemStack(Items.STICK); ItemStack stickStack = new ItemStack(Items.STICK);
ItemStack bookStack = new ItemStack(Items.BOOK); ItemStack bookStack = new ItemStack(Items.BOOK);
ItemStack stringStack = new ItemStack(Items.STRING);
ItemStack spellBookStack = new ItemStack(WizardryItems.spell_book, 1, Spells.magic_missile.id()); ItemStack spellBookStack = new ItemStack(WizardryItems.spell_book, 1, Spells.magic_missile.id());
ItemStack arcaneWorkbenchStack = new ItemStack(WizardryBlocks.arcane_workbench); Ingredient crystalFlowerStack = Ingredient.fromStacks(new ItemStack(WizardryBlocks.crystal_flower));
ItemStack stoneStack = new ItemStack(Blocks.STONE);
ItemStack lapisBlockStack = new ItemStack(Blocks.LAPIS_BLOCK);
ItemStack purpleCarpetStack = new ItemStack(Blocks.CARPET, 1, 10);
ItemStack wizardHandbookStack = new ItemStack(WizardryItems.wizard_handbook);
ItemStack crystalFlowerStack = new ItemStack(WizardryBlocks.crystal_flower);
ItemStack magicCrystalStack1 = new ItemStack(WizardryItems.magic_crystal, 2); ItemStack magicCrystalStack1 = new ItemStack(WizardryItems.magic_crystal, 2);
ItemStack magicCrystalStack2 = new ItemStack(WizardryItems.magic_crystal, 9); ItemStack magicCrystalStack2 = new ItemStack(WizardryItems.magic_crystal, 9);
ItemStack crystalBlockStack = new ItemStack(WizardryBlocks.crystal_block); Ingredient crystalBlockStack = Ingredient.fromStacks(new ItemStack(WizardryBlocks.crystal_block));
ItemStack manaFlaskStack = new ItemStack(WizardryItems.mana_flask); ItemStack manaFlaskStack = new ItemStack(WizardryItems.mana_flask);
ItemStack bottleStack = new ItemStack(Items.GLASS_BOTTLE); Ingredient bottleStack = Ingredient.fromStacks(new ItemStack(Items.GLASS_BOTTLE));
ItemStack gunpowderStack = new ItemStack(Items.GUNPOWDER); Ingredient gunpowderStack = Ingredient.fromStacks(new ItemStack(Items.GUNPOWDER));
ItemStack blazePowderStack = new ItemStack(Items.BLAZE_POWDER); Ingredient blazePowderStack = Ingredient.fromStacks(new ItemStack(Items.BLAZE_POWDER));
ItemStack spiderEyeStack = new ItemStack(Items.SPIDER_EYE); Ingredient spiderEyeStack = Ingredient.fromStacks(new ItemStack(Items.SPIDER_EYE));
// Coal or charcoal is equally fine, hence the wildcard value // Coal or charcoal is equally fine, hence the wildcard value
ItemStack coalStack = new ItemStack(Items.COAL, 1, OreDictionary.WILDCARD_VALUE); Ingredient coalStack = Ingredient.fromStacks(new ItemStack(Items.COAL, 1, OreDictionary.WILDCARD_VALUE));
ItemStack firebombStack = new ItemStack(WizardryItems.firebomb, 3); ItemStack firebombStack = new ItemStack(WizardryItems.firebomb, 3);
ItemStack poisonBombStack = new ItemStack(WizardryItems.poison_bomb, 3); ItemStack poisonBombStack = new ItemStack(WizardryItems.poison_bomb, 3);
ItemStack smokeBombStack = new ItemStack(WizardryItems.smoke_bomb, 3); ItemStack smokeBombStack = new ItemStack(WizardryItems.smoke_bomb, 3);
ItemStack transportationStoneStack = new ItemStack(WizardryBlocks.transportation_stone, 2);
ItemStack silkStack = new ItemStack(WizardryItems.magic_silk);
ItemStack silkStack1 = new ItemStack(WizardryItems.magic_silk, 2);
ItemStack hatStack = new ItemStack(WizardryItems.wizard_hat);
ItemStack robeStack = new ItemStack(WizardryItems.wizard_robe);
ItemStack leggingsStack = new ItemStack(WizardryItems.wizard_leggings);
ItemStack bootsStack = new ItemStack(WizardryItems.wizard_boots);
ItemStack scrollStack = new ItemStack(WizardryItems.blank_scroll); ItemStack scrollStack = new ItemStack(WizardryItems.blank_scroll);
ItemStack paperStack = new ItemStack(Items.PAPER); Ingredient paperStack = Ingredient.fromStacks(new ItemStack(Items.PAPER));
Ingredient stringStack = Ingredient.fromStacks(new ItemStack(Items.STRING));
GameRegistry.addRecipe(magicWandStack, " x", " y ", "z ", 'x', magicCrystalStack, 'y', stickStack, 'z', goldNuggetStack); registry.register(new ShapedOreRecipe(null, magicWandStack, " x", " y ", "z ", 'x', magicCrystalStack, 'y', stickStack, 'z', goldNuggetStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/magic_wand")));
GameRegistry.addRecipe(spellBookStack, " x ", "xyx", " x ", 'x', magicCrystalStack, 'y', bookStack); registry.register(new ShapedOreRecipe(null, spellBookStack, " x ", "xyx", " x ", 'x', magicCrystalStack, 'y', bookStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/spellbook")));
GameRegistry.addRecipe(arcaneWorkbenchStack, "vwv", "xyx", "zzz", 'v', goldNuggetStack, 'w', purpleCarpetStack, 'x', magicCrystalStack, 'y', lapisBlockStack, 'z', stoneStack);
GameRegistry.addRecipe(manaFlaskStack, "yyy", "yxy", "yyy", 'x', bottleStack, 'y', magicCrystalStack);
GameRegistry.addRecipe(transportationStoneStack, " x ", "xyx", " x ", 'x', stoneStack, 'y', magicCrystalStack);
GameRegistry.addRecipe(hatStack, "yyy", "y y", 'y', silkStack);
GameRegistry.addRecipe(robeStack, "y y", "yyy", "yyy", 'y', silkStack);
GameRegistry.addRecipe(leggingsStack, "yyy", "y y", "y y", 'y', silkStack);
GameRegistry.addRecipe(bootsStack, "y y", "y y", 'y', silkStack);
GameRegistry.addRecipe(silkStack1, " x ", "xyx", " x ", 'x', stringStack, 'y', magicCrystalStack);
GameRegistry.addRecipe(crystalBlockStack, "zzz", "zzz", "zzz", 'z', magicCrystalStack);
GameRegistry.addShapelessRecipe(wizardHandbookStack, bookStack, magicCrystalStack); registry.register(new ShapelessOreRecipe(null, magicCrystalStack1, crystalFlowerStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/magic_crystal_1")));
GameRegistry.addShapelessRecipe(magicCrystalStack1, crystalFlowerStack); registry.register(new ShapelessOreRecipe(null, magicCrystalStack2, crystalBlockStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/magic_crystal_2")));
GameRegistry.addShapelessRecipe(magicCrystalStack2, crystalBlockStack);
if(Wizardry.settings.firebombIsCraftable) GameRegistry.addShapelessRecipe(firebombStack, bottleStack, gunpowderStack, blazePowderStack, blazePowderStack); if(Wizardry.settings.firebombIsCraftable) registry.register(new ShapelessOreRecipe(null, firebombStack, bottleStack, gunpowderStack, blazePowderStack, blazePowderStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/fire_bomb")));
if(Wizardry.settings.poisonBombIsCraftable) GameRegistry.addShapelessRecipe(poisonBombStack, bottleStack, gunpowderStack, spiderEyeStack, spiderEyeStack); if(Wizardry.settings.poisonBombIsCraftable) registry.register(new ShapelessOreRecipe(null, poisonBombStack, bottleStack, gunpowderStack, spiderEyeStack, spiderEyeStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/poison_bomb")));
if(Wizardry.settings.smokeBombIsCraftable) GameRegistry.addShapelessRecipe(smokeBombStack, bottleStack, gunpowderStack, coalStack, coalStack); if(Wizardry.settings.smokeBombIsCraftable) registry.register(new ShapelessOreRecipe(null, smokeBombStack, bottleStack, gunpowderStack, coalStack, coalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/smoke_bomb")));
if(Wizardry.settings.useAlternateScrollRecipe){ if(Wizardry.settings.useAlternateScrollRecipe){
GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack, magicCrystalStack); registry.register(new ShapelessOreRecipe(null, scrollStack, paperStack, stringStack, magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/blank_scroll")));
}else{ }else{
GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack); registry.register(new ShapelessOreRecipe(null, scrollStack, paperStack, stringStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/blank_scroll")));
} }
// Mana flask recipes // Mana flask recipes
@@ -316,16 +297,21 @@ public final class WizardryRegistry {
for(Element element : Element.values()){ for(Element element : Element.values()){
for(Tier tier : Tier.values()){ for(Tier tier : Tier.values()){
miscWandStack = new ItemStack(WizardryUtilities.getWand(tier, element), 1, OreDictionary.WILDCARD_VALUE); miscWandStack = new ItemStack(WizardryUtilities.getWand(tier, element), 1, OreDictionary.WILDCARD_VALUE);
GameRegistry.addShapelessRecipe(miscWandStack, miscWandStack, manaFlaskStack); registry.register(new ShapelessOreRecipe(null, miscWandStack, miscWandStack, manaFlaskStack){
@Override public boolean isDynamic(){ return true; } // Stops it appearing in the recipe book
}.setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/flask_wand_" + element.getUnlocalisedName() + "_" + tier.getUnlocalisedName())));
} }
} }
ItemStack miscArmourStack; ItemStack miscArmourStack;
for(Element element : Element.values()){ for(Element element : Element.values()){
for(EntityEquipmentSlot slot : WizardryUtilities.ARMOUR_SLOTS){ for(EntityEquipmentSlot slot : WizardryUtilities.ARMOUR_SLOTS){
miscArmourStack = new ItemStack(WizardryUtilities.getArmour(element, slot), 1, OreDictionary.WILDCARD_VALUE); miscArmourStack = new ItemStack(WizardryUtilities.getArmour(element, slot), 1, OreDictionary.WILDCARD_VALUE);
GameRegistry.addShapelessRecipe(miscArmourStack, miscArmourStack, manaFlaskStack); registry.register(new ShapelessOreRecipe(null, miscArmourStack, miscArmourStack, manaFlaskStack){
@Override public boolean isDynamic(){ return true; } // Stops it appearing in the recipe book
}.setRegistryName(new ResourceLocation(Wizardry.MODID, "recipes/flask_armour_" + element.getUnlocalisedName() + "_" + slot.getName())));
} }
} }
} }
@@ -5,7 +5,6 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import com.google.common.base.Function;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import electroblob.wizardry.item.ItemScroll; import electroblob.wizardry.item.ItemScroll;
@@ -30,7 +29,7 @@ public final class WizardryTabs {
private static Comparator<ItemStack> spellItemSorter; private static Comparator<ItemStack> spellItemSorter;
// Creative Tabs // Creative Tabs
public static final CreativeTabs WIZARDRY = new CreativeTabs("wizardry"){ public static final CreativeTabs WIZARDRY = new CreativeTabs("ebwizardry"){
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@@ -45,7 +44,7 @@ public final class WizardryTabs {
Collections.sort(items, itemSorter); Collections.sort(items, itemSorter);
} }
}; };
public static final CreativeTabs SPELLS = new CreativeTabs("wizardryspells"){ public static final CreativeTabs SPELLS = new CreativeTabs("ebwizardryspells"){
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@@ -104,33 +103,25 @@ public final class WizardryTabs {
WizardryItems.wizard_boots_sorcery, WizardryItems.wizard_hat_healing, WizardryItems.wizard_robe_healing, WizardryItems.wizard_boots_sorcery, WizardryItems.wizard_hat_healing, WizardryItems.wizard_robe_healing,
WizardryItems.wizard_leggings_healing, WizardryItems.wizard_boots_healing); WizardryItems.wizard_leggings_healing, WizardryItems.wizard_boots_healing);
itemSorter = Ordering.explicit(orderedItemList).onResultOf(new Function<ItemStack, Item>(){ itemSorter = Ordering.explicit(orderedItemList).onResultOf(ItemStack::getItem);
@Override
public Item apply(ItemStack input){
return input.getItem();
}
});
spellItemSorter = new Comparator<ItemStack>(){ spellItemSorter = (stack1, stack2) -> {
@Override
public int compare(ItemStack stack1, ItemStack stack2){
if((stack1.getItem() instanceof ItemSpellBook && stack2.getItem() instanceof ItemSpellBook) if((stack1.getItem() instanceof ItemSpellBook && stack2.getItem() instanceof ItemSpellBook)
|| (stack1.getItem() instanceof ItemScroll && stack2.getItem() instanceof ItemScroll)){ || (stack1.getItem() instanceof ItemScroll && stack2.getItem() instanceof ItemScroll)){
Spell spell1 = Spell.get(stack1.getItemDamage()); Spell spell1 = Spell.get(stack1.getItemDamage());
Spell spell2 = Spell.get(stack2.getItemDamage()); Spell spell2 = Spell.get(stack2.getItemDamage());
return spell1.compareTo(spell2); return spell1.compareTo(spell2);
}else if(stack1.getItem() instanceof ItemScroll){ }else if(stack1.getItem() instanceof ItemScroll){
return 1; return 1;
}else if(stack2.getItem() instanceof ItemScroll){ }else if(stack2.getItem() instanceof ItemScroll){
return -1; return -1;
} }
return 0; return 0;
} };
};
} }
} }
@@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.entity.living.EntityWizard; import electroblob.wizardry.entity.living.EntityWizard;
import electroblob.wizardry.event.SpellCastEvent; import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -43,7 +43,7 @@ public class ArcaneJammer extends Spell {
if(rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.ENTITY && WizardryUtilities.isLiving(rayTrace.entityHit)){ if(rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.ENTITY && WizardryUtilities.isLiving(rayTrace.entityHit)){
EntityLivingBase entity = (EntityLivingBase)rayTrace.entityHit; EntityLivingBase entity = (EntityLivingBase)rayTrace.entityHit;
if(entity instanceof EntityWizard) caster.addStat(WizardryAchievements.jam_wizard); if(entity instanceof EntityWizard) WizardryAdvancementTriggers.jam_wizard.triggerFor(caster);
if(!world.isRemote){ if(!world.isRemote){
entity.addPotionEffect(new PotionEffect(WizardryPotions.arcane_jammer, entity.addPotionEffect(new PotionEffect(WizardryPotions.arcane_jammer,
@@ -78,9 +78,9 @@ public class ArcaneJammer extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -113,9 +113,9 @@ public class Banish extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < 25; i += 2){ for(int i = 1; i < 25; i += 2){
@@ -90,9 +90,9 @@ public class Bubble extends Spell {
} }
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -87,9 +87,9 @@ public class Entrapment extends Spell {
} }
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < 25; i += 2){ for(int i = 1; i < 25; i += 2){
@@ -61,9 +61,9 @@ public class Fireball extends Spell {
- (caster.posY + (double)(caster.height / 2.0F)); - (caster.posY + (double)(caster.height / 2.0F));
double dz = target.posZ - caster.posZ; double dz = target.posZ - caster.posZ;
fireball.accelerationX = dx / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationX = dx / caster.getDistance(target) * 0.1;
fireball.accelerationY = dy / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationY = dy / caster.getDistance(target) * 0.1;
fireball.accelerationZ = dz / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationZ = dz / caster.getDistance(target) * 0.1;
fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ); fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ);
@@ -60,9 +60,9 @@ public class GreaterFireball extends Spell {
- (caster.posY + (double)(caster.height / 2.0F)); - (caster.posY + (double)(caster.height / 2.0F));
double dz = target.posZ - caster.posZ; double dz = target.posZ - caster.posZ;
fireball.accelerationX = dx / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationX = dx / caster.getDistance(target) * 0.1;
fireball.accelerationY = dy / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationY = dy / caster.getDistance(target) * 0.1;
fireball.accelerationZ = dz / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationZ = dz / caster.getDistance(target) * 0.1;
fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ); fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ);
@@ -5,7 +5,7 @@ import java.util.List;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -58,7 +58,7 @@ public class IceAge extends Spell {
target.extinguish(); target.extinguish();
} }
if(target instanceof EntityBlaze) caster.addStat(WizardryAchievements.freeze_blaze, 1); if(target instanceof EntityBlaze) WizardryAdvancementTriggers.freeze_blaze.triggerFor(caster);
if(target instanceof EntityLiving){ if(target instanceof EntityLiving){
@@ -4,7 +4,7 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.registry.WizardryAdvancementTriggers;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -52,7 +52,7 @@ public class IceStatue extends Spell {
// Stops the entity looking red while frozen and the resulting z-fighting // Stops the entity looking red while frozen and the resulting z-fighting
target.hurtTime = 0; target.hurtTime = 0;
if(target instanceof EntityBlaze) caster.addStat(WizardryAchievements.freeze_blaze, 1); if(target instanceof EntityBlaze) WizardryAdvancementTriggers.freeze_blaze.triggerFor(caster);
// Short mobs such as spiders and pigs // Short mobs such as spiders and pigs
if((target.height < 1.2 || target.isChild()) && WizardryUtilities.canBlockBeReplaced(world, pos)){ if((target.height < 1.2 || target.isChild()) && WizardryUtilities.canBlockBeReplaced(world, pos)){

Some files were not shown because too many files have changed in this diff Show More