Compare commits
73 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 07acea53e3 | |||
| 1fcb3a2b1b | |||
| 16eabc8deb | |||
| e0efd8d407 | |||
| 969f0b96fd | |||
| 8a9d88c9ac | |||
| 3b55728c75 | |||
| 240bffa7ed | |||
| c313236eec | |||
| 21f7928b9c | |||
| 1304c11381 | |||
| 79932e15ab | |||
| 25ee166e41 | |||
| 299510e663 | |||
| d3d76cae16 | |||
| 0e815c676d | |||
| f81ad670ed | |||
| 5b3aebaba1 | |||
| 3ef1afce2f | |||
| a3c15d673b | |||
| d8f1c5f77c | |||
| 1ddcdafe50 | |||
| 3c35eaaf54 | |||
| 094ce5a427 | |||
| e19d324dca | |||
| 58f6d55b0d | |||
| 32e92b4b04 | |||
| 24a06e0bac | |||
| ae9da5b7c1 | |||
| 2e39a8bfc1 | |||
| e3130ca936 | |||
| 378e19a614 | |||
| e2fd978d8b | |||
| 8f8ce7a453 | |||
| ddfffd3d31 | |||
| d23c15476a | |||
| 55bb40a684 | |||
| c056c490da | |||
| c483591ea8 | |||
| 4c3dfb3bc9 | |||
| 0010fafc13 | |||
| f4cf98089c | |||
| 8e3a33b084 | |||
| b1478de6fe | |||
| 1d247e2d56 | |||
| e8292f1e96 | |||
| bc0b712e2b | |||
| 47135f00d7 | |||
| c615ad365c | |||
| 39c3989796 | |||
| e808ab2b1f | |||
| a25f942722 | |||
| 14e481a71d | |||
| ac226f1444 | |||
| 741d918d9b | |||
| f504505bf5 | |||
| fb010d3726 | |||
| c64731e7a9 | |||
| d3837a6185 | |||
| 80cf77ecc6 | |||
| 3d3806c20b | |||
| d952e9b255 | |||
| 33c8f08adf | |||
| 315f2e4b02 | |||
| d3df59df73 | |||
| cfd3e796e1 | |||
| d97e843f7b | |||
| 15a153fe11 | |||
| d00b7279ee | |||
| 0142cc05bc | |||
| 23621b8045 | |||
| 7f2978bc7a | |||
| 312364ba77 |
@@ -10,7 +10,7 @@ assignees: ''
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/CONTRIBUTING.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.3 [change as necessary]
|
||||
Wizardry version: 4.3.3 [change as necessary]
|
||||
Environment: Singleplayer/LAN game/Server [delete as necessary]
|
||||
|
||||
Issue details: [describe what you were doing when the issue occurred, what went wrong, what you expected to happen, etc.]
|
||||
|
||||
@@ -10,7 +10,7 @@ assignees: ''
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/CONTRIBUTING.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.3 [change as necessary]
|
||||
Wizardry version: 4.3.3 [change as necessary]
|
||||
|
||||
Question details: [explain your question here]
|
||||
|
||||
|
||||
+3
-1
@@ -49,8 +49,10 @@ Pull requests aren't just for code - if you would like to help translate Wizardr
|
||||
|
||||
- `#image tag` adds an image to the text with the given tag. Image tags are defined in the `"images": {...}` block at the start of the file. Each named entry in this block defines a single image with that name as its tag. Each entry is a JSON object containing a file location and optional caption/dimensions.
|
||||
- `#recipe tag` adds a crafting recipe to the text with the given tag. Similar to image tags, recipe tags are defined in the `"recipes": {...}` block at the start of the file. Each named entry in this block defines a recipe with that name as its tag. Each entry contains a list of one or more locations or recipes to display (if more than one is specified, the display will cycle through the different recipes).
|
||||
- Anything else with a `#` directly before it (with no space) will be treated as a format argument if possible. This means everything between the `#` and the next space will be replaced with something else at runtime, similar to the `%X$s` bits in a normal .lang file. The current available format arguments can be found [here](https://github.com/Electroblob77/Wizardry/blob/1.12.2/src/main/java/electroblob/wizardry/client/gui/handbook/GuiWizardHandbook.java#L177-L203).
|
||||
- Anything else with a `#` directly before it (with no space) will be treated as a format argument if possible. This means the text after the `#` will be replaced with something else at runtime, similar to the `%X$s` bits in a normal .lang file, if it matches one of the available format arguments. The current format arguments can be found [here](https://github.com/Electroblob77/Wizardry/blob/1.12.2/src/main/java/electroblob/wizardry/client/gui/handbook/GuiWizardHandbook.java#L177-L203).
|
||||
- `@section@` adds a hyperlink to the given section, which will display as the name of that section. `@section alt text@` is the same, except alt text is displayed instead of the section name (alt text may contain spaces). It is also possible to hyperlink to a webpage, simply replace the section name with the url (e.g. `@https://example.com/@` or `@https://example.com/ alt text@`).
|
||||
|
||||
> Translators for Chinese, Japanese, Korean and similar East Asian languages: Due to how Minecraft's word wrapping works, for best results you should _remove spaces before and after hyperlinks and formatting tags_, excluding images and recipes. However, do not remove the space between a hyperlink's destination and its alt text or the link will break!
|
||||
|
||||
If all of that confused you, the simple rule is: _Don't translate anything directly after an `@` symbol, directly after a `#`, or the first word after `#image` or `#recipe`_. However, you should translate the `"caption"` entries in the `images` block.
|
||||
|
||||
|
||||
+7
-5
@@ -1,7 +1,7 @@
|
||||
# Credits
|
||||
|
||||
Electroblob's Wizardry
|
||||
Version 4.3
|
||||
Version 4.3.3
|
||||
For Minecraft 1.12.2
|
||||
|
||||
Designed, coded and textured by Electroblob
|
||||
@@ -25,18 +25,20 @@ In addition, I'd like to thank the following individuals for their contributions
|
||||
- Azim-Palmer
|
||||
- raoulvdberge
|
||||
- rafasoares
|
||||
- xinyuan-liu
|
||||
- SettingDust
|
||||
|
||||
#### Translations
|
||||
|
||||
- Spanish: MadWrist, Alsentar
|
||||
- Mexican Spanish: MadWrist
|
||||
- Russian: VilagVil, kellixon, bigenergy, MugGod2
|
||||
- Russian: VilagVil, kellixon, bigenergy, MugGod2, DrHesperus
|
||||
- French: Hahdrim
|
||||
- Brazilian Portuguese: lorrampi
|
||||
- Chinese (Simplified): ZHENGLOC, dragon-evol, Hokorizero, TUsama, Determancer
|
||||
- Korean: shejery, rewi_wire
|
||||
- Polish: Trozuu
|
||||
- German: BirdyDragon
|
||||
- Korean: shejery, rewi_wire, 방통, red1854th
|
||||
- Polish: Trozuu, Olej
|
||||
- German: BirdyDragon, Lemopav
|
||||
- Chinese (Traditional): chesterccj305
|
||||
- Hungarian: Bombadil
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/guide_for_contributing.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.3 [change as necessary]
|
||||
Wizardry version: 4.3.3 [change as necessary]
|
||||
Environment: Singleplayer/LAN game/Server [delete as necessary]
|
||||
|
||||
Issue details: [describe what you were doing when the issue occurred, what went wrong, what you expected to happen, etc.]
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ 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.
|
||||
|
||||
|
||||
version = "4.3" // There, it matches semver, happy now?
|
||||
version = "4.3.3" // There, it matches semver, happy now?
|
||||
group= "electroblob.wizardry"// http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = "ElectroblobsWizardry"
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemArmor.ArmorMaterial;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
@@ -48,7 +49,7 @@ public class CommonProxy {
|
||||
|
||||
public void registerKeyBindings(){}
|
||||
|
||||
public net.minecraft.client.model.ModelBiped getWizardArmourModel(){
|
||||
public net.minecraft.client.model.ModelBiped getWizardArmourModel(ArmorMaterial material){
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,8 @@ public final class Settings {
|
||||
/** The wizardry config file. */
|
||||
private Configuration config;
|
||||
|
||||
private List<String> redundantKeys = new ArrayList<>();
|
||||
|
||||
// Server-only settings. These only affect server-side code and hence are not synced. Changing these locally only
|
||||
// has an effect if the local game is the host, i.e. a dedicated server, a LAN host or a singleplayer world.
|
||||
|
||||
@@ -446,6 +448,8 @@ public final class Settings {
|
||||
*/
|
||||
void initConfig(FMLPreInitializationEvent event){
|
||||
|
||||
redundantKeys.clear();
|
||||
|
||||
config = new Configuration(new File(Wizardry.configDirectory, Wizardry.MODID + ".cfg"));
|
||||
config.load();
|
||||
|
||||
@@ -484,6 +488,8 @@ public final class Settings {
|
||||
/** Called to save changes to the config file after it has been edited in game from the menus. */
|
||||
void saveConfigChanges(){
|
||||
|
||||
redundantKeys.clear();
|
||||
|
||||
Wizardry.logger.info("Saving in-game config changes");
|
||||
|
||||
setupGameplayConfig();
|
||||
@@ -500,6 +506,32 @@ public final class Settings {
|
||||
config.save();
|
||||
}
|
||||
|
||||
void checkForRedundantOptions(String categoryName, Collection<String> validKeys){
|
||||
|
||||
ConfigCategory category = config.getCategory(categoryName);
|
||||
boolean redundantKeysFound = false;
|
||||
|
||||
for(String key : category.keySet()){
|
||||
if(!validKeys.contains(key)){
|
||||
redundantKeys.add(key);
|
||||
if(!redundantKeysFound){
|
||||
redundantKeysFound = true;
|
||||
Wizardry.logger.info("Config category {} contains redundant options:", categoryName);
|
||||
}
|
||||
Wizardry.logger.info(key);
|
||||
}
|
||||
}
|
||||
|
||||
if(redundantKeysFound){
|
||||
Wizardry.logger.info("These options will have no effect (they are probably left over from an older version of wizardry). It is recommended to either remove them manually, or delete ebwizardry.cfg and allow a fresh config to be generated.");
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns true if the config file contains keys that are not valid options (usually because of updates). */
|
||||
public boolean hasRedundantKeys(){
|
||||
return !redundantKeys.isEmpty();
|
||||
}
|
||||
|
||||
/** Sends a packet to the specified player's client containing all the <b>synchronised</b> settings. */
|
||||
public void sync(EntityPlayerMP player){
|
||||
Wizardry.logger.info("Synchronising config settings for " + player.getName());
|
||||
@@ -518,7 +550,10 @@ public final class Settings {
|
||||
|
||||
Property property;
|
||||
|
||||
List<String> keys = new ArrayList<>();
|
||||
|
||||
for(Spell spell : Spell.getAllSpells()){
|
||||
keys.add(spell.getRegistryName().toString());
|
||||
property = config.get(SPELLS_CATEGORY, spell.getRegistryName().toString(), true,
|
||||
"Set to false to disable this spell");
|
||||
// Uses the same config key as the spell name, because - well, that's what it's called!
|
||||
@@ -527,6 +562,7 @@ public final class Settings {
|
||||
spell.setEnabled(property.getBoolean(true));
|
||||
}
|
||||
|
||||
checkForRedundantOptions(SPELLS_CATEGORY, keys);
|
||||
}
|
||||
|
||||
private void setupArtefactsConfig(){
|
||||
@@ -536,8 +572,11 @@ public final class Settings {
|
||||
|
||||
Property property;
|
||||
|
||||
List<String> keys = new ArrayList<>();
|
||||
|
||||
for(Item item : Item.REGISTRY){
|
||||
if(item instanceof ItemArtefact){
|
||||
keys.add(item.getRegistryName().toString());
|
||||
property = config.get(ARTEFACTS_CATEGORY, item.getRegistryName().toString(), true,
|
||||
"Set to false to disable this item");
|
||||
// Uses the same config key as the item name, because - well, that's what it's called!
|
||||
@@ -547,6 +586,7 @@ public final class Settings {
|
||||
}
|
||||
}
|
||||
|
||||
checkForRedundantOptions(ARTEFACTS_CATEGORY, keys);
|
||||
}
|
||||
|
||||
private void setupGameplayConfig(){
|
||||
@@ -623,6 +663,7 @@ public final class Settings {
|
||||
bonemealGrowsCrystalFlowers = property.getBoolean();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(GAMEPLAY_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(GAMEPLAY_CATEGORY, propOrder);
|
||||
|
||||
}
|
||||
@@ -730,6 +771,7 @@ public final class Settings {
|
||||
lightningWraithSpawnRate = property.getInt();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(DIFFICULTY_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(DIFFICULTY_CATEGORY, propOrder);
|
||||
|
||||
}
|
||||
@@ -872,6 +914,7 @@ public final class Settings {
|
||||
}
|
||||
}
|
||||
|
||||
checkForRedundantOptions(TWEAKS_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(TWEAKS_CATEGORY, propOrder);
|
||||
|
||||
}
|
||||
@@ -1019,6 +1062,7 @@ public final class Settings {
|
||||
lootInjectionLocations = getResourceLocationList(property);
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(WORLDGEN_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(WORLDGEN_CATEGORY, propOrder);
|
||||
}
|
||||
|
||||
@@ -1120,6 +1164,7 @@ public final class Settings {
|
||||
donationPerkElement = Element.fromName(property.getString(), null); // Fallback to null for no element
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(CLIENT_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(CLIENT_CATEGORY, propOrder);
|
||||
}
|
||||
|
||||
@@ -1166,6 +1211,7 @@ public final class Settings {
|
||||
alliesCommandName = property.getString();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(COMMANDS_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(COMMANDS_CATEGORY, propOrder);
|
||||
}
|
||||
|
||||
@@ -1243,6 +1289,7 @@ public final class Settings {
|
||||
}
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(RESISTANCES_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(RESISTANCES_CATEGORY, propOrder);
|
||||
}
|
||||
|
||||
@@ -1332,6 +1379,7 @@ public final class Settings {
|
||||
autoUndergroundLibraryMarkers = property.getBoolean();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
checkForRedundantOptions(COMPATIBILITY_CATEGORY, propOrder); // Must be before the order is set!
|
||||
config.setCategoryPropertyOrder(COMPATIBILITY_CATEGORY, propOrder);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package electroblob.wizardry;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonObject;
|
||||
import electroblob.wizardry.block.BlockBookshelf;
|
||||
import electroblob.wizardry.command.CommandCastSpell;
|
||||
import electroblob.wizardry.command.CommandDiscoverSpell;
|
||||
@@ -36,6 +39,8 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
@@ -69,7 +74,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.11.x versions, and so on.
|
||||
*/
|
||||
public static final String VERSION = "4.3";
|
||||
public static final String VERSION = "4.3.3";
|
||||
|
||||
// IDEA: Triggering of inbuilt Forge events in relevant places?
|
||||
// IDEA: Abstract the vanilla particles behind the particle builder
|
||||
@@ -144,6 +149,34 @@ public class Wizardry {
|
||||
@EventHandler
|
||||
public void init(FMLInitializationEvent event){
|
||||
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
|
||||
for(Item item : Item.REGISTRY){
|
||||
|
||||
if(item.getRegistryName().getNamespace().equals(MODID)){
|
||||
|
||||
try{
|
||||
|
||||
FileWriter writer = new FileWriter("generated\\" + item.getRegistryName().getPath() + ".json");
|
||||
|
||||
JsonObject json = new JsonObject();
|
||||
|
||||
json.addProperty("parent", "item/generated");
|
||||
|
||||
JsonObject textures = new JsonObject();
|
||||
textures.addProperty("layer0", MODID + ":items/" + item.getRegistryName().getPath());
|
||||
json.add("textures", textures);
|
||||
|
||||
gson.toJson(json, writer);
|
||||
|
||||
writer.close();
|
||||
|
||||
}catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
settings.initConfigExtras();
|
||||
|
||||
// World generators
|
||||
@@ -168,8 +201,6 @@ public class Wizardry {
|
||||
// Post-registry extras
|
||||
BlockBookshelf.compileBookModelTextures();
|
||||
ContainerBookshelf.initDefaultBookItems();
|
||||
WizardryItems.populateWandMap();
|
||||
WizardryItems.populateArmourMap();
|
||||
WizardryItems.registerDispenseBehaviours();
|
||||
WizardryItems.registerBannerPatterns();
|
||||
WandHelper.populateUpgradeMap();
|
||||
|
||||
@@ -79,13 +79,13 @@ public final class WizardryEventHandler {
|
||||
public static void onPlayerLoggedInEvent(PlayerLoggedInEvent event){
|
||||
// When a player logs in, they are sent the glyph data, server settings and spell properties.
|
||||
if(event.player instanceof EntityPlayerMP){
|
||||
SpellGlyphData.get(event.player.world).sync((EntityPlayerMP)event.player);
|
||||
SpellEmitterData.get(event.player.world).sync((EntityPlayerMP)event.player);
|
||||
Wizardry.settings.sync((EntityPlayerMP)event.player);
|
||||
syncAdvancements((EntityPlayerMP)event.player, false);
|
||||
EntityPlayerMP player = (EntityPlayerMP)event.player;
|
||||
SpellGlyphData.get(player.world).sync(player);
|
||||
SpellEmitterData.get(player.world).sync(player);
|
||||
Wizardry.settings.sync(player);
|
||||
syncAdvancements(player, false);
|
||||
Spell.syncProperties(player);
|
||||
}
|
||||
|
||||
Spell.syncProperties(event.player);
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
|
||||
@@ -261,7 +261,6 @@ public class BlockBookshelf extends BlockHorizontal implements ITileEntityProvid
|
||||
registerBookModelTexture(() -> WizardryItems.scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_blue"));
|
||||
registerBookModelTexture(() -> WizardryItems.blank_scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_blue"));
|
||||
registerBookModelTexture(() -> WizardryItems.identification_scroll, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_purple"));
|
||||
registerBookModelTexture(() -> WizardryItems.armour_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_red"));
|
||||
// Can't use the map in WandHelper because this is called from preInit (addons will have to add theirs manually)
|
||||
registerBookModelTexture(() -> WizardryItems.storage_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_wooden"));
|
||||
registerBookModelTexture(() -> WizardryItems.siphon_upgrade, new ResourceLocation(Wizardry.MODID, "blocks/scrolls_wooden"));
|
||||
|
||||
@@ -108,7 +108,18 @@ public class BlockImbuementAltar extends Block implements ITileEntityProvider {
|
||||
&& world.getBlockState(pos.offset(s)).getValue(BlockReceptacle.FACING) == s);
|
||||
|
||||
if(world.getBlockState(pos).getValue(ACTIVE) != shouldBeActive){ // Only set when it actually needs changing
|
||||
|
||||
// Get contents of altar before replacing it
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
ItemStack stack = ItemStack.EMPTY;
|
||||
if(te instanceof TileEntityImbuementAltar) stack = ((TileEntityImbuementAltar)te).getStack();
|
||||
|
||||
world.setBlockState(pos, world.getBlockState(pos).withProperty(ACTIVE, shouldBeActive));
|
||||
|
||||
// Copy over contents of altar from before to new tile entity
|
||||
te = world.getTileEntity(pos);
|
||||
if(te instanceof TileEntityImbuementAltar) ((TileEntityImbuementAltar)te).setStack(stack);
|
||||
|
||||
world.checkLight(pos);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,6 +132,13 @@ public class BlockReceptacle extends BlockTorch implements ITileEntityProvider {
|
||||
return super.checkForDrop(world, pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean onNeighborChangeInternal(World world, BlockPos pos, IBlockState state){
|
||||
// This is so stupid, BlockTorch DUPLICATES the code that checks for valid placement in the super method instead
|
||||
// of checking the existing methods...
|
||||
return !this.checkForDrop(world, pos, state); // Literally all we need. None of the rubbish in super.
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer){
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ import electroblob.wizardry.client.gui.GuiSpellDisplay;
|
||||
import electroblob.wizardry.client.gui.config.NamedBooleanEntry;
|
||||
import electroblob.wizardry.client.gui.config.SpellHUDSkinChooserEntry;
|
||||
import electroblob.wizardry.client.gui.handbook.GuiWizardHandbook;
|
||||
import electroblob.wizardry.client.model.ModelRobeArmour;
|
||||
import electroblob.wizardry.client.model.ModelSageArmour;
|
||||
import electroblob.wizardry.client.model.ModelWizardArmour;
|
||||
import electroblob.wizardry.client.particle.*;
|
||||
import electroblob.wizardry.client.particle.ParticleWizardry.IWizardryParticleFactory;
|
||||
@@ -39,6 +41,7 @@ import electroblob.wizardry.item.ItemSpellBook;
|
||||
import electroblob.wizardry.item.ItemWand;
|
||||
import electroblob.wizardry.packet.*;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.registry.WizardryItems.Materials;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.spell.*;
|
||||
import electroblob.wizardry.tileentity.*;
|
||||
@@ -65,6 +68,7 @@ import net.minecraft.entity.monster.EntityBlaze;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ContainerMerchant;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemArmor.ArmorMaterial;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityDispenser;
|
||||
@@ -120,8 +124,16 @@ public class ClientProxy extends CommonProxy {
|
||||
}
|
||||
}
|
||||
|
||||
// Armour Model
|
||||
public static final ModelBiped WIZARD_ARMOUR_MODEL = new ModelWizardArmour(0.75f);
|
||||
// Armour Models
|
||||
// Can't use an EnumMap here because our additional values aren't really part of the enum
|
||||
public static final Map<ArmorMaterial, ModelBiped> wizard_armour_models = new HashMap<>();
|
||||
|
||||
static {
|
||||
wizard_armour_models.put(Materials.SILK, new ModelWizardArmour(0.75f));
|
||||
wizard_armour_models.put(Materials.SAGE, new ModelSageArmour(0.75f));
|
||||
wizard_armour_models.put(Materials.BATTLEMAGE, new ModelRobeArmour(0.75f, true));
|
||||
wizard_armour_models.put(Materials.WARLOCK, new ModelRobeArmour(0.75f, false));
|
||||
}
|
||||
|
||||
/** The wrap width for standard multi-line descriptions (see {@link ClientProxy#addMultiLineDescription(List, String, Style, Object...)}). */
|
||||
private static final int TOOLTIP_WRAP_WIDTH = 140;
|
||||
@@ -130,8 +142,8 @@ public class ClientProxy extends CommonProxy {
|
||||
// ===============================================================================================================
|
||||
|
||||
@Override
|
||||
public ModelBiped getWizardArmourModel(){
|
||||
return WIZARD_ARMOUR_MODEL;
|
||||
public ModelBiped getWizardArmourModel(ArmorMaterial material){
|
||||
return wizard_armour_models.get(material);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -42,6 +42,8 @@ public class ModelRendererExtended extends ModelRenderer {
|
||||
this.rotationPointX = delegate.rotationPointX;
|
||||
this.rotationPointY = delegate.rotationPointY;
|
||||
this.rotationPointZ = delegate.rotationPointZ;
|
||||
this.cubeList = delegate.cubeList;
|
||||
this.childModels = delegate.childModels;
|
||||
this.resetRotation();
|
||||
}
|
||||
|
||||
@@ -91,6 +93,33 @@ public class ModelRendererExtended extends ModelRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given {@link ModelBiped} is fully wrapped, i.e. all its parts are instances of
|
||||
* {@code ModelRendererExtended}. If the given model is a {@link ModelPlayer}, this also checks the extra boxes for
|
||||
* player skin overlays.
|
||||
*/
|
||||
public static boolean isWrapped(ModelBiped model){
|
||||
|
||||
boolean flag = true;
|
||||
|
||||
if(model instanceof ModelPlayer){
|
||||
flag = flag && ((ModelPlayer)model).bipedBodyWear instanceof ModelRendererExtended;
|
||||
flag = flag && ((ModelPlayer)model).bipedRightArmwear instanceof ModelRendererExtended;
|
||||
flag = flag && ((ModelPlayer)model).bipedLeftArmwear instanceof ModelRendererExtended;
|
||||
flag = flag && ((ModelPlayer)model).bipedRightLegwear instanceof ModelRendererExtended;
|
||||
flag = flag && ((ModelPlayer)model).bipedLeftLegwear instanceof ModelRendererExtended;
|
||||
}
|
||||
|
||||
return flag
|
||||
&& model.bipedHead instanceof ModelRendererExtended
|
||||
&& model.bipedBody instanceof ModelRendererExtended
|
||||
&& model.bipedRightArm instanceof ModelRendererExtended
|
||||
&& model.bipedLeftArm instanceof ModelRendererExtended
|
||||
&& model.bipedRightLeg instanceof ModelRendererExtended
|
||||
&& model.bipedLeftLeg instanceof ModelRendererExtended
|
||||
&& model.bipedHeadwear instanceof ModelRendererExtended;
|
||||
}
|
||||
|
||||
/** Resets the rotation of this model part to the angle set by the parent model. */
|
||||
public void resetRotation(){
|
||||
this.actualRotationX = Float.NaN;
|
||||
|
||||
@@ -25,6 +25,7 @@ import net.minecraft.util.EnumHandSide;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.client.event.RenderSpecificHandEvent;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
@@ -58,6 +59,9 @@ public class PlayerAnimator {
|
||||
/** Reflected into {@link RenderLivingBase}{@code #layerRenderers}. */
|
||||
private static final Field layerRenderers;
|
||||
|
||||
/** True if wizardry's player animations have been overridden with another mod (currently only MoBends) */
|
||||
private static boolean overridden;
|
||||
|
||||
static {
|
||||
layerRenderers = ObfuscationReflectionHelper.findField(RenderLivingBase.class, "field_177097_h");
|
||||
}
|
||||
@@ -75,86 +79,113 @@ public class PlayerAnimator {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Figure out if calling this from postInit ensures we catch all the layers, and lazy-load it if not
|
||||
@SuppressWarnings("unchecked")
|
||||
/** Returns true if spellcasting animations are enabled, false otherwise. */
|
||||
public static boolean areAnimationsEnabled(){
|
||||
return Wizardry.settings.spellcastingAnimations && !overridden;
|
||||
}
|
||||
|
||||
public static void init(){
|
||||
|
||||
if(!Wizardry.settings.spellcastingAnimations) return;
|
||||
if(Loader.isModLoaded("mobends")) overridden = true;
|
||||
|
||||
if(!areAnimationsEnabled()) return;
|
||||
|
||||
for(RenderPlayer renderer : Minecraft.getMinecraft().getRenderManager().getSkinMap().values()){
|
||||
loadLayersForRenderer(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
List<ModelBiped> models = new ArrayList<>();
|
||||
ModelRendererExtended.wrap(renderer.getMainModel());
|
||||
models.add(renderer.getMainModel());
|
||||
@SuppressWarnings("unchecked")
|
||||
private static void loadLayersForRenderer(RenderPlayer renderer){
|
||||
|
||||
try {
|
||||
List<ModelBiped> models = new ArrayList<>();
|
||||
ModelRendererExtended.wrap(renderer.getMainModel());
|
||||
models.add(renderer.getMainModel());
|
||||
|
||||
List<LayerRenderer<? extends EntityLivingBase>> layers = (List<LayerRenderer<? extends EntityLivingBase>>)layerRenderers.get(renderer);
|
||||
try {
|
||||
|
||||
// Save armour layers for lazy-loading later (ignore other layers so iteration is faster)
|
||||
playerLayers.put(renderer, layers.stream().filter(l -> l instanceof LayerBipedArmor).collect(Collectors.toList()));
|
||||
List<LayerRenderer<? extends EntityLivingBase>> layers = (List<LayerRenderer<? extends EntityLivingBase>>)layerRenderers.get(renderer);
|
||||
|
||||
for(LayerRenderer<?> layer : layers){
|
||||
// Save armour layers for lazy-loading later (ignore other layers so iteration is faster)
|
||||
playerLayers.put(renderer, layers.stream().filter(l -> l instanceof LayerBipedArmor).collect(Collectors.toList()));
|
||||
|
||||
for(Field field : JavaUtils.getAllFields(layer.getClass())){
|
||||
for(LayerRenderer<?> layer : layers){
|
||||
|
||||
field.setAccessible(true);
|
||||
for(Field field : JavaUtils.getAllFields(layer.getClass())){
|
||||
|
||||
// If your layer model doesn't extend ModelBiped, you DESERVE to be incompatible!
|
||||
// (Just kidding... there's nothing I can do about it anyway)
|
||||
if(field.get(layer) instanceof ModelBiped){
|
||||
ModelBiped model = (ModelBiped)field.get(layer);
|
||||
ModelRendererExtended.wrap(model);
|
||||
models.add(model);
|
||||
}
|
||||
field.setAccessible(true);
|
||||
|
||||
// If your layer model doesn't extend ModelBiped, you DESERVE to be incompatible!
|
||||
// (Just kidding... there's nothing I can do about it anyway)
|
||||
if(field.get(layer) instanceof ModelBiped){
|
||||
ModelBiped model = (ModelBiped)field.get(layer);
|
||||
ModelRendererExtended.wrap(model);
|
||||
models.add(model);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}catch(IllegalAccessException e){
|
||||
Wizardry.logger.error("Error during reflective access of render layers: ", e);
|
||||
}
|
||||
|
||||
playerLayerModels.put(renderer, models);
|
||||
|
||||
}catch(IllegalAccessException e){
|
||||
Wizardry.logger.error("Error during reflective access of render layers: ", e);
|
||||
}
|
||||
|
||||
playerLayerModels.put(renderer, models);
|
||||
}
|
||||
|
||||
private static void updateModels(EntityPlayer player, Render<?> renderer, float partialTicks, boolean firstPerson){
|
||||
|
||||
// Biped armour is special because of Forge's armour item render hook
|
||||
// This needs to be lazy-loaded because we need access to an actual item
|
||||
for(LayerRenderer<? extends EntityLivingBase> layer : playerLayers.get(renderer)){
|
||||
if(layer instanceof LayerBipedArmor){
|
||||
for(EntityEquipmentSlot slot : InventoryUtils.ARMOUR_SLOTS){
|
||||
// Lazy-load models from custom renderers (some mods assign their custom renderers in postInit, so they might
|
||||
// not be picked up from PlayerAnimator#init)
|
||||
if(renderer instanceof RenderPlayer && !playerLayerModels.containsKey(renderer)){
|
||||
loadLayersForRenderer((RenderPlayer)renderer);
|
||||
}
|
||||
|
||||
ItemStack armour = player.getItemStackFromSlot(slot);
|
||||
// This method could behave dynamically depending on stuff like NBT so there's not really any way to
|
||||
// optimise it further, we *have* to retrieve the model every time (shouldn't be too bad though)
|
||||
ModelBiped model = ForgeHooksClient.getArmorModel(player, armour, slot, ((LayerBipedArmor)layer).getModelFromSlot(slot));
|
||||
List<ModelBiped> models = playerLayerModels.get(renderer);
|
||||
|
||||
List<ModelBiped> models = playerLayerModels.get(renderer);
|
||||
// If no models were registered for the given renderer, don't do anything
|
||||
if(models != null){
|
||||
|
||||
if(!models.contains(model)){ // Ignore already-wrapped models
|
||||
models.add(model);
|
||||
ModelRendererExtended.wrap(model);
|
||||
List<LayerRenderer<? extends EntityLivingBase>> layers = playerLayers.get(renderer);
|
||||
|
||||
// If no layers were registered for the given renderer there's no point trying to lazy-load anything!
|
||||
if(layers != null){
|
||||
|
||||
// Biped armour is special because of Forge's armour item render hook
|
||||
// This needs to be lazy-loaded because we need access to an actual item
|
||||
for(LayerRenderer<? extends EntityLivingBase> layer : layers){
|
||||
if(layer instanceof LayerBipedArmor){
|
||||
for(EntityEquipmentSlot slot : InventoryUtils.ARMOUR_SLOTS){
|
||||
|
||||
ItemStack armour = player.getItemStackFromSlot(slot);
|
||||
// This method could behave dynamically depending on stuff like NBT so there's not really any way to
|
||||
// optimise it further, we *have* to retrieve the model every time (shouldn't be too bad though)
|
||||
ModelBiped model = ForgeHooksClient.getArmorModel(player, armour, slot, ((LayerBipedArmor)layer).getModelFromSlot(slot));
|
||||
|
||||
if(!models.contains(model)){ // Ignore already-wrapped models
|
||||
models.add(model);
|
||||
ModelRendererExtended.wrap(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(Animation animation : animations){
|
||||
for(Animation animation : animations){
|
||||
|
||||
if(animation.shouldDisplay(player, firstPerson)){
|
||||
if(animation.shouldDisplay(player, firstPerson)){
|
||||
|
||||
boolean autoRotateSecondLayer = animation.autoRotateSecondLayer(player, firstPerson);
|
||||
boolean autoRotateSecondLayer = animation.autoRotateSecondLayer(player, firstPerson);
|
||||
|
||||
for(ModelBiped model : playerLayerModels.get(renderer)){
|
||||
for(ModelBiped model : models){
|
||||
|
||||
animation.setRotationAngles(player, model, partialTicks, firstPerson);
|
||||
if(!ModelRendererExtended.isWrapped(model)) continue; // Should never happen but somehow it does
|
||||
|
||||
if(autoRotateSecondLayer && model instanceof ModelPlayer){
|
||||
alignSecondLayer((ModelPlayer)model);
|
||||
animation.setRotationAngles(player, model, partialTicks, firstPerson);
|
||||
|
||||
if(autoRotateSecondLayer && model instanceof ModelPlayer){
|
||||
alignSecondLayer((ModelPlayer)model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -174,7 +205,7 @@ public class PlayerAnimator {
|
||||
@SubscribeEvent
|
||||
public static void onRenderHandEvent(RenderSpecificHandEvent event){
|
||||
|
||||
if(!Wizardry.settings.spellcastingAnimations) return;
|
||||
if(!areAnimationsEnabled()) return;
|
||||
|
||||
AbstractClientPlayer player = Minecraft.getMinecraft().player;
|
||||
|
||||
@@ -193,7 +224,7 @@ public class PlayerAnimator {
|
||||
@SubscribeEvent
|
||||
public static void onRenderPlayerPreEvent(RenderPlayerEvent.Pre event){
|
||||
|
||||
if(!Wizardry.settings.spellcastingAnimations) return;
|
||||
if(!areAnimationsEnabled()) return;
|
||||
|
||||
// boolean firstPerson = event.getEntityPlayer() == Minecraft.getMinecraft().player
|
||||
// && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0;
|
||||
@@ -204,13 +235,17 @@ public class PlayerAnimator {
|
||||
@SubscribeEvent
|
||||
public static void onRenderPlayerPostEvent(RenderPlayerEvent.Post event){
|
||||
|
||||
if(!Wizardry.settings.spellcastingAnimations) return;
|
||||
if(!areAnimationsEnabled()) return;
|
||||
|
||||
for(ModelBiped model : playerLayerModels.get(event.getRenderer())){
|
||||
for(ModelRenderer box : model.boxList){ // For ModelPlayer, this will include the second layer
|
||||
// Some models have extra boxes, they (probably) don't need wrapping but we need this check!
|
||||
if(box instanceof ModelRendererExtended){
|
||||
((ModelRendererExtended)box).resetRotation();
|
||||
List<ModelBiped> models = playerLayerModels.get(event.getRenderer());
|
||||
|
||||
if(models != null){
|
||||
for(ModelBiped model : models){
|
||||
for(ModelRenderer box : model.boxList){ // For ModelPlayer, this will include the second layer
|
||||
// Some models have extra boxes, they (probably) don't need wrapping but we need this check!
|
||||
if(box instanceof ModelRendererExtended){
|
||||
((ModelRendererExtended)box).resetRotation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,13 @@ import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@Mod.EventBusSubscriber(Side.CLIENT)
|
||||
public class GuiSpellDisplay {
|
||||
@@ -96,9 +97,28 @@ public class GuiSpellDisplay {
|
||||
return Collections.unmodifiableMap(skins);
|
||||
}
|
||||
|
||||
/** Returns the skin that corresponds to the given key. */
|
||||
/** Returns the skin that corresponds to the given key. If no such skin exists, returns the default skin as a
|
||||
* fallback. If the fallback skin is missing, prints a warning to the console and returns null. */
|
||||
@Nullable
|
||||
public static Skin getSkin(String key){
|
||||
return skins.get(key);
|
||||
|
||||
Skin skin = skins.get(key);
|
||||
|
||||
if(skin == null){
|
||||
|
||||
Wizardry.logger.info("The spell HUD skin '" + Wizardry.settings.spellHUDSkin + "' specified in the config"
|
||||
+ " did not match any of the loaded skins; using the default skin as a fallback.");
|
||||
|
||||
skin = skins.get(Settings.DEFAULT_HUD_SKIN_KEY);
|
||||
|
||||
if(skin == null){
|
||||
Wizardry.logger.warn("The default spell HUD skin is missing! A resource pack must have overridden it"
|
||||
+ " with an invalid JSON file (default.json), please try again without any resource packs.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return skin;
|
||||
}
|
||||
|
||||
// Normally when extending Gui, you'd have to have an instance to access its methods. However, we're not actually
|
||||
@@ -212,21 +232,9 @@ public class GuiSpellDisplay {
|
||||
flipX = flipX == ((mainHand ? player.getPrimaryHand() : player.getPrimaryHand().opposite()) == EnumHandSide.LEFT);
|
||||
}
|
||||
|
||||
Skin skin = skins.get(Wizardry.settings.spellHUDSkin);
|
||||
Skin skin = getSkin(Wizardry.settings.spellHUDSkin);
|
||||
|
||||
if(skin == null){
|
||||
|
||||
Wizardry.logger.info("The spell HUD skin '" + Wizardry.settings.spellHUDSkin + "' specified in the config"
|
||||
+ " did not match any of the loaded skins; using the default skin as a fallback.");
|
||||
|
||||
skin = skins.get(Settings.DEFAULT_HUD_SKIN_KEY);
|
||||
|
||||
if(skin == null){
|
||||
Wizardry.logger.warn("The default spell HUD skin is missing! A resource pack must have overridden it"
|
||||
+ " with an invalid JSON file (default.json), please try again without any resource packs.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(skin == null) return; // Can't draw anything if there is no skin loaded!
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
|
||||
@@ -90,28 +90,30 @@ public class WizardTradeTweaksHandler {
|
||||
// New spell indicator
|
||||
if(gui.inventorySlots instanceof ContainerMerchant){
|
||||
|
||||
// Can't use getCurrentRecipe because that only gets updated when the correct items are given
|
||||
MerchantRecipe recipe = trades.get(tradeIndex);
|
||||
if(tradeIndex < trades.size()){ // Seems to happen with certain mods' GUIs
|
||||
|
||||
if(recipe != null && recipe.getItemToSell().getItem() instanceof ItemSpellBook){
|
||||
// Can't use getCurrentRecipe because that only gets updated when the correct items are given
|
||||
MerchantRecipe recipe = trades.get(tradeIndex);
|
||||
|
||||
EntityPlayer player = Minecraft.getMinecraft().player;
|
||||
Spell spell = Spell.byMetadata(recipe.getItemToSell().getMetadata());
|
||||
if(recipe != null && recipe.getItemToSell().getItem() instanceof ItemSpellBook){
|
||||
|
||||
if(Wizardry.settings.discoveryMode && !player.isCreative() && Wizardry.proxy.shouldDisplayDiscovered(spell, recipe.getItemToSell())
|
||||
&& WizardData.get(player) != null && !WizardData.get(player).hasSpellBeenDiscovered(spell)){
|
||||
|
||||
int x = gui.inventorySlots.getSlot(2).xPos + 14;
|
||||
int y = gui.inventorySlots.getSlot(2).yPos - 17;
|
||||
EntityPlayer player = Minecraft.getMinecraft().player;
|
||||
Spell spell = Spell.byMetadata(recipe.getItemToSell().getMetadata());
|
||||
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GlStateManager.color(1, 1, 1);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(NEW_SPELL_ICON);
|
||||
if(Wizardry.settings.discoveryMode && !player.isCreative() && Wizardry.proxy.shouldDisplayDiscovered(spell, recipe.getItemToSell())
|
||||
&& WizardData.get(player) != null && !WizardData.get(player).hasSpellBeenDiscovered(spell)){
|
||||
|
||||
int frame = Math.max(player.ticksExisted/ANIMATION_FRAME_TIME % ANIMATION_PERIOD - (ANIMATION_PERIOD - ANIMATION_FRAMES), 0);
|
||||
DrawingUtils.drawTexturedRect(x, y, 0, frame * ICON_HEIGHT, ICON_WIDTH, ICON_HEIGHT, ICON_WIDTH, ICON_HEIGHT * ANIMATION_FRAMES);
|
||||
int x = gui.inventorySlots.getSlot(2).xPos + 14;
|
||||
int y = gui.inventorySlots.getSlot(2).yPos - 17;
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GlStateManager.color(1, 1, 1);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(NEW_SPELL_ICON);
|
||||
|
||||
int frame = Math.max(player.ticksExisted / ANIMATION_FRAME_TIME % ANIMATION_PERIOD - (ANIMATION_PERIOD - ANIMATION_FRAMES), 0);
|
||||
DrawingUtils.drawTexturedRect(x, y, 0, frame * ICON_HEIGHT, ICON_WIDTH, ICON_HEIGHT, ICON_WIDTH, ICON_HEIGHT * ANIMATION_FRAMES);
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
// int mouseX = event.getMouseX() - gui.getGuiLeft();
|
||||
// int mouseY = event.getMouseY() - gui.getGuiTop();
|
||||
@@ -120,6 +122,7 @@ public class WizardTradeTweaksHandler {
|
||||
// GuiUtils.drawHoveringText(Collections.singletonList("You haven't discovered this spell yet"), mouseX,
|
||||
// mouseY, gui.width, gui.height, 150, Minecraft.getMinecraft().fontRenderer);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package electroblob.wizardry.client.gui.config;
|
||||
|
||||
import com.mojang.realmsclient.gui.ChatFormatting;
|
||||
import electroblob.wizardry.Settings;
|
||||
import electroblob.wizardry.Wizardry;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
@@ -18,9 +19,13 @@ import java.util.List;
|
||||
public class GuiConfigWizardry extends GuiConfig {
|
||||
|
||||
public GuiConfigWizardry(GuiScreen parent){
|
||||
|
||||
super(parent, getConfigEntries(), Wizardry.MODID, false, false,
|
||||
Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title.general"));
|
||||
// this.titleLine2 = "File location: " + Wizardry.config.getConfigFile().getAbsolutePath();
|
||||
|
||||
if(Wizardry.settings.hasRedundantKeys()){
|
||||
this.titleLine2 = ChatFormatting.GOLD.toString() + I18n.format("config." + Wizardry.MODID + ".redundant_keys");
|
||||
}
|
||||
}
|
||||
|
||||
private static List<IConfigElement> getConfigEntries(){
|
||||
|
||||
@@ -59,31 +59,34 @@ public class GuiSelectHUDSkin extends GuiSelectString {
|
||||
this.drawGradientRect(previewLeft, previewTop, previewRight, previewBottom, 0x88000000, 0x88000000);
|
||||
|
||||
int previewBorder = 10;
|
||||
|
||||
|
||||
Skin skin = GuiSpellDisplay.getSkin((String)this.currentValue);
|
||||
|
||||
float scale = Math.min((previewRight - previewLeft - 2*previewBorder)/(float)skin.getWidth(),
|
||||
(previewBottom - previewTop - 2*previewBorder)/(float)skin.getHeight());
|
||||
|
||||
float x = (previewLeft + previewRight)/2f - (skin.getWidth()*scale)/2;
|
||||
float y = (previewBottom + previewTop)/2f + (skin.getHeight()*scale)/2;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
GlStateManager.scale(scale, scale, scale);
|
||||
|
||||
skin.drawBackground((int)(x/scale), (int)(y/scale), false, false,
|
||||
Spells.magic_missile.getIcon(), 0.6f, false, false);
|
||||
|
||||
skin.drawText((int)(x/scale), (int)(y/scale), false, false,
|
||||
Spells.none.getDisplayNameWithFormatting(),
|
||||
Spells.magic_missile.getDisplayNameWithFormatting(),
|
||||
Spells.none.getDisplayNameWithFormatting(), 0);
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
|
||||
|
||||
if(skin != null){
|
||||
|
||||
float scale = Math.min((previewRight - previewLeft - 2 * previewBorder) / (float)skin.getWidth(),
|
||||
(previewBottom - previewTop - 2 * previewBorder) / (float)skin.getHeight());
|
||||
|
||||
float x = (previewLeft + previewRight) / 2f - (skin.getWidth() * scale) / 2;
|
||||
float y = (previewBottom + previewTop) / 2f + (skin.getHeight() * scale) / 2;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
GlStateManager.scale(scale, scale, scale);
|
||||
|
||||
skin.drawBackground((int)(x / scale), (int)(y / scale), false, false,
|
||||
Spells.magic_missile.getIcon(), 0.6f, false, false);
|
||||
|
||||
skin.drawText((int)(x / scale), (int)(y / scale), false, false,
|
||||
Spells.none.getDisplayNameWithFormatting(),
|
||||
Spells.magic_missile.getDisplayNameWithFormatting(),
|
||||
Spells.none.getDisplayNameWithFormatting(), 0);
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
Skin hovered = getHoveredSkin(mouseX, mouseY);
|
||||
|
||||
|
||||
if(hovered != null){
|
||||
this.drawToolTip(Lists.newArrayList("\u00A7a" + hovered.getName(), "\u00A7e" + hovered.getDescription()),
|
||||
mouseX, mouseY);
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.*;
|
||||
|
||||
/**
|
||||
* Instances of this class represent sections in the wizard's handbook. As of wizardry 4.2, this class handles
|
||||
* everything within the section itself, including JSON parsing, unlock triggers and drawing the actual rawText.
|
||||
* everything within the section itself, including JSON parsing, unlock triggers and drawing the actual text.
|
||||
* Sections may now also be nested and have other elements within them, such as images and a table of contents, a
|
||||
* behaviour which is also handled within this class.
|
||||
* <p></p>
|
||||
@@ -313,8 +313,8 @@ class Section {
|
||||
// The button id only does what you use it for, so we're just not using it at all.
|
||||
this.buttons.get(pageRelative).add(GuiButtonHyperlink.create(x, y, font, upToLink, arguments, suffix, maxLineNumber - lineNumber - 1, GuiWizardHandbook.isRightPage(page)));
|
||||
|
||||
// The link button should exactly overlay the display rawText in the main string
|
||||
// If the link has no display rawText specified, it displays the unformatted target string
|
||||
// The link button should exactly overlay the display text in the main string
|
||||
// If the link has no display text specified, it displays the unformatted target string
|
||||
paragraph = paragraph.replace(linkRaw, arguments[arguments.length - 1]);
|
||||
}
|
||||
|
||||
@@ -385,7 +385,7 @@ class Section {
|
||||
|
||||
if(JsonUtils.hasField(json, "text")){
|
||||
section.rawText = Streams.stream(JsonUtils.getJsonArray(json, "text"))
|
||||
.map(e -> JsonUtils.getString(e, "element of array rawText"))
|
||||
.map(e -> JsonUtils.getString(e, "element of array text"))
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
|
||||
|
||||
@@ -119,11 +119,19 @@ public class BakedModelGenerateOverrides implements IBakedModel {
|
||||
|
||||
IBakedModel original = event.getModelRegistry().getObject(location);
|
||||
|
||||
if(original != null){
|
||||
original.getOverrides().getOverrides().stream().map(ItemOverride::getLocation)
|
||||
.filter(l -> l.getPath().contains(OVERRIDE_GENERATORS)).findFirst()
|
||||
.ifPresent(l -> event.getModelRegistry().putObject(location,
|
||||
substituteWandModel(event.getModelManager(), location, original, l)));
|
||||
try{
|
||||
|
||||
// Ignore the warnings, IntelliJ is right that these can't be null in the dev environment but certain
|
||||
// mods seem to be doing ASM hackery that makes it so they can be null
|
||||
if(original != null && original.getOverrides() != null && original.getOverrides().getOverrides() != null){
|
||||
original.getOverrides().getOverrides().stream().map(ItemOverride::getLocation)
|
||||
.filter(l -> l.getPath().contains(OVERRIDE_GENERATORS)).findFirst()
|
||||
.ifPresent(l -> event.getModelRegistry().putObject(location,
|
||||
substituteWandModel(event.getModelManager(), location, original, l)));
|
||||
}
|
||||
|
||||
}catch(NullPointerException e){
|
||||
Wizardry.logger.info("The model {} threw an error when trying to access item overrides, it will be ignored. If you're an addon dev and you made this model, something is wrong with it! Otherwise, please ignore this message.", location);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package electroblob.wizardry.client.model;
|
||||
|
||||
import electroblob.wizardry.block.BlockStatue;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public class ModelRobeArmour extends ModelArmourFixer {
|
||||
|
||||
ModelRenderer robe;
|
||||
private boolean showHeadWithBody;
|
||||
|
||||
public ModelRobeArmour(float delta, boolean showHeadWithBody){
|
||||
|
||||
super(delta, 0, 64, 64);
|
||||
|
||||
this.showHeadWithBody = showHeadWithBody;
|
||||
|
||||
bipedBody = new ModelRenderer(this, 16, 16);
|
||||
bipedBody.addBox(-4F, 0F, -2F, 8, 11, 4, delta);
|
||||
bipedBody.setRotationPoint(0F, 0F, 0F);
|
||||
bipedBody.setTextureSize(64, 64);
|
||||
bipedBody.mirror = true;
|
||||
setRotation(bipedBody, 0F, 0F, 0F);
|
||||
|
||||
robe = new ModelRenderer(this, 40, 32);
|
||||
robe.addBox(-4F, 0F, -2F, 8, 9, 4, delta);
|
||||
robe.setRotationPoint(0F, 12, 0F); // 12.5 accounts for the expansion of each box
|
||||
robe.setTextureSize(64, 64);
|
||||
robe.mirror = true;
|
||||
setRotation(robe, 0F, 0F, 0F);
|
||||
}
|
||||
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){
|
||||
if(entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY)
|
||||
&& !entity.getEntityData().getBoolean(BlockStatue.FROZEN_NBT_KEY)) return;
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
this.robe.render(f5);
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z){
|
||||
model.rotateAngleX = x;
|
||||
model.rotateAngleY = y;
|
||||
model.rotateAngleZ = z;
|
||||
}
|
||||
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity){
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
this.robe.showModel = this.bipedBody.showModel;
|
||||
if(showHeadWithBody) this.bipedHead.showModel = this.bipedBody.showModel;
|
||||
if(this.isSneak){
|
||||
//this.robe.rotationPointY = 10.5f;
|
||||
this.robe.rotationPointZ = 4;
|
||||
}else{
|
||||
//this.robe.rotationPointY = 12.5f;
|
||||
this.robe.rotationPointZ = 0;
|
||||
}
|
||||
|
||||
// The bottom part of the robe takes the y rotation from the rest of the robe but the x/z rotation
|
||||
// from the average of the two legs
|
||||
this.robe.rotateAngleX = (this.bipedLeftLeg.rotateAngleX + this.bipedRightLeg.rotateAngleX) / 2f;
|
||||
this.robe.rotateAngleY = this.bipedBody.rotateAngleY;
|
||||
this.robe.rotateAngleZ = (this.bipedLeftLeg.rotateAngleZ + this.bipedRightLeg.rotateAngleZ) / 2f;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
package electroblob.wizardry.client.model;
|
||||
|
||||
import electroblob.wizardry.block.BlockStatue;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public class ModelSageArmour extends ModelArmourFixer {
|
||||
|
||||
ModelRenderer hatBrim;
|
||||
ModelRenderer hatSegment1;
|
||||
ModelRenderer hatSegment2;
|
||||
ModelRenderer hatSegment3;
|
||||
ModelRenderer hatSegment4;
|
||||
ModelRenderer hatSegment5;
|
||||
ModelRenderer hatSegment6;
|
||||
ModelRenderer robe;
|
||||
ModelRenderer collar;
|
||||
|
||||
public ModelSageArmour(float delta){
|
||||
|
||||
super(delta, 0, 64, 64);
|
||||
|
||||
// This is necessary to stop the head from scaling.
|
||||
this.bipedHead = new ModelRenderer(this, 0, 0);
|
||||
// The hat layer has an offset of 0.5, so 0.6 is about the smallest we can get away with
|
||||
this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.6f);
|
||||
this.bipedHead.setRotationPoint(0.0F, 0.0F + 0, 0.0F);
|
||||
|
||||
hatBrim = new ModelRenderer(this, 10, 45);
|
||||
// Making the height 1 stops the top and bottom z-fighting when the hat is enchanted
|
||||
hatBrim.addBox(-9F, -5.7F, -9F, 18, 1, 18, 0.6f);
|
||||
hatBrim.setRotationPoint(0F, 0F, 0F);
|
||||
hatBrim.setTextureSize(64, 64);
|
||||
hatBrim.mirror = true;
|
||||
setRotation(hatBrim, 0F, 0F, 0F);
|
||||
|
||||
hatSegment1 = new ModelRenderer(this, 0, 42);
|
||||
hatSegment1.addBox(0F, 0F, 0F, 6, 2, 6, 0.2f);
|
||||
hatSegment1.setRotationPoint(-3F, -10.6F, -3F);
|
||||
hatSegment1.setTextureSize(64, 64);
|
||||
hatSegment1.mirror = true;
|
||||
setRotation(hatSegment1, -0.1396263F, 0F, 0F);
|
||||
|
||||
hatSegment2 = new ModelRenderer(this, 0, 50);
|
||||
hatSegment2.addBox(0F, 0F, 0F, 5, 2, 5, 0.1f);
|
||||
hatSegment2.setRotationPoint(-2.5F, -12.13333F, -2F);
|
||||
hatSegment2.setTextureSize(64, 64);
|
||||
hatSegment2.mirror = true;
|
||||
setRotation(hatSegment2, -0.2443461F, 0F, 0F);
|
||||
|
||||
hatSegment3 = new ModelRenderer(this, 0, 57);
|
||||
hatSegment3.addBox(0F, 0F, 0F, 4, 2, 4);
|
||||
hatSegment3.setRotationPoint(-2F, -13.6F, -1F);
|
||||
hatSegment3.setTextureSize(64, 64);
|
||||
hatSegment3.mirror = true;
|
||||
setRotation(hatSegment3, -0.4014257F, 0F, 0F);
|
||||
|
||||
hatSegment4 = new ModelRenderer(this, 16, 58);
|
||||
hatSegment4.addBox(0F, 0F, 0F, 3, 2, 3);
|
||||
hatSegment4.setRotationPoint(-1.5F, -14.6F, 0F);
|
||||
hatSegment4.setTextureSize(64, 64);
|
||||
hatSegment4.mirror = true;
|
||||
setRotation(hatSegment4, -0.5759587F, 0F, 0F);
|
||||
|
||||
hatSegment5 = new ModelRenderer(this, 20, 54);
|
||||
hatSegment5.addBox(0F, 0F, 0F, 2, 2, 2);
|
||||
hatSegment5.setRotationPoint(-1F, -14.6F, 0F);
|
||||
hatSegment5.setTextureSize(64, 64);
|
||||
hatSegment5.mirror = true;
|
||||
setRotation(hatSegment5, 0.3316126F, 0F, 0F);
|
||||
|
||||
hatSegment6 = new ModelRenderer(this, 20, 50);
|
||||
hatSegment6.addBox(0F, 0F, 0F, 1, 1, 3);
|
||||
hatSegment6.setRotationPoint(-0.5F, -15.1F, 2F);
|
||||
hatSegment6.setTextureSize(64, 64);
|
||||
hatSegment6.mirror = true;
|
||||
setRotation(hatSegment6, -0.5585054F, 0F, 0F);
|
||||
|
||||
bipedBody = new ModelRenderer(this, 16, 16);
|
||||
bipedBody.addBox(-4F, 0F, -2F, 8, 11, 4, delta);
|
||||
bipedBody.setRotationPoint(0F, 0F, 0F);
|
||||
bipedBody.setTextureSize(64, 64);
|
||||
bipedBody.mirror = true;
|
||||
setRotation(bipedBody, 0F, 0F, 0F);
|
||||
|
||||
robe = new ModelRenderer(this, 40, 32);
|
||||
robe.addBox(-4F, 0F, -2F, 8, 9, 4, delta);
|
||||
robe.setRotationPoint(0F, 12, 0F); // 12.5 accounts for the expansion of each box
|
||||
robe.setTextureSize(64, 64);
|
||||
robe.mirror = true;
|
||||
setRotation(robe, 0F, 0F, 0F);
|
||||
|
||||
collar = new ModelRenderer(this, 0, 32);
|
||||
collar.addBox(-7F, 0F, -2F, 14, 4, 4, 1);
|
||||
collar.setRotationPoint(0F, 0F, 0F);
|
||||
collar.setTextureSize(64, 64);
|
||||
collar.mirror = true;
|
||||
setRotation(collar, 0F, 0F, 0F);
|
||||
|
||||
// Makes the hat rotate with the head.
|
||||
bipedHead.addChild(hatBrim);
|
||||
bipedHead.addChild(hatSegment1);
|
||||
bipedHead.addChild(hatSegment2);
|
||||
bipedHead.addChild(hatSegment3);
|
||||
bipedHead.addChild(hatSegment4);
|
||||
bipedHead.addChild(hatSegment5);
|
||||
bipedHead.addChild(hatSegment6);
|
||||
bipedBody.addChild(collar);
|
||||
}
|
||||
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){
|
||||
if(entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY)
|
||||
&& !entity.getEntityData().getBoolean(BlockStatue.FROZEN_NBT_KEY)) return;
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
this.robe.render(f5);
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z){
|
||||
model.rotateAngleX = x;
|
||||
model.rotateAngleY = y;
|
||||
model.rotateAngleZ = z;
|
||||
}
|
||||
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity){
|
||||
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
|
||||
this.robe.showModel = this.bipedBody.showModel;
|
||||
|
||||
if(this.isSneak){
|
||||
//this.robe.rotationPointY = 10.5f;
|
||||
this.robe.rotationPointZ = 4;
|
||||
}else{
|
||||
//this.robe.rotationPointY = 12.5f;
|
||||
this.robe.rotationPointZ = 0;
|
||||
}
|
||||
|
||||
// The bottom part of the robe takes the y rotation from the rest of the robe but the x/z rotation
|
||||
// from the average of the two legs
|
||||
this.robe.rotateAngleX = (this.bipedLeftLeg.rotateAngleX + this.bipedRightLeg.rotateAngleX) / 2f;
|
||||
this.robe.rotateAngleY = this.bipedBody.rotateAngleY;
|
||||
this.robe.rotateAngleZ = (this.bipedLeftLeg.rotateAngleZ + this.bipedRightLeg.rotateAngleZ) / 2f;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -143,7 +143,7 @@ public abstract class LayerTiledOverlay<T extends EntityLivingBase> implements L
|
||||
double scaleX = 1, scaleY = 1;
|
||||
// It's more logical to use the model's texture size, but some classes don't bother setting it properly
|
||||
// (e.g. ModelVillager), so to get the correct dimensions I'm getting them from the first box instead.
|
||||
if(model.boxList != null && model.boxList.get(0) != null){
|
||||
if(model.boxList != null && model.boxList.size() >= 1 && model.boxList.get(0) != null){
|
||||
scaleX = (double)model.boxList.get(0).textureWidth / textureWidth;
|
||||
scaleY = (double)model.boxList.get(0).textureHeight / textureHeight;
|
||||
}else{ // Fallback to model fields; should never be needed
|
||||
|
||||
@@ -30,12 +30,11 @@ import org.lwjgl.opengl.GL11;
|
||||
@EventBusSubscriber(Side.CLIENT)
|
||||
public class RenderSixthSense {
|
||||
|
||||
private static final ResourceLocation MARKER_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_marker.png");
|
||||
private static final ResourceLocation SCREEN_OVERLAY_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_overlay.png");
|
||||
|
||||
private static final int PASSIVE_MOB_MARKER_COLOUR = 0xc6ff00;
|
||||
private static final int HOSTILE_MOB_MARKER_COLOUR = 0x004a97;
|
||||
private static final int PLAYER_MARKER_COLOUR = 0xffffff;
|
||||
private static final ResourceLocation PASSIVE_MOB_MARKER_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_marker_passive.png");
|
||||
private static final ResourceLocation HOSTILE_MOB_MARKER_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_marker_hostile.png");
|
||||
private static final ResourceLocation PLAYER_MARKER_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/sixth_sense_marker_player.png");
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onRenderGameOverlayEvent(RenderGameOverlayEvent.Post event){
|
||||
@@ -88,26 +87,19 @@ public class RenderSixthSense {
|
||||
GlStateManager.rotate(180 - renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(yaw, 1.0F, 0.0F, 0.0F);
|
||||
|
||||
// Makes the colour add to the colour of the texture pixels, rather than the default multiplying
|
||||
GlStateManager.glTexEnvi(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_ADD);
|
||||
GlStateManager.color(1, 1, 1, 1);
|
||||
|
||||
int colour = PASSIVE_MOB_MARKER_COLOUR;
|
||||
ResourceLocation texture = PASSIVE_MOB_MARKER_TEXTURE;
|
||||
|
||||
if(ItemArtefact.isArtefactActive(mc.player, WizardryItems.charm_sixth_sense)){
|
||||
if(event.getEntity() instanceof IMob) colour = HOSTILE_MOB_MARKER_COLOUR;
|
||||
else if(event.getEntity() instanceof EntityPlayer) colour = PLAYER_MARKER_COLOUR;
|
||||
if(event.getEntity() instanceof IMob) texture = HOSTILE_MOB_MARKER_TEXTURE;
|
||||
else if(event.getEntity() instanceof EntityPlayer) texture = PLAYER_MARKER_TEXTURE;
|
||||
}
|
||||
|
||||
int r = colour >> 16 & 255;
|
||||
int g = colour >> 8 & 255;
|
||||
int b = colour & 255;
|
||||
|
||||
GlStateManager.color(r/255f, g/255f, b/255f, 1);
|
||||
mc.renderEngine.bindTexture(texture);
|
||||
|
||||
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||
|
||||
mc.renderEngine.bindTexture(MARKER_TEXTURE);
|
||||
|
||||
buffer.pos(-0.6, 0.6, 0).tex(0, 0).endVertex();
|
||||
buffer.pos(0.6, 0.6, 0).tex(1, 0).endVertex();
|
||||
buffer.pos(0.6, -0.6, 0).tex(1, 1).endVertex();
|
||||
@@ -119,8 +111,6 @@ public class RenderSixthSense {
|
||||
GlStateManager.disableBlend();
|
||||
GlStateManager.enableLighting();
|
||||
GlStateManager.enableDepth();
|
||||
// Reverses the colour addition change from before
|
||||
GlStateManager.glTexEnvi(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE);
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
@@ -22,10 +22,6 @@ public final class Constants {
|
||||
public static final float STORAGE_INCREASE_PER_LEVEL = 0.15f;
|
||||
/** The fraction by which potency is increased for each tier of matching wand. */
|
||||
public static final float POTENCY_INCREASE_PER_TIER = 0.15f;
|
||||
/** The fraction by which costs are reduced for each piece of matching armour. */
|
||||
public static final float COST_REDUCTION_PER_ARMOUR = 0.15f;
|
||||
/** The extra fraction by which costs are reduced for a full set of elemental armour. */
|
||||
public static final float FULL_ARMOUR_SET_BONUS = 0.2f;
|
||||
/** The fraction by which spell duration is increased for each level of duration upgrade. */
|
||||
public static final float DURATION_INCREASE_PER_LEVEL = 0.25f;
|
||||
/** The fraction by which spell range is increased for each level of range upgrade. */
|
||||
|
||||
@@ -346,35 +346,47 @@ public class WizardData implements INBTSerializable<NBTTagCompound> {
|
||||
|
||||
// For each item in the player's inventory
|
||||
for(ItemStack stack : player.inventory.mainInventory){
|
||||
if(stack.isItemEnchanted()){
|
||||
updateImbutedItem(stack, activeImbuements);
|
||||
}
|
||||
for(ItemStack stack : player.inventory.armorInventory){
|
||||
updateImbutedItem(stack, activeImbuements);
|
||||
}
|
||||
for(ItemStack stack : player.inventory.offHandInventory){
|
||||
updateImbutedItem(stack, activeImbuements);
|
||||
}
|
||||
|
||||
NBTTagList enchantmentList = stack.getItem() == Items.ENCHANTED_BOOK ?
|
||||
ItemEnchantedBook.getEnchantments(stack) : stack.getEnchantmentTagList();
|
||||
// Removes all imbuements from the map that are no longer active
|
||||
this.imbuementDurations.keySet().retainAll(activeImbuements);
|
||||
}
|
||||
|
||||
Iterator<NBTBase> iterator = enchantmentList.iterator();
|
||||
// For each of the item's enchantments
|
||||
while(iterator.hasNext()){
|
||||
NBTTagCompound enchantmentTag = (NBTTagCompound) iterator.next();
|
||||
Enchantment enchantment = Enchantment.getEnchantmentByID(enchantmentTag.getShort("id"));
|
||||
// Ignores the enchantment unless it is an imbuement
|
||||
if(enchantment instanceof Imbuement){
|
||||
int duration = this.getImbuementDuration(enchantment);
|
||||
// If the imbuement is still active:
|
||||
if(duration > 0){
|
||||
// Decrements the timer
|
||||
this.imbuementDurations.put((Imbuement)enchantment, duration - IMBUEMENT_UPDATE_INTERVAL);
|
||||
// Adds this imbuement to the set of imbuements that need to be kept
|
||||
activeImbuements.add((Imbuement)enchantment);
|
||||
}else{
|
||||
// Otherwise, removes the enchantment from the item
|
||||
iterator.remove(); // FIXME: Apparently this can cause a CME
|
||||
}
|
||||
private void updateImbutedItem(ItemStack stack, Set<Imbuement> activeImbuements){
|
||||
|
||||
if(stack.isItemEnchanted()){
|
||||
|
||||
NBTTagList enchantmentList = stack.getItem() == Items.ENCHANTED_BOOK ?
|
||||
ItemEnchantedBook.getEnchantments(stack) : stack.getEnchantmentTagList();
|
||||
|
||||
Iterator<NBTBase> iterator = enchantmentList.iterator();
|
||||
// For each of the item's enchantments
|
||||
while(iterator.hasNext()){
|
||||
NBTTagCompound enchantmentTag = (NBTTagCompound) iterator.next();
|
||||
Enchantment enchantment = Enchantment.getEnchantmentByID(enchantmentTag.getShort("id"));
|
||||
// Ignores the enchantment unless it is an imbuement
|
||||
if(enchantment instanceof Imbuement){
|
||||
int duration = this.getImbuementDuration(enchantment);
|
||||
// If the imbuement is still active:
|
||||
if(duration > 0){
|
||||
// Decrements the timer
|
||||
this.imbuementDurations.put((Imbuement)enchantment, duration - IMBUEMENT_UPDATE_INTERVAL);
|
||||
// Adds this imbuement to the set of imbuements that need to be kept
|
||||
activeImbuements.add((Imbuement)enchantment);
|
||||
}else{
|
||||
// Otherwise, removes the enchantment from the item
|
||||
iterator.remove(); // FIXME: Apparently this can cause a CME
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Removes all imbuements from the map that are no longer active
|
||||
this.imbuementDurations.keySet().retainAll(activeImbuements);
|
||||
}
|
||||
|
||||
// Ally designation system
|
||||
|
||||
@@ -45,7 +45,8 @@ public interface Imbuement {
|
||||
public static void onLivingDropsEvent(LivingDropsEvent event){
|
||||
// Instantly disenchants an imbued weapon if it is dropped when the player dies.
|
||||
for(EntityItem item : event.getDrops()){
|
||||
removeImbuements(item.getItem());
|
||||
// Apparently some mods don't behave and shove null items in the list, quite why I have no idea
|
||||
if(item != null) removeImbuements(item.getItem());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -278,7 +278,8 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
|
||||
@Override
|
||||
public void writeEntityToNBT(NBTTagCompound nbt){
|
||||
super.writeEntityToNBT(nbt);
|
||||
nbt.setInteger("element", this.getElement().ordinal());
|
||||
Element element = this.getElement();
|
||||
nbt.setInteger("element", element == null ? 0 : element.ordinal());
|
||||
nbt.setInteger("skin", this.textureIndex);
|
||||
NBTExtras.storeTagSafely(nbt, "spells", NBTExtras.listToNBT(spells, spell -> new NBTTagInt(spell.metadata())));
|
||||
nbt.setBoolean("hasStructure", this.hasStructure);
|
||||
|
||||
@@ -225,6 +225,7 @@ public class EntityRemnant extends EntityMob {
|
||||
@Override
|
||||
public void startExecuting(){
|
||||
EntityLivingBase entitylivingbase = EntityRemnant.this.getAttackTarget();
|
||||
if(entitylivingbase == null) return;
|
||||
Vec3d vec3d = entitylivingbase.getPositionEyes(1.0F);
|
||||
EntityRemnant.this.moveHelper.setMoveTo(vec3d.x, vec3d.y, vec3d.z, 1.0D);
|
||||
EntityRemnant.this.setAttacking(true);
|
||||
@@ -241,6 +242,8 @@ public class EntityRemnant extends EntityMob {
|
||||
|
||||
EntityLivingBase entitylivingbase = EntityRemnant.this.getAttackTarget();
|
||||
|
||||
if(entitylivingbase == null) return;
|
||||
|
||||
if(EntityRemnant.this.getEntityBoundingBox().intersects(entitylivingbase.getEntityBoundingBox())){
|
||||
EntityRemnant.this.attackEntityAsMob(entitylivingbase);
|
||||
EntityRemnant.this.setAttacking(false);
|
||||
|
||||
@@ -404,7 +404,8 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp
|
||||
NBTExtras.storeTagSafely(nbt, "trades", this.trades.getRecipiesAsTags());
|
||||
}
|
||||
|
||||
nbt.setInteger("element", this.getElement().ordinal());
|
||||
Element element = this.getElement();
|
||||
nbt.setInteger("element", element == null ? 0 : element.ordinal());
|
||||
nbt.setInteger("skin", this.textureIndex);
|
||||
NBTExtras.storeTagSafely(nbt, "spells", NBTExtras.listToNBT(spells, spell -> new NBTTagInt(spell.metadata())));
|
||||
|
||||
|
||||
@@ -4,9 +4,14 @@ import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.monster.EntityGhast;
|
||||
import net.minecraft.entity.projectile.EntityLargeFireball;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
||||
@@ -47,6 +52,15 @@ public class EntityLargeMagicFireball extends EntityMagicFireball {
|
||||
return damage == -1 ? Spells.greater_fireball.getProperty(Spell.DAMAGE).floatValue() : damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DamageSource getDamageSource(Entity entityHit){
|
||||
if(entityHit instanceof EntityGhast){
|
||||
return MagicDamage.causeIndirectMagicDamage(this, this.getThrower(), DamageType.MAGIC).setProjectile();
|
||||
}else{
|
||||
return super.getDamageSource(entityHit);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(RayTraceResult rayTrace){
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import electroblob.wizardry.util.ParticleBuilder;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.monster.EntityGhast;
|
||||
import net.minecraft.entity.projectile.EntitySmallFireball;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@@ -75,9 +76,9 @@ public class EntityMagicFireball extends EntityMagicProjectile {
|
||||
|
||||
float damage = getDamage() * damageMultiplier;
|
||||
|
||||
entityHit.attackEntityFrom(
|
||||
MagicDamage.causeIndirectMagicDamage(this, this.getThrower(), DamageType.FIRE).setProjectile(),
|
||||
damage);
|
||||
DamageSource source = getDamageSource(entityHit);
|
||||
|
||||
entityHit.attackEntityFrom(source, damage);
|
||||
|
||||
if(!MagicDamage.isEntityImmune(DamageType.FIRE, entityHit) && getBurnDuration() > 0)
|
||||
entityHit.setFire(getBurnDuration());
|
||||
@@ -99,6 +100,10 @@ public class EntityMagicFireball extends EntityMagicProjectile {
|
||||
}
|
||||
}
|
||||
|
||||
protected DamageSource getDamageSource(Entity entityHit){
|
||||
return MagicDamage.causeIndirectMagicDamage(this, this.getThrower(), DamageType.FIRE).setProjectile();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(){
|
||||
|
||||
|
||||
@@ -73,7 +73,9 @@ public class WizardryJEIPlugin implements IModPlugin {
|
||||
addItemInfo(registry, WizardryItems.identification_scroll, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.spell_book);
|
||||
addItemInfo(registry, WizardryItems.scroll);
|
||||
addItemInfo(registry, WizardryItems.armour_upgrade, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.resplendent_thread, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.crystal_silver_plating, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.ethereal_crystalweave, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.purifying_elixir, ".desc_extended");
|
||||
addItemInfo(registry, WizardryItems.astral_diamond);
|
||||
addItemInfo(registry, WizardryItems.ruined_spell_book);
|
||||
|
||||
@@ -99,7 +99,9 @@ public class ContainerArcaneWorkbench extends Container implements ISpellSortabl
|
||||
|
||||
Set<Item> upgrades = new HashSet<>(WandHelper.getSpecialUpgrades()); // Can't be done statically.
|
||||
upgrades.add(WizardryItems.arcane_tome);
|
||||
upgrades.add(WizardryItems.armour_upgrade);
|
||||
upgrades.add(WizardryItems.resplendent_thread);
|
||||
upgrades.add(WizardryItems.crystal_silver_plating);
|
||||
upgrades.add(WizardryItems.ethereal_crystalweave);
|
||||
|
||||
this.addSlotToContainer(new SlotItemList(tileentity, UPGRADE_SLOT, 147, 17, 1, upgrades.toArray(new Item[0])))
|
||||
.setBackgroundName(EMPTY_SLOT_UPGRADE.toString());
|
||||
|
||||
@@ -133,7 +133,6 @@ public class ContainerBookshelf extends Container {
|
||||
registerBookItem(WizardryItems.scroll);
|
||||
registerBookItem(WizardryItems.blank_scroll);
|
||||
registerBookItem(WizardryItems.identification_scroll);
|
||||
registerBookItem(WizardryItems.armour_upgrade);
|
||||
// Not using the map in WandHelper for consistency with BlockBookshelf (again, addons must add theirs manually)
|
||||
registerBookItem(WizardryItems.storage_upgrade);
|
||||
registerBookItem(WizardryItems.siphon_upgrade);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ItemArmourUpgrade extends Item {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, net.minecraft.client.util.ITooltipFlag flagIn) {
|
||||
Wizardry.proxy.addMultiLineDescription(tooltip, "item." + this.getRegistryName() + ".desc", "\u00A7d");
|
||||
Wizardry.proxy.addMultiLineDescription(tooltip, "item." + this.getRegistryName() + ".desc");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package electroblob.wizardry.item;
|
||||
|
||||
import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.client.DrawingUtils;
|
||||
import electroblob.wizardry.entity.projectile.EntityFlamecatcherArrow;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.spell.Flamecatcher;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@@ -111,7 +111,7 @@ public class ItemFlamecatcher extends ItemBow implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.common.collect.Multimap;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import net.minecraft.entity.Entity;
|
||||
@@ -81,7 +82,7 @@ public class ItemFlamingAxe extends ItemAxe implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.registry.WizardryPotions;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import net.minecraft.entity.Entity;
|
||||
@@ -83,7 +84,7 @@ public class ItemFrostAxe extends ItemAxe implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.spell.LightningHammer;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import electroblob.wizardry.util.ParticleBuilder;
|
||||
@@ -112,7 +113,7 @@ public class ItemLightningHammer extends Item implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,14 +5,19 @@ import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.registry.WizardryTabs;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import electroblob.wizardry.util.ParticleBuilder;
|
||||
import electroblob.wizardry.util.ParticleBuilder.Type;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumAction;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
@@ -25,15 +30,17 @@ public class ItemManaFlask extends Item {
|
||||
|
||||
public enum Size {
|
||||
|
||||
SMALL(75, EnumRarity.COMMON),
|
||||
MEDIUM(700, EnumRarity.COMMON),
|
||||
LARGE(1400, EnumRarity.RARE);
|
||||
SMALL(75, 25, EnumRarity.COMMON),
|
||||
MEDIUM(350, 40, EnumRarity.COMMON),
|
||||
LARGE(1400, 60, EnumRarity.RARE);
|
||||
|
||||
public int capacity;
|
||||
public int useDuration;
|
||||
public EnumRarity rarity;
|
||||
|
||||
Size(int capacity, EnumRarity rarity){
|
||||
Size(int capacity, int useDuration, EnumRarity rarity){
|
||||
this.capacity = capacity;
|
||||
this.useDuration = useDuration;
|
||||
this.rarity = rarity;
|
||||
}
|
||||
}
|
||||
@@ -58,6 +65,16 @@ public class ItemManaFlask extends Item {
|
||||
Wizardry.proxy.addMultiLineDescription(tooltip, "item." + Wizardry.MODID + ":mana_flask.desc", size.capacity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumAction getItemUseAction(ItemStack stack){
|
||||
return EnumAction.BLOCK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxItemUseDuration(ItemStack stack){
|
||||
return size.useDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand){
|
||||
|
||||
@@ -66,25 +83,53 @@ public class ItemManaFlask extends Item {
|
||||
List<ItemStack> stacks = InventoryUtils.getPrioritisedHotbarAndOffhand(player);
|
||||
stacks.addAll(player.inventory.armorInventory); // player#getArmorInventoryList() only returns an Iterable
|
||||
|
||||
// Find the chargeable item with the least mana
|
||||
ItemStack toCharge = stacks.stream()
|
||||
.filter(s -> s.getItem() instanceof IManaStoringItem && !((IManaStoringItem)s.getItem()).isManaFull(s))
|
||||
.min(Comparator.comparingDouble(s -> ((IManaStoringItem)s.getItem()).getFullness(s))).orElse(null);
|
||||
|
||||
if(toCharge != null){
|
||||
|
||||
((IManaStoringItem)toCharge.getItem()).rechargeMana(toCharge, size.capacity);
|
||||
|
||||
EntityUtils.playSoundAtPlayer(player, WizardrySounds.ITEM_MANA_FLASK_USE, 1, 1);
|
||||
EntityUtils.playSoundAtPlayer(player, WizardrySounds.ITEM_MANA_FLASK_RECHARGE, 0.7f, 1.1f);
|
||||
|
||||
if(!player.isCreative()) flask.shrink(1);
|
||||
player.getCooldownTracker().setCooldown(this, 20);
|
||||
|
||||
if(stacks.stream().anyMatch(s -> s.getItem() instanceof IManaStoringItem && !((IManaStoringItem)s.getItem()).isManaFull(s))){
|
||||
player.setActiveHand(hand);
|
||||
return new ActionResult<>(EnumActionResult.SUCCESS, flask);
|
||||
|
||||
}else{
|
||||
return new ActionResult<>(EnumActionResult.FAIL, flask);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUsingTick(ItemStack stack, EntityLivingBase player, int count){
|
||||
if(player.world.isRemote){
|
||||
float f = count/(float)getMaxItemUseDuration(stack);
|
||||
Vec3d pos = player.getPositionEyes(0).subtract(0, 0.2, 0).add(player.getLookVec().scale(0.6));
|
||||
Vec3d delta = new Vec3d(0, 0.2 * f, 0).rotatePitch(count * 0.5f).rotateYaw((float)Math.toRadians(90 - player.rotationYawHead));
|
||||
ParticleBuilder.create(Type.DUST).pos(pos.add(delta)).vel(delta.scale(0.2)).time(12 + player.world.rand.nextInt(6))
|
||||
.clr(1, 1, 0.65f).fade(0.7f, 0, 1).spawn(player.world);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase entity){
|
||||
|
||||
if(entity instanceof EntityPlayer){
|
||||
|
||||
EntityPlayer player = (EntityPlayer)entity;
|
||||
|
||||
List<ItemStack> stacks = InventoryUtils.getPrioritisedHotbarAndOffhand(player);
|
||||
stacks.addAll(player.inventory.armorInventory); // player#getArmorInventoryList() only returns an Iterable
|
||||
|
||||
// Find the chargeable item with the least mana
|
||||
ItemStack toCharge = stacks.stream()
|
||||
.filter(s -> s.getItem() instanceof IManaStoringItem && !((IManaStoringItem)s.getItem()).isManaFull(s))
|
||||
.min(Comparator.comparingDouble(s -> ((IManaStoringItem)s.getItem()).getFullness(s))).orElse(null);
|
||||
|
||||
if(toCharge != null){
|
||||
|
||||
((IManaStoringItem)toCharge.getItem()).rechargeMana(toCharge, size.capacity);
|
||||
|
||||
EntityUtils.playSoundAtPlayer(player, WizardrySounds.ITEM_MANA_FLASK_USE, 1, 1);
|
||||
EntityUtils.playSoundAtPlayer(player, WizardrySounds.ITEM_MANA_FLASK_RECHARGE, 0.7f, 1.1f);
|
||||
|
||||
if(!player.isCreative()) stack.shrink(1);
|
||||
player.getCooldownTracker().setCooldown(this, 20);
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package electroblob.wizardry.item;
|
||||
|
||||
import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@@ -105,7 +106,7 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package electroblob.wizardry.item;
|
||||
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@@ -62,7 +63,7 @@ public class ItemSpectralPickaxe extends ItemPickaxe implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package electroblob.wizardry.item;
|
||||
import com.google.common.collect.Multimap;
|
||||
import electroblob.wizardry.registry.Spells;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
@@ -77,7 +78,7 @@ public class ItemSpectralSword extends ItemSword implements IConjuredItem {
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected){
|
||||
int damage = stack.getItemDamage();
|
||||
if(damage > stack.getMaxDamage()) entity.replaceItemInInventory(slot, ItemStack.EMPTY);
|
||||
if(damage > stack.getMaxDamage()) InventoryUtils.replaceItemInInventory(entity, slot, stack, ItemStack.EMPTY);
|
||||
stack.setItemDamage(damage + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
|
||||
|| s.getItemUseAction() == SpellActions.GRAPPLE
|
||||
|| s.getItemUseAction() == SpellActions.SUMMON) ? 1 : 0);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Spell getCurrentSpell(ItemStack stack){
|
||||
return WandHelper.getCurrentSpell(stack);
|
||||
@@ -709,7 +709,7 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
|
||||
|
||||
if(player != null) WizardData.get(player).setTierReached(tier);
|
||||
|
||||
ItemStack newWand = new ItemStack(WizardryItems.getWand(tier, this.element));
|
||||
ItemStack newWand = new ItemStack(getWand(tier, this.element));
|
||||
newWand.setTagCompound(wand.getTagCompound());
|
||||
// This needs to be done after copying the tag compound so the mana capacity for the new wand
|
||||
// takes storage upgrades into account
|
||||
@@ -783,6 +783,30 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
|
||||
return wand;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to return the appropriate wand based on tier and element. This replaces the cumbersome wand map in
|
||||
* {@link WizardryItems} by accessing the item registry dynamically by generating the registry name on the fly.
|
||||
* <p></p>
|
||||
* <i><b>This method will only return wands from the base mod.</b> It is unlikely that addons will need it, but it
|
||||
* has been left public just in case. The intention is that this method is only used where there is no alternative.</i>
|
||||
*
|
||||
* @param tier The tier of the wand required.
|
||||
* @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}.
|
||||
* @return The wand item which corresponds to the given tier and element, or null if no such item exists.
|
||||
* @throws NullPointerException if the given tier is null.
|
||||
*/
|
||||
// As noted above, in a few SPECIFIC cases this method is necessary (without using a data-driven system, at least,
|
||||
// which I'm not going to spend the time making in the near future). Wizard trades and gear have been left using the
|
||||
// WizardryItems version because they need to be replaced with a better system that doesn't use this at all.
|
||||
public static Item getWand(Tier tier, Element element){
|
||||
if(tier == null) throw new NullPointerException("The given tier cannot be null.");
|
||||
if(element == null) element = Element.MAGIC;
|
||||
String registryName = tier == Tier.NOVICE && element == Element.MAGIC ? "magic" : tier.getUnlocalisedName();
|
||||
if(element != Element.MAGIC) registryName = registryName + "_" + element.getName();
|
||||
registryName = registryName + "_wand";
|
||||
return Item.REGISTRY.getObject(new ResourceLocation(Wizardry.MODID, registryName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onApplyButtonPressed(EntityPlayer player, Slot centre, Slot crystals, Slot upgrade, Slot[] spellBooks){
|
||||
|
||||
@@ -791,7 +815,7 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem,
|
||||
if(upgrade.getHasStack()){
|
||||
ItemStack original = centre.getStack().copy();
|
||||
centre.putStack(this.applyUpgrade(player, centre.getStack(), upgrade.getStack()));
|
||||
changed = ItemStack.areItemStacksEqual(centre.getStack(), original);
|
||||
changed = !ItemStack.areItemStacksEqual(centre.getStack(), original);
|
||||
}
|
||||
|
||||
// Reads NBT spell metadata array to variable, edits this, then writes it back to NBT.
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
package electroblob.wizardry.item;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Streams;
|
||||
import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.client.DrawingUtils;
|
||||
import electroblob.wizardry.constants.Constants;
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import electroblob.wizardry.event.SpellCastEvent;
|
||||
import electroblob.wizardry.registry.WizardryAdvancementTriggers;
|
||||
import electroblob.wizardry.registry.WizardryItems;
|
||||
import electroblob.wizardry.registry.WizardryItems.Materials;
|
||||
import electroblob.wizardry.registry.WizardryPotions;
|
||||
import electroblob.wizardry.registry.WizardryRecipes;
|
||||
import electroblob.wizardry.registry.WizardryTabs;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.EntityUtils.Operations;
|
||||
import electroblob.wizardry.util.InventoryUtils;
|
||||
import electroblob.wizardry.util.SpellModifiers;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
@@ -24,13 +25,17 @@ import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.ai.attributes.IAttributeInstance;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot.Type;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.Style;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||
@@ -39,22 +44,69 @@ import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Mod.EventBusSubscriber
|
||||
public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IManaStoringItem {
|
||||
|
||||
// VanillaCopy, ItemArmor has this set to private for some reason.
|
||||
public static final UUID[] ARMOR_MODIFIERS = new UUID[] {UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B"), UUID.fromString("D8499B04-0E66-4726-AB29-64469D734E0D"), UUID.fromString("9F3D476D-C118-4544-8365-64846904B48E"), UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150")};
|
||||
// Damage reduction values that used to be in WizardryItems.SILK [feet, legs, chest, head]
|
||||
private static int[] reductions = new int[]{2, 4, 5, 2};
|
||||
|
||||
public Element element;
|
||||
// Full set bonuses
|
||||
private static final float SAGE_OTHER_COST_REDUCTION = 0.2f;
|
||||
private static final float WARLOCK_SPEED_BOOST = 0.2f;
|
||||
private static final UUID WARLOCK_SPEED_BOOST_UUID = UUID.fromString("4bad7152-2663-4b1b-bb59-552e92847031");
|
||||
|
||||
public enum ArmourClass {
|
||||
|
||||
WIZARD(Materials.SILK, () -> null, "wizard", 0.1f, 0, "hat", "robe", "leggings", "boots"),
|
||||
SAGE(Materials.SAGE, () -> WizardryItems.resplendent_thread, "sage", 0.2f, 0, "hat", "robe", "leggings", "boots"),
|
||||
BATTLEMAGE(Materials.BATTLEMAGE, () -> WizardryItems.crystal_silver_plating, "battlemage", 0.05f, 0.15f, "helmet", "chestplate", "leggings", "boots"),
|
||||
WARLOCK(Materials.WARLOCK, () -> WizardryItems.ethereal_crystalweave, "warlock", 0.1f, 0.3f, "hood", "robe", "leggings", "boots");
|
||||
|
||||
/** The armour material to use for this armour class. */
|
||||
final ArmorMaterial material;
|
||||
/** The item that upgrades regular wizard armour into this class of armour. */
|
||||
final Supplier<Item> upgradeItem;
|
||||
/** The fraction by which spell cost is reduced for each armour piece of this class with the matching element. */
|
||||
final float elementalCostReduction;
|
||||
/** The fraction by which spell cooldown is reduced for each armour piece of this class. */
|
||||
final float cooldownReduction;
|
||||
/** The first part of the texture filenames for this armour class. Also defines certain translation keys. */
|
||||
final String name;
|
||||
/** The middle part of each item name (in the registry) for this armour class, e.g. "hat" or "chestplate". */
|
||||
final Map<EntityEquipmentSlot, String> armourPieceNames;
|
||||
|
||||
ArmourClass(ArmorMaterial material, Supplier<Item> upgradeItem, String name, float elementalCostReduction,
|
||||
float cooldownReduction, String... armourPieceNames){
|
||||
this.material = material;
|
||||
this.upgradeItem = upgradeItem;
|
||||
this.name = name;
|
||||
this.elementalCostReduction = elementalCostReduction;
|
||||
this.cooldownReduction = cooldownReduction;
|
||||
if(armourPieceNames.length != 4) throw new IllegalArgumentException("armourPieceNames must have a length of 4");
|
||||
this.armourPieceNames = new EnumMap<>(EntityEquipmentSlot.class);
|
||||
this.armourPieceNames.put(EntityEquipmentSlot.HEAD, armourPieceNames[0]);
|
||||
this.armourPieceNames.put(EntityEquipmentSlot.CHEST, armourPieceNames[1]);
|
||||
this.armourPieceNames.put(EntityEquipmentSlot.LEGS, armourPieceNames[2]);
|
||||
this.armourPieceNames.put(EntityEquipmentSlot.FEET, armourPieceNames[3]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Element element; // Should be final, but isn't for backwards compatibility
|
||||
public final ArmourClass armourClass;
|
||||
|
||||
@Deprecated // Retained for backwards-compatibility with addons, will be removed in future
|
||||
public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){
|
||||
super(material, renderIndex, armourType);
|
||||
this.armourClass = ArmourClass.WIZARD;
|
||||
this.element = element;
|
||||
setCreativeTab(WizardryTabs.GEAR);
|
||||
WizardryRecipes.addToManaFlaskCharging(this);
|
||||
}
|
||||
|
||||
public ItemWizardArmour(ArmourClass armourClass, EntityEquipmentSlot armourType, Element element){
|
||||
super(armourClass.material, 1, armourType);
|
||||
this.armourClass = armourClass;
|
||||
this.element = element;
|
||||
setCreativeTab(WizardryTabs.GEAR);
|
||||
WizardryRecipes.addToManaFlaskCharging(this);
|
||||
@@ -94,15 +146,75 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, World world, List<String> tooltip, net.minecraft.client.util.ITooltipFlag advanced){
|
||||
|
||||
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary"))
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.legendary",
|
||||
new Style().setColor(TextFormatting.LIGHT_PURPLE)));
|
||||
|
||||
if(element != null){
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.buff",
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.element_cost_reduction",
|
||||
new Style().setColor(TextFormatting.DARK_GRAY),
|
||||
(int)(Constants.COST_REDUCTION_PER_ARMOUR * 100), element.getDisplayName()));
|
||||
(int)(armourClass.elementalCostReduction * 100), element.getDisplayName()));
|
||||
}
|
||||
|
||||
if(armourClass == ArmourClass.SAGE){
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.enchantability",
|
||||
new Style().setColor(TextFormatting.BLUE)));
|
||||
}
|
||||
|
||||
if(armourClass.cooldownReduction > 0){
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.cooldown_reduction",
|
||||
new Style().setColor(TextFormatting.DARK_GRAY), (int)(armourClass.cooldownReduction * 100)));
|
||||
}
|
||||
|
||||
if(armourClass != ArmourClass.WIZARD){
|
||||
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":wizard_armour.full_set",
|
||||
new Style().setColor(TextFormatting.AQUA)));
|
||||
|
||||
Object args = new Object[0];
|
||||
|
||||
if(armourClass == ArmourClass.SAGE) args = (int)(SAGE_OTHER_COST_REDUCTION * 100);
|
||||
if(armourClass == ArmourClass.WARLOCK) args = (int)(WARLOCK_SPEED_BOOST * 100);
|
||||
|
||||
tooltip.add(Wizardry.proxy.translate("item." + Wizardry.MODID + ":" + armourClass.name
|
||||
+ "_armour.full_set_bonus", new Style().setColor(TextFormatting.AQUA), args));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
|
||||
if(armorType == EntityEquipmentSlot.HEAD && isWearingFullSet(player, element, ArmourClass.BATTLEMAGE)
|
||||
&& player.ticksExisted % 20 == 0){
|
||||
player.addPotionEffect(new PotionEffect(WizardryPotions.ward, 219, 0, true, false));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows this armour piece to change the modifiers for spells cast while wearing it. This is called once for
|
||||
* <b>each piece of wizard armour</b> the caster is wearing. This means if you need to apply a full set bonus, you
|
||||
* should have only one of the pieces handle it (by convention, this is usually the helmet, but it doesn't matter).
|
||||
* <p></p>
|
||||
* <i>N.B. The modifiers object passed into this method is not the actual one from the spell cast event. It is a
|
||||
* blank one local to armour that then gets combined with the actual one via
|
||||
* {@link SpellModifiers#combine(SpellModifiers)} after all four pieces have been processed. This is important as it
|
||||
* allows armour modifiers to stack linearly. This means the values should be <b>added/subtracted rather than multiplied.</b></i>
|
||||
* @param caster The entity casting the spell and wearing the armour.
|
||||
* @param spell The spell being cast.
|
||||
* @param modifiers The modifiers specific to armour to apply to the global ones after all four slots are processed.
|
||||
*/
|
||||
protected void applySpellModifiers(EntityLivingBase caster, Spell spell, SpellModifiers modifiers){
|
||||
|
||||
if(spell.getElement() == this.element){
|
||||
modifiers.set(SpellModifiers.COST, modifiers.get(SpellModifiers.COST) - armourClass.elementalCostReduction, false);
|
||||
}
|
||||
|
||||
modifiers.set(WizardryItems.cooldown_upgrade, modifiers.get(WizardryItems.cooldown_upgrade) - armourClass.cooldownReduction, true);
|
||||
|
||||
// Full set bonuses
|
||||
if(this.armorType == EntityEquipmentSlot.HEAD && isWearingFullSet(caster, element, armourClass)){
|
||||
if(armourClass == ArmourClass.SAGE && spell.getElement() != this.element){
|
||||
modifiers.set(SpellModifiers.COST, 1 - SAGE_OTHER_COST_REDUCTION, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,25 +230,18 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
// Legs use modelBiped
|
||||
if(armourSlot == EntityEquipmentSlot.LEGS && !entityLiving.isInvisible()) return null;
|
||||
|
||||
return Wizardry.proxy.getWizardArmourModel();
|
||||
return Wizardry.proxy.getWizardArmourModel(getArmorMaterial());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type){
|
||||
|
||||
// Returns a completely transparent texture if the player is invisible. This is such an annoyingly easy
|
||||
// fix, considering how long I spent trying to do this before - a bit of lateral thinking was all it took.
|
||||
// Do note however that a texture pack could override this.
|
||||
// if(entity instanceof EntityLivingBase && entity.isInvisible() && !entity.getEntityData().getBoolean(BlockStatue.PETRIFIED_NBT_KEY))
|
||||
// return "ebwizardry:textures/armour/invisible_armour.png";
|
||||
String s = armourClass.name + "_armour";
|
||||
|
||||
String s = "wizard_armour";
|
||||
|
||||
if(Wizardry.tisTheSeason){
|
||||
if(Wizardry.tisTheSeason && armourClass == ArmourClass.WIZARD){
|
||||
s = s + "_festive";
|
||||
}else{
|
||||
if(this.element != null) s = s + "_" + this.element.getName();
|
||||
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) s = "legendary_" + s;
|
||||
}
|
||||
|
||||
if(slot == EntityEquipmentSlot.LEGS) s = s + "_legs";
|
||||
@@ -155,34 +260,6 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
return !(enchantment instanceof EnchantmentMending) && super.canApplyAtEnchantingTable(stack, enchantment);
|
||||
}
|
||||
|
||||
/**
|
||||
* Properly handles the defence value of the armour. This method is responsible for the tooltip on top of
|
||||
* the armour value. It is also what handles armour toughness.
|
||||
*/
|
||||
@Override
|
||||
public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack){
|
||||
|
||||
Multimap<String, AttributeModifier> map = HashMultimap.create();
|
||||
|
||||
if(!this.isManaEmpty(stack) && this.armorType == slot){
|
||||
|
||||
int defense = reductions[slot.getIndex()];
|
||||
float toughness = 0f;
|
||||
|
||||
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) {
|
||||
defense = ArmorMaterial.DIAMOND.getDamageReductionAmount(slot);
|
||||
toughness = ArmorMaterial.DIAMOND.getToughness();
|
||||
}
|
||||
|
||||
map.put(SharedMonsterAttributes.ARMOR.getName(), new AttributeModifier(ARMOR_MODIFIERS[slot.getIndex()],
|
||||
"Armor modifier", defense, 0));
|
||||
map.put(SharedMonsterAttributes.ARMOR.getName(), new AttributeModifier(ARMOR_MODIFIERS[slot.getIndex()],
|
||||
"Armor toughness", toughness, 0));
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
// Workbench stuff
|
||||
|
||||
@Override
|
||||
@@ -196,17 +273,17 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
@Override
|
||||
public ItemStack applyUpgrade(@Nullable EntityPlayer player, ItemStack stack, ItemStack upgrade){
|
||||
|
||||
// Applies legendary upgrade
|
||||
if(upgrade.getItem() == WizardryItems.armour_upgrade){
|
||||
|
||||
if(!stack.hasTagCompound()){
|
||||
stack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
if(!stack.getTagCompound().hasKey("legendary")){
|
||||
stack.getTagCompound().setBoolean("legendary", true);
|
||||
upgrade.shrink(1);
|
||||
if(player != null) WizardryAdvancementTriggers.legendary.triggerFor(player);
|
||||
// Apply class upgrades
|
||||
if(this.armourClass == ArmourClass.WIZARD){
|
||||
for(ArmourClass armourClass : ArmourClass.values()){
|
||||
if(upgrade.getItem() == armourClass.upgradeItem.get()){
|
||||
Item newArmour = getArmour(this.element, armourClass, this.getEquipmentSlot());
|
||||
ItemStack newStack = new ItemStack(newArmour);
|
||||
((ItemWizardArmour)newArmour).setMana(newStack, this.getMana(stack));
|
||||
newStack.setTagCompound(stack.getTagCompound());
|
||||
upgrade.shrink(1);
|
||||
return newStack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +298,7 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
if(upgrade.getHasStack()){
|
||||
ItemStack original = centre.getStack().copy();
|
||||
centre.putStack(this.applyUpgrade(player, centre.getStack(), upgrade.getStack()));
|
||||
changed = ItemStack.areItemStacksEqual(centre.getStack(), original);
|
||||
changed = !ItemStack.areItemStacksEqual(centre.getStack(), original);
|
||||
}
|
||||
|
||||
// Charges armour by appropriate amount
|
||||
@@ -252,34 +329,43 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
|
||||
// Event Handlers
|
||||
|
||||
// @SubscribeEvent
|
||||
// public static void onLivingUpdateEvent(LivingUpdateEvent event){
|
||||
//
|
||||
// if(event.getEntityLiving() instanceof EntityPlayer){
|
||||
//
|
||||
// EntityPlayer player = (EntityPlayer)event.getEntityLiving();
|
||||
//
|
||||
// for(ItemStack stack : player.getArmorInventoryList()){
|
||||
// if(!(stack.getItem() instanceof ItemWizardArmour)){
|
||||
// return; // If any of the armour slots doesn't contain wizard armour, don't trigger the achievement.
|
||||
// }
|
||||
// }
|
||||
// // If it gets this far, then all slots must be wizard armour, so trigger the achievement.
|
||||
// WizardryAdvancementTriggers.armour_set.triggerFor(player);
|
||||
// }
|
||||
// }
|
||||
// Can't use Item#getItemAttributeModifiers because it's not player-sensitive, grrr
|
||||
@SubscribeEvent
|
||||
public static void onLivingEquipmentChangeEvent(LivingEquipmentChangeEvent event){
|
||||
|
||||
IAttributeInstance movementSpeed = event.getEntityLiving().getAttributeMap().getAttributeInstance(SharedMonsterAttributes.MOVEMENT_SPEED);
|
||||
|
||||
if(isWearingFullSet(event.getEntityLiving(), null, ArmourClass.WARLOCK)){
|
||||
// Only apply the modifier once (can't just check this is the helmet since it might not be the last piece equipped)
|
||||
if(movementSpeed.getModifier(WARLOCK_SPEED_BOOST_UUID) == null){
|
||||
movementSpeed.applyModifier(new AttributeModifier(WARLOCK_SPEED_BOOST_UUID, "Warlock set bonus", WARLOCK_SPEED_BOOST, Operations.MULTIPLY_FLAT));
|
||||
}
|
||||
}else{
|
||||
movementSpeed.removeModifier(WARLOCK_SPEED_BOOST_UUID);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public static void onSpellCastPreEvent(SpellCastEvent.Pre event){
|
||||
// Armour cost reduction
|
||||
if(event.getCaster() == null) return;
|
||||
int armourPieces = getMatchingArmourCount(event.getCaster(), event.getSpell().getElement());
|
||||
float multiplier = 1f - armourPieces * Constants.COST_REDUCTION_PER_ARMOUR;
|
||||
if(armourPieces == InventoryUtils.ARMOUR_SLOTS.length) multiplier -= Constants.FULL_ARMOUR_SET_BONUS;
|
||||
event.getModifiers().set(SpellModifiers.COST, event.getModifiers().get(SpellModifiers.COST) * multiplier, false);
|
||||
|
||||
final SpellModifiers armourModifiers = new SpellModifiers();
|
||||
|
||||
Arrays.stream(InventoryUtils.ARMOUR_SLOTS).map(s -> event.getCaster().getItemStackFromSlot(s).getItem())
|
||||
.filter(i -> i instanceof ItemWizardArmour)
|
||||
.forEach(i -> ((ItemWizardArmour)i).applySpellModifiers(event.getCaster(), event.getSpell(), armourModifiers));
|
||||
|
||||
event.getModifiers().combine(armourModifiers);
|
||||
}
|
||||
|
||||
/** Counts the number of armour pieces the given entity is wearing that match the given element. */
|
||||
/**
|
||||
* Counts the number of armour pieces the given entity is wearing that match the given element.
|
||||
* @deprecated in favour of {@link ItemWizardArmour#applySpellModifiers(EntityLivingBase, Spell, SpellModifiers)}
|
||||
* and {@link ItemWizardArmour#isWearingFullSet(EntityLivingBase, Element, ArmourClass)}. Retained for API stability
|
||||
* between minor versions, will be removed in future.
|
||||
*/
|
||||
@Deprecated
|
||||
public static int getMatchingArmourCount(EntityLivingBase entity, Element element){
|
||||
return (int)Arrays.stream(InventoryUtils.ARMOUR_SLOTS)
|
||||
.map(s -> entity.getItemStackFromSlot(s).getItem())
|
||||
@@ -287,6 +373,49 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
.count();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to return the appropriate wand based on tier and element. This replaces the cumbersome wand map in
|
||||
* {@link WizardryItems} by accessing the item registry dynamically by generating the registry name on the fly.
|
||||
* <p></p>
|
||||
* <i><b>This method will only return armour from the base mod.</b> It is unlikely that addons will need it, but it
|
||||
* has been left public just in case. The intention is that this method is only used where there is no alternative.</i>
|
||||
*
|
||||
* @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}.
|
||||
* @param armourClass The {@link ArmourClass} required
|
||||
* @param slot EntityEquipmentSlot of the armour piece required
|
||||
* @return The wand item which corresponds to the given tier and element, or null if no such item exists.
|
||||
* @throws NullPointerException if the given tier is null.
|
||||
*/
|
||||
// As noted above, in a few SPECIFIC cases this method is necessary (without using a data-driven system, at least,
|
||||
// which I'm not going to spend the time making in the near future). Wizard trades and gear have been left using the
|
||||
// WizardryItems version because they need to be replaced with a better system that doesn't use this at all.
|
||||
public static Item getArmour(Element element, ArmourClass armourClass, EntityEquipmentSlot slot){
|
||||
if(slot == null || slot.getSlotType() != Type.ARMOR)
|
||||
throw new IllegalArgumentException("Must be a valid armour slot");
|
||||
if(element == null) element = Element.MAGIC;
|
||||
String registryName = armourClass.name + "_" + armourClass.armourPieceNames.get(slot);
|
||||
if(element != Element.MAGIC) registryName = registryName + "_" + element.getName();
|
||||
return Item.REGISTRY.getObject(new ResourceLocation(Wizardry.MODID, registryName));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given entity is wearing a full set of wizard armour of the given class and element.
|
||||
* @param entity The entity to query.
|
||||
* @param element The element to check, or null to accept any element as long as they are all the same.
|
||||
* @param armourClass The class to check, or null to accept any class as long as they are all the same.
|
||||
* @return True if the entity is wearing a full set of the given element and class, false otherwise.
|
||||
*/
|
||||
private static boolean isWearingFullSet(EntityLivingBase entity, @Nullable Element element, @Nullable ArmourClass armourClass){
|
||||
ItemStack helmet = entity.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
|
||||
if(!(helmet.getItem() instanceof ItemWizardArmour)) return false;
|
||||
Element e = element == null ? ((ItemWizardArmour)helmet.getItem()).element : element;
|
||||
ArmourClass ac = armourClass == null ? ((ItemWizardArmour)helmet.getItem()).armourClass : armourClass;
|
||||
return Arrays.stream(InventoryUtils.ARMOUR_SLOTS)
|
||||
.allMatch(s -> entity.getItemStackFromSlot(s).getItem() instanceof ItemWizardArmour
|
||||
&& ((ItemWizardArmour)entity.getItemStackFromSlot(s).getItem()).element == e
|
||||
&& ((ItemWizardArmour)entity.getItemStackFromSlot(s).getItem()).armourClass == ac);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onLivingSetAttackTargetEvent(LivingSetAttackTargetEvent event){
|
||||
// Undo the mob detection penalty for wearing armour when invisible
|
||||
@@ -306,7 +435,7 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
if(event.getTarget().isSneaking()) followRange *= 0.8;
|
||||
float f = (float)armourPieces / ((EntityPlayer)event.getTarget()).inventory.armorInventory.size();
|
||||
if(f < 0.1F) f = 0.1F;
|
||||
followRange *= (double)(0.7F * f);
|
||||
followRange *= 0.7F * f;
|
||||
// Don't need to worry about the isSuitableTarget check since it must already have been checked to get this far
|
||||
if(event.getTarget().getDistance(event.getEntity()) > followRange) ((EntityLiving)event.getEntityLiving()).setAttackTarget(null);
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ import electroblob.wizardry.packet.WizardryPacketHandler;
|
||||
import electroblob.wizardry.util.Box;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
import java.util.List;
|
||||
@@ -37,6 +37,9 @@ public class DonationPerksHandler {
|
||||
.put(UUID.fromString("32ca0099-c1d6-4682-82ab-8f06059bb801"), new Box<>(Element.MAGIC))
|
||||
.put(UUID.fromString("0a704e20-1e7a-413e-9122-fae5b244a05e"), new Box<>(Element.MAGIC))
|
||||
.put(UUID.fromString("41fec037-12a5-4b19-868e-b62e39952e96"), new Box<>(Element.MAGIC))
|
||||
.put(UUID.fromString("3f5e0cec-949a-4dd4-ae60-f4eae481dd06"), new Box<>(Element.MAGIC))
|
||||
.put(UUID.fromString("3ad78c5f-d8cf-47f1-bff9-a890f8e638ff"), new Box<>(Element.MAGIC))
|
||||
.put(UUID.fromString("93479771-d23a-4d80-8868-2950e144500b"), new Box<>(Element.MAGIC))
|
||||
.build();
|
||||
|
||||
/** Returns true if the given player's UUID appears in the list of donor UUIDs, false otherwise (thread-safe). */
|
||||
@@ -59,7 +62,7 @@ public class DonationPerksHandler {
|
||||
Box<Element> box = DONOR_UUID_MAP.get(player.getUniqueID());
|
||||
if(box != null && box.get() != element){
|
||||
box.set(element);
|
||||
syncAll();
|
||||
syncAll(player.dimension);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,11 +73,11 @@ public class DonationPerksHandler {
|
||||
return box == null ? null : box.get();
|
||||
}
|
||||
|
||||
/** Sends the current donor perk information to all connected players (server-side only). */
|
||||
private static void syncAll(){
|
||||
/** Sends the current donor perk information to all players in the given dimension (server-side only). */
|
||||
private static void syncAll(int dimension){
|
||||
Wizardry.logger.info("Sending global donation perk settings to all players");
|
||||
PacketSyncDonationPerks.Message packet = new PacketSyncDonationPerks.Message(DONOR_UUID_MAP.values().stream().map(Box::get).collect(Collectors.toList()));
|
||||
WizardryPacketHandler.net.sendToAll(packet);
|
||||
WizardryPacketHandler.net.sendToDimension(packet, dimension);
|
||||
}
|
||||
|
||||
/** Sends the current donor perk information to the given player (server-side only). */
|
||||
@@ -92,13 +95,13 @@ public class DonationPerksHandler {
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onPlayerLoggedInEvent(PlayerLoggedInEvent event){
|
||||
if(event.player instanceof EntityPlayerMP){
|
||||
public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event){
|
||||
if(event.getEntity() instanceof EntityPlayerMP){
|
||||
// Send donation perks to anyone who logs in
|
||||
syncWith((EntityPlayerMP)event.player);
|
||||
}else{
|
||||
syncWith((EntityPlayerMP)event.getEntity());
|
||||
}else if(event.getEntity() instanceof EntityPlayer){
|
||||
// Send donation perks setting to the server if the player is a donor
|
||||
if(isDonor(event.player)) sendToServer(event.player);
|
||||
if(isDonor((EntityPlayer)event.getEntity())) sendToServer((EntityPlayer)event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,10 @@ import electroblob.wizardry.event.SpellCastEvent;
|
||||
import electroblob.wizardry.item.ItemArtefact;
|
||||
import electroblob.wizardry.registry.*;
|
||||
import electroblob.wizardry.spell.Banish;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.BlockUtils;
|
||||
import electroblob.wizardry.util.EntityUtils;
|
||||
import electroblob.wizardry.util.SpellProperties.Context;
|
||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
||||
import net.minecraft.entity.item.EntityFallingBlock;
|
||||
import net.minecraft.entity.passive.EntitySquid;
|
||||
@@ -296,6 +298,7 @@ public abstract class Forfeit {
|
||||
}));
|
||||
|
||||
add(Tier.APPRENTICE, Element.LIGHTNING, create("storm", (w, p) -> {
|
||||
if(!Spells.invoke_weather.isEnabled(Context.WANDS)) return;
|
||||
int standardWeatherTime = (300 + (new Random()).nextInt(600)) * 20;
|
||||
w.getWorldInfo().setRaining(true);
|
||||
w.getWorldInfo().setRainTime(standardWeatherTime);
|
||||
|
||||
@@ -3,7 +3,6 @@ package electroblob.wizardry.packet;
|
||||
import electroblob.wizardry.spell.Spell;
|
||||
import electroblob.wizardry.util.SpellProperties;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
@@ -18,13 +17,11 @@ public class PacketSpellProperties implements IMessageHandler<PacketSpellPropert
|
||||
public IMessage onMessage(Message message, MessageContext ctx){
|
||||
|
||||
// Just to make sure that the side is correct
|
||||
if(ctx.side.isServer()){
|
||||
if(ctx.side.isClient()){
|
||||
|
||||
final EntityPlayerMP player = ctx.getServerHandler().player;
|
||||
|
||||
player.getServerWorld().addScheduledTask(() -> {
|
||||
net.minecraft.client.Minecraft.getMinecraft().addScheduledTask(() -> {
|
||||
for(int i=0; i<message.propertiesArray.length; i++){
|
||||
Spell.byNetworkID(i).setProperties(message.propertiesArray[i]);
|
||||
Spell.byNetworkID(i).setPropertiesClient(message.propertiesArray[i]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ public final class WizardryAdvancementTriggers {
|
||||
|
||||
private WizardryAdvancementTriggers(){} // No instances!
|
||||
|
||||
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 anger_wizard = new CustomAdvancementTrigger("trigger_anger_wizard");
|
||||
@@ -35,7 +34,6 @@ public final class WizardryAdvancementTriggers {
|
||||
|
||||
public static void register(){
|
||||
|
||||
CriteriaTriggers.register(legendary);
|
||||
CriteriaTriggers.register(max_out_wand);
|
||||
CriteriaTriggers.register(special_upgrade);
|
||||
CriteriaTriggers.register(anger_wizard);
|
||||
|
||||
@@ -8,6 +8,7 @@ import electroblob.wizardry.entity.projectile.EntityPoisonBomb;
|
||||
import electroblob.wizardry.entity.projectile.EntitySmokeBomb;
|
||||
import electroblob.wizardry.entity.projectile.EntitySparkBomb;
|
||||
import electroblob.wizardry.item.*;
|
||||
import electroblob.wizardry.item.ItemWizardArmour.ArmourClass;
|
||||
import electroblob.wizardry.misc.BehaviourSpellDispense;
|
||||
import electroblob.wizardry.registry.WizardryTabs.CreativeTabListed;
|
||||
import electroblob.wizardry.registry.WizardryTabs.CreativeTabSorted;
|
||||
@@ -18,7 +19,6 @@ import net.minecraft.dispenser.BehaviorProjectileDispense;
|
||||
import net.minecraft.dispenser.IPosition;
|
||||
import net.minecraft.entity.IProjectile;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot.Type;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Item.ToolMaterial;
|
||||
@@ -33,14 +33,10 @@ import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for
|
||||
@@ -62,8 +58,15 @@ public final class WizardryItems {
|
||||
|
||||
public static final ToolMaterial MAGICAL = EnumHelper.addToolMaterial("MAGICAL", 3, 1000, 8.0f, 4.0f, 0);
|
||||
|
||||
public static final ArmorMaterial SILK = EnumHelper.addArmorMaterial("SILK", "wizardry/textures/armour/wizard_armour",
|
||||
15, new int[]{0, 0, 0, 0}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_SILK, 0.0F);
|
||||
// The parameter textureName is incorrectly-named, it's actually the name field in ArmorMaterial
|
||||
public static final ArmorMaterial SILK = EnumHelper.addArmorMaterial("SILK", "silk",
|
||||
15, new int[]{2, 4, 5, 2}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_SILK, 0.0F);
|
||||
public static final ArmorMaterial SAGE = EnumHelper.addArmorMaterial("SAGE", "sage",
|
||||
15, new int[]{2, 5, 6, 3}, 25, WizardrySounds.ITEM_ARMOUR_EQUIP_SAGE, 0.0F);
|
||||
public static final ArmorMaterial BATTLEMAGE = EnumHelper.addArmorMaterial("BATTLEMAGE", "battlemage",
|
||||
15, new int[]{3, 6, 8, 3}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_BATTLEMAGE, 1.0F);
|
||||
public static final ArmorMaterial WARLOCK = EnumHelper.addArmorMaterial("WARLOCK", "warlock",
|
||||
20, new int[]{2, 4, 5, 2}, 15, WizardrySounds.ITEM_ARMOUR_EQUIP_WARLOCK, 0.0F);
|
||||
|
||||
}
|
||||
|
||||
@@ -148,7 +151,9 @@ public final class WizardryItems {
|
||||
public static final Item frost_axe = placeholder();
|
||||
|
||||
public static final Item identification_scroll = placeholder();
|
||||
public static final Item armour_upgrade = placeholder();
|
||||
public static final Item resplendent_thread = placeholder();
|
||||
public static final Item crystal_silver_plating = placeholder();
|
||||
public static final Item ethereal_crystalweave = placeholder();
|
||||
public static final Item astral_diamond = placeholder();
|
||||
public static final Item purifying_elixir = placeholder();
|
||||
|
||||
@@ -199,6 +204,126 @@ public final class WizardryItems {
|
||||
public static final Item wizard_leggings_healing = placeholder();
|
||||
public static final Item wizard_boots_healing = placeholder();
|
||||
|
||||
public static final Item sage_hat = placeholder();
|
||||
public static final Item sage_robe = placeholder();
|
||||
public static final Item sage_leggings = placeholder();
|
||||
public static final Item sage_boots = placeholder();
|
||||
|
||||
public static final Item sage_hat_fire = placeholder();
|
||||
public static final Item sage_robe_fire = placeholder();
|
||||
public static final Item sage_leggings_fire = placeholder();
|
||||
public static final Item sage_boots_fire = placeholder();
|
||||
|
||||
public static final Item sage_hat_ice = placeholder();
|
||||
public static final Item sage_robe_ice = placeholder();
|
||||
public static final Item sage_leggings_ice = placeholder();
|
||||
public static final Item sage_boots_ice = placeholder();
|
||||
|
||||
public static final Item sage_hat_lightning = placeholder();
|
||||
public static final Item sage_robe_lightning = placeholder();
|
||||
public static final Item sage_leggings_lightning = placeholder();
|
||||
public static final Item sage_boots_lightning = placeholder();
|
||||
|
||||
public static final Item sage_hat_necromancy = placeholder();
|
||||
public static final Item sage_robe_necromancy = placeholder();
|
||||
public static final Item sage_leggings_necromancy = placeholder();
|
||||
public static final Item sage_boots_necromancy = placeholder();
|
||||
|
||||
public static final Item sage_hat_earth = placeholder();
|
||||
public static final Item sage_robe_earth = placeholder();
|
||||
public static final Item sage_leggings_earth = placeholder();
|
||||
public static final Item sage_boots_earth = placeholder();
|
||||
|
||||
public static final Item sage_hat_sorcery = placeholder();
|
||||
public static final Item sage_robe_sorcery = placeholder();
|
||||
public static final Item sage_leggings_sorcery = placeholder();
|
||||
public static final Item sage_boots_sorcery = placeholder();
|
||||
|
||||
public static final Item sage_hat_healing = placeholder();
|
||||
public static final Item sage_robe_healing = placeholder();
|
||||
public static final Item sage_leggings_healing = placeholder();
|
||||
public static final Item sage_boots_healing = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet = placeholder();
|
||||
public static final Item battlemage_chestplate = placeholder();
|
||||
public static final Item battlemage_leggings = placeholder();
|
||||
public static final Item battlemage_boots = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_fire = placeholder();
|
||||
public static final Item battlemage_chestplate_fire = placeholder();
|
||||
public static final Item battlemage_leggings_fire = placeholder();
|
||||
public static final Item battlemage_boots_fire = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_ice = placeholder();
|
||||
public static final Item battlemage_chestplate_ice = placeholder();
|
||||
public static final Item battlemage_leggings_ice = placeholder();
|
||||
public static final Item battlemage_boots_ice = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_lightning = placeholder();
|
||||
public static final Item battlemage_chestplate_lightning = placeholder();
|
||||
public static final Item battlemage_leggings_lightning = placeholder();
|
||||
public static final Item battlemage_boots_lightning = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_necromancy = placeholder();
|
||||
public static final Item battlemage_chestplate_necromancy = placeholder();
|
||||
public static final Item battlemage_leggings_necromancy = placeholder();
|
||||
public static final Item battlemage_boots_necromancy = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_earth = placeholder();
|
||||
public static final Item battlemage_chestplate_earth = placeholder();
|
||||
public static final Item battlemage_leggings_earth = placeholder();
|
||||
public static final Item battlemage_boots_earth = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_sorcery = placeholder();
|
||||
public static final Item battlemage_chestplate_sorcery = placeholder();
|
||||
public static final Item battlemage_leggings_sorcery = placeholder();
|
||||
public static final Item battlemage_boots_sorcery = placeholder();
|
||||
|
||||
public static final Item battlemage_helmet_healing = placeholder();
|
||||
public static final Item battlemage_chestplate_healing = placeholder();
|
||||
public static final Item battlemage_leggings_healing = placeholder();
|
||||
public static final Item battlemage_boots_healing = placeholder();
|
||||
public static final Item warlock_hood = placeholder();
|
||||
public static final Item warlock_robe = placeholder();
|
||||
public static final Item warlock_leggings = placeholder();
|
||||
public static final Item warlock_boots = placeholder();
|
||||
|
||||
public static final Item warlock_hood_fire = placeholder();
|
||||
public static final Item warlock_robe_fire = placeholder();
|
||||
public static final Item warlock_leggings_fire = placeholder();
|
||||
public static final Item warlock_boots_fire = placeholder();
|
||||
|
||||
public static final Item warlock_hood_ice = placeholder();
|
||||
public static final Item warlock_robe_ice = placeholder();
|
||||
public static final Item warlock_leggings_ice = placeholder();
|
||||
public static final Item warlock_boots_ice = placeholder();
|
||||
|
||||
public static final Item warlock_hood_lightning = placeholder();
|
||||
public static final Item warlock_robe_lightning = placeholder();
|
||||
public static final Item warlock_leggings_lightning = placeholder();
|
||||
public static final Item warlock_boots_lightning = placeholder();
|
||||
|
||||
public static final Item warlock_hood_necromancy = placeholder();
|
||||
public static final Item warlock_robe_necromancy = placeholder();
|
||||
public static final Item warlock_leggings_necromancy = placeholder();
|
||||
public static final Item warlock_boots_necromancy = placeholder();
|
||||
|
||||
public static final Item warlock_hood_earth = placeholder();
|
||||
public static final Item warlock_robe_earth = placeholder();
|
||||
public static final Item warlock_leggings_earth = placeholder();
|
||||
public static final Item warlock_boots_earth = placeholder();
|
||||
|
||||
public static final Item warlock_hood_sorcery = placeholder();
|
||||
public static final Item warlock_robe_sorcery = placeholder();
|
||||
public static final Item warlock_leggings_sorcery = placeholder();
|
||||
public static final Item warlock_boots_sorcery = placeholder();
|
||||
|
||||
public static final Item warlock_hood_healing = placeholder();
|
||||
public static final Item warlock_robe_healing = placeholder();
|
||||
public static final Item warlock_leggings_healing = placeholder();
|
||||
public static final Item warlock_boots_healing = placeholder();
|
||||
|
||||
|
||||
public static final Item spectral_helmet = placeholder();
|
||||
public static final Item spectral_chestplate = placeholder();
|
||||
public static final Item spectral_leggings = placeholder();
|
||||
@@ -285,46 +410,44 @@ public final class WizardryItems {
|
||||
public static final Item charm_mount_teleporting = placeholder();
|
||||
public static final Item charm_feeding = placeholder();
|
||||
|
||||
private static final Map<Pair<Tier, Element>, Item> WAND_MAP = new HashMap<>();
|
||||
private static final Map<Pair<EntityEquipmentSlot, Element>, Item> ARMOUR_MAP = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Helper method to return the appropriate wand based on tier and element. As of Wizardry 2.1, this uses the
|
||||
* immutable map stored in {@link WizardryItems#WAND_MAP}. Currently used for upgrading wands, for chest generation
|
||||
* and to iterate through wands for charging recipes.
|
||||
* Helper method to return the appropriate wand based on tier and element. As of Wizardry 4.3.3, this delegates to
|
||||
* the cleaner replacement method {@link ItemWand#getWand(Tier, Element)}, which accesses the item registry
|
||||
* dynamically by generating the registry name on the fly.
|
||||
*
|
||||
* @param tier The tier of the wand required.
|
||||
* @param element The element of the wand required. Null will be converted to {@link Element#MAGIC}.
|
||||
* @return The wand item which corresponds to the given tier and element, or null if no such item exists.
|
||||
* @throws NullPointerException if the given tier is null.
|
||||
* @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to
|
||||
* charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}.
|
||||
* @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to charging
|
||||
* recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. If you absolutely must use this method, usages
|
||||
* may be replaced with {@link ItemWand#getWand(Tier, Element)}. However, this should only be done in cases where it
|
||||
* is appropriate to ignore all wands that are not in the base mod.
|
||||
*/
|
||||
@Deprecated
|
||||
public static Item getWand(Tier tier, Element element){
|
||||
if(tier == null) throw new NullPointerException("The given tier cannot be null.");
|
||||
if(element == null) element = Element.MAGIC;
|
||||
return WAND_MAP.get(ImmutablePair.of(tier, element));
|
||||
return ItemWand.getWand(tier, element); // Delegate to replacement method
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to return the appropriate armour item based on element and slot. As of Wizardry 2.1, this uses the
|
||||
* immutable map stored in {@link WizardryItems#ARMOUR_MAP}. Currently used to iterate through armour for
|
||||
* registering charging recipes and for chest generation.
|
||||
* Helper method to return the appropriate armour item based on element and slot. As of Wizardry 4.3.3, this
|
||||
* delegates to the cleaner replacement method {@link ItemWizardArmour#getArmour(Element, ArmourClass, EntityEquipmentSlot)},
|
||||
* which accesses the item registry dynamically by generating the registry name on the fly.
|
||||
* <p></p>
|
||||
* <i>This method only returns the original, basic armour set ({@link ArmourClass#WIZARD}).</i>
|
||||
*
|
||||
* @param element The EnumElement of the armour required. Null will be converted to {@link Element#MAGIC}.
|
||||
* @param slot EntityEquipmentSlot of the armour piece required
|
||||
* @return The armour item which corresponds to the given element and slot, or null if no such item exists.
|
||||
* @throws IllegalArgumentException if the given slot is not an armour slot.
|
||||
* @deprecated This is being phased out; it is now only used for wizard gear and trades. To add an item to
|
||||
* charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}.
|
||||
* charging recipes, use {@link WizardryRecipes#addToManaFlaskCharging(Item)}. If you absolutely must use this
|
||||
* method, usages may be replaced with {@link ItemWand#getWand(Tier, Element)}. However, this should only be done in
|
||||
* cases where it is appropriate to ignore all armour that is not in the base mod.
|
||||
*/
|
||||
@Deprecated
|
||||
public static Item getArmour(Element element, EntityEquipmentSlot slot){
|
||||
if(slot == null || slot.getSlotType() != Type.ARMOR)
|
||||
throw new IllegalArgumentException("Must be a valid armour slot");
|
||||
if(element == null) element = Element.MAGIC;
|
||||
return ARMOUR_MAP.get(ImmutablePair.of(slot, element));
|
||||
return ItemWizardArmour.getArmour(element, ArmourClass.WIZARD, slot); // Delegate to replacement method
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -444,218 +567,340 @@ public final class WizardryItems {
|
||||
|
||||
// Items
|
||||
|
||||
registerItem(registry, "magic_crystal", new ItemCrystal());
|
||||
registerItem(registry, "magic_crystal", new ItemCrystal());
|
||||
|
||||
registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
|
||||
registerItem(registry, "wizard_handbook", new ItemWizardHandbook(), true);
|
||||
registerItem(registry, "arcane_tome", new ItemArcaneTome());
|
||||
registerItem(registry, "spell_book", new ItemSpellBook(), true);
|
||||
registerItem(registry, "scroll", new ItemScroll());
|
||||
registerItem(registry, "ruined_spell_book", new Item().setCreativeTab(WizardryTabs.WIZARDRY).setMaxStackSize(16));
|
||||
registerItem(registry, "wizard_handbook", new ItemWizardHandbook(), true);
|
||||
registerItem(registry, "arcane_tome", new ItemArcaneTome());
|
||||
registerItem(registry, "spell_book", new ItemSpellBook(), true);
|
||||
registerItem(registry, "scroll", new ItemScroll());
|
||||
registerItem(registry, "ruined_spell_book", new Item().setCreativeTab(WizardryTabs.WIZARDRY).setMaxStackSize(16));
|
||||
|
||||
registerItem(registry, "magic_wand", new ItemWand(Tier.NOVICE, null));
|
||||
registerItem(registry, "apprentice_wand", new ItemWand(Tier.APPRENTICE, null));
|
||||
registerItem(registry, "advanced_wand", new ItemWand(Tier.ADVANCED, null));
|
||||
registerItem(registry, "master_wand", new ItemWand(Tier.MASTER, null));
|
||||
registerItem(registry, "magic_wand", new ItemWand(Tier.NOVICE, null));
|
||||
registerItem(registry, "apprentice_wand", new ItemWand(Tier.APPRENTICE, null));
|
||||
registerItem(registry, "advanced_wand", new ItemWand(Tier.ADVANCED, null));
|
||||
registerItem(registry, "master_wand", new ItemWand(Tier.MASTER, null));
|
||||
|
||||
registerItem(registry, "novice_fire_wand", new ItemWand(Tier.NOVICE, Element.FIRE));
|
||||
registerItem(registry, "apprentice_fire_wand", new ItemWand(Tier.APPRENTICE, Element.FIRE));
|
||||
registerItem(registry, "advanced_fire_wand", new ItemWand(Tier.ADVANCED, Element.FIRE));
|
||||
registerItem(registry, "master_fire_wand", new ItemWand(Tier.MASTER, Element.FIRE));
|
||||
registerItem(registry, "novice_fire_wand", new ItemWand(Tier.NOVICE, Element.FIRE));
|
||||
registerItem(registry, "apprentice_fire_wand", new ItemWand(Tier.APPRENTICE, Element.FIRE));
|
||||
registerItem(registry, "advanced_fire_wand", new ItemWand(Tier.ADVANCED, Element.FIRE));
|
||||
registerItem(registry, "master_fire_wand", new ItemWand(Tier.MASTER, Element.FIRE));
|
||||
|
||||
registerItem(registry, "novice_ice_wand", new ItemWand(Tier.NOVICE, Element.ICE));
|
||||
registerItem(registry, "apprentice_ice_wand", new ItemWand(Tier.APPRENTICE, Element.ICE));
|
||||
registerItem(registry, "advanced_ice_wand", new ItemWand(Tier.ADVANCED, Element.ICE));
|
||||
registerItem(registry, "master_ice_wand", new ItemWand(Tier.MASTER, Element.ICE));
|
||||
registerItem(registry, "novice_ice_wand", new ItemWand(Tier.NOVICE, Element.ICE));
|
||||
registerItem(registry, "apprentice_ice_wand", new ItemWand(Tier.APPRENTICE, Element.ICE));
|
||||
registerItem(registry, "advanced_ice_wand", new ItemWand(Tier.ADVANCED, Element.ICE));
|
||||
registerItem(registry, "master_ice_wand", new ItemWand(Tier.MASTER, Element.ICE));
|
||||
|
||||
registerItem(registry, "novice_lightning_wand", new ItemWand(Tier.NOVICE, Element.LIGHTNING));
|
||||
registerItem(registry, "apprentice_lightning_wand", new ItemWand(Tier.APPRENTICE, Element.LIGHTNING));
|
||||
registerItem(registry, "advanced_lightning_wand", new ItemWand(Tier.ADVANCED, Element.LIGHTNING));
|
||||
registerItem(registry, "master_lightning_wand", new ItemWand(Tier.MASTER, Element.LIGHTNING));
|
||||
registerItem(registry, "novice_lightning_wand", new ItemWand(Tier.NOVICE, Element.LIGHTNING));
|
||||
registerItem(registry, "apprentice_lightning_wand", new ItemWand(Tier.APPRENTICE, Element.LIGHTNING));
|
||||
registerItem(registry, "advanced_lightning_wand", new ItemWand(Tier.ADVANCED, Element.LIGHTNING));
|
||||
registerItem(registry, "master_lightning_wand", new ItemWand(Tier.MASTER, Element.LIGHTNING));
|
||||
|
||||
registerItem(registry, "novice_necromancy_wand", new ItemWand(Tier.NOVICE, Element.NECROMANCY));
|
||||
registerItem(registry, "apprentice_necromancy_wand", new ItemWand(Tier.APPRENTICE, Element.NECROMANCY));
|
||||
registerItem(registry, "advanced_necromancy_wand", new ItemWand(Tier.ADVANCED, Element.NECROMANCY));
|
||||
registerItem(registry, "master_necromancy_wand", new ItemWand(Tier.MASTER, Element.NECROMANCY));
|
||||
registerItem(registry, "novice_necromancy_wand", new ItemWand(Tier.NOVICE, Element.NECROMANCY));
|
||||
registerItem(registry, "apprentice_necromancy_wand", new ItemWand(Tier.APPRENTICE, Element.NECROMANCY));
|
||||
registerItem(registry, "advanced_necromancy_wand", new ItemWand(Tier.ADVANCED, Element.NECROMANCY));
|
||||
registerItem(registry, "master_necromancy_wand", new ItemWand(Tier.MASTER, Element.NECROMANCY));
|
||||
|
||||
registerItem(registry, "novice_earth_wand", new ItemWand(Tier.NOVICE, Element.EARTH));
|
||||
registerItem(registry, "apprentice_earth_wand", new ItemWand(Tier.APPRENTICE, Element.EARTH));
|
||||
registerItem(registry, "advanced_earth_wand", new ItemWand(Tier.ADVANCED, Element.EARTH));
|
||||
registerItem(registry, "master_earth_wand", new ItemWand(Tier.MASTER, Element.EARTH));
|
||||
registerItem(registry, "novice_earth_wand", new ItemWand(Tier.NOVICE, Element.EARTH));
|
||||
registerItem(registry, "apprentice_earth_wand", new ItemWand(Tier.APPRENTICE, Element.EARTH));
|
||||
registerItem(registry, "advanced_earth_wand", new ItemWand(Tier.ADVANCED, Element.EARTH));
|
||||
registerItem(registry, "master_earth_wand", new ItemWand(Tier.MASTER, Element.EARTH));
|
||||
|
||||
registerItem(registry, "novice_sorcery_wand", new ItemWand(Tier.NOVICE, Element.SORCERY));
|
||||
registerItem(registry, "apprentice_sorcery_wand", new ItemWand(Tier.APPRENTICE, Element.SORCERY));
|
||||
registerItem(registry, "advanced_sorcery_wand", new ItemWand(Tier.ADVANCED, Element.SORCERY));
|
||||
registerItem(registry, "master_sorcery_wand", new ItemWand(Tier.MASTER, Element.SORCERY));
|
||||
registerItem(registry, "novice_sorcery_wand", new ItemWand(Tier.NOVICE, Element.SORCERY));
|
||||
registerItem(registry, "apprentice_sorcery_wand", new ItemWand(Tier.APPRENTICE, Element.SORCERY));
|
||||
registerItem(registry, "advanced_sorcery_wand", new ItemWand(Tier.ADVANCED, Element.SORCERY));
|
||||
registerItem(registry, "master_sorcery_wand", new ItemWand(Tier.MASTER, Element.SORCERY));
|
||||
|
||||
registerItem(registry, "novice_healing_wand", new ItemWand(Tier.NOVICE, Element.HEALING));
|
||||
registerItem(registry, "apprentice_healing_wand", new ItemWand(Tier.APPRENTICE, Element.HEALING));
|
||||
registerItem(registry, "advanced_healing_wand", new ItemWand(Tier.ADVANCED, Element.HEALING));
|
||||
registerItem(registry, "master_healing_wand", new ItemWand(Tier.MASTER, Element.HEALING));
|
||||
registerItem(registry, "novice_healing_wand", new ItemWand(Tier.NOVICE, Element.HEALING));
|
||||
registerItem(registry, "apprentice_healing_wand", new ItemWand(Tier.APPRENTICE, Element.HEALING));
|
||||
registerItem(registry, "advanced_healing_wand", new ItemWand(Tier.ADVANCED, Element.HEALING));
|
||||
registerItem(registry, "master_healing_wand", new ItemWand(Tier.MASTER, Element.HEALING));
|
||||
|
||||
registerItem(registry, "spectral_sword", new ItemSpectralSword(ToolMaterial.IRON));
|
||||
registerItem(registry, "spectral_pickaxe", new ItemSpectralPickaxe(ToolMaterial.IRON));
|
||||
registerItem(registry, "spectral_bow", new ItemSpectralBow());
|
||||
registerItem(registry, "spectral_sword", new ItemSpectralSword(ToolMaterial.IRON));
|
||||
registerItem(registry, "spectral_pickaxe", new ItemSpectralPickaxe(ToolMaterial.IRON));
|
||||
registerItem(registry, "spectral_bow", new ItemSpectralBow());
|
||||
|
||||
registerItem(registry, "blank_scroll", new ItemBlankScroll());
|
||||
registerItem(registry, "magic_silk", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "blank_scroll", new ItemBlankScroll());
|
||||
registerItem(registry, "magic_silk", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
|
||||
registerItem(registry, "small_mana_flask", new ItemManaFlask(ItemManaFlask.Size.SMALL));
|
||||
registerItem(registry, "medium_mana_flask", new ItemManaFlask(ItemManaFlask.Size.MEDIUM));
|
||||
registerItem(registry, "large_mana_flask", new ItemManaFlask(ItemManaFlask.Size.LARGE));
|
||||
registerItem(registry, "small_mana_flask", new ItemManaFlask(ItemManaFlask.Size.SMALL));
|
||||
registerItem(registry, "medium_mana_flask", new ItemManaFlask(ItemManaFlask.Size.MEDIUM));
|
||||
registerItem(registry, "large_mana_flask", new ItemManaFlask(ItemManaFlask.Size.LARGE));
|
||||
|
||||
registerItem(registry, "storage_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "siphon_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "condenser_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "range_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "duration_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "cooldown_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "blast_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "attunement_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "melee_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "storage_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "siphon_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "condenser_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "range_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "duration_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "cooldown_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "blast_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "attunement_upgrade", new ItemWandUpgrade());
|
||||
registerItem(registry, "melee_upgrade", new ItemWandUpgrade());
|
||||
|
||||
registerItem(registry, "flaming_axe", new ItemFlamingAxe(Materials.MAGICAL));
|
||||
registerItem(registry, "frost_axe", new ItemFrostAxe(Materials.MAGICAL));
|
||||
registerItem(registry, "flaming_axe", new ItemFlamingAxe(Materials.MAGICAL));
|
||||
registerItem(registry, "frost_axe", new ItemFrostAxe(Materials.MAGICAL));
|
||||
|
||||
registerItem(registry, "identification_scroll", new ItemIdentificationScroll());
|
||||
registerItem(registry, "armour_upgrade", new ItemArmourUpgrade());
|
||||
registerItem(registry, "astral_diamond", new Item(){ @Override public EnumRarity getRarity(ItemStack stack){ return EnumRarity.RARE; }}.setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "purifying_elixir", new ItemPurifyingElixir());
|
||||
registerItem(registry, "identification_scroll", new ItemIdentificationScroll());
|
||||
registerItem(registry, "resplendent_thread", new ItemArmourUpgrade());
|
||||
registerItem(registry, "crystal_silver_plating", new ItemArmourUpgrade());
|
||||
registerItem(registry, "ethereal_crystalweave", new ItemArmourUpgrade());
|
||||
registerItem(registry, "astral_diamond", new Item(){ @Override public EnumRarity getRarity(ItemStack stack){ return EnumRarity.RARE; }}.setCreativeTab(WizardryTabs.WIZARDRY));
|
||||
registerItem(registry, "purifying_elixir", new ItemPurifyingElixir());
|
||||
|
||||
registerItem(registry, "firebomb", new ItemFirebomb());
|
||||
registerItem(registry, "poison_bomb", new ItemPoisonBomb());
|
||||
registerItem(registry, "smoke_bomb", new ItemSmokeBomb());
|
||||
registerItem(registry, "spark_bomb", new ItemSparkBomb());
|
||||
registerItem(registry, "firebomb", new ItemFirebomb());
|
||||
registerItem(registry, "poison_bomb", new ItemPoisonBomb());
|
||||
registerItem(registry, "smoke_bomb", new ItemSmokeBomb());
|
||||
registerItem(registry, "spark_bomb", new ItemSparkBomb());
|
||||
|
||||
registerItem(registry, "spectral_dust", new ItemSpectralDust());
|
||||
registerItem(registry, "spectral_dust", new ItemSpectralDust());
|
||||
|
||||
registerItem(registry, "wizard_hat", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, null), true);
|
||||
registerItem(registry, "wizard_robe", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, null));
|
||||
registerItem(registry, "wizard_leggings", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, null));
|
||||
registerItem(registry, "wizard_boots", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, null));
|
||||
registerItem(registry, "wizard_hat", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, null), true);
|
||||
registerItem(registry, "wizard_robe", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, null));
|
||||
registerItem(registry, "wizard_leggings", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, null));
|
||||
registerItem(registry, "wizard_boots", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, null));
|
||||
|
||||
registerItem(registry, "wizard_hat_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.FIRE));
|
||||
registerItem(registry, "wizard_robe_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.FIRE));
|
||||
registerItem(registry, "wizard_leggings_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.FIRE));
|
||||
registerItem(registry, "wizard_boots_fire", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.FIRE));
|
||||
registerItem(registry, "wizard_hat_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.FIRE));
|
||||
registerItem(registry, "wizard_robe_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.FIRE));
|
||||
registerItem(registry, "wizard_leggings_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.FIRE));
|
||||
registerItem(registry, "wizard_boots_fire", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.FIRE));
|
||||
|
||||
registerItem(registry, "wizard_hat_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.ICE));
|
||||
registerItem(registry, "wizard_robe_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.ICE));
|
||||
registerItem(registry, "wizard_leggings_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.ICE));
|
||||
registerItem(registry, "wizard_boots_ice", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.ICE));
|
||||
registerItem(registry, "wizard_hat_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.ICE));
|
||||
registerItem(registry, "wizard_robe_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.ICE));
|
||||
registerItem(registry, "wizard_leggings_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.ICE));
|
||||
registerItem(registry, "wizard_boots_ice", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.ICE));
|
||||
|
||||
registerItem(registry, "wizard_hat_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_robe_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_leggings_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_boots_lightning", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_hat_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_robe_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_leggings_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.LIGHTNING));
|
||||
registerItem(registry, "wizard_boots_lightning", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.LIGHTNING));
|
||||
|
||||
registerItem(registry, "wizard_hat_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_robe_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_leggings_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_boots_necromancy", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_hat_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_robe_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_leggings_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.NECROMANCY));
|
||||
registerItem(registry, "wizard_boots_necromancy", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.NECROMANCY));
|
||||
|
||||
registerItem(registry, "wizard_hat_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.EARTH));
|
||||
registerItem(registry, "wizard_robe_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.EARTH));
|
||||
registerItem(registry, "wizard_leggings_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.EARTH));
|
||||
registerItem(registry, "wizard_boots_earth", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.EARTH));
|
||||
registerItem(registry, "wizard_hat_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.EARTH));
|
||||
registerItem(registry, "wizard_robe_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.EARTH));
|
||||
registerItem(registry, "wizard_leggings_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.EARTH));
|
||||
registerItem(registry, "wizard_boots_earth", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.EARTH));
|
||||
|
||||
registerItem(registry, "wizard_hat_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.SORCERY));
|
||||
registerItem(registry, "wizard_robe_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.SORCERY));
|
||||
registerItem(registry, "wizard_leggings_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.SORCERY));
|
||||
registerItem(registry, "wizard_boots_sorcery", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.SORCERY));
|
||||
registerItem(registry, "wizard_hat_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.SORCERY));
|
||||
registerItem(registry, "wizard_robe_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.SORCERY));
|
||||
registerItem(registry, "wizard_leggings_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.SORCERY));
|
||||
registerItem(registry, "wizard_boots_sorcery", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.SORCERY));
|
||||
|
||||
registerItem(registry, "wizard_hat_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.HEAD, Element.HEALING));
|
||||
registerItem(registry, "wizard_robe_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.CHEST, Element.HEALING));
|
||||
registerItem(registry, "wizard_leggings_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.LEGS, Element.HEALING));
|
||||
registerItem(registry, "wizard_boots_healing", new ItemWizardArmour(Materials.SILK, 1, EntityEquipmentSlot.FEET, Element.HEALING));
|
||||
registerItem(registry, "wizard_hat_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.HEAD, Element.HEALING));
|
||||
registerItem(registry, "wizard_robe_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.CHEST, Element.HEALING));
|
||||
registerItem(registry, "wizard_leggings_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.LEGS, Element.HEALING));
|
||||
registerItem(registry, "wizard_boots_healing", new ItemWizardArmour(ArmourClass.WIZARD, EntityEquipmentSlot.FEET, Element.HEALING));
|
||||
|
||||
registerItem(registry, "spectral_helmet", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.HEAD));
|
||||
registerItem(registry, "spectral_chestplate", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.CHEST));
|
||||
registerItem(registry, "spectral_leggings", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.LEGS));
|
||||
registerItem(registry, "spectral_boots", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.FEET));
|
||||
registerItem(registry, "sage_hat", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, null));
|
||||
registerItem(registry, "sage_robe", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, null));
|
||||
registerItem(registry, "sage_leggings", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, null));
|
||||
registerItem(registry, "sage_boots", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, null));
|
||||
|
||||
registerItem(registry, "lightning_hammer", new ItemLightningHammer());
|
||||
registerItem(registry, "flamecatcher", new ItemFlamecatcher());
|
||||
registerItem(registry, "sage_hat_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.FIRE));
|
||||
registerItem(registry, "sage_robe_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.FIRE));
|
||||
registerItem(registry, "sage_leggings_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.FIRE));
|
||||
registerItem(registry, "sage_boots_fire", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.FIRE));
|
||||
|
||||
registerItem(registry, "ring_condensing", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_siphoning", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_battlemage", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_combustion", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_fire_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_fire_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_disintegration", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_meteor", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_ice_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_ice_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_arcane_frost", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_shattering", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_lightning_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_seeking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_hammer", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_stormcloud", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_soulbinding", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_leeching", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_necromancy_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_mind_control", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_poison", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_earth_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_earth_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_full_moon", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_evoker", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_extraction", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_mana_return", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_blockwrangler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_conjurer", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_defender", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_paladin", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_interdiction", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "sage_hat_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.ICE));
|
||||
registerItem(registry, "sage_robe_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.ICE));
|
||||
registerItem(registry, "sage_leggings_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.ICE));
|
||||
registerItem(registry, "sage_boots_ice", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.ICE));
|
||||
|
||||
registerItem(registry, "amulet_arcane_defence", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_warding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_wisdom", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_fire_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_fire_cloaking", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_ice_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_ice_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_frost_warding", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_potential", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_channeling", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_lich", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_wither_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_glide", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_banishing", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_anchoring", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_recovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_transience", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_resurrection", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_auto_shield", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_absorption", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "sage_hat_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.LIGHTNING));
|
||||
registerItem(registry, "sage_robe_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.LIGHTNING));
|
||||
registerItem(registry, "sage_leggings_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.LIGHTNING));
|
||||
registerItem(registry, "sage_boots_lightning", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.LIGHTNING));
|
||||
|
||||
registerItem(registry, "charm_haggler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_experience_tome", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_move_speed", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_spell_discovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_auto_smelt", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_lava_walking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_minion_health", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_minion_variants", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_undead_helmets", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_hunger_casting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_flight", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_growth", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_abseiling", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_silk_touch", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_sixth_sense", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_stop_time", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_light", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_transportation", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_black_hole", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_mount_teleporting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_feeding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "sage_hat_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.NECROMANCY));
|
||||
registerItem(registry, "sage_robe_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.NECROMANCY));
|
||||
registerItem(registry, "sage_leggings_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.NECROMANCY));
|
||||
registerItem(registry, "sage_boots_necromancy", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.NECROMANCY));
|
||||
|
||||
registerItem(registry, "sage_hat_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.EARTH));
|
||||
registerItem(registry, "sage_robe_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.EARTH));
|
||||
registerItem(registry, "sage_leggings_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.EARTH));
|
||||
registerItem(registry, "sage_boots_earth", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.EARTH));
|
||||
|
||||
registerItem(registry, "sage_hat_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.SORCERY));
|
||||
registerItem(registry, "sage_robe_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.SORCERY));
|
||||
registerItem(registry, "sage_leggings_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.SORCERY));
|
||||
registerItem(registry, "sage_boots_sorcery", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.SORCERY));
|
||||
|
||||
registerItem(registry, "sage_hat_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.HEAD, Element.HEALING));
|
||||
registerItem(registry, "sage_robe_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.CHEST, Element.HEALING));
|
||||
registerItem(registry, "sage_leggings_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.LEGS, Element.HEALING));
|
||||
registerItem(registry, "sage_boots_healing", new ItemWizardArmour(ArmourClass.SAGE, EntityEquipmentSlot.FEET, Element.HEALING));
|
||||
|
||||
registerItem(registry, "battlemage_helmet", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, null));
|
||||
registerItem(registry, "battlemage_chestplate", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, null));
|
||||
registerItem(registry, "battlemage_leggings", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, null));
|
||||
registerItem(registry, "battlemage_boots", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, null));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.FIRE));
|
||||
registerItem(registry, "battlemage_chestplate_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.FIRE));
|
||||
registerItem(registry, "battlemage_leggings_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.FIRE));
|
||||
registerItem(registry, "battlemage_boots_fire", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.FIRE));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.ICE));
|
||||
registerItem(registry, "battlemage_chestplate_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.ICE));
|
||||
registerItem(registry, "battlemage_leggings_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.ICE));
|
||||
registerItem(registry, "battlemage_boots_ice", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.ICE));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.LIGHTNING));
|
||||
registerItem(registry, "battlemage_chestplate_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.LIGHTNING));
|
||||
registerItem(registry, "battlemage_leggings_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.LIGHTNING));
|
||||
registerItem(registry, "battlemage_boots_lightning", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.LIGHTNING));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.NECROMANCY));
|
||||
registerItem(registry, "battlemage_chestplate_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.NECROMANCY));
|
||||
registerItem(registry, "battlemage_leggings_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.NECROMANCY));
|
||||
registerItem(registry, "battlemage_boots_necromancy", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.NECROMANCY));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.EARTH));
|
||||
registerItem(registry, "battlemage_chestplate_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.EARTH));
|
||||
registerItem(registry, "battlemage_leggings_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.EARTH));
|
||||
registerItem(registry, "battlemage_boots_earth", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.EARTH));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.SORCERY));
|
||||
registerItem(registry, "battlemage_chestplate_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.SORCERY));
|
||||
registerItem(registry, "battlemage_leggings_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.SORCERY));
|
||||
registerItem(registry, "battlemage_boots_sorcery", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.SORCERY));
|
||||
|
||||
registerItem(registry, "battlemage_helmet_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.HEAD, Element.HEALING));
|
||||
registerItem(registry, "battlemage_chestplate_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.CHEST, Element.HEALING));
|
||||
registerItem(registry, "battlemage_leggings_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.LEGS, Element.HEALING));
|
||||
registerItem(registry, "battlemage_boots_healing", new ItemWizardArmour(ArmourClass.BATTLEMAGE, EntityEquipmentSlot.FEET, Element.HEALING));
|
||||
|
||||
registerItem(registry, "warlock_hood", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, null));
|
||||
registerItem(registry, "warlock_robe", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, null));
|
||||
registerItem(registry, "warlock_leggings", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, null));
|
||||
registerItem(registry, "warlock_boots", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, null));
|
||||
|
||||
registerItem(registry, "warlock_hood_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.FIRE));
|
||||
registerItem(registry, "warlock_robe_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.FIRE));
|
||||
registerItem(registry, "warlock_leggings_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.FIRE));
|
||||
registerItem(registry, "warlock_boots_fire", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.FIRE));
|
||||
|
||||
registerItem(registry, "warlock_hood_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.ICE));
|
||||
registerItem(registry, "warlock_robe_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.ICE));
|
||||
registerItem(registry, "warlock_leggings_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.ICE));
|
||||
registerItem(registry, "warlock_boots_ice", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.ICE));
|
||||
|
||||
registerItem(registry, "warlock_hood_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.LIGHTNING));
|
||||
registerItem(registry, "warlock_robe_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.LIGHTNING));
|
||||
registerItem(registry, "warlock_leggings_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.LIGHTNING));
|
||||
registerItem(registry, "warlock_boots_lightning", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.LIGHTNING));
|
||||
|
||||
registerItem(registry, "warlock_hood_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.NECROMANCY));
|
||||
registerItem(registry, "warlock_robe_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.NECROMANCY));
|
||||
registerItem(registry, "warlock_leggings_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.NECROMANCY));
|
||||
registerItem(registry, "warlock_boots_necromancy", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.NECROMANCY));
|
||||
|
||||
registerItem(registry, "warlock_hood_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.EARTH));
|
||||
registerItem(registry, "warlock_robe_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.EARTH));
|
||||
registerItem(registry, "warlock_leggings_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.EARTH));
|
||||
registerItem(registry, "warlock_boots_earth", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.EARTH));
|
||||
|
||||
registerItem(registry, "warlock_hood_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.SORCERY));
|
||||
registerItem(registry, "warlock_robe_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.SORCERY));
|
||||
registerItem(registry, "warlock_leggings_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.SORCERY));
|
||||
registerItem(registry, "warlock_boots_sorcery", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.SORCERY));
|
||||
|
||||
registerItem(registry, "warlock_hood_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.HEAD, Element.HEALING));
|
||||
registerItem(registry, "warlock_robe_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.CHEST, Element.HEALING));
|
||||
registerItem(registry, "warlock_leggings_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.LEGS, Element.HEALING));
|
||||
registerItem(registry, "warlock_boots_healing", new ItemWizardArmour(ArmourClass.WARLOCK, EntityEquipmentSlot.FEET, Element.HEALING));
|
||||
|
||||
registerItem(registry, "spectral_helmet", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.HEAD));
|
||||
registerItem(registry, "spectral_chestplate", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.CHEST));
|
||||
registerItem(registry, "spectral_leggings", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.LEGS));
|
||||
registerItem(registry, "spectral_boots", new ItemSpectralArmour(ArmorMaterial.IRON, 1, EntityEquipmentSlot.FEET));
|
||||
|
||||
registerItem(registry, "lightning_hammer", new ItemLightningHammer());
|
||||
registerItem(registry, "flamecatcher", new ItemFlamecatcher());
|
||||
|
||||
registerItem(registry, "ring_condensing", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_siphoning", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_battlemage", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_combustion", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_fire_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_fire_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_disintegration", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_meteor", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_ice_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_ice_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_arcane_frost", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_shattering", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_lightning_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_seeking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_hammer", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_stormcloud", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_soulbinding", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_leeching", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_necromancy_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_mind_control", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_poison", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_earth_melee", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_earth_biome", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_full_moon", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_evoker", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_extraction", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_mana_return", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_blockwrangler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_conjurer", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_defender", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_paladin", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.RING));
|
||||
registerItem(registry, "ring_interdiction", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.RING));
|
||||
|
||||
registerItem(registry, "amulet_arcane_defence", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_warding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_wisdom", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_fire_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_fire_cloaking", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_ice_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_ice_protection", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_frost_warding", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_potential", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_channeling", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_lich", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_wither_immunity", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_glide", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_banishing", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_anchoring", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_recovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_transience", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_resurrection", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_auto_shield", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.AMULET));
|
||||
registerItem(registry, "amulet_absorption", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.AMULET));
|
||||
|
||||
registerItem(registry, "charm_haggler", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_experience_tome", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_move_speed", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_spell_discovery", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_auto_smelt", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_lava_walking", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_storm", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_minion_health", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_minion_variants", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_undead_helmets", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_hunger_casting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_flight", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_growth", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_abseiling", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_silk_touch", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_sixth_sense", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_stop_time", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_light", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_transportation", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_black_hole", new ItemArtefact(EnumRarity.EPIC, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_mount_teleporting", new ItemArtefact(EnumRarity.RARE, ItemArtefact.Type.CHARM));
|
||||
registerItem(registry, "charm_feeding", new ItemArtefact(EnumRarity.UNCOMMON, ItemArtefact.Type.CHARM));
|
||||
|
||||
}
|
||||
|
||||
@@ -756,76 +1001,4 @@ public final class WizardryItems {
|
||||
EnumHelper.addEnum(BannerPattern.class, codeName, new Class[]{String.class, String.class, ItemStack.class}, fileName, hashName, patternItem);
|
||||
}
|
||||
|
||||
public static void populateWandMap(){
|
||||
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.MAGIC), magic_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.FIRE), novice_fire_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.ICE), novice_ice_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.LIGHTNING), novice_lightning_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.NECROMANCY), novice_necromancy_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.EARTH), novice_earth_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.SORCERY), novice_sorcery_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.NOVICE, Element.HEALING), novice_healing_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.MAGIC), apprentice_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.FIRE), apprentice_fire_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.ICE), apprentice_ice_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.LIGHTNING), apprentice_lightning_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.NECROMANCY), apprentice_necromancy_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.EARTH), apprentice_earth_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.SORCERY), apprentice_sorcery_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.APPRENTICE, Element.HEALING), apprentice_healing_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.MAGIC), advanced_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.FIRE), advanced_fire_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.ICE), advanced_ice_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.LIGHTNING), advanced_lightning_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.NECROMANCY), advanced_necromancy_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.EARTH), advanced_earth_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.SORCERY), advanced_sorcery_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.ADVANCED, Element.HEALING), advanced_healing_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.MAGIC), master_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.FIRE), master_fire_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.ICE), master_ice_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.LIGHTNING), master_lightning_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.NECROMANCY), master_necromancy_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.EARTH), master_earth_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.SORCERY), master_sorcery_wand);
|
||||
WAND_MAP.put(ImmutablePair.of(Tier.MASTER, Element.HEALING), master_healing_wand);
|
||||
}
|
||||
|
||||
public static void populateArmourMap(){
|
||||
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.MAGIC), wizard_hat);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.FIRE), wizard_hat_fire);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.ICE), wizard_hat_ice);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.LIGHTNING), wizard_hat_lightning);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.NECROMANCY), wizard_hat_necromancy);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.EARTH), wizard_hat_earth);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.SORCERY), wizard_hat_sorcery);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.HEAD, Element.HEALING), wizard_hat_healing);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.MAGIC), wizard_robe);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.FIRE), wizard_robe_fire);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.ICE), wizard_robe_ice);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.LIGHTNING), wizard_robe_lightning);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.NECROMANCY), wizard_robe_necromancy);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.EARTH), wizard_robe_earth);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.SORCERY), wizard_robe_sorcery);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.CHEST, Element.HEALING), wizard_robe_healing);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.MAGIC), wizard_leggings);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.FIRE), wizard_leggings_fire);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.ICE), wizard_leggings_ice);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.LIGHTNING), wizard_leggings_lightning);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.NECROMANCY), wizard_leggings_necromancy);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.EARTH), wizard_leggings_earth);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.SORCERY), wizard_leggings_sorcery);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.LEGS, Element.HEALING), wizard_leggings_healing);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.MAGIC), wizard_boots);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.FIRE), wizard_boots_fire);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.ICE), wizard_boots_ice);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.LIGHTNING), wizard_boots_lightning);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.NECROMANCY), wizard_boots_necromancy);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.EARTH), wizard_boots_earth);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.SORCERY), wizard_boots_sorcery);
|
||||
ARMOUR_MAP.put(ImmutablePair.of(EntityEquipmentSlot.FEET, Element.HEALING), wizard_boots_healing);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -40,6 +40,9 @@ public final class WizardrySounds {
|
||||
public static final SoundEvent ITEM_WAND_MELEE = createSound("item.wand.melee");
|
||||
public static final SoundEvent ITEM_WAND_CHARGEUP = createSound("item.wand.chargeup");
|
||||
public static final SoundEvent ITEM_ARMOUR_EQUIP_SILK = createSound("item.armour.equip_silk");
|
||||
public static final SoundEvent ITEM_ARMOUR_EQUIP_SAGE = createSound("item.armour.equip_sage");
|
||||
public static final SoundEvent ITEM_ARMOUR_EQUIP_BATTLEMAGE = createSound("item.armour.equip_battlemage");
|
||||
public static final SoundEvent ITEM_ARMOUR_EQUIP_WARLOCK = createSound("item.armour.equip_warlock");
|
||||
public static final SoundEvent ITEM_PURIFYING_ELIXIR_DRINK = createSound("item.purifying_elixir.drink");
|
||||
public static final SoundEvent ITEM_MANA_FLASK_USE = createSound("item.mana_flask.use");
|
||||
public static final SoundEvent ITEM_MANA_FLASK_RECHARGE = createSound("item.mana_flask.recharge");
|
||||
|
||||
@@ -47,10 +47,12 @@ public class ArcaneLock extends SpellRay {
|
||||
|
||||
if(caster instanceof EntityPlayer){
|
||||
|
||||
if(toggleLock(world, pos, (EntityPlayer)caster)){
|
||||
BlockPos otherHalf = BlockUtils.getConnectedChest(world, pos);
|
||||
if(otherHalf != null) toggleLock(world, otherHalf, (EntityPlayer)caster);
|
||||
return true;
|
||||
if(!world.isRemote){
|
||||
if(toggleLock(world, pos, (EntityPlayer)caster)){
|
||||
BlockPos otherHalf = BlockUtils.getConnectedChest(world, pos);
|
||||
if(otherHalf != null) toggleLock(world, otherHalf, (EntityPlayer)caster);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,11 +69,13 @@ public class ArcaneLock extends SpellRay {
|
||||
// Unlocking
|
||||
if(world.getPlayerEntityByUUID(tileentity.getTileData().getUniqueId(NBT_KEY)) == player){
|
||||
NBTExtras.removeUniqueId(tileentity.getTileData(), NBT_KEY);
|
||||
world.markAndNotifyBlock(pos, null, world.getBlockState(pos), world.getBlockState(pos), 3);
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
// Locking
|
||||
tileentity.getTileData().setUniqueId(NBT_KEY, player.getUniqueID());
|
||||
world.markAndNotifyBlock(pos, null, world.getBlockState(pos), world.getBlockState(pos), 3);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,11 +12,13 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@EventBusSubscriber
|
||||
public class FontOfMana extends SpellAreaEffect {
|
||||
|
||||
public FontOfMana(){
|
||||
|
||||
@@ -17,6 +17,8 @@ import java.util.List;
|
||||
|
||||
public class GrowthAura extends Spell {
|
||||
|
||||
private static final int FULL_GROWTH_TIMEOUT = 100;
|
||||
|
||||
public GrowthAura(){
|
||||
super("growth_aura", SpellActions.POINT_DOWN, false);
|
||||
addProperties(EFFECT_RADIUS);
|
||||
@@ -49,7 +51,8 @@ public class GrowthAura extends Spell {
|
||||
if(!world.isRemote){
|
||||
if(plant.canUseBonemeal(world, world.rand, pos, state)){
|
||||
if(world.rand.nextFloat() < 0.35f && ItemArtefact.isArtefactActive(caster, WizardryItems.charm_growth)){
|
||||
while(plant.canGrow(world, pos, state, false)){
|
||||
int i = 0;
|
||||
while(plant.canGrow(world, pos, state, false) && i++ < FULL_GROWTH_TIMEOUT){
|
||||
plant.grow(world, world.rand, pos, state);
|
||||
state = world.getBlockState(pos); // Update the state with the new one
|
||||
plant = (IGrowable)state.getBlock(); // Update the block with the new one
|
||||
|
||||
@@ -49,52 +49,62 @@ public class LightningWeb extends SpellRay {
|
||||
protected void playSound(World world, double x, double y, double z, int ticksInUse, int duration, SpellModifiers modifiers, String... sounds){
|
||||
this.playSoundLoop(world, x, y, z, ticksInUse, duration);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean onEntityHit(World world, Entity target, Vec3d hit, EntityLivingBase caster, Vec3d origin, int ticksInUse, SpellModifiers modifiers){
|
||||
|
||||
|
||||
if(EntityUtils.isLiving(target)){
|
||||
|
||||
electrocute(world, caster, origin, target, getProperty(PRIMARY_DAMAGE).floatValue()
|
||||
* modifiers.get(SpellModifiers.POTENCY), ticksInUse);
|
||||
|
||||
// Secondary chaining effect
|
||||
|
||||
List<EntityLivingBase> secondaryTargets = EntityUtils.getLivingWithinRadius(
|
||||
getProperty(SECONDARY_RANGE).floatValue(), target.posX, target.posY + target.height / 2,
|
||||
target.posZ, world);
|
||||
|
||||
secondaryTargets.remove(target);
|
||||
secondaryTargets.removeIf(e -> !EntityUtils.isLiving(e));
|
||||
secondaryTargets.removeIf(e -> !AllyDesignationSystem.isValidTarget(caster, e));
|
||||
if(secondaryTargets.size() > getProperty(SECONDARY_MAX_TARGETS).intValue())
|
||||
secondaryTargets = secondaryTargets.subList(0, getProperty(SECONDARY_MAX_TARGETS).intValue());
|
||||
// Secondary chaining effect
|
||||
|
||||
for(EntityLivingBase secondaryTarget : secondaryTargets){
|
||||
List<EntityLivingBase> secondaryTargets = EntityUtils.getLivingWithinRadius(
|
||||
getProperty(SECONDARY_RANGE).floatValue(), target.posX, target.posY + target.height / 2,
|
||||
target.posZ, world);
|
||||
|
||||
electrocute(world, caster, target.getPositionVector().add(0, target.height/2, 0), secondaryTarget,
|
||||
getProperty(SECONDARY_DAMAGE).floatValue() * modifiers.get(SpellModifiers.POTENCY), ticksInUse);
|
||||
secondaryTargets.stream()
|
||||
.filter(entity -> !entity.equals(target))
|
||||
.filter(EntityUtils::isLiving)
|
||||
.filter(e -> AllyDesignationSystem.isValidTarget(caster, e))
|
||||
.limit(getProperty(SECONDARY_MAX_TARGETS).intValue())
|
||||
.forEach(secondaryTarget -> {
|
||||
electrocute(world, caster,
|
||||
target.getPositionVector().add(0, target.height / 2, 0),
|
||||
secondaryTarget,
|
||||
getProperty(SECONDARY_DAMAGE).floatValue() * modifiers.get(SpellModifiers.POTENCY),
|
||||
ticksInUse
|
||||
);
|
||||
|
||||
// Tertiary chaining effect
|
||||
// Tertiary chaining effect
|
||||
|
||||
List<EntityLivingBase> tertiaryTargets = EntityUtils.getLivingWithinRadius(
|
||||
getProperty(TERTIARY_RANGE).floatValue(), secondaryTarget.posX,
|
||||
secondaryTarget.posY + secondaryTarget.height / 2, secondaryTarget.posZ, world);
|
||||
|
||||
tertiaryTargets.remove(target);
|
||||
tertiaryTargets.removeAll(secondaryTargets);
|
||||
tertiaryTargets.removeIf(e -> !EntityUtils.isLiving(e));
|
||||
tertiaryTargets.removeIf(e -> !AllyDesignationSystem.isValidTarget(caster, e));
|
||||
if(tertiaryTargets.size() > getProperty(TERTIARY_MAX_TARGETS).intValue())
|
||||
tertiaryTargets = tertiaryTargets.subList(0, getProperty(TERTIARY_MAX_TARGETS).intValue());
|
||||
List<EntityLivingBase> tertiaryTargets =
|
||||
EntityUtils.getLivingWithinRadius(
|
||||
getProperty(TERTIARY_RANGE).floatValue(),
|
||||
secondaryTarget.posX,
|
||||
secondaryTarget.posY + secondaryTarget.height / 2,
|
||||
secondaryTarget.posZ,
|
||||
world
|
||||
);
|
||||
|
||||
for(EntityLivingBase tertiaryTarget : tertiaryTargets){
|
||||
electrocute(world, caster, secondaryTarget.getPositionVector().add(0, secondaryTarget.height/2, 0),
|
||||
tertiaryTarget, getProperty(TERTIARY_DAMAGE).floatValue() * modifiers.get(SpellModifiers.POTENCY), ticksInUse);
|
||||
}
|
||||
}
|
||||
tertiaryTargets.stream()
|
||||
.filter(entity -> !secondaryTargets.contains(entity))
|
||||
.filter(entity -> !entity.equals(target))
|
||||
.filter(EntityUtils::isLiving)
|
||||
.filter(e -> AllyDesignationSystem.isValidTarget(caster, e))
|
||||
.limit(getProperty(TERTIARY_MAX_TARGETS).intValue())
|
||||
.forEach(tertiaryTarget ->
|
||||
electrocute(world, caster,
|
||||
secondaryTarget.getPositionVector().add(0, secondaryTarget.height / 2, 0),
|
||||
tertiaryTarget,
|
||||
getProperty(TERTIARY_DAMAGE).floatValue() * modifiers.get(SpellModifiers.POTENCY),
|
||||
ticksInUse
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -128,10 +138,10 @@ public class LightningWeb extends SpellRay {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void electrocute(World world, Entity caster, Vec3d origin, Entity target, float damage, int ticksInUse){
|
||||
|
||||
if(MagicDamage.isEntityImmune(DamageType.SHOCK, target)){
|
||||
@@ -142,12 +152,12 @@ public class LightningWeb extends SpellRay {
|
||||
EntityUtils.attackEntityWithoutKnockback(target,
|
||||
MagicDamage.causeDirectMagicDamage(caster, DamageType.SHOCK), damage);
|
||||
}
|
||||
|
||||
|
||||
if(world.isRemote){
|
||||
|
||||
|
||||
ParticleBuilder.create(Type.BEAM).entity(caster).clr(0.2f, 0.6f, 1)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
|
||||
|
||||
if(ticksInUse % 3 == 0){
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
|
||||
@@ -31,9 +31,11 @@ import net.minecraft.util.text.TextComponentTranslation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.registries.ForgeRegistry;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
import net.minecraftforge.registries.IForgeRegistryEntry;
|
||||
@@ -136,6 +138,14 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
|
||||
/** The unlocalised name of the spell. */
|
||||
private final String unlocalisedName;
|
||||
|
||||
// The spell properties system turned out to be a bit of a pain. Ideally I'd attach them to a world or whatever, but
|
||||
// often we're accessing spell properties from places where a world is not available (and besides, I don't want to
|
||||
// change the API now). Since spell properties are immutable and don't get reassigned while a world is loaded, in
|
||||
// theory that makes them thread-safe (at least while the world is open, and they get wiped after that anyway).
|
||||
// We still need to send them to clients in multiplayer (and LAN guests) so the simplest thing to do is send them
|
||||
// to players' clients and only assign them if they haven't already been assigned, but without printing a warning.
|
||||
// Yes, *technically* this is reaching across sides but the fields are effectively immutable so it doesn't matter.
|
||||
/** This spell's associated SpellProperties object. */
|
||||
private SpellProperties properties;
|
||||
/** A reference to the global spell properties for this spell, so they are only loaded once. */
|
||||
@@ -283,7 +293,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
}
|
||||
|
||||
/** Sets this spell's properties to the given {@link SpellProperties} object, but only if it doesn't already
|
||||
* have one. This prevents spell properties from being changed after initialisation. */
|
||||
* have one. This prevents spell properties from being changed after initialisation. <b>Server-side only!</b> */
|
||||
public void setProperties(@Nonnull SpellProperties properties){
|
||||
|
||||
if(!arePropertiesInitialised()){
|
||||
@@ -294,20 +304,23 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
}
|
||||
}
|
||||
|
||||
/** <b>Internal, do not use.</b> Use {@link Spell#setProperties(SpellProperties)} to set a spell's properties. */
|
||||
public void setPropertiesClient(SpellProperties properties){
|
||||
// Quick sanity check
|
||||
if(FMLCommonHandler.instance().getEffectiveSide() != Side.CLIENT) Wizardry.logger.warn("Spell#setPropertiesClient called from the server side!");
|
||||
// This is like the other method but with no logging or global properties so that we can silently ignore syncing
|
||||
// in singleplayer (LAN is like singleplayer because the host receives the packet before opening to LAN anyway)
|
||||
if(!arePropertiesInitialised()) this.properties = properties;
|
||||
}
|
||||
|
||||
/** Called from the event handler when a player logs in. */
|
||||
public static void syncProperties(EntityPlayer player){
|
||||
if(player instanceof EntityPlayerMP){
|
||||
// On the server side, send a packet to the player to synchronise their spell properties
|
||||
// To avoid sending extra data unnecessarily, the spell properties are sent in order of spell ID
|
||||
List<Spell> spells = new ArrayList<>(registry.getValuesCollection());
|
||||
spells.sort(Comparator.comparingInt(Spell::networkID));
|
||||
WizardryPacketHandler.net.sendToAll(new PacketSpellProperties.Message(spells.stream()
|
||||
.map(s -> s.properties).toArray(SpellProperties[]::new)));
|
||||
}else{
|
||||
// On the client side, wipe the spell properties so the new ones can be set
|
||||
// Not sure if we can guarantee this happens before the packet arrives, but it hasn't caused any problems yet!
|
||||
clearProperties();
|
||||
}
|
||||
public static void syncProperties(EntityPlayerMP player){
|
||||
// On the server side, send a packet to the player to synchronise their spell properties
|
||||
// To avoid sending extra data unnecessarily, the spell properties are sent in order of spell ID
|
||||
List<Spell> spells = new ArrayList<>(registry.getValuesCollection());
|
||||
spells.sort(Comparator.comparingInt(Spell::networkID));
|
||||
WizardryPacketHandler.net.sendTo(new PacketSpellProperties.Message(spells.stream()
|
||||
.map(s -> s.properties).toArray(SpellProperties[]::new)), player);
|
||||
}
|
||||
|
||||
private static void clearProperties(){
|
||||
@@ -561,32 +574,32 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
|
||||
/** Returns the tier that this spell belongs to. */
|
||||
public final Tier getTier(){
|
||||
return properties.tier;
|
||||
return arePropertiesInitialised() ? properties.tier : Tier.NOVICE;
|
||||
}
|
||||
|
||||
/** Returns the element that this spell belongs to. */
|
||||
public final Element getElement(){
|
||||
return properties.element;
|
||||
return arePropertiesInitialised() ? properties.element : Element.MAGIC;
|
||||
}
|
||||
|
||||
/** Returns the type of spell this is classified as. */
|
||||
public final SpellType getType(){
|
||||
return properties.type;
|
||||
return arePropertiesInitialised() ? properties.type : SpellType.UTILITY;
|
||||
}
|
||||
|
||||
/** Returns the mana cost of the spell. If it is a continuous spell the cost is per second. */
|
||||
public final int getCost(){
|
||||
return properties.cost;
|
||||
return arePropertiesInitialised() ? properties.cost : 0;
|
||||
}
|
||||
|
||||
/** Returns the charge-up time for the spell in ticks. */
|
||||
public final int getChargeup(){
|
||||
return properties.chargeup;
|
||||
return arePropertiesInitialised() ? properties.chargeup : 0;
|
||||
}
|
||||
|
||||
/** Returns the cooldown for the spell in ticks. */
|
||||
public final int getCooldown(){
|
||||
return properties.cooldown;
|
||||
return arePropertiesInitialised() ? properties.cooldown : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -595,7 +608,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
* @return True if a property has been defined for the given identifier, false if not.
|
||||
*/
|
||||
public final boolean hasProperty(String identifier){
|
||||
return properties.hasBaseValue(identifier);
|
||||
return arePropertiesInitialised() && properties.hasBaseValue(identifier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -611,7 +624,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
* @throws IllegalArgumentException if no property was defined with the given identifier.
|
||||
*/
|
||||
public final Number getProperty(String identifier){
|
||||
return properties.getBaseValue(identifier);
|
||||
return arePropertiesInitialised() ? properties.getBaseValue(identifier) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1061,6 +1074,23 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onClientConnectEvent(FMLNetworkEvent.ClientConnectedToServerEvent event){
|
||||
// Right. Read carefully!
|
||||
// This code would actually work perfectly well on a dedicated server. In singleplayer, however, it is a problem
|
||||
// because the client and server SHARE STATIC VARIABLES (because they share the same JVM... stupid I know). LAN
|
||||
// also has the same problem. The proper solution, of course, is to tie it to something that is different on
|
||||
// different logical sides, or to simply use different variables and decide which to query on-the-fly.
|
||||
// However, there's a bit of a problem because both of those 'proper' solutions need a world object to know
|
||||
// which properties to access. Thing is, we can actually kind of cheat here: spell properties can't change from
|
||||
// within a world, so they are effectively constants... so they are necessarily the same on both sides. Let's
|
||||
// not fight against the same-JVM thing, let's just ignore the packet completely when it's in the same JVM.
|
||||
// (What could possibly go wrong?!)
|
||||
|
||||
// If this is not a singleplayer game, clear the spell properties in preparation for receiving server ones
|
||||
if(!event.isLocal()) clearProperties();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onClientDisconnectEvent(FMLNetworkEvent.ClientDisconnectionFromServerEvent event){
|
||||
// Why does the world UNLOAD event happen during world LOADING? How does that even work?!
|
||||
|
||||
@@ -178,20 +178,23 @@ public abstract class SpellRay extends Spell {
|
||||
Vec3d origin = new Vec3d(caster.posX, caster.posY + caster.getEyeHeight() - Y_OFFSET, caster.posZ);
|
||||
Vec3d targetPos = null;
|
||||
|
||||
if(!ignoreLivingEntities || !EntityUtils.isLiving(target)){
|
||||
targetPos = new Vec3d(target.posX, target.posY + target.height / 2, target.posZ);
|
||||
if(target != null){
|
||||
|
||||
}else{
|
||||
if(!ignoreLivingEntities || !EntityUtils.isLiving(target)){
|
||||
targetPos = new Vec3d(target.posX, target.posY + target.height / 2, target.posZ);
|
||||
|
||||
int x = MathHelper.floor(target.posX);
|
||||
int y = (int)target.posY - 1; // -1 because we need the block under the target
|
||||
int z = MathHelper.floor(target.posZ);
|
||||
BlockPos pos = new BlockPos(x, y, z);
|
||||
}else{
|
||||
|
||||
// This works as if the NPC had actually aimed at the floor beneath the target, so it needs to check that
|
||||
// the block is not air and (optionally) not a liquid.
|
||||
if(!world.isAirBlock(pos) && (!world.getBlockState(pos).getMaterial().isLiquid() || hitLiquids)){
|
||||
targetPos = new Vec3d(x + 0.5, y + 1, z + 0.5);
|
||||
int x = MathHelper.floor(target.posX);
|
||||
int y = (int)target.posY - 1; // -1 because we need the block under the target
|
||||
int z = MathHelper.floor(target.posZ);
|
||||
BlockPos pos = new BlockPos(x, y, z);
|
||||
|
||||
// This works as if the NPC had actually aimed at the floor beneath the target, so it needs to check that
|
||||
// the block is not air and (optionally) not a liquid.
|
||||
if(!world.isAirBlock(pos) && (!world.getBlockState(pos).getMaterial().isLiquid() || hitLiquids)){
|
||||
targetPos = new Vec3d(x + 0.5, y + 1, z + 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -189,7 +189,9 @@ public class TileEntityArcaneWorkbench extends TileEntity implements IInventory,
|
||||
}else if(slotNumber == ContainerArcaneWorkbench.UPGRADE_SLOT){
|
||||
Set<Item> upgrades = new HashSet<>(WandHelper.getSpecialUpgrades());
|
||||
upgrades.add(WizardryItems.arcane_tome);
|
||||
upgrades.add(WizardryItems.armour_upgrade);
|
||||
upgrades.add(WizardryItems.resplendent_thread);
|
||||
upgrades.add(WizardryItems.crystal_silver_plating);
|
||||
upgrades.add(WizardryItems.ethereal_crystalweave);
|
||||
return upgrades.contains(itemstack.getItem());
|
||||
}
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@ public class TileEntityImbuementAltar extends TileEntity implements ITickable {
|
||||
|
||||
if(Arrays.stream(receptacleElements).distinct().count() == 1 && receptacleElements[0] != null){ // All the same element
|
||||
|
||||
ItemStack result = new ItemStack(WizardryItems.getArmour(receptacleElements[0], ((ItemWizardArmour)input.getItem()).armorType));
|
||||
ItemStack result = new ItemStack(ItemWizardArmour.getArmour(receptacleElements[0], ((ItemWizardArmour)input.getItem()).armourClass, ((ItemWizardArmour)input.getItem()).armorType));
|
||||
|
||||
result.setTagCompound(input.getTagCompound());
|
||||
((IManaStoringItem)result.getItem()).setMana(result, ((ItemWizardArmour)input.getItem()).getMana(input));
|
||||
|
||||
@@ -419,7 +419,7 @@ public final class BlockUtils {
|
||||
world.setBlockState(pos, Blocks.OBSIDIAN.getDefaultState());
|
||||
}else if(freezeLava && (block == Blocks.LAVA || block == Blocks.FLOWING_LAVA)){
|
||||
world.setBlockState(pos, Blocks.COBBLESTONE.getDefaultState());
|
||||
}else if(block.isReplaceable(world, pos.up()) && Blocks.SNOW_LAYER.canPlaceBlockAt(world, pos.up())){
|
||||
}else if(canBlockBeReplaced(world, pos.up()) && Blocks.SNOW_LAYER.canPlaceBlockAt(world, pos.up())){
|
||||
world.setBlockState(pos.up(), Blocks.SNOW_LAYER.getDefaultState());
|
||||
}else{
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package electroblob.wizardry.util;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
@@ -10,6 +11,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.EnumHandSide;
|
||||
import net.minecraft.util.NonNullList;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -142,4 +144,28 @@ public final class InventoryUtils {
|
||||
&& ItemStack.areItemStackTagsEqual(stack1, stack2);
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of {@link Entity#replaceItemInInventory(int, ItemStack)} that takes a slot index specific to the main,
|
||||
* armour and offhand inventories, as passed to {@link Item#onUpdate(ItemStack, World, Entity, int, boolean)},
|
||||
* rather than the proper slot index used everywhere else (just <i>why</i>, Mojang?).
|
||||
* @param entity The entity to replace the item for
|
||||
* @param slot The slot index to replace
|
||||
* @param original The item stack currently in the slot (required for technical reasons)
|
||||
* @param replacement The new item stack
|
||||
* @return True if an item was replaced, false if not
|
||||
*/
|
||||
public static boolean replaceItemInInventory(Entity entity, int slot, ItemStack original, ItemStack replacement){
|
||||
// Check slots that aren't in the main inventory first by comparing with the existing item
|
||||
if(entity instanceof EntityLivingBase){
|
||||
for(EntityEquipmentSlot eslot : EntityEquipmentSlot.values()){
|
||||
if(((EntityLivingBase)entity).getItemStackFromSlot(eslot) == original){
|
||||
entity.setItemStackToSlot(eslot, replacement);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Otherwise use the normal behaviour
|
||||
return entity.replaceItemInInventory(slot, replacement);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,6 +68,26 @@ public final class SpellModifiers {
|
||||
return new SpellModifiers(new HashMap<>(this.multiplierMap), new HashMap<>(this.syncedMultiplierMap));
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines the given SpellModifiers object with this one. More specifically: for each modifier, multiplies the
|
||||
* values from both objects together and sets it to sync if either object does so. This method changes the object
|
||||
* it is called on but not the one given as a parameter; apart from this it does not matter which way round the two
|
||||
* objects are.
|
||||
* @param modifiers The SpellModifiers object to combine with this one; will not be modified by this method.
|
||||
* @return The SpellModifiers object, allowing this method to be chained onto the constructor.
|
||||
*/
|
||||
public SpellModifiers combine(SpellModifiers modifiers){
|
||||
for(Entry<String, Float> entry : multiplierMap.entrySet()){
|
||||
float newValue = entry.getValue() * modifiers.get(entry.getKey());
|
||||
entry.setValue(newValue);
|
||||
// Also need to update the synced map if the modifier is synced in either object
|
||||
if(this.syncedMultiplierMap.containsKey(entry.getKey()) || modifiers.syncedMultiplierMap.containsKey(entry.getKey())){
|
||||
this.syncedMultiplierMap.put(entry.getKey(), newValue);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given multiplier to this SpellModifiers object, using the string identifier that the given wand upgrade
|
||||
* item was registered with.
|
||||
|
||||
@@ -0,0 +1,309 @@
|
||||
{
|
||||
"display": {
|
||||
"title": {
|
||||
"translate": "advancement.ebwizardry:battlemage"
|
||||
},
|
||||
"description": {
|
||||
"translate": "advancement.ebwizardry:battlemage.desc"
|
||||
},
|
||||
"icon": {
|
||||
"item": "ebwizardry:battlemage_boots"
|
||||
},
|
||||
"frame": "goal"
|
||||
},
|
||||
"parent": "ebwizardry:armour_set",
|
||||
"criteria": {
|
||||
"head": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_helmet_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_chestplate_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_leggings_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:battlemage_boots_healing"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"head",
|
||||
"chest",
|
||||
"legs",
|
||||
"feet",
|
||||
"head_fire",
|
||||
"chest_fire",
|
||||
"legs_fire",
|
||||
"feet_fire",
|
||||
"head_ice",
|
||||
"chest_ice",
|
||||
"legs_ice",
|
||||
"feet_ice",
|
||||
"head_lightning",
|
||||
"chest_lightning",
|
||||
"legs_lightning",
|
||||
"feet_lightning",
|
||||
"head_necromancy",
|
||||
"chest_necromancy",
|
||||
"legs_necromancy",
|
||||
"feet_necromancy",
|
||||
"head_earth",
|
||||
"chest_earth",
|
||||
"legs_earth",
|
||||
"feet_earth",
|
||||
"head_sorcery",
|
||||
"chest_sorcery",
|
||||
"legs_sorcery",
|
||||
"feet_sorcery",
|
||||
"head_healing",
|
||||
"chest_healing",
|
||||
"legs_healing",
|
||||
"feet_healing"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"display": {
|
||||
"title": {
|
||||
"translate": "advancement.ebwizardry:legendary"
|
||||
},
|
||||
"description": {
|
||||
"translate": "advancement.ebwizardry:legendary.desc"
|
||||
},
|
||||
"icon": {
|
||||
"item": "ebwizardry:armour_upgrade"
|
||||
},
|
||||
"frame": "goal"
|
||||
},
|
||||
"parent": "ebwizardry:armour_set",
|
||||
"criteria": {
|
||||
"criteria_0": {
|
||||
"trigger": "ebwizardry:trigger_legendary"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,309 @@
|
||||
{
|
||||
"display": {
|
||||
"title": {
|
||||
"translate": "advancement.ebwizardry:sage"
|
||||
},
|
||||
"description": {
|
||||
"translate": "advancement.ebwizardry:sage.desc"
|
||||
},
|
||||
"icon": {
|
||||
"item": "ebwizardry:sage_robe"
|
||||
},
|
||||
"frame": "goal"
|
||||
},
|
||||
"parent": "ebwizardry:armour_set",
|
||||
"criteria": {
|
||||
"head": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_hat_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_robe_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_leggings_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:sage_boots_healing"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"head",
|
||||
"chest",
|
||||
"legs",
|
||||
"feet",
|
||||
"head_fire",
|
||||
"chest_fire",
|
||||
"legs_fire",
|
||||
"feet_fire",
|
||||
"head_ice",
|
||||
"chest_ice",
|
||||
"legs_ice",
|
||||
"feet_ice",
|
||||
"head_lightning",
|
||||
"chest_lightning",
|
||||
"legs_lightning",
|
||||
"feet_lightning",
|
||||
"head_necromancy",
|
||||
"chest_necromancy",
|
||||
"legs_necromancy",
|
||||
"feet_necromancy",
|
||||
"head_earth",
|
||||
"chest_earth",
|
||||
"legs_earth",
|
||||
"feet_earth",
|
||||
"head_sorcery",
|
||||
"chest_sorcery",
|
||||
"legs_sorcery",
|
||||
"feet_sorcery",
|
||||
"head_healing",
|
||||
"chest_healing",
|
||||
"legs_healing",
|
||||
"feet_healing"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,309 @@
|
||||
{
|
||||
"display": {
|
||||
"title": {
|
||||
"translate": "advancement.ebwizardry:warlock"
|
||||
},
|
||||
"description": {
|
||||
"translate": "advancement.ebwizardry:warlock.desc"
|
||||
},
|
||||
"icon": {
|
||||
"item": "ebwizardry:warlock_hood"
|
||||
},
|
||||
"frame": "goal"
|
||||
},
|
||||
"parent": "ebwizardry:armour_set",
|
||||
"criteria": {
|
||||
"head": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_fire": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_fire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_ice": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_ice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_lightning": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_lightning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_necromancy": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_necromancy"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_earth": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_earth"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_sorcery": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_sorcery"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_hood_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"chest_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_robe_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legs_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_leggings_healing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feet_healing": {
|
||||
"trigger": "ebwizardry:arcane_workbench",
|
||||
"conditions": {
|
||||
"item": {
|
||||
"item": "ebwizardry:warlock_boots_healing"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"head",
|
||||
"chest",
|
||||
"legs",
|
||||
"feet",
|
||||
"head_fire",
|
||||
"chest_fire",
|
||||
"legs_fire",
|
||||
"feet_fire",
|
||||
"head_ice",
|
||||
"chest_ice",
|
||||
"legs_ice",
|
||||
"feet_ice",
|
||||
"head_lightning",
|
||||
"chest_lightning",
|
||||
"legs_lightning",
|
||||
"feet_lightning",
|
||||
"head_necromancy",
|
||||
"chest_necromancy",
|
||||
"legs_necromancy",
|
||||
"feet_necromancy",
|
||||
"head_earth",
|
||||
"chest_earth",
|
||||
"legs_earth",
|
||||
"feet_earth",
|
||||
"head_sorcery",
|
||||
"chest_sorcery",
|
||||
"legs_sorcery",
|
||||
"feet_sorcery",
|
||||
"head_healing",
|
||||
"chest_healing",
|
||||
"legs_healing",
|
||||
"feet_healing"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -16,6 +16,8 @@ tile.ebwizardry\:runestone_pedestal.name=Runenstein Sockel
|
||||
tile.ebwizardry\:thorns.name=Dornen
|
||||
tile.ebwizardry\:obsidian_crust.name=Obsidian Kruste
|
||||
tile.ebwizardry\:dry_frosted_ice.name=Gefrohrenes Trockeneis
|
||||
tile.ebwizardry\:crystal_flower_pot.name=Blumentopf
|
||||
tile.ebwizardry\:permafrost.name=Permafrost
|
||||
|
||||
tile.ebwizardry\:magic_crystal_block.name=Kristallblock
|
||||
tile.ebwizardry\:fire_crystal_block.name=Block aus feurigem Kristall
|
||||
@@ -26,12 +28,37 @@ tile.ebwizardry\:earth_crystal_block.name=Block aus erdgebundenem Kristall
|
||||
tile.ebwizardry\:sorcery_crystal_block.name=Block des mystischen Kristall
|
||||
tile.ebwizardry\:healing_crystal_block.name=Block aus strahlendem Kristall
|
||||
|
||||
|
||||
tile.ebwizardry\:oak_gilded_wood.name=Vergoldetes Eichenholz
|
||||
tile.ebwizardry\:spruce_gilded_wood.name=Vergoldetes Fichtenholz
|
||||
tile.ebwizardry\:birch_gilded_wood.name=Vergoldetes Birkenholz
|
||||
tile.ebwizardry\:jungle_gilded_wood.name=Vergoldetes Jungelholz
|
||||
tile.ebwizardry\:acacia_gilded_wood.name=Vergoldetes Akazienholz
|
||||
tile.ebwizardry\:dark_oak_gilded_wood.name=Vergoldetes Schwarzeichenholz
|
||||
|
||||
tile.ebwizardry\:oak_bookshelf.name=Eichenbücherregal
|
||||
tile.ebwizardry\:spruce_bookshelf.name=Fichtenholz Bücherregal
|
||||
tile.ebwizardry\:birch_bookshelf.name=Brikenholz Bücherregal
|
||||
tile.ebwizardry\:jungle_bookshelf.name=Jungelholz Bücherregal
|
||||
tile.ebwizardry\:acacia_bookshelf.name=Akazienholz Bücherregal
|
||||
tile.ebwizardry\:dark_oak_bookshelf.name=Schwarzeichenholz Bücherregal
|
||||
|
||||
tile.ebwizardry\:oak_lectern.name=Eichenpult
|
||||
tile.ebwizardry\:spruce_lectern.name=Fichtenholz Pult
|
||||
tile.ebwizardry\:birch_lectern.name=Birkenholz Pult
|
||||
tile.ebwizardry\:jungle_lectern.name=Jungelholz Pult
|
||||
tile.ebwizardry\:acacia_lectern.name=Akazienholz Pult
|
||||
tile.ebwizardry\:dark_oak_lectern.name=Schwarzeichenholz Pult
|
||||
|
||||
tile.ebwizardry\:receptacle.name=Gefäß
|
||||
tile.ebwizardry\:imbuement_altar.name=Ermächtungsaltar
|
||||
|
||||
item.ebwizardry\:crystal_magic.name=Magischer Kristall
|
||||
item.ebwizardry\:crystal_fire.name=Feuriger Kristall
|
||||
item.ebwizardry\:crystal_ice.name=Eisiger Kristall
|
||||
item.ebwizardry\:crystal_lightning.name=Stürmischer Kristall
|
||||
item.ebwizardry\:crystal_necromancy.name=Dunkler Kristall
|
||||
item.ebwizardry\:crystal_earth.name=Erdgebundener Kristall
|
||||
item.ebwizardry\:crystal_earth.name=Erdkristall
|
||||
item.ebwizardry\:crystal_sorcery.name=Mystischer Kristall
|
||||
item.ebwizardry\:crystal_healing.name=Strahlender Kristall
|
||||
|
||||
@@ -51,7 +78,7 @@ item.ebwizardry\:wizard_handbook.desc=Von %1$s
|
||||
|
||||
item.ebwizardry\:wand.generic=Zauberstab
|
||||
|
||||
item.ebwizardry\:wand.buff=+%1$s %2$s Wirkung
|
||||
item.ebwizardry\:wand.buff=+%1$s%% %2$s Potenz
|
||||
item.ebwizardry\:wand.spell=Derzeitiger Zauber\: %1$s
|
||||
item.ebwizardry\:wand.mana=Mana\: %1$s/%2$s
|
||||
item.ebwizardry\:wand.progression=Verbesserung\: %1$s/%2$s
|
||||
@@ -112,18 +139,18 @@ item.ebwizardry\:astral_diamond.name=Astral-Diamant
|
||||
item.ebwizardry\:purifying_elixir.name=Reinigendes Elixier
|
||||
item.ebwizardry\:purifying_elixir.desc=Entfernt Flüche beim Konsumieren
|
||||
|
||||
item.ebwizardry\:storage_upgrade.name=Aufwertung des Manaspeichers
|
||||
item.ebwizardry\:siphon_upgrade.name=Aufwertung Blut - in - Mana
|
||||
item.ebwizardry\:condenser_upgrade.name=Aufwertung des regenerativen Mana
|
||||
item.ebwizardry\:range_upgrade.name=Aufwertung der Zauberreichweite
|
||||
item.ebwizardry\:duration_upgrade.name=Aufwertung der Effektdauer
|
||||
item.ebwizardry\:cooldown_upgrade.name=Aufwertung der Abklingzeiten
|
||||
item.ebwizardry\:blast_upgrade.name=Aufwertung der Wirkungsbereichgröße
|
||||
item.ebwizardry\:attunement_upgrade.name=Aufwertung der Zauber-Slots
|
||||
item.ebwizardry\:melee_upgrade.name=Aufwertung des Nahkampfes
|
||||
item.ebwizardry\:storage_upgrade.name=Manaspreicher Verbesserung
|
||||
item.ebwizardry\:siphon_upgrade.name=Manaentzugs Verbesserung
|
||||
item.ebwizardry\:condenser_upgrade.name=Manaregenerations Verbesserung
|
||||
item.ebwizardry\:range_upgrade.name=Zauberreichweiten Verbesserung
|
||||
item.ebwizardry\:duration_upgrade.name=Effektdauer Verbesserung
|
||||
item.ebwizardry\:cooldown_upgrade.name=Abklingzeiten Verbesserung
|
||||
item.ebwizardry\:blast_upgrade.name=Wirkungsbereichs Verbesserung
|
||||
item.ebwizardry\:attunement_upgrade.name=Zauber-Slot Verbesserung
|
||||
item.ebwizardry\:melee_upgrade.name=Nahkampfverbesserung
|
||||
|
||||
item.ebwizardry\:storage_upgrade.desc=Erhöht die maximale Mana - Anzahl
|
||||
item.ebwizardry\:siphon_upgrade.desc=Entzieht getöteten Lebewesen Mana das den Stab aufläd
|
||||
item.ebwizardry\:storage_upgrade.desc=Erhöht das maximale Mana.
|
||||
item.ebwizardry\:siphon_upgrade.desc=Entzieht getöteten Lebewesen Mana.
|
||||
item.ebwizardry\:condenser_upgrade.desc=Generiert langsarm Mana
|
||||
item.ebwizardry\:range_upgrade.desc=Erhöht die Reichweite von Projektilzaubern und Beschwörungen
|
||||
item.ebwizardry\:duration_upgrade.desc=Verlängert Effekte von Zaubern
|
||||
@@ -147,16 +174,18 @@ item.ebwizardry\:blank_scroll.name=Leere Schriftrolle
|
||||
item.ebwizardry\:scroll.generic=Schriftrolle
|
||||
item.ebwizardry\:scroll.name=Schriftrolle %1$s
|
||||
item.ebwizardry\:scroll.undiscovered.name=Schriftrolle "%1$s"
|
||||
item.ebwizardry\:identification_scroll.name=Schriftrolle der Enthüllung
|
||||
item.ebwizardry\:identification_scroll.desc=Erkennt ein unbekanntes Zauberbuch oder eine unbekannte Schriftrolle
|
||||
item.ebwizardry\:identification_scroll.nothing_to_identify=Nichts zu enthüllen!
|
||||
item.ebwizardry\:identification_scroll.name=Schriftrolle der Offenbarung
|
||||
item.ebwizardry\:identification_scroll.desc=Offenbart ein unbekanntes Zauberbuch oder eine unbekannte Schriftrolle
|
||||
item.ebwizardry\:identification_scroll.nothing_to_identify=Nichts zu Offenbaren!
|
||||
|
||||
item.ebwizardry\:armour_upgrade.name=Arkanes Schutzsiegel
|
||||
item.ebwizardry\:armour_upgrade.desc1=%1$sVerbessert jede Magierrüstung
|
||||
item.ebwizardry\:armour_upgrade.desc2=%1$sum sie %2$slegendär zu machen
|
||||
item.ebwizardry\:armour_upgrade.desc=%1$sVerbessert jede Magierrüstung
|
||||
item.ebwizardry\:armour_upgrade.desc_extended=%1$sum sie %2$slegendär zu machen
|
||||
|
||||
item.ebwizardry\:magic_silk.name=Magische Seide
|
||||
|
||||
item.ebwizardry\:spectral_dust.name=Spektraler Staub
|
||||
|
||||
item.ebwizardry\:wizard_armour.legendary=Legendär
|
||||
item.ebwizardry\:wizard_armour.buff=-%1$s %2$s Kosten
|
||||
item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s
|
||||
@@ -211,6 +240,8 @@ item.ebwizardry\:spectral_boots.name=Spektralschuhe
|
||||
|
||||
item.ebwizardry\:lightning_hammer.name=Blitzhammer
|
||||
|
||||
item.ebwizardry\:flamecatcher.name=Flammenfänger
|
||||
|
||||
item.ebwizardry\:ring_condensing.name=Ring der Managenerierung
|
||||
item.ebwizardry\:ring_condensing.desc=Regeneriert langsam Mana für alle Zauberstäbe in der Hotbar
|
||||
item.ebwizardry\:ring_siphoning.name=Ring der Konvertierung
|
||||
@@ -233,7 +264,7 @@ item.ebwizardry\:ring_arcane_frost.name=Ring des arkanen Frostes
|
||||
item.ebwizardry\:ring_arcane_frost.desc=Mit Eis getötete Lebewesen explodieren in Eissplitter
|
||||
item.ebwizardry\:ring_shattering.name=Ring der Zerbrechlichkeit
|
||||
item.ebwizardry\:ring_shattering.desc=Schlage Kreaturen die gerade Frostbiss haben, zersplittern manchmal direkt
|
||||
item.ebwizardry\:ring_lightning_melee.name=Ring der Lichtkette
|
||||
item.ebwizardry\:ring_lightning_melee.name=Ring der Blitzkette
|
||||
item.ebwizardry\:ring_lightning_melee.desc=Schlage eine Kreatur um nahe Kreaturen mit Blitzen abzuschießen
|
||||
item.ebwizardry\:ring_storm.name=Ring des aufziehenden Sturms
|
||||
item.ebwizardry\:ring_storm.desc=Während eines gewitters haben Blitzzauber kaum mehr Abklingzeit
|
||||
@@ -246,7 +277,7 @@ item.ebwizardry\:ring_soulbinding.desc=Kreaturen die du mit verbotenen Künsten
|
||||
item.ebwizardry\:ring_leeching.name=Ring des Blutsaugers
|
||||
item.ebwizardry\:ring_leeching.desc=Alle Zauber der verbotenen Kunst haben eine 30%% chance, Leben zu absorbieren
|
||||
item.ebwizardry\:ring_necromancy_melee.name=Ring der verbotenen Berührung
|
||||
item.ebwizardry\:ring_necromancy_melee.desc=Schlae eine Kreatur mit dem Zauberstab, um sie zu verdorren
|
||||
item.ebwizardry\:ring_necromancy_melee.desc=Schlage eine Kreatur mit dem Zauberstab, um sie zu verdorren
|
||||
item.ebwizardry\:ring_mind_control.name=Ring der Massenpsyche
|
||||
item.ebwizardry\:ring_mind_control.desc=Kreaturen unter Gedankenkontrolle haben die chance, andere Kreaturen in der Umgebung auch damit anzustecken
|
||||
item.ebwizardry\:ring_poison.name=Ring der Giftschlange
|
||||
@@ -308,27 +339,30 @@ item.ebwizardry\:amulet_resurrection.name=Amulett des Unsterblichen
|
||||
item.ebwizardry\:amulet_resurrection.desc=Der Totenbeschwören - Zauber kann von jenseits des Grabes an einem selbst angewendet werden
|
||||
item.ebwizardry\:amulet_auto_shield.name=Amulett von Hyeleth
|
||||
item.ebwizardry\:amulet_auto_shield.desc=Gewährt eine 25%% Chance, den Schild-Zauber für einige Sekunden auszulösen, wenn er an einen Zauberstab an Ihrem Hotbar gebunden ist
|
||||
item.ebwizardry\:amulet_absorption.name=Amulett der Gesundheit
|
||||
item.ebwizardry\:amulet_absorption.desc=Überheilung von Zaubern erschafft einen Absorbierungseffekt.
|
||||
|
||||
|
||||
item.ebwizardry\:charm_haggler.name=Zeichen des Wortgewandten
|
||||
item.ebwizardry\:charm_haggler.desc=Die Zauberer bieten garantiert jedes Mal ein neues Angebot an, wenn du mit ihnen handelst
|
||||
item.ebwizardry\:charm_experience_tome.name=Leitfaden des Fleißigen
|
||||
item.ebwizardry\:charm_experience_tome.desc=Erhöht die Geschwindigkeit, mit der Zauberstäbe Fortschritte erlangen, um 50%%
|
||||
item.ebwizardry\:charm_experience_tome.desc=Erhöht die Geschwindigkeit, mit Zauberstäben Fortschritte zu erlangen, um 50%%
|
||||
item.ebwizardry\:charm_auto_smelt.name=Das Zeichen des Metallurgen
|
||||
item.ebwizardry\:charm_auto_smelt.desc=Der Taschenofen löst sich automatisch aus, wenn er an einen Stab auf Ihrem Hotbar gebunden wird
|
||||
item.ebwizardry\:charm_auto_smelt.desc=Der Taschenofen-zauber löst automatisch aus, wenn er an einen Stab auf der Hotbar gebunden ist.
|
||||
item.ebwizardry\:charm_lava_walking.name=Eisiges Nether-Herz
|
||||
item.ebwizardry\:charm_lava_walking.desc=Schritte erstarren Lava zu einer Obsidiankruste
|
||||
item.ebwizardry\:charm_storm.name=Gewitterwolke in der Flasche
|
||||
item.ebwizardry\:charm_storm.desc=Beschwört einen aufziehenden Sturm
|
||||
item.ebwizardry\:charm_storm.desc=Der Wetteränderungszauber beschwört immer einen Sturm
|
||||
item.ebwizardry\:charm_minion_health.name=Zombiekopf aus Obsidian
|
||||
item.ebwizardry\:charm_minion_health.desc=Beschwörungen sind 25%% stärker
|
||||
item.ebwizardry\:charm_minion_health.desc=Beschworene Kreaturen sind 25%% stärker
|
||||
item.ebwizardry\:charm_minion_variants.name=Talisman der Transformation
|
||||
item.ebwizardry\:charm_minion_variants.desc=Beschworene Zombies und Skelette werden zu einer stärkeren Variante
|
||||
item.ebwizardry\:charm_flight.name=Käferflügel aus Smaragt
|
||||
item.ebwizardry\:charm_flight.desc=Fliegen und Gleiten sind um 50%% schneller
|
||||
item.ebwizardry\:charm_growth.name=Neid der Kristallblume
|
||||
item.ebwizardry\:charm_growth.desc=Die Wachstumsaura hat eine 35%% Chance, dass die Pflanzen sofort ausgewachsen sind
|
||||
item.ebwizardry\:charm_growth.desc=Die Wachstumsaura hat eine chance von 35%%, dass die Pflanzen sofort ausgewachsen sind
|
||||
item.ebwizardry\:charm_abseiling.name=Verzaubertes Seil
|
||||
item.ebwizardry\:charm_abseiling.desc=Drücke Shift während des Greifens um das Seil langsarm auszufahren
|
||||
item.ebwizardry\:charm_abseiling.desc=Drücke Shift während des Kletterrankengreifhaken-zaubers um das Seil langsarm auszufahren
|
||||
item.ebwizardry\:charm_silk_touch.name=Mondsteinkugel
|
||||
item.ebwizardry\:charm_silk_touch.desc=Blöcke, die mit dem Minenzauber abgebaut werden, werden Behutsam als sich selbst gedroppt
|
||||
item.ebwizardry\:charm_stop_time.name=Seltsame Taschenuhr
|
||||
@@ -340,6 +374,33 @@ item.ebwizardry\:charm_transportation.desc=Bis zu vier Steinkreise können bei d
|
||||
item.ebwizardry\:charm_feeding.name=Bodenlose Vorräte
|
||||
item.ebwizardry\:charm_feeding.desc=Hunger wiederherstellen wird sofort gewirkt, wenn der Stab sich mit dem Zauber in der Hotbar befindet
|
||||
|
||||
item.ebwizardry\:charm_sixth_sense.name=Pelz eines Schreckenwolfes
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Der Zauber "Sechster Sinn" verleiht farben entsprechend des Types.
|
||||
item.ebwizardry\:charm_black_hole.name=Opal der Leere
|
||||
item.ebwizardry\:charm_black_hole.desc=Schwarze Löcher saugen nun auch Blöcke ein und zerstören sie.
|
||||
item.ebwizardry\:charm_mount_teleporting.name=Spektrale Zügel
|
||||
item.ebwizardry\:charm_mount_teleporting.desc=Teleportierst du dich auf einem Reittier, Boot oder Lore wird es mit teleportiert.
|
||||
item.ebwizardry\:ring_meteor.name=Ring von Volthraa
|
||||
item.ebwizardry\:ring_meteor.desc=Meteore können wie ein Projektil verschossen werden, anstatt vom Himmel zu fallen.
|
||||
item.ebwizardry\:ring_stormcloud.name=Lokenzen's Ring
|
||||
item.ebwizardry\:ring_stormcloud.desc=Sturmwolken bewegen sich auf Ziele zu und halten bei treffer länger
|
||||
item.ebwizardry\:ring_evoker.name=Evoker's Ring
|
||||
item.ebwizardry\:ring_evoker.desc=Schleichen wärend du Fänge wirkst, erschafft einen Ring um den Zaubernden
|
||||
item.ebwizardry\:amulet_frost_warding.name=Amulett von Esundor
|
||||
item.ebwizardry\:amulet_frost_warding.desc=Gewährt einen Magischen Schutz, während du hinter einer Eiswand stehst.
|
||||
item.ebwizardry\:charm_spell_discovery.name=Archivars Monokel
|
||||
item.ebwizardry\:charm_spell_discovery.desc=Zauberbücher aus Schatzkisten werden mit höherer Chance welche sein, die dir noch unbekannt sind
|
||||
item.ebwizardry\:charm_move_speed.name=Icarus' Medallion
|
||||
item.ebwizardry\:charm_move_speed.desc=Bewege dich beim Zauberwirken nahezu normal schnell
|
||||
item.ebwizardry\:charm_undead_helmets.name=Verfluchter Helm
|
||||
item.ebwizardry\:charm_undead_helmets.desc=Beschworene Untote Kreaturen tragen nun einen Lederhelm gegen die Sonne
|
||||
item.ebwizardry\:charm_hunger_casting.name=Dämonisches Siegel
|
||||
item.ebwizardry\:charm_hunger_casting.desc=Es werden Hungerpunkte verwendet, solltest du kein Mana mehr haben
|
||||
|
||||
item.ebwizardry\:ruined_spell_book.name=Zerstörtes Zauberbuch
|
||||
item.ebwizardry\:ruined_spell_book.desc=Die Seiten dieses alten Zauberbuches sind auf unleserlichkeit zerstört. Dennoch ist eine leichte menge an Magie zu spüren. Vielleicht gibt es einen Weg diese zu entfesseln...
|
||||
|
||||
|
||||
item.charge_status.full=Voll
|
||||
item.charge_status.almost_full=Fast Voll
|
||||
item.charge_status.mostly_full=Größtenteils Voll
|
||||
@@ -348,6 +409,126 @@ item.charge_status.mostly_empty=Bald Leer
|
||||
item.charge_status.almost_empty=Fast Leer
|
||||
item.charge_status.empty=Leer
|
||||
|
||||
|
||||
item.banner.wizardry_fire.black=Schwarzes Feuer Emblem
|
||||
item.banner.wizardry_fire.red=Rotes Feuer Emblem
|
||||
item.banner.wizardry_fire.green=Grünes Feuer Emblem
|
||||
item.banner.wizardry_fire.brown=Braunes Feuer Emblem
|
||||
item.banner.wizardry_fire.blue=Blaues Feuer Emblem
|
||||
item.banner.wizardry_fire.purple=Lilanes Feuer Emblem
|
||||
item.banner.wizardry_fire.cyan=Türkises Feuer Emblem
|
||||
item.banner.wizardry_fire.silver=Hellgrau Feuer Emblem
|
||||
item.banner.wizardry_fire.gray=Graues Feuer Emblem
|
||||
item.banner.wizardry_fire.pink=Rosanes Feuer Emblem
|
||||
item.banner.wizardry_fire.lime=Limonen Grünes Feuer Emblem
|
||||
item.banner.wizardry_fire.yellow=Gelbes Feuer Emblem
|
||||
item.banner.wizardry_fire.lightBlue=Hellblaues Feuer Emblem
|
||||
item.banner.wizardry_fire.magenta=Magenta farbenes Feuer Emblem
|
||||
item.banner.wizardry_fire.orange=Orange farbenes Feuer Emblem
|
||||
item.banner.wizardry_fire.white=Weißes Feuer Emblem
|
||||
|
||||
item.banner.wizardry_ice.black=Schwarzes Eis Emblem
|
||||
item.banner.wizardry_ice.red=Red Eis Emblem
|
||||
item.banner.wizardry_ice.green=Grünes Eis Emblem
|
||||
item.banner.wizardry_ice.brown=Braunes Eis Emblem
|
||||
item.banner.wizardry_ice.blue=Blaues Eis Emblem
|
||||
item.banner.wizardry_ice.purple=Lilanes Eis Emblem
|
||||
item.banner.wizardry_ice.cyan=Türkises Eis Emblem
|
||||
item.banner.wizardry_ice.silver=Hellgrau Eis Emblem
|
||||
item.banner.wizardry_ice.gray=Graues Eis Emblem
|
||||
item.banner.wizardry_ice.pink=Rosanes Eis Emblem
|
||||
item.banner.wizardry_ice.lime=Limonen Grünes Eis Emblem
|
||||
item.banner.wizardry_ice.yellow=Gelbes Eis Emblem
|
||||
item.banner.wizardry_ice.lightBlue=Hellblaues Eis Emblem
|
||||
item.banner.wizardry_ice.magenta=Magenta farbenes Eis Emblem
|
||||
item.banner.wizardry_ice.orange=Orange farbenes Eis Emblem
|
||||
item.banner.wizardry_ice.white=Weißes Eis Emblem
|
||||
|
||||
item.banner.wizardry_lightning.black=Schwarzes Sturm Emblem
|
||||
item.banner.wizardry_lightning.red=Red Sturm Emblem
|
||||
item.banner.wizardry_lightning.green=Grünes Sturm Emblem
|
||||
item.banner.wizardry_lightning.brown=Braunes Sturm Emblem
|
||||
item.banner.wizardry_lightning.blue=Blaues Sturm Emblem
|
||||
item.banner.wizardry_lightning.purple=Lilanes Sturm Emblem
|
||||
item.banner.wizardry_lightning.cyan=Türkises Sturm Emblem
|
||||
item.banner.wizardry_lightning.silver=Hellgrau Sturm Emblem
|
||||
item.banner.wizardry_lightning.gray=Graues Sturm Emblem
|
||||
item.banner.wizardry_lightning.pink=Rosanes Sturm Emblem
|
||||
item.banner.wizardry_lightning.lime=Limonen Grünes Sturm Emblem
|
||||
item.banner.wizardry_lightning.yellow=Gelbes Sturm Emblem
|
||||
item.banner.wizardry_lightning.lightBlue=Hellblaues Sturm Emblem
|
||||
item.banner.wizardry_lightning.magenta=Magenta farbenes Sturm Emblem
|
||||
item.banner.wizardry_lightning.orange=Orange farbenes Sturm Emblem
|
||||
item.banner.wizardry_lightning.white=Weißes Sturm Emblem
|
||||
|
||||
item.banner.wizardry_necromancy.black=Schwarzes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.red=Red Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.green=Grünes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.brown=Braunes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.blue=Blaues Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.purple=Lilanes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.cyan=Türkises Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.silver=Hellgrau Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.gray=Graues Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.pink=Rosanes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.lime=Limonen Grünes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.yellow=Gelbes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.lightBlue=Hellblaues Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.magenta=Magenta farbenes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.orange=Orange farbenes Dunkles Emblem
|
||||
item.banner.wizardry_necromancy.white=Weißes Dunkles Emblem
|
||||
|
||||
item.banner.wizardry_earth.black=Schwarzes Erd Emblem
|
||||
item.banner.wizardry_earth.red=Red Erd Emblem
|
||||
item.banner.wizardry_earth.green=Grünes Erd Emblem
|
||||
item.banner.wizardry_earth.brown=Braunes Erd Emblem
|
||||
item.banner.wizardry_earth.blue=Blaues Erd Emblem
|
||||
item.banner.wizardry_earth.purple=Lilanes Erd Emblem
|
||||
item.banner.wizardry_earth.cyan=Türkises Erd Emblem
|
||||
item.banner.wizardry_earth.silver=Hellgrau Erd Emblem
|
||||
item.banner.wizardry_earth.gray=Graues Erd Emblem
|
||||
item.banner.wizardry_earth.pink=Rosanes Erd Emblem
|
||||
item.banner.wizardry_earth.lime=Limonen Grünes Erd Emblem
|
||||
item.banner.wizardry_earth.yellow=Gelbes Erd Emblem
|
||||
item.banner.wizardry_earth.lightBlue=Hellblaues Erd Emblem
|
||||
item.banner.wizardry_earth.magenta=Magenta farbenes Erd Emblem
|
||||
item.banner.wizardry_earth.orange=Orange farbenes Erd Emblem
|
||||
item.banner.wizardry_earth.white=Weißes Erd Emblem
|
||||
|
||||
item.banner.wizardry_sorcery.black=Schwarzes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.red=Red Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.green=Grünes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.brown=Braunes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.blue=Blaues Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.purple=Lilanes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.cyan=Türkises Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.silver=Hellgrau Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.gray=Graues Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.pink=Rosanes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.lime=Limonen Grünes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.yellow=Gelbes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.lightBlue=Hellblaues Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.magenta=Magenta farbenes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.orange=Orange farbenes Mystisches Emblem
|
||||
item.banner.wizardry_sorcery.white=Weißes Mystisches Emblem
|
||||
|
||||
item.banner.wizardry_healing.black=Schwarzes Heilig Emblem
|
||||
item.banner.wizardry_healing.red=Red Heilig Emblem
|
||||
item.banner.wizardry_healing.green=Grünes Heilig Emblem
|
||||
item.banner.wizardry_healing.brown=Braunes Heilig Emblem
|
||||
item.banner.wizardry_healing.blue=Blaues Heilig Emblem
|
||||
item.banner.wizardry_healing.purple=Lilanes Heilig Emblem
|
||||
item.banner.wizardry_healing.cyan=Türkises Heilig Emblem
|
||||
item.banner.wizardry_healing.silver=Hellgrau Heilig Emblem
|
||||
item.banner.wizardry_healing.gray=Graues Heilig Emblem
|
||||
item.banner.wizardry_healing.pink=Rosanes Heilig Emblem
|
||||
item.banner.wizardry_healing.lime=Limonen Grünes Heilig Emblem
|
||||
item.banner.wizardry_healing.yellow=Gelbes Heilig Emblem
|
||||
item.banner.wizardry_healing.lightBlue=Hellblaues Heilig Emblem
|
||||
item.banner.wizardry_healing.magenta=Magenta farbenes Heilig Emblem
|
||||
item.banner.wizardry_healing.orange=Orange farbenes Heilig Emblem
|
||||
item.banner.wizardry_healing.white=Weißes Heilig Emblem
|
||||
|
||||
entity.ebwizardry\:summonedcreature.nameplate=%1$s von %2$s
|
||||
entity.ebwizardry\:summonedcreature.nameplate_fallback=Erscheinung von %1$s
|
||||
|
||||
@@ -384,7 +565,7 @@ entity.ebwizardry\:blaze_minion.name=Lohe
|
||||
entity.ebwizardry\:wither_skeleton_minion.name=Witherskelett
|
||||
entity.ebwizardry\:ice_wraith.name=Eis-Geist
|
||||
entity.ebwizardry\:lightning_wraith.name=Donner-Geist
|
||||
entity.ebwizardry\:shadow_wraith.name=Verbotener-Geist
|
||||
entity.ebwizardry\:shadow_wraith.name=Dunkler Geist
|
||||
entity.ebwizardry\:spirit_wolf.name=Geisterwolf
|
||||
entity.ebwizardry\:spirit_horse.name=Gersterpferd
|
||||
entity.ebwizardry\:ice_giant.name=Eis-Gigant
|
||||
@@ -396,6 +577,7 @@ entity.ebwizardry\:storm_elemental.name=Sturm-Elementar
|
||||
entity.ebwizardry\:evil_wizard.name=Zauberer
|
||||
entity.ebwizardry\:decoy.name=Trugbild
|
||||
entity.ebwizardry\:vex_minion.name=Vex
|
||||
entity.ebwizardry\:remnant.name=Magiespur
|
||||
|
||||
entity.ebwizardry\:magic_missile.name=Magie
|
||||
entity.ebwizardry\:arc.name=Magie
|
||||
@@ -436,6 +618,11 @@ entity.ebwizardry\:ring_of_fire.name=Feuerring
|
||||
entity.ebwizardry\:earthquake.name=Erdbeben
|
||||
entity.ebwizardry\:hailstorm.name=Hagelsturm
|
||||
entity.ebwizardry\:lightning_pulse.name=Schockimpuls
|
||||
entity.ebwizardry\:stormcloud.name=Sturmwolke
|
||||
entity.ebwizardry\:zombie_spawner.name=Zombie Spawner
|
||||
entity.ebwizardry\:boulder.name=Felsbrocken
|
||||
entity.ebwizardry\:radiant_totem.name=Strahlendes Totem
|
||||
entity.ebwizardry\:withering_totem.name=Verwitterungs Totem
|
||||
|
||||
itemGroup.ebwizardry=Zauberei
|
||||
itemGroup.ebwizardryspells=Zauber
|
||||
@@ -458,14 +645,14 @@ advancement.ebwizardry\:master=Arkarner Meister
|
||||
advancement.ebwizardry\:master.desc=Beschaffe einen Meisterzauberstab
|
||||
advancement.ebwizardry\:max_out_wand=Voll Ausgerüstet
|
||||
advancement.ebwizardry\:max_out_wand.desc=Stoße an die Grenze von Aufwertungen auf einen Stab
|
||||
advancement.ebwizardry\:all_spells=Ein Magier für aller Art
|
||||
advancement.ebwizardry\:all_spells.desc=Jeden einzelnen Zauberspruch im Spiel nutzen
|
||||
advancement.ebwizardry\:all_spells=Ein Magier für alle fälle
|
||||
advancement.ebwizardry\:all_spells.desc=Jeden einzelnen Zauberspruch im Spiel gewirkt
|
||||
|
||||
advancement.ebwizardry\:wizard_tower=Wer wohnt hier?
|
||||
advancement.ebwizardry\:wizard_tower.desc=Besuche einen Magierturm
|
||||
advancement.ebwizardry\:wizard_trade=Magischer Handel
|
||||
advancement.ebwizardry\:wizard_trade.desc=Kaufe ein Angebot eines Zauberers
|
||||
advancement.ebwizardry\:anger_wizard=Du wirst es bereuen
|
||||
advancement.ebwizardry\:anger_wizard=Das wirst du bereuen
|
||||
advancement.ebwizardry\:anger_wizard.desc=Mache einen Magier zornig
|
||||
advancement.ebwizardry\:defeat_evil_wizard=Rechtschaffend
|
||||
advancement.ebwizardry\:defeat_evil_wizard.desc=Bezwinge einen bösen Magier
|
||||
@@ -475,26 +662,39 @@ advancement.ebwizardry\:buy_master_spell.desc=Kaufe einen Zauber von einem Magie
|
||||
advancement.ebwizardry\:discover_spell=So lange bis es klappt
|
||||
advancement.ebwizardry\:discover_spell.desc=Enthülle einen unbekannten Zauberspruch, indem du ihn wirkst und siehst, was passiert
|
||||
advancement.ebwizardry\:identify_spell=Arkane Wertschätzung
|
||||
advancement.ebwizardry\:identify_spell.desc=Finden Sie eine zuverlässigere Methode zur Definition von Zaubersprüchen
|
||||
advancement.ebwizardry\:identify_spell.desc=Finde eine zuverlässigere Methode zur Definition von Zaubersprüchen
|
||||
advancement.ebwizardry\:spell_failure=Das ist nach hinten losgegangen
|
||||
advancement.ebwizardry\:spell_failure.desc=Finde auf die harte Tour heraus, wie Zaubersprüche schief gehen können
|
||||
advancement.ebwizardry\:discover_master_spell=Die Gefahr auswürfeln
|
||||
advancement.ebwizardry\:discover_master_spell.desc=Erfolgreiche enthüllung eines Meisterzaubers durch probieren
|
||||
|
||||
advancement.ebwizardry\:visit_shrine=Erweckt
|
||||
advancement.ebwizardry\:visit_shrine.desc=Betreten Sie einen Schrein und erwecken Sie seine alte Magie
|
||||
advancement.ebwizardry\:visit_shrine.desc=Betrete einen Schrein und erwecke seine alte Magie
|
||||
advancement.ebwizardry\:artefact=Ein vergessenes Relikt
|
||||
advancement.ebwizardry\:artefact.desc=Heben Sie die schützenden Verzauberungen von einem Schrein auf und beanspruchen Sie die Schätze darin
|
||||
advancement.ebwizardry\:artefact.desc=Hebe die schützenden Verzauberungen von einem Schrein auf und beanspruche die Schätze darin
|
||||
advancement.ebwizardry\:all_artefacts=Ein wahres Museum
|
||||
advancement.ebwizardry\:all_artefacts.desc=Sammeln Sie alle Ringe, Amulette und Talismane
|
||||
advancement.ebwizardry\:all_artefacts.desc=Sammel alle Ringe, Amulette und Talismane
|
||||
|
||||
advancement.ebwizardry\:defeat_remnant=Entstaube deine Pfeile
|
||||
advancement.ebwizardry\:defeat_remnant.desc=Töte "Magiespuren" und erhalte ihren Sprektralen Staub
|
||||
advancement.ebwizardry\:find_library_ruins=Ich glaube meine Bücher sind veraltet
|
||||
advancement.ebwizardry\:find_library_ruins.desc=Finde eine vergessene Bibliothek
|
||||
advancement.ebwizardry\:restore_imbuement_altar=So gut wie neu
|
||||
advancement.ebwizardry\:restore_imbuement_altar.desc=Stelle einen Ermächtungsaltar zu seinem alten Glanz wiederher.
|
||||
advancement.ebwizardry\:create_elemental_armour=Kleidung wechseln
|
||||
advancement.ebwizardry\:create_elemental_armour.desc=Erfülle eine Magierrüstung mit Spektralem Staub
|
||||
advancement.ebwizardry\:restore_ruined_book=Arkaner Archeologe
|
||||
advancement.ebwizardry\:restore_ruined_book.desc=Stelle ein Zerstörtes Zauberbuch an einem Ermächtigungsaltar wiederher.
|
||||
advancement.ebwizardry\:craft_lectern=Arkane Encyclopaedia
|
||||
advancement.ebwizardry\:craft_lectern.desc=Baue ein Buchpult um übersicht von deinen Zaubern zu haben.
|
||||
|
||||
advancement.ebwizardry\:armour_set=Jetzt bist du ein wahrer Magier!
|
||||
advancement.ebwizardry\:armour_set.desc=Fertigen und rüsten Sie einen vollständigen Satz Zauberer-Rüstungen!
|
||||
advancement.ebwizardry\:armour_set.desc=Fertige und rüste einen vollständigen Satz Zauberer-Rüstung aus!
|
||||
advancement.ebwizardry\:legendary=Legendär!
|
||||
advancement.ebwizardry\:legendary.desc=Erhalten Sie ein Stück der legendären Zauberer-Rüstung
|
||||
advancement.ebwizardry\:legendary.desc=Erhalte ein Stück der legendären Zauberer-Rüstung
|
||||
|
||||
advancement.ebwizardry\:enchant_scroll=Abpausen auf Pergament
|
||||
advancement.ebwizardry\:enchant_scroll.desc=Fertigen Sie eine leere Schriftrolle an und verzaubern Sie sie mit einem Zauberspruch an einer arkanen Werkbank
|
||||
advancement.ebwizardry\:enchant_scroll.desc=Fertige eine leere Schriftrolle an und verzauber Sie sie mit einem Zauberspruch an einer arkanen Werkbank
|
||||
|
||||
handbook.toast.title=Neuer Abschnitt des Handbuchs freigeschaltet!
|
||||
|
||||
@@ -503,25 +703,43 @@ container.ebwizardry\:arcane_workbench.apply=Fertigen
|
||||
container.ebwizardry\:arcane_workbench.mana=Mana\:
|
||||
container.ebwizardry\:arcane_workbench.upgrades=Bestehende Aufwertungen\:
|
||||
|
||||
gui.ebwizardry\:spell_book.tier=Rang: %s
|
||||
gui.ebwizardry\:spell_book.element=Element: %s
|
||||
gui.ebwizardry\:spell_book.element_undiscovered=Element: ?
|
||||
gui.ebwizardry\:spell_book.mana_cost=Manakosten: %s
|
||||
gui.ebwizardry\:spell_book.mana_cost_continuous=Manakosten: %s/sekunde
|
||||
gui.ebwizardry\:spell_book.mana_cost_undiscovered=Manakosten: ?
|
||||
|
||||
gui.ebwizardry\:lectern.title=Zaubersuche
|
||||
|
||||
|
||||
container.ebwizardry\:arcane_workbench.bookshelves=Bücherregale
|
||||
container.ebwizardry\:arcane_workbench.sort_tier=Sortieren nach Rang
|
||||
container.ebwizardry\:arcane_workbench.sort_element=Sortieren nach Element
|
||||
container.ebwizardry\:arcane_workbench.sort_alphabetical=Alphabethisch sortieren
|
||||
container.ebwizardry\:arcane_workbench.search_tooltip=%1$sSuch Tipp\n\ntier=%2$s, %1$st=%2$s: Suche Rang\n%1$selement=%2$s, %1$se=%2$s: Suche Element\n%1$stype=%2$s, %1$sp=%2$s: Suche Zaubertyp\n%1$sdiscovered=true/false%2$s, %1$sd=t/f%2$s: Suche nur Endeckte oder unentdecke\n%1$smodid=%2$s, %1$sm=%2$s: Suche nach mod IDs\n\nTrenne mehrere suchanfragen mit %1$s,%2$s\nTrenne mehrere Kriterien mit %1$s;
|
||||
|
||||
container.ebwizardry\:bookshelf=Bücherregal
|
||||
|
||||
tier.novice=Novize
|
||||
tier.apprentice=Lehrling
|
||||
tier.advanced=Höherer
|
||||
tier.advanced=Geselle
|
||||
tier.master=Meister
|
||||
|
||||
element.magic=Keines
|
||||
element.fire=Feuer
|
||||
element.ice=Eis
|
||||
element.lightning=Blitz
|
||||
element.necromancy=Verboten
|
||||
element.earth=Erdgebunden
|
||||
element.necromancy=Dunkelheit
|
||||
element.earth=Erd
|
||||
element.sorcery=Mystisch
|
||||
element.healing=Heilend
|
||||
element.healing=Heil
|
||||
|
||||
element.magic.wizard=Zauberer
|
||||
element.fire.wizard=Pyromant
|
||||
element.ice.wizard=Eismagier
|
||||
element.lightning.wizard=Blitzmagier
|
||||
element.necromancy.wizard=Magier des Verbotenen
|
||||
element.necromancy.wizard=Magier der Dunkelheit
|
||||
element.earth.wizard=Erdgebundener Magier
|
||||
element.sorcery.wizard=Mystischer Magier
|
||||
element.healing.wizard=Heiler
|
||||
@@ -529,7 +747,7 @@ element.healing.wizard=Heiler
|
||||
spelltype.attack=Offensiv
|
||||
spelltype.defence=Deffensiv
|
||||
spelltype.utility=Werkzeug
|
||||
spelltype.minion=Erscheinung
|
||||
spelltype.minion=Diener
|
||||
spelltype.buff=Effekt
|
||||
spelltype.construct=Gebilde
|
||||
spelltype.projectile=Projektil
|
||||
@@ -546,9 +764,12 @@ spell.ebwizardry\:arcane_lock=Arkarnes Schloss
|
||||
spell.ebwizardry\:arrow_rain=Pfeilhagel
|
||||
spell.ebwizardry\:banish=Bannen
|
||||
spell.ebwizardry\:black_hole=Schwarzes Loch
|
||||
spell.ebwizardry\:blink=Augenzwinker
|
||||
spell.ebwizardry\:blink=Blinzeln
|
||||
spell.ebwizardry\:blinding_flash=Blendendes Licht
|
||||
spell.ebwizardry\:blizzard=Eissturm
|
||||
spell.ebwizardry\:boulder=Felsbrocken
|
||||
spell.ebwizardry\:bubble=Luftblase
|
||||
spell.ebwizardry\:celestial_smite=Himmlisches Richten
|
||||
spell.ebwizardry\:chain_lightning=Kettenblitz
|
||||
spell.ebwizardry\:charge=Statisch Voranstürmen
|
||||
spell.ebwizardry\:clairvoyance=Echo der Vergangenheit
|
||||
@@ -564,7 +785,7 @@ spell.ebwizardry\:cure_effects=Reinigung der Effekte
|
||||
spell.ebwizardry\:curse_of_enfeeblement=Fluch der Entkräftung
|
||||
spell.ebwizardry\:curse_of_soulbinding=Fluch des Seelengebundenen
|
||||
spell.ebwizardry\:curse_of_undeath=Fluch der Untoten
|
||||
spell.ebwizardry\:darkness_orb=Sphere des Verbotenen
|
||||
spell.ebwizardry\:darkness_orb=Sphere der Dunkelheit
|
||||
spell.ebwizardry\:darkvision=Nachtsicht
|
||||
spell.ebwizardry\:dart=Dart
|
||||
spell.ebwizardry\:decay=Verderben
|
||||
@@ -578,27 +799,30 @@ spell.ebwizardry\:earthquake=Erdbeben
|
||||
spell.ebwizardry\:empowering_presence=Magisch-Ermächtigende Präsenz
|
||||
spell.ebwizardry\:entrapment=Sphere des verbotenen Aufstiegs
|
||||
spell.ebwizardry\:evade=Umgehen
|
||||
spell.ebwizardry\:fangs=Fänge
|
||||
spell.ebwizardry\:fireball=Feuerball
|
||||
spell.ebwizardry\:firebolt=Feuerbolzen
|
||||
spell.ebwizardry\:firebolt=Feuerblitz
|
||||
spell.ebwizardry\:firebomb=Feuerbombe
|
||||
spell.ebwizardry\:fire_resistance=Feuerresistenz
|
||||
spell.ebwizardry\:fire_sigil=Feuriges Siegel
|
||||
spell.ebwizardry\:fireskin=Feuerhaut
|
||||
spell.ebwizardry\:fire_breath=Flammender Atem
|
||||
spell.ebwizardry\:flamecatcher=Flammenfänger
|
||||
spell.ebwizardry\:flame_ray=Flammenstrahl
|
||||
spell.ebwizardry\:flaming_axe=Brennende Axt
|
||||
spell.ebwizardry\:flaming_weapon=Brennende Waffe
|
||||
spell.ebwizardry\:flight=Fliegen
|
||||
spell.ebwizardry\:font_of_mana=Das Wesen des Mana
|
||||
spell.ebwizardry\:font_of_vitality=Das Wesen der Vitalität
|
||||
spell.ebwizardry\:font_of_mana=Brunnen des Manas
|
||||
spell.ebwizardry\:font_of_vitality=Brunnen der Vitalität
|
||||
spell.ebwizardry\:force_arrow=Kraftfeldpfeil
|
||||
spell.ebwizardry\:forcefield=Kraftfeld
|
||||
spell.ebwizardry\:force_orb=Kraftfeldkugel
|
||||
spell.ebwizardry\:forests_curse=Wälderfluch
|
||||
spell.ebwizardry\:forests_curse=Fluch des Waldes
|
||||
spell.ebwizardry\:forest_of_thorns=Wald aus Dornen
|
||||
spell.ebwizardry\:freeze=Erfrieren
|
||||
spell.ebwizardry\:freezing_weapon=Eisige Waffe
|
||||
spell.ebwizardry\:frost_axe=Eisige Axt
|
||||
spell.ebwizardry\:frost_barrier=Frostbarriere
|
||||
spell.ebwizardry\:frost_ray=Eisstrahl
|
||||
spell.ebwizardry\:frost_sigil=Eisiges Siegel
|
||||
spell.ebwizardry\:frost_step=Frostschritte
|
||||
@@ -608,58 +832,63 @@ spell.ebwizardry\:greater_fireball=Größerer Feuerball
|
||||
spell.ebwizardry\:greater_heal=Große Heilung
|
||||
spell.ebwizardry\:greater_telekinesis=Mächtige Telekinese
|
||||
spell.ebwizardry\:greater_ward=Mächtiges Kraftschild
|
||||
spell.ebwizardry\:group_heal=Gruppenheilung
|
||||
spell.ebwizardry\:group_heal=Massenheilung
|
||||
spell.ebwizardry\:growth_aura=Wachstumsaura
|
||||
spell.ebwizardry\:guardian_beam=Strahl des Wächters
|
||||
spell.ebwizardry\:hailstorm=Hagelsturm
|
||||
spell.ebwizardry\:heal=Heilen
|
||||
spell.ebwizardry\:heal_ally=Verbündeten Heilen
|
||||
spell.ebwizardry\:healing_aura=Heilende Aura
|
||||
spell.ebwizardry\:homing_spark=Zielender Funke
|
||||
spell.ebwizardry\:homing_spark=Verfolgender Funke
|
||||
spell.ebwizardry\:iceball=Eisball
|
||||
spell.ebwizardry\:ice_age=Eiszeit
|
||||
spell.ebwizardry\:ice_charge=Aufgeladenes Eis
|
||||
spell.ebwizardry\:ice_lance=Eis Lanze
|
||||
spell.ebwizardry\:ice_shard=Eis Splitter
|
||||
spell.ebwizardry\:ice_charge=Eisladung
|
||||
spell.ebwizardry\:ice_lance=Eislanze
|
||||
spell.ebwizardry\:ice_shard=Eissplitter
|
||||
spell.ebwizardry\:ice_shroud=Eisige Haut
|
||||
spell.ebwizardry\:ice_spikes=Eisstachel
|
||||
spell.ebwizardry\:ice_statue=Eisblock
|
||||
spell.ebwizardry\:ignite=Entzünden
|
||||
spell.ebwizardry\:imbue_weapon=Perfekter Schliff der Waffe
|
||||
spell.ebwizardry\:imbue_weapon=Waffe ermächtigen
|
||||
spell.ebwizardry\:intimidate=Einschüchtern
|
||||
spell.ebwizardry\:invigorating_presence=Ermächtigende Präsenz
|
||||
spell.ebwizardry\:invisibility=Unsichtbarkeit
|
||||
spell.ebwizardry\:invoke_weather=Sturm Heraufziehen
|
||||
spell.ebwizardry\:invoke_weather=Wetteränderung
|
||||
spell.ebwizardry\:ironflesh=Eisenhaut
|
||||
spell.ebwizardry\:leap=Sprung
|
||||
spell.ebwizardry\:levitation=Aufsteigende Winde
|
||||
spell.ebwizardry\:life_drain=Blut Saugen
|
||||
spell.ebwizardry\:levitation=Schweben
|
||||
spell.ebwizardry\:life_drain=Blut saugen
|
||||
spell.ebwizardry\:light=Lichtkugel
|
||||
spell.ebwizardry\:lightning_arrow=Blitzpfeil
|
||||
spell.ebwizardry\:lightning_bolt=Blitzeinschlag
|
||||
spell.ebwizardry\:lightning_disc=Lichtscheibe
|
||||
spell.ebwizardry\:lightning_disc=Blitzscheibe
|
||||
spell.ebwizardry\:lightning_hammer=Blitzhammer
|
||||
spell.ebwizardry\:lightning_pulse=Blitzimpuls
|
||||
spell.ebwizardry\:lightning_ray=Lichtbogenstrahl
|
||||
spell.ebwizardry\:lightning_ray=Blitzstrahl
|
||||
spell.ebwizardry\:lightning_sigil=Zappendes Siegel
|
||||
spell.ebwizardry\:lightning_web=Blitzvernetzung
|
||||
spell.ebwizardry\:lightning_web=Blitznetz
|
||||
spell.ebwizardry\:magic_missile=Magisches Geschoss
|
||||
spell.ebwizardry\:mark_sacrifice=Opfer Markieren
|
||||
spell.ebwizardry\:metamorphosis=Metamorphose
|
||||
spell.ebwizardry\:meteor=Meteor
|
||||
spell.ebwizardry\:mind_control=Gedankenkontrolle
|
||||
spell.ebwizardry\:mind_trick=Gedanken-Nebel
|
||||
spell.ebwizardry\:mine=Zerbrechlichkeit von Materie
|
||||
spell.ebwizardry\:mirage=Spiegel
|
||||
spell.ebwizardry\:muffle=Leise Schritte
|
||||
spell.ebwizardry\:none=[Leerer Platz]
|
||||
spell.ebwizardry\:oakflesh=Eichenhaut
|
||||
spell.ebwizardry\:paralysis=Lähmung
|
||||
spell.ebwizardry\:permafrost=Permafrost
|
||||
spell.ebwizardry\:petrify=Versteinern
|
||||
spell.ebwizardry\:phase_step=Geister-Gänge
|
||||
spell.ebwizardry\:phase_step=Phasenschritt
|
||||
spell.ebwizardry\:plague_of_darkness=Pest der Dunkelheit
|
||||
spell.ebwizardry\:pocket_furnace=Taschenofen
|
||||
spell.ebwizardry\:pocket_workbench=Taschenwerkbank
|
||||
spell.ebwizardry\:poison=Gift
|
||||
spell.ebwizardry\:poison_bomb=Giftbombe
|
||||
spell.ebwizardry\:possession=Besitz
|
||||
spell.ebwizardry\:possession=Besitz ergreifen
|
||||
spell.ebwizardry\:radiant_totem=Strahlendes Totem
|
||||
spell.ebwizardry\:ray_of_purification=Strahl der Läuterung
|
||||
spell.ebwizardry\:remove_curse=Fluch entfernen
|
||||
spell.ebwizardry\:replenish_hunger=Kleinen Hunger stillen
|
||||
@@ -667,7 +896,7 @@ spell.ebwizardry\:resurrection=Wiederbelebung
|
||||
spell.ebwizardry\:reversal=Umkehrung
|
||||
spell.ebwizardry\:ring_of_fire=Feuerring
|
||||
spell.ebwizardry\:satiety=Sättigung
|
||||
spell.ebwizardry\:shadow_ward=Verbotener Schild-Zauber
|
||||
spell.ebwizardry\:shadow_ward=Dunkler Schild-Zauber
|
||||
spell.ebwizardry\:shield=Schild-Zauber
|
||||
spell.ebwizardry\:shockwave=Schockwelle
|
||||
spell.ebwizardry\:shulker_bullet=Shulker-Schuss
|
||||
@@ -683,13 +912,14 @@ spell.ebwizardry\:spectral_pathway=Spektraler Pfad
|
||||
spell.ebwizardry\:speed_time=Zeit verschnellern
|
||||
spell.ebwizardry\:spider_swarm=Spinnen-Schwarm
|
||||
spell.ebwizardry\:static_aura=Statisch geladene Aura
|
||||
spell.ebwizardry\:stormcloud=Sturmwolke
|
||||
spell.ebwizardry\:summon_blaze=Beschwöre Lohe
|
||||
spell.ebwizardry\:summon_ice_giant=Beschwöre Eis-Gigant
|
||||
spell.ebwizardry\:summon_ice_wraith=Beschwöre Eis-Geist
|
||||
spell.ebwizardry\:summon_iron_golem=Beschwöre Eisen Golem
|
||||
spell.ebwizardry\:summon_iron_golem=Beschwöre Eisengolem
|
||||
spell.ebwizardry\:summon_lightning_wraith=Beschwöre Blitz-Geist
|
||||
spell.ebwizardry\:summon_phoenix=Beschwöre Phönix
|
||||
spell.ebwizardry\:summon_shadow_wraith=Beschwöre Verbotenen-Geist
|
||||
spell.ebwizardry\:summon_shadow_wraith=Beschwöre Dunkler Geist
|
||||
spell.ebwizardry\:summon_skeleton=Beschwöre Skelett
|
||||
spell.ebwizardry\:summon_skeleton_legion=Beschwöre Skelett-Legion
|
||||
spell.ebwizardry\:summon_snow_golem=Beschwöre Schneemann
|
||||
@@ -700,11 +930,11 @@ spell.ebwizardry\:summon_wither_skeleton=Beschwöre Witherskelett
|
||||
spell.ebwizardry\:summon_zombie=Beschwöre Zombie
|
||||
spell.ebwizardry\:telekinesis=Telekinese
|
||||
spell.ebwizardry\:thunderbolt=Blitzeinschlag
|
||||
spell.ebwizardry\:thunderstorm=Mächtige Blitz-Adern
|
||||
spell.ebwizardry\:thunderstorm=Donnersturm
|
||||
spell.ebwizardry\:tornado=Tornado
|
||||
spell.ebwizardry\:transience=Vergangenheit
|
||||
spell.ebwizardry\:transience=Phasenverschieben
|
||||
spell.ebwizardry\:transportation=Transportation
|
||||
spell.ebwizardry\:vanishing_box=Fluktuirender Endspeicher
|
||||
spell.ebwizardry\:vanishing_box=Geisterhafte Kiste
|
||||
spell.ebwizardry\:vex_swarm=Vex Schwarm
|
||||
spell.ebwizardry\:wall_of_frost=Wand des Eises
|
||||
spell.ebwizardry\:ward=Schutz
|
||||
@@ -712,6 +942,8 @@ spell.ebwizardry\:water_breathing=Wasseratmung
|
||||
spell.ebwizardry\:whirlwind=Wirbelwind
|
||||
spell.ebwizardry\:wither=Wither
|
||||
spell.ebwizardry\:wither_skull=Wither Schädel
|
||||
spell.ebwizardry\:withering_totem=Verberbtes Totem
|
||||
spell.ebwizardry\:zombie_apocalypse=Zombie Apocalypse
|
||||
|
||||
spell.ebwizardry\:agility.desc=Gewährt dem Magier eine höhere Bewegungsgeschwindigkeit und eine größere Sprunghöhe für 30 Sekunden.
|
||||
spell.ebwizardry\:arc.desc=Feuert einen Blitzfunken auf das Ziel ab.
|
||||
@@ -720,20 +952,23 @@ spell.ebwizardry\:arcane_lock.desc=Erzeugt eine undurchdringliche Kraftbarriere
|
||||
spell.ebwizardry\:arrow_rain.desc="Schützen, Feuert!"
|
||||
spell.ebwizardry\:banish.desc=Teleportiert das Ziel gegen seinen Willen an einen zufälligen Ort innerhalb einer bestimmten Reichweite.
|
||||
spell.ebwizardry\:black_hole.desc=Zerreißen Sie die Realität.
|
||||
spell.ebwizardry\:blinding_flash.desc=Erzeugt ein starkes helles Licht, das alle in der nähe kurz blendet.
|
||||
spell.ebwizardry\:blink.desc=Teleportiert den Magier über eine kurze Distanz dorthin, wohin er gerade zeigt.
|
||||
spell.ebwizardry\:blizzard.desc=Schafft eine Zone mit wirbelndem eisigen Wind, der alles, was sich darin verfängt, verlangsamt und ständig beschädigt. Der Magier ist gegen den Schaden immun, wird aber dennoch verlangsamt.
|
||||
spell.ebwizardry\:bubble.desc=Feuert einen Blasenstrahl ab, der alles, was er trifft, hilflos nach oben schweben lässt. Das Ziel fällt nach einer bestimmten Zeit oder wenn es beschädigt ist.
|
||||
spell.ebwizardry\:blizzard.desc=Schafft eine Zone mit wirbelndem eisigen Wind, der alles, was sich darin verfängt, verlangsamt und ständig schaden zufügt. Der Zaubernde ist gegen den Schaden immun, wird aber dennoch verlangsamt.
|
||||
spell.ebwizardry\:boulder.desc="Lasset die Welt meine Bowlingbahn sein. Meine Gegner die Pins!"
|
||||
spell.ebwizardry\:bubble.desc=Feuert einen Blasenstrahl ab, der alles, was er trifft, hilflos nach oben schweben lässt. Das Ziel fällt nach einer bestimmten Zeit oder wenn es schaden bekommt.
|
||||
spell.ebwizardry\:celestial_smite.desc="Oh Heilige Kräfte,Ich rufe euch nun! Zerreiße dieses Land der Dunkelheit!"
|
||||
spell.ebwizardry\:chain_lightning.desc=Feuert einen Blitzfunken auf das Ziel ab, das sich dann bis zu zweimal an weitere Ziele kettet.
|
||||
spell.ebwizardry\:charge.desc=Veranlasst den Magier, schnell in die Richtung geschleudert, in die er schaut, wobei er alles, was sich ihm in den Weg stellt, beschädigt und zurückwirft.
|
||||
spell.ebwizardry\:clairvoyance.desc=Enthüllt den Weg zu einem gespeicherten Ort. Wenn dieser Zauberspruch ausgewählt ist, klicken Sie mit der rechten Maustaste auf einen Block, um den Ort festzulegen. Sprechen Sie diesen Zauber normal, um den Pfad aufzudecken. Der Pfad wird nach 90 Sekunden verblassen.
|
||||
spell.ebwizardry\:cobwebs.desc=Erzeugt Spinnennetze, auf die Sie zeigen, die die Bewegung der Kreaturen, die sich unter ihnen befinden, stark behindern. Die Spinnennetze verschwinden nach 20 Sekunden oder wenn sie gebrochen sind.
|
||||
spell.ebwizardry\:combustion_rune.desc=Platziert eine magische Landmine auf dem Boden, auf den Sie zeigen, die beim Betreten explodiert.
|
||||
spell.ebwizardry\:charge.desc=Veranlasst den Magier, schnell in die Richtung geschleudert zu werden, in die er schaut, wobei er alles, was sich ihm in den Weg stellt, beschädigt und zurückwirft.
|
||||
spell.ebwizardry\:clairvoyance.desc=Enthüllt den Weg zu einem gespeicherten Ort. Wenn dieser Zauberspruch ausgewählt ist, klicken sie mit der rechten Maustaste auf einen Block, um den Ort festzulegen. Sprechen Sie diesen Zauber normal, um den Pfad aufzudecken. Der Pfad wird nach 90 Sekunden verblassen.
|
||||
spell.ebwizardry\:cobwebs.desc=Erzeugt Spinnennetze, die die Bewegung der Kreaturen, die sich unter ihnen befinden, stark behindern. Die Spinnennetze verschwinden nach 20 Sekunden oder wenn sie gebrochen sind.
|
||||
spell.ebwizardry\:combustion_rune.desc=Platziert eine magische Landmine auf dem Boden, die beim Betreten explodiert.
|
||||
spell.ebwizardry\:conjure_armour.desc=Erzeugt eine spektrale Rüstung um den Zaubernden, die den gleichen Schutz wie eine eiserne Rüstung bietet. Die Panzerung hält 60 Sekunden lang an. Der Zaubernde darf keine Rüstung anhaben.
|
||||
spell.ebwizardry\:conjure_block.desc=Beschwört einen spektralen Block, auf den Ihr zeigt. Der Spektralblock verschwindet nach 45 Sekunden, oder man kann ihn durch erneutes Zaubern mit diesem Zauberspruch aufheben.
|
||||
spell.ebwizardry\:conjure_bow.desc=Erstellt einen Spektralbogen mit unbegrenzten Pfeilen, der 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:conjure_pickaxe.desc=Erstellt eine Spektralspitzhacke von gleicher Stärke wie eine Eisenspitzhacke, die 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:conjure_sword.desc=Erstellt ein Spektralschwert von gleicher Stärke wie ein Eisenschwert, das 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:containment.desc=Wurzelt das Ziel für 20 Sekunden an.
|
||||
spell.ebwizardry\:conjure_block.desc=Beschwört einen spektralen Block. Der Spektralblock verschwindet nach 45 Sekunden, oder man kann ihn durch erneutes Zaubern mit diesem Zauberspruch aufheben.
|
||||
spell.ebwizardry\:conjure_bow.desc=Beschwört einen Spektralbogen mit unbegrenzten Pfeilen, der 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:conjure_pickaxe.desc=Beschwört eine Spektrale Eisenspitzhacke, die 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:conjure_sword.desc=Beschwört ein Spektrales Eisenschwert, das 30 Sekunden lang hält.
|
||||
spell.ebwizardry\:containment.desc=Wurzelt das Ziel für 20 Sekunden fest.
|
||||
spell.ebwizardry\:cure_effects.desc=Entfernt alle Effekte, die den Zaubernden derzeit beeinflussen, ob gut oder schlecht.
|
||||
spell.ebwizardry\:curse_of_enfeeblement.desc="Er war plötzlich geschwächt, als ob ihm das Leben aus seinem Inneren gerissen worden wäre. - Zeugnis der einzigen Person, von der bekannt ist, dass sie einem Mitglied des Seelenwandererkults begegnet ist und überlebt hat.
|
||||
spell.ebwizardry\:curse_of_soulbinding.desc=Verursacht, dass die Seele des Ziels untrennbar mit der des Magiers verbunden ist, was bedeutet, dass der gesamte dem Magier zugefügte Schaden auch dem Opfer zugefügt wird. Dauert so lange, bis entweder das Opfer oder der Magier stirbt.
|
||||
@@ -741,26 +976,30 @@ spell.ebwizardry\:curse_of_undeath.desc=Verflucht das Ziel mit Untotsein, was da
|
||||
spell.ebwizardry\:darkness_orb.desc=Feuert sich langsam bewegende dunkle Energie in die Richtung, in die Sie zeigen, die verdorrt, was immer sie trifft.
|
||||
spell.ebwizardry\:darkvision.desc=Erlaubt dem Magier eine Nachtsicht für 45 Sekunden.
|
||||
spell.ebwizardry\:dart.desc=Feuert einen Dart in die Richtung, in die Sie zeigen, was sein Ziel beschädigt und schwächt.
|
||||
spell.ebwizardry\:decay.desc=Erzeugt am Boden einen Zerfallsfleck, der jedes Lebewesen, das ihn berührt, infiziert, wodurch im Laufe der Zeit Schaden verursacht werden und sich der Zerfall überall, wo es läuft, weiter ausbreitet.
|
||||
spell.ebwizardry\:decay.desc=Erzeugt am Boden einen Zerfallsfleck, der jedes Lebewesen, das ihn berührt, infiziert, wodurch im Laufe der Zeit Schaden verursacht wird und sich der Zerfall überall, wo es läuft, weiter ausbreitet.
|
||||
spell.ebwizardry\:decoy.desc=Erstellt einen illusionären Klon des Magiers, der Mobs dazu bringt, ihn stattdessen anzugreifen. Der Köder wird nach 30 Sekunden verschwinden.
|
||||
spell.ebwizardry\:detonate.desc=Verursacht eine Explosion an der Stelle, auf die Sie zeigen, und schädigt alle Lebewesen in der Nähe - einschließlich des Magiers, wenn sie zu nah sind.
|
||||
spell.ebwizardry\:detonate.desc=Verursacht eine Explosion an der Stelle, auf die Sie zeigen, und schädigt alle Lebewesen in der Nähe - einschließlich des Magiers, wenn er zu nah sind.
|
||||
spell.ebwizardry\:diamondflesh.desc="Deine Pfeile sind kein Hinderniss für mich!"
|
||||
spell.ebwizardry\:disintegration.desc=Schießt einen kräftigen Flammenstoß aus kurzer Entfernung vor sich her, der die Ziele beim Töten in brennende Glut explodieren lässt. Geschöpfe, die auf die Glut treten, werden in Brand gesetzt.
|
||||
spell.ebwizardry\:divination.desc=Führt den Magier zu nahe gelegenen Erzen und Ressourcen. Die Wirksamkeit erhöht die Chance, wertvollere Erze zu finden.
|
||||
spell.ebwizardry\:dragon_fireball.desc=Wirft einen Enderdrachen-Feuerball in die von Ihnen angegebene Richtung ab, der beim Aufprall verweilende Giftwolken freisetzt.
|
||||
spell.ebwizardry\:dragon_fireball.desc=Schießt einen Enderdrachen-Feuerball in die von Ihnen angegebene Richtung ab, der beim Aufprall verweilende Giftwolken freisetzt.
|
||||
spell.ebwizardry\:earthquake.desc=Ein wahrer Meister der Erdmagie kann Berge versetzen.
|
||||
spell.ebwizardry\:empowering_presence.desc=Gewährt dem Zaubernden und Verbündeten in der Nähe 30 Sekunden lang erhöhten magischen Schaden.
|
||||
spell.ebwizardry\:entrapment.desc=Fängt das Ziel in einer Sphäre der Dunkelheit ein, die es hilflos nach oben zieht und es ständig schadet.
|
||||
spell.ebwizardry\:enrage.desc=Lässt nahe Kreaturen in einen Wutanfall verfallen und zwingt sie unter allen umständen euch anzugreifen.
|
||||
spell.ebwizardry\:entrapment.desc=Fängt das Ziel in einer Sphäre aus Dunkelheit ein, die es hilflos nach oben zieht und ihm Schaden zufügt.
|
||||
spell.ebwizardry\:evade.desc=Veranlasst den Magier, schnell zur Seite zu springen, um eingehenden Angriffen auszuweichen.
|
||||
spell.ebwizardry\:fangs.desc=Beschwört eine reihe an Fängen die aus dem Boden ragen und alles beißen das sich über ihnen befindet.
|
||||
spell.ebwizardry\:fireball.desc=Schießt einen Feuerball in die von Ihnen angegebene Richtung ab.
|
||||
spell.ebwizardry\:firebolt.desc=Schießt einen Feuerstrahl kurzer Entfernung vor sich her.
|
||||
spell.ebwizardry\:firebomb.desc=Lässt eine Feuerbombe in die Richtung, in die Sie zeigen, die beim Aufprall explodiert und dabei Ziele in Brand setzt los.
|
||||
spell.ebwizardry\:firebolt.desc=Schießt einen Feuerstrahl kurzer Reichweite vor sich her.
|
||||
spell.ebwizardry\:firebomb.desc=Feuert eine Feuerbombe in die Richtung, in die Sie zeigen, die beim Aufprall explodiert und dabei Ziele in Brand setzt.
|
||||
spell.ebwizardry\:fire_resistance.desc=Gewährt dem Magier Feuerresistenz für 30 Sekunden.
|
||||
spell.ebwizardry\:fire_sigil.desc=Stellt eine magische Feuerfalle auf den Boden, die die Kreatur, die sie auslöst, schadet und in Brand setzt.
|
||||
spell.ebwizardry\:fire_sigil.desc=Beschwört eine magische Feuerfalle auf dem Boden, die die Kreatur, die sie auslöst, schadet und in Brand setzt.
|
||||
spell.ebwizardry\:fireskin.desc=Verhüllt den Magier für 30 Sekunden in Flammen und lässt alles, was ihn angreift, in Flammen aufgehen.
|
||||
spell.ebwizardry\:fire_breath.desc="Ich bin der Drache."
|
||||
spell.ebwizardry\:flame_ray.desc=Erzeugt einen Flammenstrom in die Richtung, in die Sie zeigen, der ein Feuer entfacht und kontinuierlich Ziele schadet.
|
||||
spell.ebwizardry\:flaming_axe.desc=Erstellt eine flammende Axt, die den Feind beim Treffer in Brand setzt. Hält 30 Sekunden lang an.
|
||||
spell.ebwizardry\:firestorm.desc="Läutere das Land und läutere den Boden!\nBäume sollen brennen und Flüsse brodeln!\nEntfache das Holz und verbenne den Stein!\nIm Feuer sollen alle nur noch Asche sein!"
|
||||
spell.ebwizardry\:fire_breath.desc="Ich bin ein Drache!"
|
||||
spell.ebwizardry\:flamecatcher.desc=Die Legende spricht vom Flammenfänger, die ihre Kraft in der Not den Sterblichen Feuermagiern bringt.
|
||||
spell.ebwizardry\:flame_ray.desc=Erzeugt einen Flammensturm in die Richtung, in die Sie zeigen, der ein Feuer entfacht und kontinuierlich Ziele schadet.
|
||||
spell.ebwizardry\:flaming_axe.desc=Beschwört eine flammende Axt, die den Feind beim Treffer in Brand setzt. Hält 30 Sekunden lang an.
|
||||
spell.ebwizardry\:flaming_weapon.desc=Er verleiht der ersten Waffe auf dem Hotbar des Magiers vorübergehend die Kraft der Flamme, wodurch sie ihre Opfer in Brand setzt. Die Magie lässt nach 45 Sekunden nach.
|
||||
spell.ebwizardry\:flight.desc=Aufsteigen wie ein Adler.
|
||||
spell.ebwizardry\:font_of_mana.desc="Wir sind von einer intensiven magischen Energie erfüllt, die aus dem Zentrum des..." - Auszug aus dem Tagebuch eines vergessenen Magiers; der Rest der Seite ist weggebrannt.
|
||||
@@ -769,36 +1008,38 @@ spell.ebwizardry\:force_arrow.desc=Schießt einen Kraftpfeil in die Richtung, in
|
||||
spell.ebwizardry\:forcefield.desc=Erzeugt ein Kraftfeld um den Magier, das Kreaturen abstößt und Geschosse ablenkt.
|
||||
spell.ebwizardry\:force_orb.desc=Erzeugt ein Kraftfeld, das beim Aufprall nahegelegene Lebewesen schädigt und abstößt.
|
||||
spell.ebwizardry\:forests_curse.desc="Wie könnt ihr es wagen, meinen Wald zu betreten?"
|
||||
spell.ebwizardry\:forest_of_thorns.desc=Inmitten des Waldes liegt eine verborgene Lichtung,\nIn der Lichtung vollführt ein Zauberer,\nMagical Künste einer unerzählten Ordnung,\nDeep im Dornenwald.
|
||||
spell.ebwizardry\:freeze.desc=Friert das Ziel für 10 Sekunden ein. Es friert auch Wasser ein und erzeugt Schnee auf dem Boden.
|
||||
spell.ebwizardry\:forest_of_thorns.desc=Inmitten des Waldes liegt eine verborgene Lichtung,\nIn der Lichtung vollführt ein Zauberer,\nMagische Künste einer unerzählten Ordnung,\nTief im Dornenwald.
|
||||
spell.ebwizardry\:freeze.desc=Friert das Ziel für 10 Sekunden ein. Dieser Zauber friert auch Wasser ein und erzeugt Schnee auf dem Boden.
|
||||
spell.ebwizardry\:freezing_weapon.desc=Er verleiht der ersten Waffe auf der Hotbar des Magiers vorübergehend die Kraft des Frostes, wodurch sie ihre Opfer einfrieren lässt. Die Magie lässt nach 45 Sekunden nach.
|
||||
spell.ebwizardry\:frost_axe.desc=Erstellt eine eingefrorene Axt, die Feinde beim Schlagen einfriert. Hält 30 Sekunden lang an.
|
||||
spell.ebwizardry\:frost_axe.desc=Beschwört eine eingefrorene Axt, die Feinde beim Schlagen einfriert. Hält 30 Sekunden lang an.
|
||||
spell.ebwizardry\:frost_barrier.desc=Erschafft eine Barrikade aus Eis vor dem Zaubernden. Die Barrikade hält 20 Sekunden lang an.
|
||||
spell.ebwizardry\:frost_ray.desc=Erzeugt einen Froststrahl in die Richtung, in die Sie zeigen, der die Ziele verlangsamt und kontinuierlich schadet.
|
||||
spell.ebwizardry\:frost_sigil.desc=Stellt eine magische Eisfalle auf den Boden, die das Wesen, das sie auslöst, schädigt und einfriert.
|
||||
spell.ebwizardry\:frost_sigil.desc=Beschwört eine magische Eisfalle auf den Boden, die das Wesen, das sie auslöst, schädigt und einfriert.
|
||||
spell.ebwizardry\:frost_step.desc=Erlaubt es dem Magier, das Wasser beim Gehen 30 Sekunden lang einzufrieren.
|
||||
spell.ebwizardry\:grapple.desc=Schießt eine magische Ranke, die es dem Magier erlaubt, sich an Blöcken festzuhalten oder Wesen einzuholen. Lassen Sie rechte Maustaste los, um den Block oder das Objekt loszulassen.
|
||||
spell.ebwizardry\:grapple.desc=Schießt eine magische Ranke, die es dem Magier erlaubt, sich an Blöcken festzuhalten oder Ziele heranzuziehen. Lassen Sie rechte Maustaste los, um den Block oder das Objekt loszulassen.
|
||||
spell.ebwizardry\:glide.desc=Erlaubt es dem Magier, nach unten zu gleiten, während er sich in der Luft befindet und den Stab gedrückt hält.
|
||||
spell.ebwizardry\:greater_fireball.desc=Schießt einen großen Feuerball in die von Ihnen angegebene Richtung ab, der beim Aufprall explodiert.
|
||||
spell.ebwizardry\:greater_heal.desc=Heilt den Magier um 4 Herzen.
|
||||
spell.ebwizardry\:greater_telekinesis.desc=Erlaubt es dem Magier, einen Block oder eine Kreatur aufzuheben und sie in der Luft zu halten, solange die Taste gedrückt wird. Schleichen, während man einen Block oder eine Kreatur hält, wirft ihn eine kurze Distanz.
|
||||
spell.ebwizardry\:greater_ward.desc=Gewährt dem Zaubernden eine starke Abschirmwirkung, die den einfallenden magischen Schaden 30 Sekunden lang stark reduziert.
|
||||
spell.ebwizardry\:group_heal.desc=Heilt den Zaubernden und alle in der Nähe befindlichen Verbündeten und beschworenen Kreaturen um 3 Herzen.
|
||||
spell.ebwizardry\:growth_aura.desc=Pflanzen werden in der Nähe des Magiers erzeugt. Wächst auch hohes Gras und Blumen auf Gras.
|
||||
spell.ebwizardry\:growth_aura.desc=Pflanzen blühen in der Nähe des Magiers auf. Lässt auch hohes Gras und Blumen auf Grasblöcken blühen.
|
||||
spell.ebwizardry\:guardian_beam.desc=Feuert einen Strahl des Wächters der dem Ziel Schaden zufügt und ihm dem Atem nimmt, falls er unterwasser ist.
|
||||
spell.ebwizardry\:hailstorm.desc=Es war während des großen Winters des dritten Zeitalters, als die Eismagier ihre wahre Macht entdeckten.
|
||||
spell.ebwizardry\:heal.desc=Heilt den Magier um 2 Herzen.
|
||||
spell.ebwizardry\:heal_ally.desc=Heilt as Ziel um 2 und ein halbes Herzen.
|
||||
spell.ebwizardry\:healing_aura.desc=Schafft eine Zone der heilenden Energie, die die Gesundheit jedes Verbündeten in ihrem Inneren regeneriert. Jeder Untote innerhalb der heilenden Aura wird Schaden nehmen.
|
||||
spell.ebwizardry\:homing_spark.desc=Erzeugt einen schwebenden Funken, der sich auf die Feinde zubewegt.
|
||||
spell.ebwizardry\:iceball.desc=Startet einen Eisball in die von Ihnen angegebene Richtung.
|
||||
spell.ebwizardry\:iceball.desc=Feuert einen Eisball in die von Ihnen angegebene Richtung.
|
||||
spell.ebwizardry\:ice_age.desc="Du sollst für die Ewigkeit eingefroren sein!"
|
||||
spell.ebwizardry\:ice_charge.desc=Schießt eine Eisladung ab, die beim Aufprall explodiert, wobei nahe stehende Lebewesen eingefroren werden und Scherben in alle Richtungen freigesetzt werden.
|
||||
spell.ebwizardry\:ice_lance.desc=Feuert einen großen Eisspeer in die Richtung, in die Sie zeigen, der übermäßig in die Ziele eindringt und sie dabei schadet und einfriert.
|
||||
spell.ebwizardry\:ice_lance.desc=Feuert einen großen Eisspeer in die Richtung, in die Sie zeigen, der Kräftig in die Ziele eindringt und sie dabei beschädigt und einfriert.
|
||||
spell.ebwizardry\:ice_shard.desc=Feuert einen Eissplitter in die Richtung, in die Sie zeigen, was die Ziele beim Treffer beschädigt und verlangsamt.
|
||||
spell.ebwizardry\:ice_shroud.desc=Erzeugt 30 Sekunden lang einen Kälteschleier um den Magier, wodurch alles, was ihn angreift, eingefroren wird.
|
||||
spell.ebwizardry\:ice_spikes.desc=Verursacht rasiermesserscharfe Eisspitzen, die an der Stelle, auf die Sie zeigen, vom Boden aufsteigen und alle Kreaturen aufspießen, die dort sind.
|
||||
spell.ebwizardry\:ice_statue.desc=Friert das Ziel für 20 Sekunden oder bis zum Ausbruch ein. Das Ziel kann sich im gefrorenen Zustand nicht bewegen oder etwas tun, ist aber auch gegen jeglichen Schaden unempfindlich.
|
||||
spell.ebwizardry\:ignite.desc=Setzt das Ziel 10 Sekunden lang in Brand. Funktioniert auch wie ein Feuerstein und Stahl.
|
||||
spell.ebwizardry\:imbue_weapon.desc=Verzaubert vorübergehend die erste Waffe auf dem Hotbar des Magiers mit Magie, wodurch sie stärker wird. Die Magie lässt nach 45 Sekunden nach.
|
||||
spell.ebwizardry\:ice_statue.desc=Friert das Ziel für 20 Sekunden oder bis zum Ausbruch ein. Das Ziel kann sich im gefrorenen Zustand nicht bewegen oder etwas tun, ist aber auch gegen jeglichen Schaden Immun.
|
||||
spell.ebwizardry\:ignite.desc=Setzt das Ziel 10 Sekunden lang in Brand. Der Zauber funktioniert auch wie ein Feuerzeug.
|
||||
spell.ebwizardry\:imbue_weapon.desc=Verzaubert vorübergehend die erste Waffe auf der Hotbar des Magiers mit Magie, wodurch sie stärker wird. Die Magie lässt nach 45 Sekunden nach.
|
||||
spell.ebwizardry\:intimidate.desc=Emittiert ein einschüchterndes Brüllen, das nahegelegene Kreaturen in Angst weglaufen lässt. Von Angst befallene Kreaturen erholen sich nach 30 Sekunden.
|
||||
spell.ebwizardry\:invigorating_presence.desc=Gewährt dem Magier und allen Verbündeten in der Nähe 45 Sekunden lang erhöhte Stärke.
|
||||
spell.ebwizardry\:invisibility.desc=Macht den Magier 30 Sekunden lang unsichtbar.
|
||||
@@ -810,30 +1051,34 @@ spell.ebwizardry\:life_drain.desc=Erzeugt einen Strahl Energie in die von Ihnen
|
||||
spell.ebwizardry\:light.desc=Erzeugt einen magischen Lichtpunkt, der die Umgebung beleuchtet. Hält 30 Sekunden lang an.
|
||||
spell.ebwizardry\:lightning_arrow.desc=Schießt einen Blitzpfeil in die Richtung, in die Sie zeigen.
|
||||
spell.ebwizardry\:lightning_bolt.desc=Verursacht einen Blitz, der dort einschlägt, wo Sie hinzielen.
|
||||
spell.ebwizardry\:lightning_disc.desc=Sendet eine Blitzscheibe, die in die Richtung fliegt, in die Sie zeigen, und die Ziele sucht.
|
||||
spell.ebwizardry\:lightning_disc.desc=Beschwört eine Blitzscheibe, die in die Richtung fliegt, in die Sie zeigen. Sie verfolgt Gegner
|
||||
spell.ebwizardry\:lightning_hammer.desc="Ich zerschlage euch mit dem Zorn des Himmels!"
|
||||
spell.ebwizardry\:lightning_pulse.desc=Lädt den Boden um den Magier herum mit Blitzen auf, wodurch nahe stehende Lebewesen schaden nehmen und abgestoßen werden.
|
||||
spell.ebwizardry\:lightning_ray.desc=Erzeugt einen Blitzstrom in die Richtung, in die Sie zeigen, der ständig Ziele beschädigt.
|
||||
spell.ebwizardry\:lightning_sigil.desc=Stellt eine magische Blitzfalle auf den Boden, die die auslösende Kreatur schädigt und kettet Blitze an andere Kreaturen in der Nähe.
|
||||
spell.ebwizardry\:lightning_sigil.desc=Beschwört eine magische Blitzfalle auf den Boden, die die auslösende Kreatur schädigt und Kettenblitze an andere Kreaturen in der Nähe schießt.
|
||||
spell.ebwizardry\:lightning_web.desc="Fokus. Lenken Sie den Sturm in Ihrem Geist durch Ihren Zauberstab und entfesseln Sie seine Wut."
|
||||
spell.ebwizardry\:magic_missile.desc=Feuert magische Energie in die Richtung, in die Sie zeigen.
|
||||
spell.ebwizardry\:mark_sacrifice.desc=Zeichnet das Ziel als ein Heiliges Opfer. Der nächste Magische angriff verursacht 60%% mehr Schaden bei einem gezeichneten Ziel. Dieser Zauber ist Stappelbar.
|
||||
spell.ebwizardry\:metamorphosis.desc=Ändert das Ziel in eine andere Form. Funktioniert nur bei einigen Kreaturen wie zum Beispiel einem Schwein.
|
||||
spell.ebwizardry\:meteor.desc=Manche Zauberer wollen die Welt einfach nur brennen sehen...
|
||||
spell.ebwizardry\:mind_control.desc=Übernimmt 30 Sekunden lang die Kontrolle über den Verstand des Ziels, so dass es die Seite wechselt und stattdessen für den Magier kämpft. Wirkt nicht auf Kreaturen, die zu willensstark sind.
|
||||
spell.ebwizardry\:mind_trick.desc=Verwirrt und desorientiert das Ziel 15 Sekunden lang, so dass es nicht mehr in der Lage ist, effektiv anzugreifen. Der Effekt wird beendet, wenn das Ziel Schaden nimmt.
|
||||
spell.ebwizardry\:mine.desc=Zerbricht den Block, auf den der Magier schaut. Hohe stufen erlauben es, härtere Blöcke zu brechen.
|
||||
spell.ebwizardry\:mirage.desc=Erschafft eine Magische Kopie vom Zaubernden, die sich alle paar sekunden woanders hin teleportiert. Die Kopie bleibt 20 Sekunden bestehen.
|
||||
spell.ebwizardry\:muffle.desc=Dämpft 30 Sekunden lang alle Geräusche, die der Magier macht. Wenn sie gedämpft sind, können die Mobs Sie nur erkennen, wenn sie auf Sie schauen.
|
||||
spell.ebwizardry\:none.desc=Um ein Zauberbuch mit dem /give command zu bekommen, nutze id\: /give [player] ebwizardry\:spell_book 1 [spell id] (Wenn Sie dieses Buch in einer Truhe gefunden haben, hat irgendein anderer Mod die Sache versaut).
|
||||
spell.ebwizardry\:none.desc=Um ein Zauberbuch mit dem /give command zu bekommen, nutze id\: /give [player] ebwizardry\:spell_book 1 [spell id] (Wenn Sie dieses Buch in einer Truhe gefunden haben, hat irgendeine andere Mod die Sache versaut).
|
||||
spell.ebwizardry\:oakflesh.desc=Verbessert die Schadensresistenz des Magiers für 30 Sekunden.
|
||||
spell.ebwizardry\:permafrost.desc=Sprüht eine schicht aus rutschigen Eis auf den Boden. Die Starke kälte lässt kreaturen darauf langsam Schaden nehmen.
|
||||
spell.ebwizardry\:paralysis.desc=Erzeugt einen starken Blitz, der Ziele für 5 Sekunden lahmlegt. Gelähmte Kreaturen können sich nicht bewegen und werden trotzdem Schaden nehmen - aber zu viel wird die Kreatur aus der Lähmung reißen.
|
||||
spell.ebwizardry\:petrify.desc=Verwandelt das Ziel in Stein, bis es ausgebrochen wird, mit der Chance, dass es ausbricht, wenn es dunkel ist. Das Ziel kann sich nicht bewegen oder etwas tun, wenn es versteinert ist, aber es ist auch unempfindlich gegen jeglichen Schaden.
|
||||
spell.ebwizardry\:petrify.desc=Verwandelt das Ziel in Stein, mit der Chance, dass es ausbricht. Die Chance steigt wenn es dunkel ist. Das Ziel kann sich nicht bewegen oder etwas tun, wenn es versteinert ist, aber es ist auch unempfindlich gegen jeglichen Schaden.
|
||||
spell.ebwizardry\:phase_step.desc=Teleportiert den Magier eine kurze Strecke vor sich her, auch durch Wände hindurch. Reichweiten-Upgrades erhöhen die Wandstärke, durch die Sie teleportieren können.
|
||||
spell.ebwizardry\:plague_of_darkness.desc=Die Dunkelheit wird sie alle verzehren...
|
||||
spell.ebwizardry\:pocket_furnace.desc=Schmelzt bis zu 5 schmelzbare Gegenstände aus dem Inventar. Die Gegenstände auf der Hotbar werden zuerst eingeschmolzen.
|
||||
spell.ebwizardry\:pocket_workbench.desc=Erlaubt dem Magier, Gegenstände wie an einer Werkbank herzustellen.
|
||||
spell.ebwizardry\:pocket_workbench.desc=Erlaubt dem Magier, Zugriff auf eine Magisch erzeugte Werkbank.
|
||||
spell.ebwizardry\:poison.desc=Feuert Gift in die von Ihnen angegebene Richtung.
|
||||
spell.ebwizardry\:poison_bomb.desc=Schießt eine Giftbombe in die Richtung, in die Sie zeigen, die beim Aufprall explodiert und nahegelegene Lebewesen vergiftet.
|
||||
spell.ebwizardry\:possession.desc="Werde dein Feind."
|
||||
spell.ebwizardry\:radiant_totem.desc=Beschwört ein Strahlendes Totem das Heilige Strahlen auf Lebewesen feuert. Diese Heilen verbündete aber schaden feinden. Hält 30 Sekunden lang an. Die Kraft des Totems steigt mit jedem lebewesen, das es trifft.
|
||||
spell.ebwizardry\:ray_of_purification.desc=Sendet einen blendenden Lichtstrahl aus, der seine Ziele verletzt und blendet. Untote Kreaturen erleiden doppelten Schaden und werden in Brand gesteckt.
|
||||
spell.ebwizardry\:remove_curse.desc=Entfernt alle Flüche, die den Magier derzeit betreffen.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Füllt den Hungerbalken des Magiers um 3 Hungerpunkte auf.
|
||||
@@ -845,24 +1090,25 @@ spell.ebwizardry\:shadow_ward.desc=Erzeugt eine Wand der Dunkelheit vor dem Magi
|
||||
spell.ebwizardry\:shield.desc=Schafft eine schützende Kraftbarriere, die Geschosse und Magie blockiert. Gewährt dem Magier auch einen schwachen Widerstandseffekt.
|
||||
spell.ebwizardry\:shockwave.desc=Boom.
|
||||
spell.ebwizardry\:shulker_bullet.desc=Schießt ein Shulker-Geschoss, das nach Zielen sucht und diese beim Treffer zum Schweben bringt.
|
||||
spell.ebwizardry\:silverfish_swarm.desc="Ahhhh! Sie vermengen sich!"
|
||||
spell.ebwizardry\:silverfish_swarm.desc="Ahhhh! Sie vermehren sich!"
|
||||
spell.ebwizardry\:sixth_sense.desc=Erlaubt es dem Magier, für 20 Sekunden die Positionen von nahegelegenen Kreaturen zu erspüren, sogar durch Wände hindurch.
|
||||
spell.ebwizardry\:slime.desc=Verschlingt das Ziel in Schleim, der es verlangsamt und kontinuierlich schädigt. Der Schleim zerplatzt nach 10 Sekunden.
|
||||
spell.ebwizardry\:slow_time.desc=Chronomantik ist die Kunst, die Zeit selbst zu manipulieren, um sie den eigenen Bedürfnissen anzupassen. Man glaubte, sie sei in der Vergangenheit verloren gegangen... bis heute.
|
||||
spell.ebwizardry\:smoke_bomb.desc=Schießt eine Rauchbombe in die von Ihnen angegebene Richtung ab, die beim Aufprall explodiert und dabei Rauch freisetzt und nahe stehende Lebewesen für kurze Zeit blendet.
|
||||
spell.ebwizardry\:snare.desc=Stellt eine Falle auf den Boden, die die auslösende Kreatur beschädigt und kurzzeitig verlangsamt.
|
||||
spell.ebwizardry\:snare.desc=Beschwört eine Falle auf den Boden, die die auslösende Kreatur beschädigt und kurzzeitig verlangsamt.
|
||||
spell.ebwizardry\:snowball.desc=Wirft einen Schneeball in die von Ihnen angegebene Richtung.
|
||||
spell.ebwizardry\:spark_bomb.desc=Schießt eine Schockladung in die von Ihnen angegebene Richtung ab, die beim Aufprall Funken auf nahegelegene Feinde auslöst.
|
||||
spell.ebwizardry\:spectral_pathway.desc=Erschafft vor Ihnen eine unzerstörbare magische Brücke, die sich über 15 Blöcke erstreckt. Die Brücke verschwindet nach 60 Sekunden.
|
||||
spell.ebwizardry\:speed_time.desc=...Tag, Nacht, Morgen- und Abenddämmerung, Sonnenauf- und -untergang\: So ist der Lauf der Zeit, der uns in einem endlosen Zyklus von...
|
||||
spell.ebwizardry\:spider_swarm.desc=Beschwört einen Schwarm giftiger Spinnen, um für Sie zu kämpfen. Die Spinnen verschwinden nach 30 Sekunden oder wenn sie getötet werden.
|
||||
spell.ebwizardry\:static_aura.desc=Umgibt den Magier 30 Sekunden lang mit einem Blitz und feuert einen Blitzfunken auf alles, was ihn trifft.
|
||||
spell.ebwizardry\:summon_blaze.desc=Beschwört ein Lohe, um für Sie zu kämpfen. Der Lohe verschwindet nach 30 Sekunden oder wenn es getötet wird.
|
||||
spell.ebwizardry\:summon_ice_giant.desc="Zerschmettern Sie sie!"
|
||||
spell.ebwizardry\:summon_ice_wraith.desc=Ruft einen Eis-Geist herbei, das für Sie kämpft. der Eis-Geist verschwindet nach 30 Sekunden oder wenn es getötet wird.
|
||||
spell.ebwizardry\:stormcloud.desc=Beschwört eine Sturmwolke am zielort, das Blitze zum Boden schickt und dabei Lebewesen schaden zufügt.
|
||||
spell.ebwizardry\:summon_blaze.desc=Beschwört ein Lohe, um für Sie zu kämpfen. Die Lohe verschwindet nach 30 Sekunden oder wenn sie getötet wird.
|
||||
spell.ebwizardry\:summon_ice_giant.desc="Zerschmettere sie!"
|
||||
spell.ebwizardry\:summon_ice_wraith.desc=Ruft einen Eis-Geist herbei, der für Sie kämpft. Der Eis-Geist verschwindet nach 30 Sekunden oder wenn es getötet wird.
|
||||
spell.ebwizardry\:summon_iron_golem.desc=Automatischer autonomer Automat.
|
||||
spell.ebwizardry\:summon_lightning_wraith.desc=Beschwört ein Geist des Blitzes, um für Sie zu kämpfen. Das Blitz-Gespenst verschwindet nach 30 Sekunden oder wenn es getötet wird.
|
||||
spell.ebwizardry\:summon_phoenix.desc=Von den Aschen auferstanden...
|
||||
spell.ebwizardry\:summon_phoenix.desc=Aus der Asche neu geboren...
|
||||
spell.ebwizardry\:summon_shadow_wraith.desc=Beschwört einen Schatten-Geist, um für Sie zu kämpfen.
|
||||
spell.ebwizardry\:summon_skeleton.desc=Beschwört ein Skelett, um für Sie zu kämpfen. Das Skelett verschwindet nach 30 Sekunden oder wenn es getötet wird.
|
||||
spell.ebwizardry\:summon_skeleton_legion.desc="Erhebt euch, untote Armee!"
|
||||
@@ -876,7 +1122,7 @@ spell.ebwizardry\:telekinesis.desc=Bewegt ein Element oder ein anderes kleines O
|
||||
spell.ebwizardry\:thunderbolt.desc=Schießt einen Donnerkeil ab, der Ziele zurückwirft.
|
||||
spell.ebwizardry\:thunderstorm.desc="Mwahahahahahaha!"
|
||||
spell.ebwizardry\:tornado.desc=Entfesselt einen Tornado in die von Ihnen angegebene Richtung, der alles, was ihm in den Weg kommt, in den Himmel schleudert.
|
||||
spell.ebwizardry\:transience.desc=Macht den Magier für 20 Sekunden nicht mehr Ansprechbar. Der Magier ist immun gegen alle Schäden, die er während der Transiente erleidet, aber er kann nicht brechen, Blöcke platzieren oder Schaden verursachen.
|
||||
spell.ebwizardry\:transience.desc=Macht den Magier für 20 Sekunden unantastbar. Der Magier ist immun gegen alle Schäden, die er währenddessen erleidet, aber er kann nichts abbauen, Blöcke platzieren oder Schaden verursachen.
|
||||
spell.ebwizardry\:transportation.desc=Bringt die Magier zu ihrem gespeicherten Steinkreis. Um diesen Zauberspruch anzuwenden, machen Sie einen Kreis aus Transportsteinen und klicken Sie dann mit einem Zauberstab mit der rechten Maustaste darauf.
|
||||
spell.ebwizardry\:vanishing_box.desc=Gewährt dem Magier Zugang zu seinem Endtruhenspeicher.
|
||||
spell.ebwizardry\:vex_swarm.desc=Beschwört einen Schwarm von fliegenden Vex, um für Sie zu kämpfen. Die Vex verschwinden nach 30 Sekunden oder wenn sie getötet werden.
|
||||
@@ -886,13 +1132,15 @@ spell.ebwizardry\:water_breathing.desc=Erlaubt dem Magier, 60 Sekunden lang unte
|
||||
spell.ebwizardry\:whirlwind.desc=Verursacht, dass das Ziel mit hoher Geschwindigkeit nach oben und von Ihnen weggeblasen wird.
|
||||
spell.ebwizardry\:wither.desc=Feuert einen Strahl der Dunkelheit ab, der alles verdorrt, was er berührt.
|
||||
spell.ebwizardry\:wither_skull.desc=Feuert einen Wither Schädel in die Richtung, in die Sie zeigen.
|
||||
spell.ebwizardry\:withering_totem.desc=Beschwört ein Verderbtes Totem, das nahen Lebewesen Leben entzieht. Das Totem Explodiert nach 30 Sekunden, fügt das Absorbierte Leben als Schaden nahen Lebewesen zu.
|
||||
spell.ebwizardry\:zombie_apocalypse.desc=Ein Portal in die Unterwelt zu öffnen ist einfach. Das Problem ist es, es wieder zu schließen wenn etwas schief geht...
|
||||
|
||||
spell.ebwizardry\:invoke_weather.sun=Der Regen hört allmählich auf...
|
||||
spell.ebwizardry\:invoke_weather.rain=Der Himmel öffnet sich...
|
||||
spell.ebwizardry\:transportation.missing=Der Steinkreis fehlt oder ist versperrt...
|
||||
spell.ebwizardry\:transportation.missing=Der Steinkreis fehlt oder ist Blockiert...
|
||||
spell.ebwizardry\:transportation.undefined=Sie müssen sich zuerst an die Lage eines Steinkreises erinnern!
|
||||
spell.ebwizardry\:transportation.wrongdimension=Kein gespeicherter Steinkreis in dieser Dimension...
|
||||
spell.ebwizardry\:clairvoyance.searching=Suchen...
|
||||
spell.ebwizardry\:clairvoyance.searching=Suche...
|
||||
spell.ebwizardry\:clairvoyance.confirm=Der Weg, der sich beim deuten von %1$s offenbart hat, führt nun zurück zu diesem Punkt
|
||||
spell.ebwizardry\:clairvoyance.outofrange=Ihr gespeicherter Standort ist zu weit entfernt oder unzugänglich...
|
||||
spell.ebwizardry\:clairvoyance.undefined=Sie müssen sich zuerst einen Ort merken!
|
||||
@@ -979,7 +1227,7 @@ potion.ebwizardry\:sixth_sense=Sechster Sinn
|
||||
potion.ebwizardry\:arcane_jammer=Magieblock
|
||||
potion.ebwizardry\:mind_trick=Gedanken-Nebel
|
||||
potion.ebwizardry\:mind_control=Gedankenkontrolle
|
||||
potion.ebwizardry\:font_of_mana=Das Wesen des Mana
|
||||
potion.ebwizardry\:font_of_mana=Brunnen des Manas
|
||||
potion.ebwizardry\:fear=Angst
|
||||
potion.ebwizardry\:curse_of_soulbinding=Fluch des Seelengebundenen
|
||||
potion.ebwizardry\:paralysis=Lähmung
|
||||
@@ -988,9 +1236,11 @@ potion.ebwizardry\:ward=Schild
|
||||
potion.ebwizardry\:slow_time=Zeit Verlangsamen
|
||||
potion.ebwizardry\:empowerment=Starke Magie
|
||||
potion.ebwizardry\:curse_of_enfeeblement=Ableben
|
||||
potion.ebwizardry\:curse_of_undeath=Fluch des Untotsein
|
||||
potion.ebwizardry\:containment=Aufbewahrung
|
||||
potion.ebwizardry\:curse_of_undeath=Fluch des Todes
|
||||
potion.ebwizardry\:containment=Eingeschlossen!
|
||||
potion.ebwizardry\:frost_step=Frostschritt
|
||||
potion.ebwizardry\:mark_of_sacrifice=Opfer Markiert
|
||||
potion.ebwizardry\:mirage=Spiegel
|
||||
|
||||
enchantment.ebwizardry\:magic_sword=Verstärkt
|
||||
enchantment.ebwizardry\:magic_bow=Verstärkt
|
||||
@@ -1008,19 +1258,27 @@ enchantment.ebwizardry.flaming_weapon.desc=Teil des Zaubers "Flammenwaffe"; im
|
||||
enchantment.ebwizardry.freezing_weapon.desc=Teil des Zaubers "Gefrohrene Waffe"; im Überlebensmodus unerreichbar (das Buch wird nicht funktionieren).
|
||||
enchantment.ebwizardry.shocking_weapon.desc=Teil des Zaubers "Schockwaffe"; im Überlebensmodus unerreichbar (das Buch wird nicht funktionieren).
|
||||
|
||||
enchantment.ebwizardry.magic_protection.desc=Zeduziert magischen Schaden jeder Art.
|
||||
enchantment.ebwizardry.frost_protection.desc=Zeduziert magischen Frostschaden.
|
||||
enchantment.ebwizardry.shock_protection.desc=Zeduziert magischen Schockschaden.
|
||||
enchantment.ebwizardry.magic_protection.desc=Reduziert magischen Schaden jeder Art.
|
||||
enchantment.ebwizardry.frost_protection.desc=Reduziert magischen Frostschaden.
|
||||
enchantment.ebwizardry.shock_protection.desc=Reduziert magischen Schockschaden.
|
||||
|
||||
key.categories.ebwizardry=Zauberei
|
||||
|
||||
key.ebwizardry.next_spell=Nächster Zauber
|
||||
key.ebwizardry.previous_spell=Vorheriger Zauber
|
||||
key.ebwizardry.spell_1=Zauber Slot 1
|
||||
key.ebwizardry.spell_2=Zauber Slot 2
|
||||
key.ebwizardry.spell_3=Zauber Slot 3
|
||||
key.ebwizardry.spell_4=Zauber Slot 4
|
||||
key.ebwizardry.spell_5=Zauber Slot 5
|
||||
key.ebwizardry.spell_6=Zauber Slot 6
|
||||
key.ebwizardry.spell_7=Zauber Slot 7
|
||||
key.ebwizardry.spell_8=Zauber Slot 8
|
||||
|
||||
death.attack.wizardry_magic=%1$s wurde von %2$s mit Magie getötet
|
||||
death.attack.indirect_wizardry_magic=%1$s wurde von %2$s mit Magie getötet
|
||||
|
||||
soundCategory.ebwizardry_spells=Spells
|
||||
soundCategory.ebwizardry_spells=Zauber
|
||||
|
||||
commands.ebwizardry\:cast.usage=/%1$s <zauber> [spieler | x y z richtung] [dauer] [modifiers]
|
||||
commands.ebwizardry\:cast.success=Erfolgreich %s gezaubert
|
||||
@@ -1071,14 +1329,14 @@ config.ebwizardry.title.gameplay=Gameplay-Einstellungen
|
||||
config.ebwizardry.subtitle.gameplay=Globale Einstellungen, die sich auf die Spielmechanik auswirken.
|
||||
|
||||
config.ebwizardry.discovery_mode=Enthüllmodus
|
||||
config.ebwizardry.discovery_mode.tooltip=Für diejenigen, die einen Sinn für das Geheimnisvolle mögen! Wenn Sie diese Option aktivieren, sind Zaubersprüche, die Sie noch nicht gewirkt haben, erst dann lesbar, wenn Sie sie (Für jede Welt einzeln) gewirkt haben. Im kreativen Modus hat sie keine Wirkung. Enthüllungszauber sind im Überlebensmodus nicht erreichbar, wenn dieser deaktiviert ist.
|
||||
config.ebwizardry.discovery_mode.tooltip=Für diejenigen, die das Geheimnisvolle mögen! Wenn Sie diese Option aktivieren, sind Zaubersprüche, die Sie noch nicht gewirkt haben, erst dann lesbar, wenn Sie sie (Für jede Welt einzeln) gewirkt haben. Im kreativen Modus hat sie keine Wirkung. Enthüllungszauber sind im Überlebensmodus nicht erreichbar, wenn dieser deaktiviert ist.
|
||||
config.ebwizardry.legacy_wand_levelling=Altes Zauberstab-Aufwertungssystem
|
||||
config.ebwizardry.legacy_wand_levelling.tooltip=Steuert, ob die Zauberstäbe vor dem Aufsteigen in die nächste Stufe Zeit brauchen. Aktivieren Sie diese Option, um zum System vor 4.2 zurückzukehren, das nur Leitfäden der Arkanen Künste benötigt. Die Zauberstäbe werden auch dann noch Fortschritte machen, wenn diese Option aktiviert ist, so dass Sie bei der Rückkehr zum neuen System keinen Fortschritt verlieren.
|
||||
config.ebwizardry.legacy_wand_levelling.true=Ja - es hat mir gefallen, wie es war!
|
||||
config.ebwizardry.legacy_wand_levelling.false=Nein, ich will Leveln!
|
||||
config.ebwizardry.friendly_fire=Friendly Fire
|
||||
config.ebwizardry.friendly_fire.tooltip=Kontrolliert, welche Kreaturen durch Ihre Magie beschädigt werden können, wenn sie mit Ihnen verbündet sind. Eure Zauber werden unabhängig von dieser Einstellung nicht auf Eure Verbündeten oder die von ihnen beschworenen/besessenen Kreaturen abzielen, aber diese Einstellung macht sie völlig immun, wenn sie deaktiviert wird.
|
||||
config.ebwizardry.minion_revenge_targeting=Beschwörungen haben Rache
|
||||
config.ebwizardry.minion_revenge_targeting=Beschwörungen nehmen Rache
|
||||
config.ebwizardry.minion_revenge_targeting.tooltip=Ob beschworene Kreaturen Rache nehmen können - Spieler oder Kreaturen, die sie sonst nicht angreifen könnten.
|
||||
config.ebwizardry.minion_revenge_targeting.true=Ja - ich würde ihnen nie wehtun!
|
||||
config.ebwizardry.minion_revenge_targeting.false=Nein - sie müssen mir immer gehorchen!
|
||||
@@ -1289,7 +1547,7 @@ integration.antiqueatlas.marker.ebwizardry\:obelisk=Obelisk
|
||||
integration.antiqueatlas.marker.ebwizardry\:shrine=Schrein
|
||||
|
||||
spell.ebwizardry\:magic_missile_festive=Magisches - Raketenfest
|
||||
spell.ebwizardry\:summon_snow_golem_festive=Erschaffe Frosty The Snowman
|
||||
spell.ebwizardry\:summon_snow_golem_festive=Erschaffe Frosty Der Schneemann
|
||||
spell.ebwizardry\:invigorating_presence_festive=Ermächtigende Präsenz
|
||||
spell.ebwizardry\:empowering_presence_festive=Magisch-Ermächtigende Präsenz
|
||||
|
||||
|
||||
@@ -200,18 +200,32 @@ item.ebwizardry\:identification_scroll.desc=Identifies an unknown spell book or
|
||||
item.ebwizardry\:identification_scroll.desc_extended=Right-click while holding this scroll to identify the first undiscovered spell book or scroll on your hotbar.
|
||||
item.ebwizardry\:identification_scroll.nothing_to_identify=Nothing to identify!
|
||||
|
||||
item.ebwizardry\:armour_upgrade.name=Arcane Seal of Protection
|
||||
item.ebwizardry\:armour_upgrade.desc=Upgrades any wizard armour to make it %1$slegendary
|
||||
item.ebwizardry\:armour_upgrade.desc_extended=Apply this upgrade to a piece of wizard armour in the arcane workbench.
|
||||
item.ebwizardry\:resplendent_thread.name=Resplendent Thread
|
||||
item.ebwizardry\:resplendent_thread.desc=Upgrades regular wizard armour into sage armour
|
||||
item.ebwizardry\:resplendent_thread.desc_extended=A shimmering silken thread used to embroider the finest robes with arcane symbols, improving their enchantability.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:crystal_silver_plating.name=Crystal Silver Plating
|
||||
item.ebwizardry\:crystal_silver_plating.desc=Upgrades regular wizard armour into battlemage armour
|
||||
item.ebwizardry\:crystal_silver_plating.desc_extended=An almost mythical alloy forged in the foundries of Eldar, with exceptional magic deflection properties.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:ethereal_crystalweave.name=Ethereal Crystalweave
|
||||
item.ebwizardry\:ethereal_crystalweave.desc=Upgrades regular wizard armour into warlock armour
|
||||
item.ebwizardry\:ethereal_crystalweave.desc_extended=An enchanted fabric that is as thick as animal hide, yet somehow feels lighter than paper in one's hands.\n\nApply this upgrade to a piece of wizard armour in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:magic_silk.name=Magical Silk
|
||||
|
||||
item.ebwizardry\:spectral_dust.name=Spectral Dust
|
||||
|
||||
item.ebwizardry\:wizard_armour.legendary=Legendary
|
||||
item.ebwizardry\:wizard_armour.buff=-%1$s%% %2$s cost
|
||||
item.ebwizardry\:wizard_armour.element_cost_reduction=-%1$s%% %2$s cost
|
||||
item.ebwizardry\:wizard_armour.cooldown_reduction=-%1$s%% Cooldown
|
||||
item.ebwizardry\:wizard_armour.enchantability=Extra enchantability
|
||||
item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s
|
||||
|
||||
item.ebwizardry\:wizard_armour.full_set=Full set:
|
||||
item.ebwizardry\:sage_armour.full_set_bonus=-%1$s%% Other element cost
|
||||
item.ebwizardry\:battlemage_armour.full_set_bonus=Ward I effect
|
||||
item.ebwizardry\:warlock_armour.full_set_bonus=+%1$s%% Movement speed
|
||||
|
||||
item.ebwizardry\:wizard_hat.name=Wizard Hat
|
||||
item.ebwizardry\:wizard_robe.name=Wizard Robes
|
||||
item.ebwizardry\:wizard_leggings.name=Wizard Leggings
|
||||
@@ -252,6 +266,126 @@ item.ebwizardry\:wizard_robe_healing.name=Healer Robes
|
||||
item.ebwizardry\:wizard_leggings_healing.name=Healer Leggings
|
||||
item.ebwizardry\:wizard_boots_healing.name=Healer Boots
|
||||
|
||||
item.ebwizardry\:sage_hat.name=Sage Hat
|
||||
item.ebwizardry\:sage_robe.name=Sage Robes
|
||||
item.ebwizardry\:sage_leggings.name=Sage Leggings
|
||||
item.ebwizardry\:sage_boots.name=Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_fire.name=Pyromancer Sage Hat
|
||||
item.ebwizardry\:sage_robe_fire.name=Pyromancer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_fire.name=Pyromancer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_fire.name=Pyromancer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_ice.name=Ice Sage Hat
|
||||
item.ebwizardry\:sage_robe_ice.name=Ice Sage Robes
|
||||
item.ebwizardry\:sage_leggings_ice.name=Ice Sage Leggings
|
||||
item.ebwizardry\:sage_boots_ice.name=Ice Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_lightning.name=Storm Sage Hat
|
||||
item.ebwizardry\:sage_robe_lightning.name=Storm Sage Robes
|
||||
item.ebwizardry\:sage_leggings_lightning.name=Storm Sage Leggings
|
||||
item.ebwizardry\:sage_boots_lightning.name=Storm Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_necromancy.name=Necromancer Sage Hat
|
||||
item.ebwizardry\:sage_robe_necromancy.name=Necromancer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_necromancy.name=Necromancer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_necromancy.name=Necromancer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_earth.name=Earth Sage Hat
|
||||
item.ebwizardry\:sage_robe_earth.name=Earth Sage Robes
|
||||
item.ebwizardry\:sage_leggings_earth.name=Earth Sage Leggings
|
||||
item.ebwizardry\:sage_boots_earth.name=Earth Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_sorcery.name=Sorcerer Sage Hat
|
||||
item.ebwizardry\:sage_robe_sorcery.name=Sorcerer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_sorcery.name=Sorcerer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_sorcery.name=Sorcerer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_healing.name=Healer Sage Hat
|
||||
item.ebwizardry\:sage_robe_healing.name=Healer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_healing.name=Healer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_healing.name=Healer Sage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet.name=Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate.name=Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings.name=Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots.name=Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_fire.name=Pyromancer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_fire.name=Pyromancer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_fire.name=Pyromancer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_fire.name=Pyromancer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_ice.name=Ice Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_ice.name=Ice Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_ice.name=Ice Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_ice.name=Ice Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_lightning.name=Storm Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_lightning.name=Storm Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_lightning.name=Storm Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_lightning.name=Storm Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_necromancy.name=Necromancer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_necromancy.name=Necromancer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_necromancy.name=Necromancer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_necromancy.name=Necromancer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_earth.name=Earth Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_earth.name=Earth Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_earth.name=Earth Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_earth.name=Earth Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_sorcery.name=Sorcerer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_sorcery.name=Sorcerer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_sorcery.name=Sorcerer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_sorcery.name=Sorcerer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_healing.name=Healer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_healing.name=Healer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_healing.name=Healer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_healing.name=Healer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood.name=Warlock Hood
|
||||
item.ebwizardry\:warlock_robe.name=Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings.name=Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots.name=Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_fire.name=Pyromancer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_fire.name=Pyromancer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_fire.name=Pyromancer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_fire.name=Pyromancer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_ice.name=Ice Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_ice.name=Ice Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_ice.name=Ice Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_ice.name=Ice Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_lightning.name=Storm Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_lightning.name=Storm Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_lightning.name=Storm Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_lightning.name=Storm Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_necromancy.name=Necromancer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_necromancy.name=Necromancer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_necromancy.name=Necromancer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_necromancy.name=Necromancer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_earth.name=Earth Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_earth.name=Earth Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_earth.name=Earth Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_earth.name=Earth Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_sorcery.name=Sorcerer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_sorcery.name=Sorcerer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_sorcery.name=Sorcerer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_sorcery.name=Sorcerer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_healing.name=Healer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_healing.name=Healer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_healing.name=Healer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_healing.name=Healer Warlock Boots
|
||||
|
||||
item.ebwizardry\:spawn_wizard.name=Spawn Wizard
|
||||
item.ebwizardry\:spawn_evil_wizard.name=Spawn Evil Wizard
|
||||
|
||||
@@ -408,7 +542,7 @@ item.ebwizardry\:charm_abseiling.desc=Holding sneak whilst grappling slowly pays
|
||||
item.ebwizardry\:charm_silk_touch.name=Moonstone Orb
|
||||
item.ebwizardry\:charm_silk_touch.desc=Blocks broken with the mine spell always drop themselves
|
||||
item.ebwizardry\:charm_sixth_sense.name=Dire Wolf Pelt
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Sixth sense displays different colours for passive, neutral and hostile mobs
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Sixth sense displays different shapes for passive, neutral and hostile mobs
|
||||
item.ebwizardry\:charm_stop_time.name=Peculiar Pocketwatch
|
||||
item.ebwizardry\:charm_stop_time.desc=The slow time spell makes time stand still
|
||||
item.ebwizardry\:charm_light.name=Elevinia's Everburning Lantern
|
||||
@@ -711,8 +845,12 @@ advancement.ebwizardry\:craft_lectern.desc=Craft a lectern to keep track of your
|
||||
|
||||
advancement.ebwizardry\:armour_set=Now You're A Proper Wizard
|
||||
advancement.ebwizardry\:armour_set.desc=Craft and equip a full set of wizard armour
|
||||
advancement.ebwizardry\:legendary=Legendary
|
||||
advancement.ebwizardry\:legendary.desc=Obtain a piece of legendary wizard armour
|
||||
advancement.ebwizardry\:sage=The Path Of The Sage
|
||||
advancement.ebwizardry\:sage.desc=Obtain a piece of sage armour
|
||||
advancement.ebwizardry\:battlemage=The Pledge Of The Battlemage
|
||||
advancement.ebwizardry\:battlemage.desc=Obtain a piece of battlemage armour
|
||||
advancement.ebwizardry\:warlock=The Way Of The Warlock
|
||||
advancement.ebwizardry\:warlock.desc=Obtain a piece of warlock armour
|
||||
|
||||
advancement.ebwizardry\:enchant_scroll=Scroll Up!
|
||||
advancement.ebwizardry\:enchant_scroll.desc=Craft a blank scroll and enchant it with a spell at an arcane workbench
|
||||
@@ -1336,6 +1474,8 @@ commands.ebwizardry\:discoverspell.removespell=Removed %1$s from %2$s's spell di
|
||||
|
||||
config.ebwizardry.title.general=Mod Options
|
||||
|
||||
config.ebwizardry.redundant_keys=Your config file contains redundant options, these will not do anything! [See log for details]
|
||||
|
||||
config.ebwizardry.generic.true=Enabled
|
||||
config.ebwizardry.generic.false=Disabled
|
||||
|
||||
|
||||
@@ -200,18 +200,32 @@ item.ebwizardry\:identification_scroll.desc=Identifies an unknown spell book or
|
||||
item.ebwizardry\:identification_scroll.desc_extended=Right-click while holding this scroll to identify the first undiscovered spell book or scroll on your hotbar.
|
||||
item.ebwizardry\:identification_scroll.nothing_to_identify=Nothing to identify!
|
||||
|
||||
item.ebwizardry\:armour_upgrade.name=Arcane Seal of Protection
|
||||
item.ebwizardry\:armour_upgrade.desc=Upgrades any wizard armour to make it %1$slegendary
|
||||
item.ebwizardry\:armour_upgrade.desc_extended=Apply this upgrade to a piece of wizard armour in the arcane workbench.
|
||||
item.ebwizardry\:resplendent_thread.name=Resplendent Thread
|
||||
item.ebwizardry\:resplendent_thread.desc=Upgrades regular wizard armor into sage armor
|
||||
item.ebwizardry\:resplendent_thread.desc_extended=A shimmering silken thread used to embroider the finest robes with arcane symbols, improving their enchantability.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:crystal_silver_plating.name=Crystal Silver Plating
|
||||
item.ebwizardry\:crystal_silver_plating.desc=Upgrades regular wizard armor into battlemage armor
|
||||
item.ebwizardry\:crystal_silver_plating.desc_extended=An almost mythical alloy forged in the foundries of Eldar, with exceptional magic deflection properties.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:ethereal_crystalweave.name=Ethereal Crystalweave
|
||||
item.ebwizardry\:ethereal_crystalweave.desc=Upgrades regular wizard armor into warlock armor
|
||||
item.ebwizardry\:ethereal_crystalweave.desc_extended=An enchanted fabric that is as thick as animal hide, yet somehow feels lighter than paper in one's hands.\n\nApply this upgrade to a piece of wizard armor in the arcane workbench.
|
||||
|
||||
item.ebwizardry\:magic_silk.name=Magical Silk
|
||||
|
||||
item.ebwizardry\:spectral_dust.name=Spectral Dust
|
||||
|
||||
item.ebwizardry\:wizard_armour.legendary=Legendary
|
||||
item.ebwizardry\:wizard_armour.buff=-%1$s%% %2$s cost
|
||||
item.ebwizardry\:wizard_armour.element_cost_reduction=-%1$s%% %2$s cost
|
||||
item.ebwizardry\:wizard_armour.cooldown_reduction=-%1$s%% Cooldown
|
||||
item.ebwizardry\:wizard_armour.enchantability=Extra enchantability
|
||||
item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s
|
||||
|
||||
item.ebwizardry\:wizard_armour.full_set=Full set:
|
||||
item.ebwizardry\:sage_armour.full_set_bonus=-%1$s%% Other element cost
|
||||
item.ebwizardry\:battlemage_armour.full_set_bonus=Ward I effect
|
||||
item.ebwizardry\:warlock_armour.full_set_bonus=+%1$s%% Movement speed
|
||||
|
||||
item.ebwizardry\:wizard_hat.name=Wizard Hat
|
||||
item.ebwizardry\:wizard_robe.name=Wizard Robes
|
||||
item.ebwizardry\:wizard_leggings.name=Wizard Leggings
|
||||
@@ -252,6 +266,126 @@ item.ebwizardry\:wizard_robe_healing.name=Healer Robes
|
||||
item.ebwizardry\:wizard_leggings_healing.name=Healer Leggings
|
||||
item.ebwizardry\:wizard_boots_healing.name=Healer Boots
|
||||
|
||||
item.ebwizardry\:sage_hat.name=Sage Hat
|
||||
item.ebwizardry\:sage_robe.name=Sage Robes
|
||||
item.ebwizardry\:sage_leggings.name=Sage Leggings
|
||||
item.ebwizardry\:sage_boots.name=Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_fire.name=Pyromancer Sage Hat
|
||||
item.ebwizardry\:sage_robe_fire.name=Pyromancer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_fire.name=Pyromancer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_fire.name=Pyromancer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_ice.name=Ice Sage Hat
|
||||
item.ebwizardry\:sage_robe_ice.name=Ice Sage Robes
|
||||
item.ebwizardry\:sage_leggings_ice.name=Ice Sage Leggings
|
||||
item.ebwizardry\:sage_boots_ice.name=Ice Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_lightning.name=Storm Sage Hat
|
||||
item.ebwizardry\:sage_robe_lightning.name=Storm Sage Robes
|
||||
item.ebwizardry\:sage_leggings_lightning.name=Storm Sage Leggings
|
||||
item.ebwizardry\:sage_boots_lightning.name=Storm Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_necromancy.name=Necromancer Sage Hat
|
||||
item.ebwizardry\:sage_robe_necromancy.name=Necromancer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_necromancy.name=Necromancer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_necromancy.name=Necromancer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_earth.name=Earth Sage Hat
|
||||
item.ebwizardry\:sage_robe_earth.name=Earth Sage Robes
|
||||
item.ebwizardry\:sage_leggings_earth.name=Earth Sage Leggings
|
||||
item.ebwizardry\:sage_boots_earth.name=Earth Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_sorcery.name=Sorcerer Sage Hat
|
||||
item.ebwizardry\:sage_robe_sorcery.name=Sorcerer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_sorcery.name=Sorcerer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_sorcery.name=Sorcerer Sage Boots
|
||||
|
||||
item.ebwizardry\:sage_hat_healing.name=Healer Sage Hat
|
||||
item.ebwizardry\:sage_robe_healing.name=Healer Sage Robes
|
||||
item.ebwizardry\:sage_leggings_healing.name=Healer Sage Leggings
|
||||
item.ebwizardry\:sage_boots_healing.name=Healer Sage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet.name=Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate.name=Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings.name=Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots.name=Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_fire.name=Pyromancer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_fire.name=Pyromancer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_fire.name=Pyromancer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_fire.name=Pyromancer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_ice.name=Ice Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_ice.name=Ice Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_ice.name=Ice Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_ice.name=Ice Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_lightning.name=Storm Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_lightning.name=Storm Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_lightning.name=Storm Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_lightning.name=Storm Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_necromancy.name=Necromancer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_necromancy.name=Necromancer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_necromancy.name=Necromancer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_necromancy.name=Necromancer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_earth.name=Earth Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_earth.name=Earth Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_earth.name=Earth Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_earth.name=Earth Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_sorcery.name=Sorcerer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_sorcery.name=Sorcerer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_sorcery.name=Sorcerer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_sorcery.name=Sorcerer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:battlemage_helmet_healing.name=Healer Battlemage Helmet
|
||||
item.ebwizardry\:battlemage_chestplate_healing.name=Healer Battlemage Chestplate
|
||||
item.ebwizardry\:battlemage_leggings_healing.name=Healer Battlemage Leggings
|
||||
item.ebwizardry\:battlemage_boots_healing.name=Healer Battlemage Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood.name=Warlock Hood
|
||||
item.ebwizardry\:warlock_robe.name=Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings.name=Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots.name=Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_fire.name=Pyromancer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_fire.name=Pyromancer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_fire.name=Pyromancer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_fire.name=Pyromancer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_ice.name=Ice Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_ice.name=Ice Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_ice.name=Ice Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_ice.name=Ice Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_lightning.name=Storm Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_lightning.name=Storm Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_lightning.name=Storm Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_lightning.name=Storm Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_necromancy.name=Necromancer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_necromancy.name=Necromancer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_necromancy.name=Necromancer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_necromancy.name=Necromancer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_earth.name=Earth Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_earth.name=Earth Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_earth.name=Earth Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_earth.name=Earth Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_sorcery.name=Sorcerer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_sorcery.name=Sorcerer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_sorcery.name=Sorcerer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_sorcery.name=Sorcerer Warlock Boots
|
||||
|
||||
item.ebwizardry\:warlock_hood_healing.name=Healer Warlock Hood
|
||||
item.ebwizardry\:warlock_robe_healing.name=Healer Warlock Robes
|
||||
item.ebwizardry\:warlock_leggings_healing.name=Healer Warlock Leggings
|
||||
item.ebwizardry\:warlock_boots_healing.name=Healer Warlock Boots
|
||||
|
||||
item.ebwizardry\:spawn_wizard.name=Spawn Wizard
|
||||
item.ebwizardry\:spawn_evil_wizard.name=Spawn Evil Wizard
|
||||
|
||||
@@ -408,7 +542,7 @@ item.ebwizardry\:charm_abseiling.desc=Holding sneak whilst grappling slowly pays
|
||||
item.ebwizardry\:charm_silk_touch.name=Moonstone Orb
|
||||
item.ebwizardry\:charm_silk_touch.desc=Blocks broken with the mine spell always drop themselves
|
||||
item.ebwizardry\:charm_sixth_sense.name=Dire Wolf Pelt
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Sixth sense displays different colors for passive, neutral and hostile mobs
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Sixth sense displays different shapes for passive, neutral and hostile mobs
|
||||
item.ebwizardry\:charm_stop_time.name=Peculiar Pocketwatch
|
||||
item.ebwizardry\:charm_stop_time.desc=The slow time spell makes time stand still
|
||||
item.ebwizardry\:charm_light.name=Elevinia's Everburning Lantern
|
||||
@@ -711,8 +845,12 @@ advancement.ebwizardry\:craft_lectern.desc=Craft a lectern to keep track of your
|
||||
|
||||
advancement.ebwizardry\:armour_set=Now You're A Proper Wizard
|
||||
advancement.ebwizardry\:armour_set.desc=Craft and equip a full set of wizard armor
|
||||
advancement.ebwizardry\:legendary=Legendary
|
||||
advancement.ebwizardry\:legendary.desc=Obtain a piece of legendary wizard armor
|
||||
advancement.ebwizardry\:sage=The Path Of The Sage
|
||||
advancement.ebwizardry\:sage.desc=Obtain a piece of sage armour
|
||||
advancement.ebwizardry\:battlemage=The Pledge Of The Battlemage
|
||||
advancement.ebwizardry\:battlemage.desc=Obtain a piece of battlemage armour
|
||||
advancement.ebwizardry\:warlock=The Way Of The Warlock
|
||||
advancement.ebwizardry\:warlock.desc=Obtain a piece of warlock armour
|
||||
|
||||
advancement.ebwizardry\:enchant_scroll=Scroll Up!
|
||||
advancement.ebwizardry\:enchant_scroll.desc=Craft a blank scroll and enchant it with a spell at an arcane workbench
|
||||
@@ -1336,6 +1474,8 @@ commands.ebwizardry\:discoverspell.removespell=Removed %1$s from %2$s's spell di
|
||||
|
||||
config.ebwizardry.title.general=Mod Options
|
||||
|
||||
config.ebwizardry.redundant_keys=Your config file contains redundant options, these will not do anything! [See log for details]
|
||||
|
||||
config.ebwizardry.generic.true=Enabled
|
||||
config.ebwizardry.generic.false=Disabled
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
#PARSE_ESCAPES
|
||||
tile.ebwizardry\:arcane_workbench.name=Tajmeniczy Stół
|
||||
tile.ebwizardry\:arcane_workbench.name=Tajemniczy Stół
|
||||
tile.ebwizardry\:crystal_ore.name=Ruda Kryształu
|
||||
tile.ebwizardry\:petrified_stone.name=Skamieniałości
|
||||
tile.ebwizardry\:ice_statue.name=Lodowa Statua
|
||||
@@ -15,7 +15,10 @@ tile.ebwizardry\:runestone.name=Kamień Runiczny
|
||||
tile.ebwizardry\:runestone_pedestal.name=Pilar Runicznego Kamienia
|
||||
tile.ebwizardry\:thorns.name=Ciernie
|
||||
tile.ebwizardry\:obsidian_crust.name=Obsydianowa Skorupa
|
||||
tile.ebwizardry\:dry_frosted_ice.name=Zaschły Mrożny Lód
|
||||
tile.ebwizardry\:dry_frosted_ice.name=Zaschły Lód
|
||||
tile.ebwizardry\:crystal_flower_pot.name=Garnek Kwiatu
|
||||
tile.ebwizardry\:permafrost.name=Wieczna Zmarzlina
|
||||
|
||||
|
||||
tile.ebwizardry\:magic_crystal_block.name=Blok Kryształu
|
||||
tile.ebwizardry\:fire_crystal_block.name=Blok Ognistego Kryształu
|
||||
@@ -26,6 +29,32 @@ tile.ebwizardry\:earth_crystal_block.name=Blok Zielnego Kryształu
|
||||
tile.ebwizardry\:sorcery_crystal_block.name=Blok Mistycznego Kryształu
|
||||
tile.ebwizardry\:healing_crystal_block.name=Blok Promienistego Kryształu
|
||||
|
||||
tile.ebwizardry\:oak_gilded_wood.name=Złociste dębowe drewno
|
||||
tile.ebwizardry\:spruce_gilded_wood.name=Złociste świerkowe drewno
|
||||
tile.ebwizardry\:birch_gilded_wood.name=Złociste drewno brzozowe
|
||||
tile.ebwizardry\:jungle_gilded_wood.name=Złociste dżunglowe drewno
|
||||
tile.ebwizardry\:acacia_gilded_wood.name=Złociste drewno akacjowe
|
||||
tile.ebwizardry\:dark_oak_gilded_wood.name=Złociste ciemne dębowe drewno
|
||||
|
||||
tile.ebwizardry\:oak_bookshelf.name=Dębowa półka na książki
|
||||
tile.ebwizardry\:spruce_bookshelf.name=Świerkowa półka na książki
|
||||
tile.ebwizardry\:birch_bookshelf.name=Brzozowa półka na książki
|
||||
tile.ebwizardry\:jungle_bookshelf.name=Dżunglowa półka na książki
|
||||
tile.ebwizardry\:acacia_bookshelf.name=Akacjowa półka na książki
|
||||
tile.ebwizardry\:dark_oak_bookshelf.name=Złocisto ciemna półka na książki
|
||||
|
||||
tile.ebwizardry\:oak_lectern.name=Dębowy pulpit
|
||||
tile.ebwizardry\:spruce_lectern.name=Świerkowy pulpit
|
||||
tile.ebwizardry\:birch_lectern.name=Brzozowy pulpit
|
||||
tile.ebwizardry\:jungle_lectern.name=Dżunglowy pulpit
|
||||
tile.ebwizardry\:acacia_lectern.name=Akacjowy pulpit
|
||||
tile.ebwizardry\:dark_oak_lectern.name=Złocisto ciemny pulpit
|
||||
|
||||
tile.ebwizardry\:receptacle.name=Naczynie
|
||||
tile.ebwizardry\:imbuement_altar.name=Nasycony Ołtarz
|
||||
|
||||
|
||||
|
||||
item.ebwizardry\:crystal_magic.name=Magiczny Kryształ
|
||||
item.ebwizardry\:crystal_fire.name=Ognisty Kryształ
|
||||
item.ebwizardry\:crystal_ice.name=Lodowy Kryształ
|
||||
@@ -43,9 +72,12 @@ item.ebwizardry\:spell_book.name=Księga Zaklęć
|
||||
|
||||
item.ebwizardry\:spell_book.apply_to_wizard=Zastąpiono zaklęcie %1$sa %2$s na %3$s
|
||||
|
||||
item.ebwizardry\:ruined_spell_book.name=Księga Zaklęć
|
||||
item.ebwizardry\:ruined_spell_book.desc=Strony tej poszarpanej książki o zaklęciach są zbyt zniszczone, by można je było prawidłowo odczytać, ale jakoś czujesz, że w niej jest jeszcze magia - gdyby tylko można było ją przywrócić...
|
||||
|
||||
item.ebwizardry\:arcane_tome.name=Tajemnicza Księga
|
||||
item.ebwizardry\:arcane_tome.desc1=Ulepsza różdżkę %1$s
|
||||
item.ebwizardry\:arcane_tome.desc2=do poziomu %1$s
|
||||
item.ebwizardry\:arcane_tome.desc=Ulepsza dowolną %1$s różdżkę z odpowiednim progresem do poziomu %2$s
|
||||
|
||||
|
||||
item.ebwizardry\:wizard_handbook.name=Podręczna Księga Czarodzieja
|
||||
item.ebwizardry\:wizard_handbook.desc=stworzona przez %1$s
|
||||
@@ -70,26 +102,26 @@ item.ebwizardry\:novice_earth_wand.name=Różdżka Lasu
|
||||
item.ebwizardry\:novice_sorcery_wand.name=Różdżka Mistyka
|
||||
item.ebwizardry\:novice_healing_wand.name=Różdżka Uzdrowienia
|
||||
|
||||
item.ebwizardry\:apprentice_fire_wand.name=Uczniowska Różdżka Pyromancera
|
||||
item.ebwizardry\:apprentice_fire_wand.name=Uczniowska Różdżka Piromanty
|
||||
item.ebwizardry\:apprentice_ice_wand.name=Uczniowska Różdżka Maga Lodu
|
||||
item.ebwizardry\:apprentice_lightning_wand.name=Uczniowska Różdżka Maga Sztormu
|
||||
item.ebwizardry\:apprentice_necromancy_wand.name=Uczniowska Różdżka Necromancera
|
||||
item.ebwizardry\:apprentice_necromancy_wand.name=Uczniowska Różdżka Nekromanty
|
||||
item.ebwizardry\:apprentice_earth_wand.name=Uczniowska Różdżka Maga Ziemi
|
||||
item.ebwizardry\:apprentice_sorcery_wand.name=Uczniowska Różdżka Czarnoksiężnika
|
||||
item.ebwizardry\:apprentice_healing_wand.name=Uczniowska Różdżka Uzdrowiciela
|
||||
|
||||
item.ebwizardry\:advanced_fire_wand.name=Różdżka Pyromancera
|
||||
item.ebwizardry\:advanced_fire_wand.name=Różdżka Piromanty
|
||||
item.ebwizardry\:advanced_ice_wand.name=Różdżka Maga Lodu
|
||||
item.ebwizardry\:advanced_lightning_wand.name=Różdżka Maga Sztormu
|
||||
item.ebwizardry\:advanced_necromancy_wand.name=Różdżka Necromancera
|
||||
item.ebwizardry\:advanced_necromancy_wand.name=Różdżka Nekromanty
|
||||
item.ebwizardry\:advanced_earth_wand.name=Różdźka Maga Ziemi
|
||||
item.ebwizardry\:advanced_sorcery_wand.name=Różdżka Czarnoksiężnika
|
||||
item.ebwizardry\:advanced_healing_wand.name=Różdżka Uzdrowiciela
|
||||
|
||||
item.ebwizardry\:master_fire_wand.name=Mistrzowska Różdżka Pyromancera
|
||||
item.ebwizardry\:master_fire_wand.name=Mistrzowska Różdżka Piromanty
|
||||
item.ebwizardry\:master_ice_wand.name=Mistrzowska Różdżka Maga Lodu
|
||||
item.ebwizardry\:master_lightning_wand.name=Mistrzowska Różdżka Maga Sztormu
|
||||
item.ebwizardry\:master_necromancy_wand.name=Mistrzowska Różdżka Necromancera
|
||||
item.ebwizardry\:master_necromancy_wand.name=Mistrzowska Różdżka Nekromanty
|
||||
item.ebwizardry\:master_earth_wand.name=Mistrzowska Różdżka Maga Ziemi
|
||||
item.ebwizardry\:master_sorcery_wand.name=Mistrzowska Różdżka Czarnoksiężnika
|
||||
item.ebwizardry\:master_healing_wand.name=Mistrzowska Różdżka Uzdrowiciela
|
||||
@@ -105,6 +137,8 @@ item.ebwizardry\:small_mana_flask.name=Mała Butelka Many
|
||||
item.ebwizardry\:medium_mana_flask.name=Średnia Butelka Many
|
||||
item.ebwizardry\:large_mana_flask.name=Duża Butelka Many
|
||||
|
||||
item.ebwizardry\:mana_flask.desc=Stwórz z różdżką lub kawałkiem zbroi czarodzieja aby przywrócić %s many
|
||||
|
||||
item.ebwizardry\:grand_crystal.name=Wielki Magiczny Kryształ
|
||||
item.ebwizardry\:crystal_shard.name=Odłamek Magicznego Kryształu
|
||||
|
||||
@@ -124,7 +158,7 @@ item.ebwizardry\:attunement_upgrade.name=Ulepszenie Dostrojenia Różdżki
|
||||
item.ebwizardry\:melee_upgrade.name=Ulepszenie Obrażeń Różdżki
|
||||
|
||||
item.ebwizardry\:storage_upgrade.desc=Zwiększa pojemność many w różdżce
|
||||
item.ebwizardry\:siphon_upgrade.desc=Ulepsza różdżkę tak, aby wydobywać manę z mobów po ich śmierci
|
||||
item.ebwizardry\:siphon_upgrade.desc=Ulepsza różdżkę tak, aby wydobywać manę z potworów po ich śmierci
|
||||
item.ebwizardry\:condenser_upgrade.desc=Ulepsza różdżkę tak, aby mana ładowała się szybciej
|
||||
item.ebwizardry\:range_upgrade.desc=Ulepsza zasięg rzucanych zaklęć przez różdżkę
|
||||
item.ebwizardry\:duration_upgrade.desc=Wydłuża czas działania efektów rzucanych przez różdżkę
|
||||
@@ -148,16 +182,18 @@ item.ebwizardry\:blank_scroll.name=Pusty Zwój
|
||||
item.ebwizardry\:scroll.generic=Zwój
|
||||
item.ebwizardry\:scroll.name=Zwój %1$s
|
||||
item.ebwizardry\:scroll.undiscovered.name=Zwój "%1$s"
|
||||
item.ebwizardry\:identification_scroll.name=Zwój Indyfikacji
|
||||
item.ebwizardry\:identification_scroll.name=Zwój Identyfikacji
|
||||
item.ebwizardry\:identification_scroll.desc=Identyfikuje nieznaną księgę zaklęć lub zwój
|
||||
item.ebwizardry\:identification_scroll.nothing_to_identify=Nic do zidentyfikowania!
|
||||
|
||||
item.ebwizardry\:armour_upgrade.name=Tajemna Pieczęć Ochrony
|
||||
item.ebwizardry\:armour_upgrade.desc1=%1$sUlepsza każdą zbroję czarodzieja
|
||||
item.ebwizardry\:armour_upgrade.desc2=%1$sdo %2$slegendarnego poziomu
|
||||
item.ebwizardry\:armour_upgrade.desc=%1$sUlepsza każdą zbroję czarodzieja
|
||||
item.ebwizardry\:armour_upgrade.desc_extended=%1$sdo %2$slegendarnego poziomu
|
||||
|
||||
item.ebwizardry\:magic_silk.name=Magiczny Jedwab
|
||||
|
||||
item.ebwizardry\:spectral_dust.name=Widmowy pył
|
||||
|
||||
item.ebwizardry\:wizard_armour.legendary=Legendarna
|
||||
item.ebwizardry\:wizard_armour.buff=-%1$s %2$s koszt
|
||||
item.ebwizardry\:wizard_armour.mana=Mana\: %1$s/%2$s
|
||||
@@ -167,10 +203,11 @@ item.ebwizardry\:wizard_robe.name=Szaty Czarodzieja
|
||||
item.ebwizardry\:wizard_leggings.name=Spodnie Czarodzieja
|
||||
item.ebwizardry\:wizard_boots.name=Buty Czarodzieja
|
||||
|
||||
item.ebwizardry\:wizard_hat_fire.name=Czapka Pyromancera
|
||||
item.ebwizardry\:wizard_robe_fire.name=Szaty Pyromancera
|
||||
item.ebwizardry\:wizard_leggings_fire.name=Spodnie Pyromancera
|
||||
item.ebwizardry\:wizard_boots_fire.name=Buty Pyromancera
|
||||
item.ebwizardry\:wizard_hat_fire.name=Czapka Piromanty
|
||||
item.ebwizardry\:wizard_robe_fire.name=Szaty Piromanty
|
||||
item.ebwizardry\:wizard_leggings_fire.name=Spodnie Piromanty
|
||||
|
||||
item.ebwizardry\:wizard_boots_fire.name=Buty Piromanty
|
||||
|
||||
item.ebwizardry\:wizard_hat_ice.name=Czapka Maga Lodu
|
||||
item.ebwizardry\:wizard_robe_ice.name=Szaty Maga Lodu
|
||||
@@ -182,10 +219,11 @@ item.ebwizardry\:wizard_robe_lightning.name=Szaty Maga Sztormu
|
||||
item.ebwizardry\:wizard_leggings_lightning.name=Spodnie Maga Sztormu
|
||||
item.ebwizardry\:wizard_boots_lightning.name=Buty Maga Sztormu
|
||||
|
||||
item.ebwizardry\:wizard_hat_necromancy.name=Czapka Necromancera
|
||||
item.ebwizardry\:wizard_robe_necromancy.name=Szaty Necromancera
|
||||
item.ebwizardry\:wizard_leggings_necromancy.name=Spodnie Necromancera
|
||||
item.ebwizardry\:wizard_boots_necromancy.name=Buty Necromancera
|
||||
item.ebwizardry\:wizard_hat_necromancy.name=Czapka Nekromanty
|
||||
item.ebwizardry\:wizard_robe_necromancy.name=Szaty Nekromanty
|
||||
item.ebwizardry\:wizard_leggings_necromancy.name=Spodnie Nekromanty
|
||||
item.ebwizardry\:wizard_boots_necromancy.name=Buty Nekromanty
|
||||
|
||||
|
||||
item.ebwizardry\:wizard_hat_earth.name=Czapka Maga Ziemi
|
||||
item.ebwizardry\:wizard_robe_earth.name=Szaty Maga Ziemi
|
||||
@@ -212,6 +250,14 @@ item.ebwizardry\:spectral_boots.name=Spektralne Buty
|
||||
|
||||
item.ebwizardry\:lightning_hammer.name=Młot Piorunów
|
||||
|
||||
item.ebwizardry\:flamecatcher.name=Łapacz Płomieni
|
||||
|
||||
item.ebwizardry\:generic.disabled=Ta pozycja została wyłączona w konfiguracji
|
||||
|
||||
item.ebwizardry\:ring.generic.desc=Zapisz ten pierścionek w spisie pierścionków lub umieszczając go na swoim pasku dostępu. Można wyposażyć do 2 pierścionków na raz.
|
||||
item.ebwizardry\:amulet.generic.desc=Wypakuj ten amulet do inwentarza amuletów lub umieszczając go na pasku informacyjnym. Tylko jeden amulet może być wyposażony na raz.
|
||||
item.ebwizardry\:amulet.generic.desc=Wyposaż ten amulet w inwentaryzację amuletów lub umieszczając go na swoim pasku dostępu. Tylko jeden amulet może być wyposażony na raz.
|
||||
|
||||
item.ebwizardry\:ring_condensing.name=Pierścień Kondensacji
|
||||
item.ebwizardry\:ring_condensing.desc=Regeneruje manę w wolnym tempie dla wszystkich różdżek na twoim pasku
|
||||
item.ebwizardry\:ring_siphoning.name=Pierścień Syfonowania
|
||||
@@ -226,6 +272,8 @@ item.ebwizardry\:ring_fire_biome.name=Pierścień Pustynnego Słońca
|
||||
item.ebwizardry\:ring_fire_biome.desc=Zaklęcia ognia są o 30%% silniejsze w gorących biomach
|
||||
item.ebwizardry\:ring_disintegration.name=Pierścień Wzburzonego Żaru
|
||||
item.ebwizardry\:ring_disintegration.desc=Wszystkie zaklęcia ognia powodują natychmiastowy rozpada mobów z nimi zetkniętych
|
||||
item.ebwizardry\:ring_meteor.name=Pierścień Volthraa
|
||||
item.ebwizardry\:ring_meteor.desc= Zamiast spadać z nieba, meteor może być wycelowany jak pocisk
|
||||
item.ebwizardry\:ring_ice_melee.name=Pierścień Lodowego Dotyku
|
||||
item.ebwizardry\:ring_ice_melee.desc=Trafienie potwora Lodową Różdżką daje mu efekt zamrożenia
|
||||
item.ebwizardry\:ring_ice_biome.name=Pierścień Zlodowacenia
|
||||
@@ -242,12 +290,14 @@ item.ebwizardry\:ring_seeking.name=Pierścień Przyciągania
|
||||
item.ebwizardry\:ring_seeking.desc=Wszystkie zaklęcia pociskowe namierzają cel
|
||||
item.ebwizardry\:ring_hammer.name=Pierścień Thalka Wszechmogącego
|
||||
item.ebwizardry\:ring_hammer.desc=Młot Thora może zostać podniesiony i rzucony w innym kierunku
|
||||
item.ebwizardry\:ring_stormcloud.name=Pierścień Lokenzena
|
||||
item.ebwizardry\:ring_stormcloud.desc=Chmura burzowa przesuwa się w kierunku celów i trwa dłużej z każdym uderzeniem
|
||||
item.ebwizardry\:ring_soulbinding.name=Pierścień Duchowego Przechodnia
|
||||
item.ebwizardry\:ring_soulbinding.desc=Stworzenia zetknięte z zaklęciami nekromancji zostają powiązane z tobą duszą
|
||||
item.ebwizardry\:ring_leeching.name=Pierścień Pijawki
|
||||
item.ebwizardry\:ring_leeching.desc=Wszystkie zaklęcia nekromancji mają 30%% szans na wywołanie efektu wysysania życia
|
||||
item.ebwizardry\:ring_necromancy_melee.name=Pierścień Nekrotycznego Dotyku
|
||||
item.ebwizardry\:ring_necromancy_melee.desc=Uderzenie potwora Różdżką Necromanty powoduje obumieranie ofiary
|
||||
item.ebwizardry\:ring_necromancy_melee.desc=Uderzenie potwora Różdżką Nekromanty powoduje obumieranie ofiary
|
||||
item.ebwizardry\:ring_mind_control.name=Pierścień Psychiki
|
||||
item.ebwizardry\:ring_mind_control.desc=Stworzenia, które mają kontrolowany umysł mają szansę na kontrolowanie umysłu innych pobliskich stworzeń
|
||||
item.ebwizardry\:ring_poison.name=Serpentynowy Pierścień
|
||||
@@ -258,11 +308,13 @@ item.ebwizardry\:ring_earth_biome.name=Pierścień Driady
|
||||
item.ebwizardry\:ring_earth_biome.desc=Zaklęcia Ziemi są o 30%% silniejsze w lasach i w puszczy
|
||||
item.ebwizardry\:ring_full_moon.name=Pierścień Wyjącego Wilka
|
||||
item.ebwizardry\:ring_full_moon.desc=Zaklęcia Ziemi znacznie skróciły swój czas odnawiania się podczas pełni księżyca
|
||||
item.ebwizardry\:ring_evoker.name=Pierścień Przywoływacza
|
||||
item.ebwizardry\:ring_evoker.desc=Skradanie się podczas rzucania kłami przywołuje koło obronne zamiast linii
|
||||
item.ebwizardry\:ring_extraction.name=Pierścień Ekstrakcyjny
|
||||
item.ebwizardry\:ring_extraction.desc=Zabójstwa popełnione przez Czarnoksięskie zaklęcia daja premię do many
|
||||
item.ebwizardry\:ring_mana_return.name=Pierścień Perfekcjonisty
|
||||
item.ebwizardry\:ring_mana_return.desc=Strzały Mocy, które nie trafiły w cel, zwracają manę z powrotem do różdżki
|
||||
item.ebwizardry\:ring_blockwrangler.name=Pierścień Blockwranglera
|
||||
item.ebwizardry\:ring_blockwrangler.name=Pierścień Bloków
|
||||
item.ebwizardry\:ring_blockwrangler.desc=Rzucane bloki zadają dwa razy więcej obrażeń niż normalne
|
||||
item.ebwizardry\:ring_conjurer.name=Pierścień Zaklinacza
|
||||
item.ebwizardry\:ring_conjurer.desc=Zaklęte przedmioty mają dwa razy dłuższy efekty zaklęcia
|
||||
@@ -274,7 +326,7 @@ item.ebwizardry\:ring_interdiction.name=Pierścień Ubezwłasnowolnienia
|
||||
item.ebwizardry\:ring_interdiction.desc=Twoje pole siłowe uszkadza stwory, które się z nim zetknął
|
||||
|
||||
item.ebwizardry\:amulet_arcane_defence.name=Amulet Tajemnej Obrony
|
||||
item.ebwizardry\:amulet_arcane_defence.desc=Powoli regenneruje mane wszystkim pobliskim czarodzieją
|
||||
item.ebwizardry\:amulet_arcane_defence.desc=Powoli regeneruje mane wszystkim pobliskim czarodziejom
|
||||
item.ebwizardry\:amulet_warding.name=Amulet Strażnictwa
|
||||
item.ebwizardry\:amulet_warding.desc=Zmniejsza wszystkie przychodzące magiczne obrażenia o 10%%
|
||||
item.ebwizardry\:amulet_wisdom.name=Amulet Mądrości
|
||||
@@ -287,14 +339,16 @@ item.ebwizardry\:amulet_ice_immunity.name=Amulet Wiecznej Zmarzliny
|
||||
item.ebwizardry\:amulet_ice_immunity.desc=Daje całkowitą odporność na zamrożenie
|
||||
item.ebwizardry\:amulet_ice_protection.name=Amulet Oszronienia
|
||||
item.ebwizardry\:amulet_ice_protection.desc=Zmniejsza obrażenia od lodu o 30%%
|
||||
item.ebwizardry\:amulet_frost_warding.name=Amulet Esundora
|
||||
item.ebwizardry\:amulet_frost_warding.desc=Dodaje efekt ochronny gdy stoisz za ścianą lodu
|
||||
item.ebwizardry\:amulet_potential.name=Amulet Potencjału
|
||||
item.ebwizardry\:amulet_potential.desc=Daje 15%% szansy na wystrzelenie błyskawicy w stwory atakujące cię w zwarciu
|
||||
item.ebwizardry\:amulet_channeling.name=Amulet Kanalizacji
|
||||
item.ebwizardry\:amulet_channeling.name=Amulet Kopania
|
||||
item.ebwizardry\:amulet_channeling.desc=Daje 30%% szansy na zniwelowanie nadchodzących szokujących obrażeń
|
||||
item.ebwizardry\:amulet_lich.name=Amulet Licha
|
||||
item.ebwizardry\:amulet_lich.name=Amulet Lisza
|
||||
item.ebwizardry\:amulet_lich.desc=Daje 15%% szansy, że nadchdzące obrażenia przejdą na inne istoty
|
||||
item.ebwizardry\:amulet_wither_immunity.name=Amulet Witherowej Perły
|
||||
item.ebwizardry\:amulet_wither_immunity.desc=Daje całkowita odporność na obumieranie
|
||||
item.ebwizardry\:amulet_wither_immunity.name=Amulet Obumarłej Perły
|
||||
item.ebwizardry\:amulet_wither_immunity.desc=Daje całkowita odporność na obumieranie.
|
||||
item.ebwizardry\:amulet_glide.name=Amulet Wiatru
|
||||
item.ebwizardry\:amulet_glide.desc=Upadek większy niż 3 bloki ma 50%% szans na aktywację efektu opadania
|
||||
item.ebwizardry\:amulet_banishing.name=Amulet Endermana
|
||||
@@ -309,11 +363,19 @@ item.ebwizardry\:amulet_resurrection.name=Amulet Nieśmiertelności
|
||||
item.ebwizardry\:amulet_resurrection.desc=Zaklęcie Zmartwychwstania może być użyte na tobie spoza grobu
|
||||
item.ebwizardry\:amulet_auto_shield.name=Amulet Hyeleth
|
||||
item.ebwizardry\:amulet_auto_shield.desc=Daje 25%% szansy na wywołanie zaklęcia tarczy na kilka sekund po związaniu różdżki z twoim paskiem
|
||||
item.ebwizardry\:amulet_absorption.name=Amulet Witalności
|
||||
item.ebwizardry\:amulet_absorption.desc= Nadmiar zdrowia z zaklęć leczniczych zamienia się w serca
|
||||
|
||||
|
||||
|
||||
item.ebwizardry\:charm_haggler.name=Oznaka Hagglera
|
||||
item.ebwizardry\:charm_haggler.desc=Czarodzieje mają gwarancję zaoferowania nowego handlu za każdym razem, gdy z nimi handlujesz
|
||||
item.ebwizardry\:charm_experience_tome.name=Tom Pilności
|
||||
item.ebwizardry\:charm_experience_tome.desc=Zwiększa szybkość procesu różdżek o 40%%
|
||||
item.ebwizardry\:charm_move_speed.name= Medalion Ikara
|
||||
item.ebwizardry\:charm_move_speed.desc=Pełna szybkość przy rzuceniu zaklęcia
|
||||
item.ebwizardry\:charm_spell_discovery.name=Okulary Marchiwisty
|
||||
item.ebwizardry\:charm_spell_discovery.desc=Książki o zaklęciach znalezione w skrzyniach są znacznie bardziej prawdopodobne, że to te, których jeszcze nie odkryłeś
|
||||
item.ebwizardry\:charm_auto_smelt.name=Znak Metalurga
|
||||
item.ebwizardry\:charm_auto_smelt.desc=Kieszonkowy piec uruchamia się automatycznie po związaniu różdżki z twoim paskiem
|
||||
item.ebwizardry\:charm_lava_walking.name=Lodowy Rdzeń Netheru
|
||||
@@ -324,20 +386,30 @@ item.ebwizardry\:charm_minion_health.name=Obsydianowa Głowa Zombi
|
||||
item.ebwizardry\:charm_minion_health.desc=Przywołane stworzenia są o 25%% silniejsze
|
||||
item.ebwizardry\:charm_minion_variants.name=Talizman Transformacji
|
||||
item.ebwizardry\:charm_minion_variants.desc=Przywołane zombi to posuchy; przywołane szkielety to tułacze
|
||||
item.ebwizardry\:charm_undead_helmets.name=Przeklęty Hełm
|
||||
item.ebwizardry\:charm_undead_helmets.desc=Przyzwane szkielety są odporne na słońce
|
||||
item.ebwizardry\:charm_hunger_casting.name=Demoniczna Pieczęć
|
||||
item.ebwizardry\:charm_hunger_casting.desc=Kiedy brak many, głód może być używany do rzucania zaklęć
|
||||
item.ebwizardry\:charm_flight.name=Szmaragdowe Skrzydło Chrząszcza
|
||||
item.ebwizardry\:charm_flight.desc=Lot i opadanie są o 50%% szybsze
|
||||
item.ebwizardry\:charm_growth.name=Urok Kryształowego Kwiatu
|
||||
item.ebwizardry\:charm_growth.desc=Aura wzrostu ma 35%% szansy na natychmiastowy wzrost upraw aż do osiągnięcia pełnej dojrzałości
|
||||
item.ebwizardry\:charm_abseiling.name=Zaczarowany Sznurek
|
||||
item.ebwizardry\:charm_abseiling.desc=Przytrzymywanie shifta podczas wspinaczki zkalęciem lijany powoduje schodzenie z niej
|
||||
item.ebwizardry\:charm_abseiling.desc=Przytrzymywanie shifta podczas wspinaczki zaklęciem lijany powoduje schodzenie z niej
|
||||
item.ebwizardry\:charm_silk_touch.name=Księżycowa Kula
|
||||
item.ebwizardry\:charm_silk_touch.desc=Bloki zniszczone zaklęciem Magicznego Zniszczenia zawsze wypadają
|
||||
item.ebwizardry\:charm_sixth_sense.name=Skóra Strasznego Wilka
|
||||
item.ebwizardry\:charm_sixth_sense.desc=Szósty zmysł wyświetla różne kolory pasywnych, neutralnych i wrogich potworów
|
||||
item.ebwizardry\:charm_stop_time.name=Osobliwy Zegarek Kieszonkowy
|
||||
item.ebwizardry\:charm_stop_time.desc=Zaklęcie Spowolnienia Czasu sprawia, że czas stoi w miejscu
|
||||
item.ebwizardry\:charm_light.name=Wiecznie Żarząca Latarnia Elviniana
|
||||
item.ebwizardry\:charm_light.desc=Zaklęcie Światła będzie trwało wiecznie i może zostać wygaszone poprzez kliknięcie PPM różdżką na światło
|
||||
item.ebwizardry\:charm_transportation.name=Starożytny Kompas
|
||||
item.ebwizardry\:charm_transportation.desc=Zapamietuje connajmniej cztery kamienne okręgi, które można wybrać jako transport
|
||||
item.ebwizardry\:charm_black_hole.name=Opal Pustki
|
||||
item.ebwizardry\:charm_black_hole.desc=Czarna dziura zasysa i niszczy bloki
|
||||
item.ebwizardry\:charm_mount_teleporting.name=Widmowy Łańcuch
|
||||
item.ebwizardry\:charm_mount_teleporting.desc=Teleportowanie podczas jazdy zwierzęciem lub pojazdem zabiera go ze sobą
|
||||
item.ebwizardry\:charm_feeding.name=Podręczny Worek
|
||||
item.ebwizardry\:charm_feeding.desc=Potrzeba Głodu uzupełnia się automatycznie po związaniu różdżki z paskiem
|
||||
|
||||
@@ -382,7 +454,7 @@ entity.ebwizardry\:skeleton_minion.name=Szkielet
|
||||
entity.ebwizardry\:stray_minion.name=Tułacz
|
||||
entity.ebwizardry\:spider_minion.name=Pająk
|
||||
entity.ebwizardry\:blaze_minion.name=Płomyk
|
||||
entity.ebwizardry\:wither_skeleton_minion.name=Witherowy Szkielet
|
||||
entity.ebwizardry\:wither_skeleton_minion.name=Obumar�y Szkielet
|
||||
entity.ebwizardry\:ice_wraith.name=Sługa Lodu
|
||||
entity.ebwizardry\:lightning_wraith.name=Sługa Piorunów
|
||||
entity.ebwizardry\:shadow_wraith.name=Sługa Cienia
|
||||
@@ -398,30 +470,31 @@ entity.ebwizardry\:evil_wizard.name=Zły Czarodziej
|
||||
entity.ebwizardry\:decoy.name=Klon
|
||||
entity.ebwizardry\:vex_minion.name=Dręczyciel
|
||||
|
||||
entity.ebwizardry\:magic_missile.name=Magia
|
||||
entity.ebwizardry\:arc.name=Magia
|
||||
entity.ebwizardry\:spark_bomb.name=Magia
|
||||
entity.ebwizardry\:ice_shard.name=Magia
|
||||
entity.ebwizardry\:firebomb.name=Magia
|
||||
entity.ebwizardry\:poison_bomb.name=Magia
|
||||
entity.ebwizardry\:force_orb.name=Magia
|
||||
entity.ebwizardry\:spark.name=Magia
|
||||
entity.ebwizardry\:darkness_orb.name=Magia
|
||||
entity.ebwizardry\:fire_sigil.name=Magia
|
||||
entity.ebwizardry\:frost_sigil.name=Magia
|
||||
entity.ebwizardry\:lightning_sigil.name=Magia
|
||||
entity.ebwizardry\:lightning_arrow.name=Magia
|
||||
entity.ebwizardry\:firebolt.name=Magia
|
||||
entity.ebwizardry\:ice_charge.name=Magia
|
||||
entity.ebwizardry\:force_arrow.name=Magia
|
||||
entity.ebwizardry\:dart.name=Magia
|
||||
entity.ebwizardry\:lightning_disc.name=Magia
|
||||
entity.ebwizardry\:thunderbolt.name=Magia
|
||||
entity.ebwizardry\:decay.name=Magia
|
||||
entity.ebwizardry\:ice_lance.name=Magia
|
||||
entity.ebwizardry\:smoke_bomb.name=Magia
|
||||
entity.ebwizardry\:ice_spike.name=Magia
|
||||
entity.ebwizardry\:combustion_rune.name=Magia
|
||||
entity.ebwizardry\:magic_missile.name=Magiczny Pocisk
|
||||
entity.ebwizardry\:arc.name=Łuk
|
||||
entity.ebwizardry\:spark_bomb.name=Bomba Rozpryskowa
|
||||
entity.ebwizardry\:ice_shard.name=Odłamek Lodu
|
||||
entity.ebwizardry\:firebomb.name=Ognista Bomba
|
||||
entity.ebwizardry\:poison_bomb.name=Trująca Bomba
|
||||
entity.ebwizardry\:force_orb.name=Kula Siły
|
||||
entity.ebwizardry\:spark.name=Iskry
|
||||
entity.ebwizardry\:darkness_orb.name=Ciemność
|
||||
entity.ebwizardry\:fire_sigil.name=Ognista Pieczęć
|
||||
entity.ebwizardry\:frost_sigil.name=Lodowa Pieczęć
|
||||
entity.ebwizardry\:lightning_sigil.name=Pieczęć Błyskawic
|
||||
entity.ebwizardry\:lightning_arrow.name=Strzała Błyskawic
|
||||
entity.ebwizardry\:firebolt.name=Ognisty Piorun
|
||||
entity.ebwizardry\:ice_charge.name=Lodowy Ładunek
|
||||
entity.ebwizardry\:force_arrow.name=Strzała Siły
|
||||
entity.ebwizardry\:dart.name=Strzałka
|
||||
entity.ebwizardry\:lightning_disc.name=Dysk Błyskawic
|
||||
entity.ebwizardry\:thunderbolt.name=Błyskawica
|
||||
entity.ebwizardry\:decay.name=Rozkład
|
||||
entity.ebwizardry\:ice_lance.name=Lodowa Lanca
|
||||
entity.ebwizardry\:smoke_bomb.name=Bomba Dymna
|
||||
entity.ebwizardry\:ice_spike.name=Lodowy Kolec
|
||||
entity.ebwizardry\:combustion_rune.name=Runa Zapłonu
|
||||
entity.ebwizardry\:flamecatcher_arrow.name=Strzała Łapacza Płomieni
|
||||
|
||||
entity.ebwizardry\:black_hole.name=Czarna Dziura
|
||||
entity.ebwizardry\:shield.name=Tarcza
|
||||
@@ -437,12 +510,17 @@ entity.ebwizardry\:ring_of_fire.name=Pierścień Ognia
|
||||
entity.ebwizardry\:earthquake.name=Trzęsienie Ziemi
|
||||
entity.ebwizardry\:hailstorm.name=Gradobicie
|
||||
entity.ebwizardry\:lightning_pulse.name=Elektryczny Puls
|
||||
entity.ebwizardry\:stormcloud.name=Chmura Burzowa
|
||||
entity.ebwizardry\:zombie_spawner.name=Tworzenie Zombi
|
||||
entity.ebwizardry\:boulder.name=Głaz
|
||||
entity.ebwizardry\:radiant_totem.name=Promienny Totem
|
||||
entity.ebwizardry\:withering_totem.name=Obumarły Totem
|
||||
|
||||
itemGroup.ebwizardry=Wizardry
|
||||
itemGroup.ebwizardry=Czary
|
||||
itemGroup.ebwizardryspells=Zaklęcia
|
||||
itemGroup.ebwizardrygear=Sprzęt Czarodzieja
|
||||
|
||||
advancement.ebwizardry\:root=Wizardry
|
||||
advancement.ebwizardry\:root=Czary
|
||||
advancement.ebwizardry\:root.desc=Podróż Czarodzieja do mistrza magii
|
||||
advancement.ebwizardry\:crystal=Ciekawy kryształ...
|
||||
advancement.ebwizardry\:crystal.desc=Wykop magiczny kryształ
|
||||
@@ -497,7 +575,7 @@ advancement.ebwizardry\:legendary.desc=Zdobądź legendarną zbroję czarodzieja
|
||||
advancement.ebwizardry\:enchant_scroll=Rozwiń Zwój!
|
||||
advancement.ebwizardry\:enchant_scroll.desc=Stwórz pusty zwój i zaczaruj go zaklęciem w tajemniczym stole
|
||||
|
||||
handbook.toast.title=Nowa rodział w podręczniku zpostał odblokowany!
|
||||
handbook.toast.title=Nowa rodział w podręczniku postaci odblokowany!
|
||||
|
||||
container.ebwizardry\:arcane_workbench=Tajmeniczny Stół
|
||||
container.ebwizardry\:arcane_workbench.apply=Zastosuj
|
||||
@@ -509,20 +587,20 @@ tier.apprentice=Uczeń
|
||||
tier.advanced=Zaawansowany
|
||||
tier.master=Mistrz
|
||||
|
||||
element.magic=Brak
|
||||
element.magic=Magia
|
||||
element.fire=Ogień
|
||||
element.ice=Lód
|
||||
element.lightning=Piorun
|
||||
element.necromancy=Necromancja
|
||||
element.necromancy=Nekromancja
|
||||
element.earth=Ziemia
|
||||
element.sorcery=Czarnoksięstwo
|
||||
element.healing=Uzdrawianie
|
||||
|
||||
element.magic.wizard=Czarodziej
|
||||
element.fire.wizard=Pyromancer
|
||||
element.fire.wizard=Piromanta
|
||||
element.ice.wizard=Mag Lodu
|
||||
element.lightning.wizard=Mag Sztormu
|
||||
element.necromancy.wizard=Necromancer
|
||||
element.necromancy.wizard=Nekromanta
|
||||
element.earth.wizard=Mag Ziemi
|
||||
element.sorcery.wizard=Czarnoksiężnik
|
||||
element.healing.wizard=Uzdrowiciel
|
||||
@@ -547,9 +625,12 @@ spell.ebwizardry\:arcane_lock=Magiczny Zamek
|
||||
spell.ebwizardry\:arrow_rain=Deszcz Strzał
|
||||
spell.ebwizardry\:banish=Wygnanie
|
||||
spell.ebwizardry\:black_hole=Czarna Dziura
|
||||
spell.ebwizardry\:blinding_flash=Oślepiające Światło
|
||||
spell.ebwizardry\:blink=Teleportacja
|
||||
spell.ebwizardry\:blizzard=Burza Śnieżna
|
||||
spell.ebwizardry\:bubble=Bańka
|
||||
spell.ebwizardry\:boulder=Głaz
|
||||
spell.ebwizardry\:celestial_smite=Niebiańskie Uderzenie
|
||||
spell.ebwizardry\:chain_lightning=Łańcuch Piorunów
|
||||
spell.ebwizardry\:charge=Błysk
|
||||
spell.ebwizardry\:clairvoyance=Jasnowidzenie
|
||||
@@ -578,14 +659,18 @@ spell.ebwizardry\:dragon_fireball=Kula Smoka
|
||||
spell.ebwizardry\:earthquake=Trzęsienie Ziemi
|
||||
spell.ebwizardry\:empowering_presence=Wzmocnienie Obecności
|
||||
spell.ebwizardry\:entrapment=Uwięzienie
|
||||
spell.ebwizardry\:enrage=Wściekłość
|
||||
spell.ebwizardry\:evade=Unik
|
||||
spell.ebwizardry\:fangs=Kieł
|
||||
spell.ebwizardry\:fireball=Kula Ognia
|
||||
spell.ebwizardry\:firebolt=Ognisty Pocisk
|
||||
spell.ebwizardry\:firebomb=Ognista Bomba
|
||||
spell.ebwizardry\:fire_resistance=Ognista Więź
|
||||
spell.ebwizardry\:fire_sigil=Pieczęć Ognia
|
||||
spell.ebwizardry\:fireskin=Ognista Skóra
|
||||
spell.ebwizardry\:fire_breath=Fire Breath
|
||||
spell.ebwizardry\:firestorm=Ognisty Sztorm
|
||||
spell.ebwizardry\:fire_breath=Ognisty Oddech
|
||||
spell.ebwizardry\:flamecatcher=Łapacz Płomieni
|
||||
spell.ebwizardry\:flame_ray=Ognisty Promień
|
||||
spell.ebwizardry\:flaming_axe=Ognisty Topór
|
||||
spell.ebwizardry\:flaming_weapon=Ogniste Zaczarowanie
|
||||
@@ -600,17 +685,19 @@ spell.ebwizardry\:forest_of_thorns=Cierniowy Okrąg
|
||||
spell.ebwizardry\:freeze=Zamrożenie
|
||||
spell.ebwizardry\:freezing_weapon=Lodowe Zaczarowanie
|
||||
spell.ebwizardry\:frost_axe=Lodowy Topór
|
||||
spell.ebwizardry\:frost_barrier=Lodowa Bariera
|
||||
spell.ebwizardry\:frost_ray=Lodowy Promień
|
||||
spell.ebwizardry\:frost_sigil=Lodowa Pieczęć
|
||||
spell.ebwizardry\:frost_step=Lodowe Kroki
|
||||
spell.ebwizardry\:glide=Opadanie
|
||||
spell.ebwizardry\:grapple=Lijana
|
||||
spell.ebwizardry\:greater_fireball=Wileka Kula Ognia
|
||||
spell.ebwizardry\:greater_fireball=Wielka Kula Ognia
|
||||
spell.ebwizardry\:greater_heal=Super Uleczanie
|
||||
spell.ebwizardry\:greater_telekinesis=Mistrzowska Telekineza
|
||||
spell.ebwizardry\:greater_ward=Silny Totem
|
||||
spell.ebwizardry\:group_heal=Grupowe Uleczenie
|
||||
spell.ebwizardry\:growth_aura=Aura Wzrostu
|
||||
spell.ebwizardry\:guardian_beam=Strażniczy Promień
|
||||
spell.ebwizardry\:hailstorm=Gradobicie
|
||||
spell.ebwizardry\:heal=Uleczenie
|
||||
spell.ebwizardry\:heal_ally=Uleczenie Sojusznika
|
||||
@@ -634,7 +721,7 @@ spell.ebwizardry\:ironflesh=Żelazna Skóra
|
||||
spell.ebwizardry\:leap=Skok
|
||||
spell.ebwizardry\:levitation=Lewitacja
|
||||
spell.ebwizardry\:life_drain=Wysysanie Życia
|
||||
spell.ebwizardry\:light=Świtło
|
||||
spell.ebwizardry\:light=Światło
|
||||
spell.ebwizardry\:lightning_arrow=Strzała Pioruna
|
||||
spell.ebwizardry\:lightning_bolt=Uderzenie Pioruna
|
||||
spell.ebwizardry\:lightning_disc=Elektryczny Dysk
|
||||
@@ -644,15 +731,18 @@ spell.ebwizardry\:lightning_ray=Elektryczny Promień
|
||||
spell.ebwizardry\:lightning_sigil=Pieczęć Pioruna
|
||||
spell.ebwizardry\:lightning_web=Elektryczna Sieć
|
||||
spell.ebwizardry\:magic_missile=Magiczny Pocisk
|
||||
spell.ebwizardry\:mark_sacrifice=Znak Poświęcenia
|
||||
spell.ebwizardry\:metamorphosis=Metamorfoza
|
||||
spell.ebwizardry\:meteor=Meteor
|
||||
spell.ebwizardry\:mind_control=Kontrola Umysłu
|
||||
spell.ebwizardry\:mind_trick=Zagrywka Psychiczna
|
||||
spell.ebwizardry\:mine=Magiczne Zniszczenie
|
||||
spell.ebwizardry\:mirage=Iluzja
|
||||
spell.ebwizardry\:muffle=Rozproszenie
|
||||
spell.ebwizardry\:none=[Puste miejsce]
|
||||
spell.ebwizardry\:oakflesh=Dębowa Skóra
|
||||
spell.ebwizardry\:paralysis=Paralizacja
|
||||
spell.ebwizardry\:paralysis=Paraliż
|
||||
spell.ebwizardry\:permafrost=Permanentny Mróz
|
||||
spell.ebwizardry\:petrify=Skamieniałość
|
||||
spell.ebwizardry\:phase_step=Szybki Krok
|
||||
spell.ebwizardry\:plague_of_darkness=Plaga Ciemności
|
||||
@@ -661,15 +751,16 @@ spell.ebwizardry\:pocket_workbench=Kieszonkowy Stół Rzemieślniczy
|
||||
spell.ebwizardry\:poison=Zatrucie
|
||||
spell.ebwizardry\:poison_bomb=Zatruta Bomba
|
||||
spell.ebwizardry\:possession=Opętanie
|
||||
spell.ebwizardry\:radiant_totem=Promienny Totem
|
||||
spell.ebwizardry\:ray_of_purification=Promień Oczyszczenia
|
||||
spell.ebwizardry\:remove_curse=Zniewolenie Klątwy
|
||||
spell.ebwizardry\:replenish_hunger=Bogosławieństwo Głodu
|
||||
spell.ebwizardry\:replenish_hunger=Błogosławieństwo Głodu
|
||||
spell.ebwizardry\:resurrection=Zmartwychwstanie
|
||||
spell.ebwizardry\:reversal=Efektowna Zamiana
|
||||
spell.ebwizardry\:ring_of_fire=Pierścień Ognia
|
||||
spell.ebwizardry\:satiety=Nasycenie
|
||||
spell.ebwizardry\:shadow_ward=Sługa Cienia
|
||||
spell.ebwizardry\:shield=Tracza
|
||||
spell.ebwizardry\:shield=Tarcza
|
||||
spell.ebwizardry\:shockwave=Fala Uderzeniowa
|
||||
spell.ebwizardry\:shulker_bullet=Kula Shulkera
|
||||
spell.ebwizardry\:silverfish_swarm=Rój Mszyc
|
||||
@@ -684,6 +775,7 @@ spell.ebwizardry\:spectral_pathway=Spektralny Chodnik
|
||||
spell.ebwizardry\:speed_time=Przyśpieszanie Czasu
|
||||
spell.ebwizardry\:spider_swarm=Rój Pająków
|
||||
spell.ebwizardry\:static_aura=Statyczna Aura
|
||||
spell.ebwizardry\:stormcloud=Chmura Burzowa
|
||||
spell.ebwizardry\:summon_blaze=Przywołanie Płomyka
|
||||
spell.ebwizardry\:summon_ice_giant=Przywołanie Lodowego Olbrzyma
|
||||
spell.ebwizardry\:summon_ice_wraith=Przywołanie Lodowego Sługi
|
||||
@@ -697,7 +789,7 @@ spell.ebwizardry\:summon_snow_golem=Przywołanie Śnieżnego Golema
|
||||
spell.ebwizardry\:summon_spirit_horse=Przywołanie Duchowego Konia
|
||||
spell.ebwizardry\:summon_spirit_wolf=Przywołanie Duchowego Wilka
|
||||
spell.ebwizardry\:summon_storm_elemental=Przywołanie Sługi Sztormu
|
||||
spell.ebwizardry\:summon_wither_skeleton=Przywołanie Witherowego Szkieleta
|
||||
spell.ebwizardry\:summon_wither_skeleton=Przywołanie Obumarłego Szkieleta
|
||||
spell.ebwizardry\:summon_zombie=Przywołanie Zombi
|
||||
spell.ebwizardry\:telekinesis=Telekineza
|
||||
spell.ebwizardry\:thunderbolt=Wybuchowy Piorun
|
||||
@@ -711,8 +803,10 @@ spell.ebwizardry\:wall_of_frost=Lodowa Ściana
|
||||
spell.ebwizardry\:ward=Totem
|
||||
spell.ebwizardry\:water_breathing=Silne Płuca
|
||||
spell.ebwizardry\:whirlwind=Podmuch Wiatru
|
||||
spell.ebwizardry\:wither=Wither
|
||||
spell.ebwizardry\:wither_skull=Czaszka Withera
|
||||
spell.ebwizardry\:wither=Obumieranie
|
||||
spell.ebwizardry\:wither_skull=Czaszka Obumierania
|
||||
spell.ebwizardry\:withering_totem=Obumarły Totem
|
||||
spell.ebwizardry\:zombie_apocalypse=Apokalipsa Zombi
|
||||
|
||||
spell.ebwizardry\:agility.desc=Zapewnia rzucającemu szybszą prędkość ruchu i większą wysokość skoku na 30 sekund.
|
||||
spell.ebwizardry\:arc.desc=Wystrzeliwuje iskierkę błyskawicy w cel.
|
||||
@@ -721,8 +815,10 @@ spell.ebwizardry\:arcane_lock.desc=Tworzy nieprzenikalną barierę wokół skrzy
|
||||
spell.ebwizardry\:arrow_rain.desc="Łucznicy, ogień!"
|
||||
spell.ebwizardry\:banish.desc=Teleportuje cel wbrew swojej woli do losowych lokalizacji w określonym zasięgu.
|
||||
spell.ebwizardry\:black_hole.desc=Łza rzeczywistości rozrywa się.
|
||||
spell.ebwizardry\:blinding_flash.desc=Emituje intensywny błysk światła, który oślepia wszystkie pobliskie stworzenia
|
||||
spell.ebwizardry\:blink.desc=Teleportuje rzucającego na niewielką odległość do miejsca, w które wskazał.
|
||||
spell.ebwizardry\:blizzard.desc=Tworzy strefę wirującego lodowatego wiatru, który spowalnia i nieustannie niszczy wszystko uwięzione w środku. Rzucający jest odporny na obrażenia, ale zostanie także spowolniony.
|
||||
spell.ebwizardry\:boulder.desc=""Niech świat będzie moją kręgielnią"
|
||||
spell.ebwizardry\:bubble.desc=Wystrzeliwuje strumień bąbelków, który sprawia, że wszystko, co uderzy, unosi się bezradnie w górę. Cel spadnie po pewnym czasie lub gdy zostanie zraniony.
|
||||
spell.ebwizardry\:chain_lightning.desc=Wystrzeliwuje iskierkę pioruna w cel, który następnie łączy się z dodatkowymi celami przekazując piorun nawet dwukrotnie.
|
||||
spell.ebwizardry\:charge.desc=Powoduje, że rzucający wyrzuca się szybko w kierunku, w którym patrzy, uszkadzając i odrzucając wszystko na swojej drodze.
|
||||
@@ -747,19 +843,23 @@ spell.ebwizardry\:decoy.desc=Tworzy iluzjonistyczny klon rzucającego, który zm
|
||||
spell.ebwizardry\:detonate.desc=Powoduje eksplozję w miejscu, w które celujesz, uszkadzając wszystkie pobliskie stworzenia - w tym rzucającego, jeśli stoi zbyt blisko.
|
||||
spell.ebwizardry\:diamondflesh.desc="Twoje strzały nie pasują do mnie!"
|
||||
spell.ebwizardry\:disintegration.desc=Wystrzeliwuje potężny pocisk ognia w bliskiej odległości przed tobą, co powoduje, że cele zabijają wybuchające płomienie. Stwory, które nadepną na żar, zostaną podpalone.
|
||||
spell.ebwizardry\:divination.desc=Prowadzi rzucającego do pobliskich rud i zasobów. Potencja zwiększy szansę na znalezienie cenniejszych rud.
|
||||
spell.ebwizardry\:divination.desc=Prowadzi rzucającego do pobliskich rud i zasobów. Potencjał zwiększy szansę na znalezienie cenniejszych rud.
|
||||
spell.ebwizardry\:dragon_fireball.desc=Wystrzeliwuje kulę Smoka Endu we wskazanym przez ciebie kierunku, która przy uderzeniu uwalnia trującą chmurę.
|
||||
spell.ebwizardry\:earthquake.desc=Prawdziwy mistrz magii ziemi może przenosić góry.
|
||||
spell.ebwizardry\:empowering_presence.desc=Zapewnia rzucającemu i pobliskim sojusznikom zwiększone obrażenia magiczne na 30 sekund.
|
||||
spell.ebwizardry\:enrage.desc=Powoduje, że pobliskie stworzenia wpadają w furię atakując wszystko oprócz ciebie.
|
||||
spell.ebwizardry\:entrapment.desc=Zniewala cel w kuli ciemności, która ciągnie go bezradnie w górę i nieustannie go uszkadza.
|
||||
spell.ebwizardry\:evade.desc=Powoduje, że rzucający szybko skacze na boki, aby unikać nadchodzących ataków.
|
||||
spell.ebwizardry\\:fangs.desc=Wyciąga rząd przywołujących kłów przed kółkiem, które wznoszą się z ziemi, gryząc tłumy na swojej drodze.
|
||||
spell.ebwizardry\:fireball.desc=Wystrzeliwuje ognistą kulę we wskazanym kierunku.
|
||||
spell.ebwizardry\:firebolt.desc=Wystrzeliwuje strumień ognia na niewielką odległość.
|
||||
spell.ebwizardry\:firebomb.desc=Wyrzuca ognistą bombę w kierunku, w którym wskazujesz, który eksploduje przy uderzeniu, podpalając cele.
|
||||
spell.ebwizardry\:fire_resistance.desc=Zapewnia rzucającej odporność na ogień na 30 sekund.
|
||||
spell.ebwizardry\:fire_sigil.desc=Umieszcza na ziemi magiczną pułapkę ognia, która uszkadza i podpala stworzenie, które na nią nadepnie.
|
||||
spell.ebwizardry\:fireskin.desc=Ukrywa rzucającego w płomieniach na 30 sekund, powodując, że wszystko, co go zaatakuje, zapali się.
|
||||
spell.ebwizardry\:firestorm.desc="Oczyścić ziemię! Drzewa będą płonąć, a jeziora gotować się będą!
|
||||
spell.ebwizardry\:fire_breath.desc="Jestem smokiem."
|
||||
spell.ebwizardry\:flamecatcher.desc= Mówi się, że w czasach potrzeby, oferuje swoją moc godnym Piromanom.
|
||||
spell.ebwizardry\:flame_ray.desc=Tworzy strumień płomieni w kierunku, który wskazujesz, jednocześnie podpalając i nieustannie niszcząc cele.
|
||||
spell.ebwizardry\:flaming_axe.desc=Tworzy płonący topór, który po trafieniu podpala wrogów. Utrzymuje się przez 30 sekund.
|
||||
spell.ebwizardry\:flaming_weapon.desc=Tymczasowo nasyca pierwszą broń na pasku rzucającego mocą ognia, powodując, że podpala ona ofiary. Zaklęcie znika po 45 sekundach.
|
||||
@@ -823,6 +923,7 @@ spell.ebwizardry\:meteor.desc=Niektórzy czarodzieje chcą tylko, aby świat pł
|
||||
spell.ebwizardry\:mind_control.desc=Przejmuje kontrolę nad umysłem celu przez 30 sekund, powodując, że zmienia on stronę bitwy i zamiast tego walczy po stronie rzucającego. Nie działa na stworzenia o zbyt silnej woli.
|
||||
spell.ebwizardry\:mind_trick.desc=Myli i dezorientuje cel na 15 sekund, uniemożliwiając mu skuteczny atak. Efekt zostanie rozproszony, jeśli cel zada jakiekolwiek obrażenia.
|
||||
spell.ebwizardry\:mine.desc=Niszczy blok, na który patrzy rzucający. Potencja pozwoli przełamać trudniejsze bloki.
|
||||
spell.ebwizardry\:mirage.desc=Tworzy iluzję. Iluzja utrzymuje się przez 20 sekund.
|
||||
spell.ebwizardry\:muffle.desc=Wycisza wszelkie dźwięki wydawane przez rzucającego na 30 sekund. Po stłumieniu moby mogą cię wykryć tylko w przypadku patrzenia na ciebie.
|
||||
spell.ebwizardry\:none.desc=Aby zdobyć księgę zkalęć za pomocą /give command, użyj id\: /give [gracz] ebwizardry\:spell_book 1 [spell id] (jeśli znalazłeś tę książkę w skrzyni, to jakiś inny mod coś popsuł).
|
||||
spell.ebwizardry\:oakflesh.desc=Zwiększa odporność rzucającego na obrażenia na 30 sekund.
|
||||
@@ -835,6 +936,7 @@ spell.ebwizardry\:pocket_workbench.desc=Pozwala rzucającemu tworzyć przedmioty
|
||||
spell.ebwizardry\:poison.desc=Wystrzeliwuje truciznę we wskazanym kierunku.
|
||||
spell.ebwizardry\:poison_bomb.desc=Wystrzeliwuje trującą bombę w pożądanym kierunku, która wybucha przy uderzeniu, zatruwając pobliskie stworzenia.
|
||||
spell.ebwizardry\:possession.desc="Zostań swoim wrogiem."
|
||||
spell.ebwizardry\:radiant_totem.desc=Tworzy promienny totem, który strzela promieniem światła do pobliskich stworzeń, lecząc sojuszników, ale niszcząc tłumy.
|
||||
spell.ebwizardry\:ray_of_purification.desc=Emituje promień oślepiającego światła, który uszkadza i oślepia cele. Nieumarłe stworzenia otrzymują podwójne obrażenia i zostają podpalone.
|
||||
spell.ebwizardry\:remove_curse.desc=Usuwa wszelkie klątwy, które dzierży rzucający.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Uzupełnia poziom głodu rzucającego o 3 punkty.
|
||||
@@ -858,6 +960,7 @@ spell.ebwizardry\:spectral_pathway.desc=Tworzy przed sobą niezniszczalny magicz
|
||||
spell.ebwizardry\:speed_time.desc=...dzień, noc, świt, zmierzch, wschód i zachód słońca\: tak czas uwięził nas w niekończącym się cyklu...
|
||||
spell.ebwizardry\:spider_swarm.desc=Przywołuje rój jadowitych pająków, które walczą po twojej stronie. Pająki znikną po 30 sekundach lub gdy zostaną zabite.
|
||||
spell.ebwizardry\:static_aura.desc=Otacza rzucającego elektryczną aurą przez 30 sekund, wystrzeliwując błyskawice we wszystko, co go trafi.
|
||||
spell.ebwizardry\:stormcloud.desc=Wyczarowuje pływającą pod którą uderza piorun.
|
||||
spell.ebwizardry\:summon_blaze.desc=Przywołuje płomyka, która pomoże ci w walce. Płomyk zniknie po 30 sekundach lub po zabiciu.
|
||||
spell.ebwizardry\:summon_ice_giant.desc="Rozbić je!"
|
||||
spell.ebwizardry\:summon_ice_wraith.desc=Przywołuje sługe lodu, by walczył za ciebie. Lodowy sługa zniknie po 30 sekundach lub po zabiciu.
|
||||
@@ -871,7 +974,7 @@ spell.ebwizardry\:summon_snow_golem.desc=Tworzy śnieżnego golema, aby wlaczył
|
||||
spell.ebwizardry\:summon_spirit_horse.desc=Przywołuje duchowego konia, abyś mógł na nim jeździć. Duchowy koń zniknie niedługo po zejściu z niego lub możesz go odesłać, klikając na niego dowolną różdżką z klaiwszem shift.
|
||||
spell.ebwizardry\:summon_spirit_wolf.desc=Przywołuje duchowego wilka, który walczy po twojej stronie. Duchowy wilk zniknie tylko wtedy, gdy zostanie zabity, lub zostanie odesłany poprzez kliknięcie na niego różdżką z klawiszem shift.
|
||||
spell.ebwizardry\:summon_storm_elemental.desc="Element Sztormu\: Starożytna manifestacja żywiołów, z trudem może zawierać w sobie surową moc." - Przewodnik czarodzieja o tajemnych istotach, Tom II
|
||||
spell.ebwizardry\:summon_wither_skeleton.desc=Przywołuje witherowego szkieleta, by walczył dla ciebie. Witherowy szkielet zniknie po 30 sekundach lub gdy zostanie zabity.
|
||||
spell.ebwizardry\:summon_wither_skeleton.desc=Przywołuje obumarłego szkieleta, by walczył dla ciebie. Niszczący szkielet zniknie po 30 sekundach lub gdy zostanie zabity.
|
||||
spell.ebwizardry\:summon_zombie.desc=Przywołuje zombi, który walczy dla ciebie. Zombi zniknie po 30 sekundach lub gdy zostanie zabity.
|
||||
spell.ebwizardry\:telekinesis.desc=Przyciąga przedmiot lub inny mały obiekt w twoim kierunku za jednym machnięciem różdżki. Może być również użyty do rozbrojenia graczy.
|
||||
spell.ebwizardry\:thunderbolt.desc=Wystrzeliwuje elektryczną wiązkę, który odrzuca cele.
|
||||
@@ -886,7 +989,9 @@ spell.ebwizardry\:ward.desc=Daje rzucającemu efekt osłony, który zmniejsza ot
|
||||
spell.ebwizardry\:water_breathing.desc=Pozwala rzucającemu oddychać pod wodą przez 60 sekund.
|
||||
spell.ebwizardry\:whirlwind.desc=Powoduje, że cel jest wybijany przez rzucającego.
|
||||
spell.ebwizardry\:wither.desc=Wystrzeliwuje promień ciemności, który sprowadza obumieranie na wszystko co stoi mu na drodze.
|
||||
spell.ebwizardry\:wither_skull.desc=Wystrzeliwuje witherową czaszkę wskazywanym przez ciebie kierunku.
|
||||
spell.ebwizardry\:wither_skull.desc=Wystrzeliwuje obumarłą czaszkę we wskazywanym przez ciebie kierunku.
|
||||
spell.ebwizardry\:withering_totem.desc=Przywołuje obumarły totem. Totem eksploduje po 30 sekundach, zadając tym więcej szkód, im więcej zdrowia wycieka.
|
||||
spell.ebwizardry\:zombie_apocalypse.desc=Otworzenie portalu do podziemia jest łatwe. Trudność polega na zamknięciu go ponownie, gdy coś pójdzie źle.
|
||||
|
||||
spell.ebwizardry\:invoke_weather.sun=Deszcz przestaje padać...
|
||||
spell.ebwizardry\:invoke_weather.rain=Niebiosa otwierają się...
|
||||
@@ -982,7 +1087,7 @@ potion.ebwizardry\:mind_trick=Zagrywka Psychiczna
|
||||
potion.ebwizardry\:mind_control=Kontrola umysłu
|
||||
potion.ebwizardry\:font_of_mana=Bogosławieństwo Many
|
||||
potion.ebwizardry\:fear=Strach
|
||||
potion.ebwizardry\:curse_of_soulbinding=Fear
|
||||
potion.ebwizardry\:curse_of_soulbinding=Strach
|
||||
potion.ebwizardry\:paralysis=Paraliż
|
||||
potion.ebwizardry\:muffle=Unik
|
||||
potion.ebwizardry\:ward=Totem
|
||||
@@ -992,6 +1097,9 @@ potion.ebwizardry\:curse_of_enfeeblement=Klątwa Osłabienia
|
||||
potion.ebwizardry\:curse_of_undeath=Klątwa Nieumarłych
|
||||
potion.ebwizardry\:containment=Wygaszenie
|
||||
potion.ebwizardry\:frost_step=Lodowe Stopy
|
||||
potion.ebwizardry\:mark_of_sacrifice=Znak Ofiary
|
||||
potion.ebwizardry\:mirage=Iluzja
|
||||
|
||||
|
||||
enchantment.ebwizardry\:magic_sword=Nasycenie
|
||||
enchantment.ebwizardry\:magic_bow=Nasycenie
|
||||
@@ -999,11 +1107,11 @@ enchantment.ebwizardry\:flaming_weapon=Ogniste Nasycenie
|
||||
enchantment.ebwizardry\:freezing_weapon=Lodowe Nasycenie
|
||||
enchantment.ebwizardry\:shocking_weapon=Pioronujące Nasycenie
|
||||
|
||||
enchantment.ebwizardry\:magic_protection=Ochrona prze magią
|
||||
enchantment.ebwizardry\:frost_protection=Ochrona prze mrozem
|
||||
enchantment.ebwizardry\:magic_protection=Ochrona przed magią
|
||||
enchantment.ebwizardry\:frost_protection=Ochrona przed mrozem
|
||||
enchantment.ebwizardry\:shock_protection=Ochrona przed porażeniem
|
||||
|
||||
key.categories.ebwizardry=Wizardry
|
||||
key.categories.ebwizardry=Czary
|
||||
|
||||
key.ebwizardry.next_spell=Następne zaklęcie
|
||||
key.ebwizardry.previous_spell=Poprzednie zaklęcie
|
||||
@@ -1234,7 +1342,7 @@ config.ebwizardry.allies_command_name.tooltip=Nazwa pod komendą /allies . To je
|
||||
|
||||
config.ebwizardry.category.resistances=Konfiguracja odporości
|
||||
config.ebwizardry.category.resistances.tooltip=Skonfiguruj, które moby są odporne na różne rodzaje magii
|
||||
config.ebwizardry.title.resistances=Konfiguracja odporości
|
||||
config.ebwizardry.title.resistances=Konfiguracja odporności
|
||||
config.ebwizardry.subtitle.resistances=Ustawienia, które pozwalają by moby stały się odporne na niektóre rodzaje magii.
|
||||
|
||||
config.ebwizardry.mobs_immune_to_fire=Moby odporne na ogień
|
||||
@@ -1277,3 +1385,6 @@ integration.antiqueatlas.marker.ebwizardry.obelisk=Obelisk
|
||||
integration.antiqueatlas.marker.ebwizardry.shrine=Świątynia
|
||||
|
||||
wizard.debug=%1$s, %2$s, %3$s
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -95,11 +95,6 @@
|
||||
"name": "ebwizardry:spark_bomb",
|
||||
"weight": 8
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:armour_upgrade",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:astral_diamond",
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"name": "ebwizardry:subsets/wand_upgrades",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"type": "loot_table",
|
||||
"name": "ebwizardry:subsets/armour_upgrades",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:spell_book",
|
||||
|
||||
@@ -38,6 +38,11 @@
|
||||
"name": "ebwizardry:subsets/wand_upgrades",
|
||||
"weight": 4
|
||||
},
|
||||
{
|
||||
"type": "loot_table",
|
||||
"name": "ebwizardry:subsets/armour_upgrades",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:spell_book",
|
||||
@@ -100,11 +105,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:armour_upgrade",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:astral_diamond",
|
||||
|
||||
@@ -27,6 +27,11 @@
|
||||
"name": "ebwizardry:subsets/wand_upgrades",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"type": "loot_table",
|
||||
"name": "ebwizardry:subsets/armour_upgrades",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:magic_crystal",
|
||||
@@ -70,11 +75,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:armour_upgrade",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:identification_scroll",
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"pools": [
|
||||
{
|
||||
"name": "upgrades",
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:resplendent_thread",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:crystal_silver_plating",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"type": "item",
|
||||
"name": "ebwizardry:ethereal_crystalweave",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_earth"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_fire"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_healing"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_ice"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_lightning"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_necromancy"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_boots_sorcery"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_earth"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_fire"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_healing"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_ice"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_lightning"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_necromancy"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_chestplate_sorcery"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_helmet"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "ebwizardry:items/battlemage_helmet_earth"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user