Merge pull request #8 from Corail31/1.12.2

1.12 conversion
This commit is contained in:
Electroblob
2018-03-16 00:00:53 +00:00
committed by GitHub
126 changed files with 1044 additions and 563 deletions
@@ -15,7 +15,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData; import net.minecraft.world.storage.WorldSavedData;
import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.Constants.NBT;
import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -9,6 +9,8 @@ import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.enchantment.Imbuement; import electroblob.wizardry.enchantment.Imbuement;
import electroblob.wizardry.entity.EntityShield; import electroblob.wizardry.entity.EntityShield;
@@ -20,7 +22,6 @@ import electroblob.wizardry.packet.PacketPlayerSync;
import electroblob.wizardry.packet.PacketTransportation; import electroblob.wizardry.packet.PacketTransportation;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.spell.None; import electroblob.wizardry.spell.None;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
@@ -178,13 +179,13 @@ public class WizardData implements INBTSerializable<NBTTagCompound> {
if(!spellsDiscovered.add(spell)) return false; if(!spellsDiscovered.add(spell)) return false;
// If the spell had not already been discovered, achievements can be triggered and the method returns true // If the spell had not already been discovered, achievements can be triggered and the method returns true
if(spellsDiscovered.containsAll(Spell.getSpells(Spell::isEnabled))){ if(spellsDiscovered.containsAll(Spell.getSpells(Spell::isEnabled))){
this.player.addStat(WizardryAchievements.all_spells); AdvancementHelper.grantAdvancement(player, EnumAdvancement.all_spells);
} }
for(Element element : Element.values()){ for(Element element : Element.values()){
if(element != Element.MAGIC if(element != Element.MAGIC
&& spellsDiscovered.containsAll(Spell.getSpells(new Spell.TierElementFilter(null, element)))){ && spellsDiscovered.containsAll(Spell.getSpells(new Spell.TierElementFilter(null, element)))){
this.player.addStat(WizardryAchievements.element_master); AdvancementHelper.grantAdvancement(player, EnumAdvancement.element_master);
} }
} }
@@ -7,31 +7,29 @@ import electroblob.wizardry.command.CommandDiscoverSpell;
import electroblob.wizardry.command.CommandSetAlly; import electroblob.wizardry.command.CommandSetAlly;
import electroblob.wizardry.command.CommandViewAllies; import electroblob.wizardry.command.CommandViewAllies;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryRegistry; import electroblob.wizardry.registry.WizardryRegistry;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTBase;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.AchievementPage;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.Capability.IStorage; import net.minecraftforge.common.capabilities.Capability.IStorage;
import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.RegistryEvent.MissingMappings;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry.Type;
@Mod(modid = Wizardry.MODID, name = Wizardry.NAME, version = Wizardry.VERSION, guiFactory = "electroblob." + Wizardry.MODID + ".WizardryGuiFactory") @Mod(modid = Wizardry.MODID, name = Wizardry.NAME, version = Wizardry.VERSION, guiFactory = "electroblob." + Wizardry.MODID + ".WizardryGuiFactory")
public class Wizardry { public class Wizardry {
@@ -140,9 +138,6 @@ public class Wizardry {
// The check for the generateLoot setting is now done within this method. // The check for the generateLoot setting is now done within this method.
WizardryRegistry.registerLoot(); WizardryRegistry.registerLoot();
// NOTE: Will need to be moved to init for 1.12, as will anything that needs to be after the registry events.
WizardryTabs.sort();
// Moved to preInit, because apparently it has to be here now. // Moved to preInit, because apparently it has to be here now.
proxy.registerRenderers(); proxy.registerRenderers();
// It seems this also has to be here // It seems this also has to be here
@@ -163,12 +158,8 @@ public class Wizardry {
NetworkRegistry.INSTANCE.registerGuiHandler(this, new WizardryGuiHandler()); NetworkRegistry.INSTANCE.registerGuiHandler(this, new WizardryGuiHandler());
WizardryPacketHandler.initPackets(); WizardryPacketHandler.initPackets();
// Achievements // NOTE: Will need to be moved to init for 1.12, as will anything that needs to be after the registry events.
AchievementPage.registerAchievementPage(WizardryAchievements.WIZARDRY_ACHIEVEMENT_PAGE); WizardryTabs.sort();
// Recipes
WizardryRegistry.registerRecipes();
proxy.initGuiBits(); proxy.initGuiBits();
} }
@@ -203,14 +194,14 @@ public class Wizardry {
// NOTE: Needs changing to RegistryEvent.MissingMapping in 1.12, or just removing since nobody updates minecraft // NOTE: Needs changing to RegistryEvent.MissingMapping in 1.12, or just removing since nobody updates minecraft
// versions when using mods. // versions when using mods.
@EventHandler @EventHandler
public static void onMissingMappingEvent(FMLMissingMappingsEvent event){ public static void onMissingMappingEvent(RegistryEvent.MissingMappings<Item> event){
// Just get, not getAll, since the mod id didn't change! // Just get, not getAll, since the mod id didn't change!
for(FMLMissingMappingsEvent.MissingMapping mapping : event.get()){ for(MissingMappings.Mapping<Item> mapping : event.getAllMappings()){
if(mapping.type == Type.ITEM && mapping.resourceLocation.getResourceDomain().equals(Wizardry.MODID)){ if(mapping.key.getResourceDomain().equals(Wizardry.MODID)){
Item replacement = null; Item replacement = null;
switch(mapping.resourceLocation.getResourcePath()){ switch(mapping.key.getResourcePath()){
case "wand_basic": replacement = WizardryItems.magic_wand; break; case "wand_basic": replacement = WizardryItems.magic_wand; break;
case "wand_basic_fire": replacement = WizardryItems.basic_fire_wand; break; case "wand_basic_fire": replacement = WizardryItems.basic_fire_wand; break;
@@ -1,5 +1,7 @@
package electroblob.wizardry; package electroblob.wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.entity.EntityArc;
import electroblob.wizardry.entity.living.EntityEvilWizard; import electroblob.wizardry.entity.living.EntityEvilWizard;
@@ -10,7 +12,6 @@ import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.item.ItemWand;
import electroblob.wizardry.item.ItemWizardArmour; import electroblob.wizardry.item.ItemWizardArmour;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryEnchantments; import electroblob.wizardry.registry.WizardryEnchantments;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
@@ -353,7 +354,7 @@ public final class WizardryEventHandler {
} }
if(event.getEntityLiving() == player && event.getSource() instanceof IElementalDamage){ if(event.getEntityLiving() == player && event.getSource() instanceof IElementalDamage){
player.addStat(WizardryAchievements.self_destruct); AdvancementHelper.grantAdvancement(player, EnumAdvancement.self_destruct);
} }
} }
} }
@@ -386,7 +387,7 @@ public final class WizardryEventHandler {
@SubscribeEvent @SubscribeEvent
public static void onItemPickupEvent(EntityItemPickupEvent event){ public static void onItemPickupEvent(EntityItemPickupEvent event){
if(event.getItem().getItem().getItem() == WizardryItems.magic_crystal){ if(event.getItem().getItem().getItem() == WizardryItems.magic_crystal){
event.getEntityPlayer().addStat(WizardryAchievements.crystal, 1); AdvancementHelper.grantAdvancement(event.getEntityPlayer(), EnumAdvancement.crystal);
} }
} }
@@ -13,22 +13,11 @@ public class WizardryGuiFactory implements IModGuiFactory {
public void initialize(Minecraft minecraftInstance){ public void initialize(Minecraft minecraftInstance){
} }
@Override
public Class<? extends GuiScreen> mainConfigGuiClass(){
return GuiConfigWizardry.class;
}
@Override @Override
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories(){ public Set<RuntimeOptionCategoryElement> runtimeGuiCategories(){
return null; return null;
} }
@SuppressWarnings("deprecation") // It's a bit of Forge that hasn't been tidied up, but we have to implement it.
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element){
return null;
}
@Override @Override
public boolean hasConfigGui(){ public boolean hasConfigGui(){
return true; return true;
@@ -30,8 +30,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.storage.loot.LootContext; import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootTable; import net.minecraft.world.storage.loot.LootTable;
@@ -0,0 +1,59 @@
package electroblob.wizardry.advancement;
import electroblob.wizardry.Wizardry;
import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementManager;
import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ResourceLocation;
/**
* This is a provisory class for the transition to 1.12
* It contains an enum with all the advancements of this mod
* and an helper to grant advancements on the server side only (like the command)
*/
public class AdvancementHelper {
public enum EnumAdvancement {
crystal,
arcane_initiate,
apprentice,
master,
all_spells,
wizard_trade,
buy_master_spell,
freeze_blaze,
charge_creeper,
frankenstein,
special_upgrade,
craft_flask,
elemental,
armour_set,
legendary,
self_destruct,
pig_tornado,
jam_wizard,
slime_skeleton,
anger_wizard,
defeat_evil_wizard,
max_out_wand,
element_master,
identify_spell;
}
public static boolean grantAdvancement(EntityPlayer player, EnumAdvancement advancementName) {
if (player == null) { return false; }
if (player.world.isRemote) { return true; }
EntityPlayerMP player_mp = player.getServer().getPlayerList().getPlayerByUUID(player.getUniqueID());
AdvancementManager am = player_mp.getServerWorld().getAdvancementManager();
Advancement advancement = am.getAdvancement(new ResourceLocation(Wizardry.MODID, advancementName.name()));
if (advancement == null) { return false; }
AdvancementProgress advancementprogress = player_mp.getAdvancements().getProgress(advancement);
if (!advancementprogress.isDone()) {
for (String criteria : advancementprogress.getRemaningCriteria()) {
player_mp.getAdvancements().grantCriterion(advancement, criteria);
}
}
return true;
}
}
@@ -35,8 +35,8 @@ public class EntityNameEntry extends StringEntry {
@Override @Override
public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY, public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY,
boolean isSelected){ boolean isSelected, float partialTicks){
// super.drawEntry(slotIndex, x, y, listWidth, slotHeight, tessellator, mouseX, mouseY, isSelected); //super.drawEntry(slotIndex, x, y, listWidth, slotHeight, mouseX, mouseY, isSelected, partial);
this.btnValue.x = listWidth / 4; this.btnValue.x = listWidth / 4;
this.btnValue.y = y; this.btnValue.y = y;
@@ -47,7 +47,7 @@ public class EntityNameEntry extends StringEntry {
this.btnValue.displayString = this.textFieldValue.getText(); this.btnValue.displayString = this.textFieldValue.getText();
// btnValue.packedFGColour = value ? GuiUtils.getColorCode('2', true) : GuiUtils.getColorCode('4', true); // btnValue.packedFGColour = value ? GuiUtils.getColorCode('2', true) : GuiUtils.getColorCode('4', true);
this.btnValue.drawButton(owningEntryList.getMC(), mouseX, mouseY); this.btnValue.drawButton(owningEntryList.getMC(), mouseX, mouseY, partialTicks);
} }
@Override @Override
@@ -16,8 +16,8 @@ class GuiButtonApply extends GuiButton {
} }
@Override @Override
public void drawButton(Minecraft minecraft, int mouseX, int mouseY){ public void drawButton(Minecraft minecraft, int mouseX, int mouseY, float partialTicks){
// Whether the button is highlighted // Whether the button is highlighted
this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width
&& mouseY < this.y + this.height; && mouseY < this.y + this.height;
@@ -22,10 +22,10 @@ import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
@@ -530,7 +530,7 @@ public class GuiWizardHandbook extends GuiScreen {
int height){ int height){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((x), y + finalHeight, 0).tex(u, v + height).endVertex(); buffer.pos((x), y + finalHeight, 0).tex(u, v + height).endVertex();
buffer.pos(x + finalWidth, y + finalHeight, 0).tex(u + width, v + height).endVertex(); buffer.pos(x + finalWidth, y + finalHeight, 0).tex(u + width, v + height).endVertex();
@@ -17,10 +17,10 @@ import electroblob.wizardry.tileentity.ContainerArcaneWorkbench;
import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WandHelper;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -153,7 +153,7 @@ public final class WizardryClientEventHandler {
&& rayTrace.entityHit == event.getEntity() && properties != null && properties.selectedMinion != null){ && rayTrace.entityHit == event.getEntity() && properties != null && properties.selectedMinion != null){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -194,7 +194,7 @@ public final class WizardryClientEventHandler {
if(properties != null && properties.selectedMinion != null && properties.selectedMinion.get() == event.getEntity()){ if(properties != null && properties.selectedMinion != null && properties.selectedMinion.get() == event.getEntity()){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -233,11 +233,11 @@ public final class WizardryClientEventHandler {
// Sixth sense // Sixth sense
if(mc.player.isPotionActive(WizardryPotions.sixth_sense) && !(event.getEntity() instanceof EntityArmorStand) && event.getEntity() != mc.player if(mc.player.isPotionActive(WizardryPotions.sixth_sense) && !(event.getEntity() instanceof EntityArmorStand) && event.getEntity() != mc.player
&& mc.player.getActivePotionEffect(WizardryPotions.sixth_sense) != null && event.getEntity().getDistanceToEntity(mc.player) < 20 && mc.player.getActivePotionEffect(WizardryPotions.sixth_sense) != null && event.getEntity().getDistance(mc.player) < 20
* (1 + mc.player.getActivePotionEffect(WizardryPotions.sixth_sense).getAmplifier() * Constants.RANGE_INCREASE_PER_LEVEL)){ * (1 + mc.player.getActivePotionEffect(WizardryPotions.sixth_sense).getAmplifier() * Constants.RANGE_INCREASE_PER_LEVEL)){
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -293,7 +293,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(sixthSenseOverlayTexture); Minecraft.getMinecraft().renderEngine.bindTexture(sixthSenseOverlayTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
@@ -323,7 +323,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(frostOverlayTexture); Minecraft.getMinecraft().renderEngine.bindTexture(frostOverlayTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex(); buffer.pos(0.0D, (double)event.getResolution().getScaledHeight(), -90.0D).tex(0.0D, 1.0D).endVertex();
@@ -371,7 +371,7 @@ public final class WizardryClientEventHandler {
GlStateManager.scale(1.1, 1.1, 1.1); GlStateManager.scale(1.1, 1.1, 1.1);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
@@ -421,7 +421,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(shadowWardTexture); Minecraft.getMinecraft().renderEngine.bindTexture(shadowWardTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.translate(0, 1.2, 0); GlStateManager.translate(0, 1.2, 0);
GlStateManager.rotate(entityplayer.world.getWorldTime() * -2, 0, 0, 1); GlStateManager.rotate(entityplayer.world.getWorldTime() * -2, 0, 0, 1);
@@ -472,7 +472,7 @@ public final class WizardryClientEventHandler {
Minecraft.getMinecraft().renderEngine.bindTexture(wingTexture); Minecraft.getMinecraft().renderEngine.bindTexture(wingTexture);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -615,7 +615,7 @@ public final class WizardryClientEventHandler {
private static void renderShield(Tessellator tessellator){ private static void renderShield(Tessellator tessellator){
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
double widthOuter = 0.6d; double widthOuter = 0.6d;
double heightOuter = 0.7d; double heightOuter = 0.7d;
@@ -174,7 +174,7 @@ public final class WizardryItemModels {
if(item.getHasSubtypes()){ if(item.getHasSubtypes()){
NonNullList<ItemStack> items = NonNullList.create(); NonNullList<ItemStack> items = NonNullList.create();
item.getSubItems(item, null, items); // Client-only method, but we're client-side so this is OK. item.getSubItems(item.getCreativeTab(), items); // Client-only method, but we're client-side so this is OK.
for(ItemStack stack : items){ for(ItemStack stack : items){
ModelLoader.setCustomModelResourceLocation(item, stack.getMetadata(), ModelLoader.setCustomModelResourceLocation(item, stack.getMetadata(),
new ModelResourceLocation(item.getRegistryName(), "inventory")); new ModelResourceLocation(item.getRegistryName(), "inventory"));
@@ -4,11 +4,11 @@ import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -139,9 +139,9 @@ public abstract class ParticleCustomTexture extends Particle {
// Overridden to bind the new texture. I think this can be done with TextureAtlasSprite, but this works as it is // Overridden to bind the new texture. I think this can be done with TextureAtlasSprite, but this works as it is
// so I'm not changing it for the time being. // so I'm not changing it for the time being.
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity viewer, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity viewer, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.pushAttrib(); GlStateManager.pushAttrib();
@@ -1,7 +1,7 @@
package electroblob.wizardry.client.particle; package electroblob.wizardry.client.particle;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -28,7 +28,7 @@ public class ParticleDarkMagic extends Particle {
} }
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity entity, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity entity, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge * 32.0F; float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge * 32.0F;
@@ -1,7 +1,7 @@
package electroblob.wizardry.client.particle; package electroblob.wizardry.client.particle;
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -32,7 +32,7 @@ public class ParticleMagicFlame extends Particle {
} }
@Override @Override
public void renderParticle(VertexBuffer buffer, Entity entity, float partialTicks, float rotationX, float rotationZ, public void renderParticle(BufferBuilder buffer, Entity entity, float partialTicks, float rotationX, float rotationZ,
float rotationYZ, float rotationXY, float rotationXZ){ float rotationYZ, float rotationXY, float rotationXZ){
float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge; float f6 = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge;
this.particleScale = this.flameScale * (1.0F - f6 * f6 * 0.5F); this.particleScale = this.flameScale * (1.0F - f6 * f6 * 0.5F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.entity.EntityArc;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -38,7 +38,7 @@ public class RenderArc extends Render<EntityArc> {
// System.out.println("doRender parameters: " + d0 + ", " + d1 + ", " + d2 + ", " + fa + ", " + fb); // System.out.println("doRender parameters: " + d0 + ", " + d1 + ", " + d2 + ", " + fa + ", " + fb);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(textures[arc.textureIndex]); // This MUST be after the tessellator declaration and the gl stuff bindTexture(textures[arc.textureIndex]); // This MUST be after the tessellator declaration and the gl stuff
@@ -6,10 +6,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; import electroblob.wizardry.tileentity.ContainerArcaneWorkbench;
import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -25,9 +25,9 @@ public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityA
} }
@Override @Override
public void renderTileEntityAt(TileEntityArcaneWorkbench tileentity, double x, double y, double z, public void render(TileEntityArcaneWorkbench tileentity, double x, double y, double z,
float partialTicks, int destroyStage){ float partialTicks, int destroyStage, float alpha){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
// This line makes stuff render in the same place relative to the world wherever the player is. // This line makes stuff render in the same place relative to the world wherever the player is.
GlStateManager.translate((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); GlStateManager.translate((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F);
@@ -59,7 +59,7 @@ public class RenderArcaneWorkbench extends TileEntitySpecialRenderer<TileEntityA
GlStateManager.rotate(tileentity.timer, 0.0f, 1.0f, 0.0f); GlStateManager.rotate(tileentity.timer, 0.0f, 1.0f, 0.0f);
GlStateManager.translate(0.0f, 0.65f, 0.0f); GlStateManager.translate(0.0f, 0.65f, 0.0f);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(runeTexture); bindTexture(runeTexture);
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
@@ -8,11 +8,11 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityBlackHole; import electroblob.wizardry.entity.construct.EntityBlackHole;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderBlackHole extends Render<EntityBlackHole> {
// float yaw = (float) Math.toDegrees(Math.atan(x/z)); // float yaw = (float) Math.toDegrees(Math.atan(x/z));
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
@@ -6,10 +6,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityBubble; import electroblob.wizardry.entity.construct.EntityBubble;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderBubble extends Render<EntityBubble> {
GlStateManager.disableLighting(); GlStateManager.disableLighting();
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
}else{ }else{
int j = entity.getBrightnessForRender(par9); int j = entity.getBrightnessForRender();
int k = j % 65536; int k = j % 65536;
int l = j / 65536; int l = j / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F);
@@ -70,7 +70,7 @@ public class RenderBubble extends Render<EntityBubble> {
double pixelwidth = (1.0d / 128); double pixelwidth = (1.0d / 128);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityDecay; import electroblob.wizardry.entity.construct.EntityDecay;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderDecay extends Render<EntityDecay> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.construct.EntityFireRing; import electroblob.wizardry.entity.construct.EntityFireRing;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -50,7 +50,7 @@ public class RenderFireRing extends Render<EntityFireRing> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex();
buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex();
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.projectile.EntityForceArrow; import electroblob.wizardry.entity.projectile.EntityForceArrow;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -44,7 +44,7 @@ public class RenderForceArrow extends Render<EntityForceArrow> {
0.0F, 1.0F); 0.0F, 1.0F);
GlStateManager.rotate(180, 0, 1, 0); GlStateManager.rotate(180, 0, 1, 0);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float pixel = 1.0f / 32.0f; float pixel = 1.0f / 32.0f;
float u1 = 0.0f; float u1 = 0.0f;
float u2 = pixel * 14; float u2 = pixel * 14;
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityIceSpike; import electroblob.wizardry.entity.construct.EntityIceSpike;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -32,7 +32,7 @@ public class RenderIceSpike extends Render<EntityIceSpike> {
// with setLightmapTextureCoords. // with setLightmapTextureCoords.
GlStateManager.disableLighting(); GlStateManager.disableLighting();
int j = entity.getBrightnessForRender(partialTickTime); int j = entity.getBrightnessForRender();
int k = j % 65536; int k = j % 65536;
int l = j / 65536; int l = j / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)k / 1.0F, (float)l / 1.0F);
@@ -40,7 +40,7 @@ public class RenderIceSpike extends Render<EntityIceSpike> {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
bindTexture(texture); bindTexture(texture);
@@ -3,10 +3,10 @@ package electroblob.wizardry.client.renderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityLightningDisc; import electroblob.wizardry.entity.projectile.EntityLightningDisc;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderLightningDisc extends Render<EntityLightningDisc> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.construct.EntityLightningPulse; import electroblob.wizardry.entity.construct.EntityLightningPulse;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -49,7 +49,7 @@ public class RenderLightningPulse extends Render<EntityLightningPulse> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex();
buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex();
@@ -3,10 +3,10 @@ package electroblob.wizardry.client.renderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityMagicArrow; import electroblob.wizardry.entity.projectile.EntityMagicArrow;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -55,7 +55,7 @@ public class RenderMagicArrow extends Render<EntityMagicArrow> {
GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9, 0.0F, GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9, 0.0F,
0.0F, 1.0F); 0.0F, 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float f2 = 0.0F; float f2 = 0.0F;
float f3 = pixelsLong / 32.0F; float f3 = pixelsLong / 32.0F;
float f4 = 0.0F; float f4 = 0.0F;
@@ -5,11 +5,11 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.tileentity.TileEntityMagicLight; import electroblob.wizardry.tileentity.TileEntityMagicLight;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -22,8 +22,8 @@ public class RenderMagicLight extends TileEntitySpecialRenderer<TileEntityMagicL
"textures/entity/light_aura.png"); "textures/entity/light_aura.png");
@Override @Override
public void renderTileEntityAt(TileEntityMagicLight tileentity, double x, double y, double z, float f, public void render(TileEntityMagicLight tileentity, double x, double y, double z, float f,
int destroyStage){ int destroyStage, float alpha){
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -49,7 +49,7 @@ public class RenderMagicLight extends TileEntitySpecialRenderer<TileEntityMagicL
// Renders the aura effect // Renders the aura effect
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
@@ -4,10 +4,10 @@ import org.lwjgl.opengl.GL11;
import electroblob.wizardry.entity.projectile.EntityMagicProjectile; import electroblob.wizardry.entity.projectile.EntityMagicProjectile;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -48,7 +48,7 @@ public class RenderProjectile extends Render<EntityMagicProjectile> {
GlStateManager.scale(f2 / 1.0F, f2 / 1.0F, f2 / 1.0F); GlStateManager.scale(f2 / 1.0F, f2 / 1.0F, f2 / 1.0F);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
float f3 = 0.0f; float f3 = 0.0f;
float f4 = 1.0f; float f4 = 1.0f;
@@ -6,10 +6,10 @@ import electroblob.wizardry.entity.construct.EntityHealAura;
import electroblob.wizardry.entity.construct.EntityMagicConstruct; import electroblob.wizardry.entity.construct.EntityMagicConstruct;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -64,7 +64,7 @@ public class RenderSigil extends Render<EntityMagicConstruct> {
GlStateManager.scale(scale, scale, scale); GlStateManager.scale(scale, scale, scale);
Tessellator tessellator = Tessellator.getInstance(); Tessellator tessellator = Tessellator.getInstance();
VertexBuffer buffer = tessellator.getBuffer(); BufferBuilder buffer = tessellator.getBuffer();
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
// tessellator.setColorRGBA_I(k1, 128); // tessellator.setColorRGBA_I(k1, 128);
// buffer.normal(0.0F, 1.0F, 0.0F); // buffer.normal(0.0F, 1.0F, 0.0F);
@@ -13,8 +13,8 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
private int destroyStage = 0; // Gets set each time a statue is rendered to allow access from the layer renderer private int destroyStage = 0; // Gets set each time a statue is rendered to allow access from the layer renderer
@Override @Override
public void renderTileEntityAt(TileEntityStatue statue, double x, double y, double z, float partialTicks, public void render(TileEntityStatue statue, double x, double y, double z, float partialTicks,
int destroyStage){ int destroyStage, float alpha){
// Multiblock support for the breaking animation. The chest has its own way of doing this in // Multiblock support for the breaking animation. The chest has its own way of doing this in
// TileEntityRendererDispatcher, but I don't have access to that. // TileEntityRendererDispatcher, but I don't have access to that.
@@ -24,8 +24,8 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
if(tileentity instanceof TileEntityStatue){ if(tileentity instanceof TileEntityStatue){
// If this is the block breaking animation pass and this isn't the bottom block, divert the call to // If this is the block breaking animation pass and this isn't the bottom block, divert the call to
// the bottom block. // the bottom block.
this.renderTileEntityAt((TileEntityStatue)tileentity, x, y - (statue.position - 1), z, partialTicks, this.render((TileEntityStatue)tileentity, x, y - (statue.position - 1), z, partialTicks,
destroyStage); destroyStage, alpha);
} }
} }
@@ -39,7 +39,7 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
GlStateManager.enableLighting(); GlStateManager.enableLighting();
float yaw = statue.creature.prevRotationYaw; float yaw = statue.creature.prevRotationYaw;
int i = statue.creature.getBrightnessForRender(0); int i = statue.creature.getBrightnessForRender();
int j = i % 65536; int j = i % 65536;
int k = i / 65536; int k = i / 65536;
@@ -51,7 +51,7 @@ public class RenderStatue extends TileEntitySpecialRenderer<TileEntityStatue> {
if(!statue.isIce) statue.creature.setInvisible(true); if(!statue.isIce) statue.creature.setInvisible(true);
// Setting the last parameter to true prevents the debug bounding box from rendering. // Setting the last parameter to true prevents the debug bounding box from rendering.
// For some reason, passing in the partialTicks causes the entity to spin round really fast // For some reason, passing in the partialTicks causes the entity to spin round really fast
Minecraft.getMinecraft().getRenderManager().doRenderEntity(statue.creature, 0, 0, 0, 0, 0, true); Minecraft.getMinecraft().getRenderManager().renderEntity(statue.creature, 0, 0, 0, 0, 0, true);
if(!statue.isIce) statue.creature.setInvisible(false); if(!statue.isIce) statue.creature.setInvisible(false);
GlStateManager.popMatrix(); GlStateManager.popMatrix();
@@ -1,6 +1,7 @@
package electroblob.wizardry.constants; package electroblob.wizardry.constants;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.Style; import net.minecraft.util.text.Style;
@@ -39,7 +40,7 @@ public enum Element {
/** Returns the translated display name of this element, without formatting. */ /** Returns the translated display name of this element, without formatting. */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("element." + getUnlocalisedName()); return I18n.format("element." + getUnlocalisedName());
} }
/** Returns the {@link Style} object representing the colour of this element. */ /** Returns the {@link Style} object representing the colour of this element. */
@@ -1,5 +1,6 @@
package electroblob.wizardry.constants; package electroblob.wizardry.constants;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,6 +16,6 @@ public enum SpellType {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("spelltype." + unlocalisedName); return I18n.format("spelltype." + unlocalisedName);
} }
} }
@@ -2,6 +2,7 @@ package electroblob.wizardry.constants;
import java.util.Random; import java.util.Random;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.Style; import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -39,12 +40,12 @@ public enum Tier {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("tier." + unlocalisedName); return I18n.format("tier." + unlocalisedName);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayNameWithFormatting(){ public String getDisplayNameWithFormatting(){
return this.getFormattingCode() + net.minecraft.client.resources.I18n.format("tier." + unlocalisedName); return this.getFormattingCode() + I18n.format("tier." + unlocalisedName);
} }
public String getUnlocalisedName(){ public String getUnlocalisedName(){
@@ -106,12 +106,12 @@ public class EntityMeteor extends EntityFallingBlock {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -121,7 +121,7 @@ public class EntityBlackHole extends EntityMagicConstruct {
((EntityPlayerMP)target).connection.sendPacket(new SPacketEntityVelocity(target)); ((EntityPlayerMP)target).connection.sendPacket(new SPacketEntityVelocity(target));
} }
if(this.getDistanceToEntity(target) <= 2){ if(this.getDistance(target) <= 2){
// Damages the target if it is close enough // Damages the target if it is close enough
if(this.getCaster() != null){ if(this.getCaster() != null){
target.attackEntityFrom( target.attackEntityFrom(
@@ -74,7 +74,7 @@ public class EntityEarthquake extends EntityMagicConstruct {
for(EntityLivingBase target : targets){ for(EntityLivingBase target : targets){
// Searches in a 1 wide ring. // Searches in a 1 wide ring.
if(this.getDistanceToEntity(target) > (this.ticksExisted * speed) + 0.5 && target.posY < this.posY + 1 if(this.getDistance(target) > (this.ticksExisted * speed) + 0.5 && target.posY < this.posY + 1
&& target.posY > this.posY - 1){ && target.posY > this.posY - 1){
// Knockback must be removed in this instance, or the target will fall into the floor. // Knockback must be removed in this instance, or the target will fall into the floor.
@@ -3,7 +3,8 @@ package electroblob.wizardry.entity.construct;
import java.util.List; import java.util.List;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
@@ -103,7 +104,7 @@ public class EntityTornado extends EntityMagicConstruct {
// The 'Not Again...' achievement // The 'Not Again...' achievement
if(target instanceof EntityPig && WizardryUtilities.getRider(target) instanceof EntityPlayer){ if(target instanceof EntityPig && WizardryUtilities.getRider(target) instanceof EntityPlayer){
((EntityPlayer)WizardryUtilities.getRider(target)).addStat(WizardryAchievements.pig_tornado); AdvancementHelper.grantAdvancement((EntityPlayer)WizardryUtilities.getRider(target), EnumAdvancement.pig_tornado);
} }
} }
} }
@@ -136,7 +136,7 @@ public class EntityAIAttackSpell extends EntityAIBase {
} }
if(distanceSq <= (double)this.maxAttackDistance && this.seeTime >= 20){ if(distanceSq <= (double)this.maxAttackDistance && this.seeTime >= 20){
this.attacker.getNavigator().clearPathEntity(); this.attacker.getNavigator().clearPath();
}else{ }else{
this.attacker.getNavigator().tryMoveToEntityLiving(this.target, this.speed); this.attacker.getNavigator().tryMoveToEntityLiving(this.target, this.speed);
} }
@@ -8,11 +8,12 @@ import java.util.Locale;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemSpellBook;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -285,7 +286,7 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_WITCH_HURT; return SoundEvents.ENTITY_WITCH_HURT;
} }
@@ -323,7 +324,7 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
super.onDeath(source); super.onDeath(source);
if(source.getTrueSource() instanceof EntityPlayer){ if(source.getTrueSource() instanceof EntityPlayer){
((EntityPlayer)source.getTrueSource()).addStat(WizardryAchievements.defeat_evil_wizard); AdvancementHelper.grantAdvancement((EntityPlayer)source.getTrueSource(), EnumAdvancement.defeat_evil_wizard);
} }
} }
@@ -159,7 +159,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
this.moveStrafing *= 0.98F; this.moveStrafing *= 0.98F;
this.moveForward *= 0.98F; this.moveForward *= 0.98F;
this.randomYawVelocity *= 0.9F; this.randomYawVelocity *= 0.9F;
this.moveEntityWithHeading(this.moveStrafing, this.moveForward); this.moveRelative(moveStrafing, 0f, moveForward, 0f);
this.world.profiler.endSection(); this.world.profiler.endSection();
this.world.profiler.startSection("push"); this.world.profiler.startSection("push");
this.collideWithNearbyEntities(); this.collideWithNearbyEntities();
@@ -229,7 +229,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
public void updateTask(){ public void updateTask(){
--this.attackTime; --this.attackTime;
EntityLivingBase entitylivingbase = this.blaze.getAttackTarget(); EntityLivingBase entitylivingbase = this.blaze.getAttackTarget();
double d0 = this.blaze.getDistanceSqToEntity(entitylivingbase); double d0 = this.blaze.getDistanceSq(entitylivingbase);
if(d0 < 4.0D){ if(d0 < 4.0D){
if(this.attackTime <= 0){ if(this.attackTime <= 0){
@@ -264,7 +264,7 @@ public class EntityIceWraith extends EntityBlazeMinion {
this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F); this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F);
}else{ }else{
this.blaze.getNavigator().clearPathEntity(); this.blaze.getNavigator().clearPath();
this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY, this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY,
entitylivingbase.posZ, 1.0D); entitylivingbase.posZ, 1.0D);
} }
@@ -127,7 +127,7 @@ public class EntityLightningWraith extends EntityBlazeMinion {
public void updateTask(){ public void updateTask(){
--this.attackTime; --this.attackTime;
EntityLivingBase entitylivingbase = this.blaze.getAttackTarget(); EntityLivingBase entitylivingbase = this.blaze.getAttackTarget();
double d0 = this.blaze.getDistanceSqToEntity(entitylivingbase); double d0 = this.blaze.getDistanceSq(entitylivingbase);
if(d0 < 4.0D){ if(d0 < 4.0D){
if(this.attackTime <= 0){ if(this.attackTime <= 0){
@@ -162,7 +162,7 @@ public class EntityLightningWraith extends EntityBlazeMinion {
this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F); this.blaze.getLookHelper().setLookPositionWithEntity(entitylivingbase, 10.0F, 10.0F);
}else{ }else{
this.blaze.getNavigator().clearPathEntity(); this.blaze.getNavigator().clearPath();
this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY, this.blaze.getMoveHelper().setMoveTo(entitylivingbase.posX, entitylivingbase.posY,
entitylivingbase.posZ, 1.0D); entitylivingbase.posZ, 1.0D);
} }
@@ -14,6 +14,7 @@ import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -103,7 +104,7 @@ public class EntityPhoenix extends EntitySummonedCreature implements ISpellCaste
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -114,12 +115,12 @@ public class EntityPhoenix extends EntitySummonedCreature implements ISpellCaste
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float par1){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float par1){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -18,6 +18,7 @@ import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.init.MobEffects; import net.minecraft.init.MobEffects;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -102,7 +103,7 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -113,12 +114,12 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -18,6 +18,7 @@ import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -95,7 +96,7 @@ public class EntityStormElemental extends EntitySummonedCreature implements ISpe
} }
@Override @Override
protected SoundEvent getHurtSound(){ protected SoundEvent getHurtSound(DamageSource source){
return SoundEvents.ENTITY_BLAZE_HURT; return SoundEvents.ENTITY_BLAZE_HURT;
} }
@@ -106,12 +107,12 @@ public class EntityStormElemental extends EntitySummonedCreature implements ISpe
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender(float partialTicks){ public int getBrightnessForRender(){
return 15728880; return 15728880;
} }
@Override @Override
public float getBrightness(float partialTicks){ public float getBrightness(){
return 1.0F; return 1.0F;
} }
@@ -12,11 +12,12 @@ import java.util.Set;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemSpellBook;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -400,11 +401,11 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
// Achievements // Achievements
if(this.getCustomer() != null){ if(this.getCustomer() != null){
this.getCustomer().addStat(WizardryAchievements.wizard_trade); AdvancementHelper.grantAdvancement(getCustomer(), EnumAdvancement.wizard_trade);
if(merchantrecipe.getItemToSell().getItem() instanceof ItemSpellBook if(merchantrecipe.getItemToSell().getItem() instanceof ItemSpellBook
&& Spell.get(merchantrecipe.getItemToSell().getItemDamage()).tier == Tier.MASTER){ && Spell.get(merchantrecipe.getItemToSell().getItemDamage()).tier == Tier.MASTER){
this.getCustomer().addStat(WizardryAchievements.buy_master_spell); AdvancementHelper.grantAdvancement(getCustomer(), EnumAdvancement.buy_master_spell);
} }
} }
@@ -775,7 +776,7 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
public boolean attackEntityFrom(DamageSource source, float damage){ public boolean attackEntityFrom(DamageSource source, float damage){
if(source.getTrueSource() instanceof EntityPlayer){ if(source.getTrueSource() instanceof EntityPlayer){
((EntityPlayer)source.getTrueSource()).addStat(WizardryAchievements.anger_wizard); AdvancementHelper.grantAdvancement((EntityPlayer)source.getTrueSource(), EnumAdvancement.anger_wizard);
} }
return super.attackEntityFrom(source, damage); return super.attackEntityFrom(source, damage);
@@ -817,7 +818,7 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit
for(EntityWizard wizard : wizards){ for(EntityWizard wizard : wizards){
if(wizard.isBlockPartOfTower(event.getPos())){ if(wizard.isBlockPartOfTower(event.getPos())){
wizard.setRevengeTarget(event.getPlayer()); wizard.setRevengeTarget(event.getPlayer());
event.getPlayer().addStat(WizardryAchievements.anger_wizard); AdvancementHelper.grantAdvancement(event.getPlayer(), EnumAdvancement.anger_wizard);
} }
} }
} }
@@ -83,7 +83,7 @@ public class EntityForceArrow extends EntityMagicArrow {
@Override @Override
protected void entityInit(){ protected void entityInit(){
// auto generated
} }
} }
@@ -68,7 +68,7 @@ public class EntityLightningDisc extends EntityMagicProjectile {
} }
} }
if(!this.isCollided && !world.isRemote){ if(!this.collided && !world.isRemote){
double seekingRange = 5.0d; double seekingRange = 5.0d;
@@ -78,7 +78,7 @@ public class EntityLightningDisc extends EntityMagicProjectile {
for(Entity possibleTarget : entities){ for(Entity possibleTarget : entities){
// Decides if current entity should be replaced. // Decides if current entity should be replaced.
if(target == null || this.getDistanceToEntity(target) > this.getDistanceToEntity(possibleTarget)){ if(target == null || this.getDistance(target) > this.getDistance(possibleTarget)){
// Decides if new entity is a valid target. // Decides if new entity is a valid target.
if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){ if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){
target = possibleTarget; target = possibleTarget;
@@ -122,7 +122,7 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
// f4 depends on the horizontal distance between the two entities and accounts for bullet drop, // f4 depends on the horizontal distance between the two entities and accounts for bullet drop,
// but of course if gravity is ignored this should be 0. // but of course if gravity is ignored this should be 0.
float bulletDropCompensation = this.doGravity() ? (float)d3 * 0.2F : 0; float bulletDropCompensation = this.doGravity() ? (float)d3 * 0.2F : 0;
this.setThrowableHeading(d0, d1 + (double)bulletDropCompensation, d2, speed, aimingError); this.shoot(d0, d1 + (double)bulletDropCompensation, d2, speed, aimingError);
} }
} }
@@ -148,7 +148,7 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI)
* MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI));
this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, speed * 1.5F, 1.0F); this.shoot(this.motionX, this.motionY, this.motionZ, speed * 1.5F, 1.0F);
} }
/** Subclasses must override this to set their own base damage. */ /** Subclasses must override this to set their own base damage. */
@@ -183,7 +183,8 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
/** /**
* Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
*/ */
public void setThrowableHeading(double x, double y, double z, float speed, float randomness){ @Override
public void shoot(double x, double y, double z, float speed, float randomness){
float f2 = MathHelper.sqrt(x * x + y * y + z * z); float f2 = MathHelper.sqrt(x * x + y * y + z * z);
x /= (double)f2; x /= (double)f2;
y /= (double)f2; y /= (double)f2;
@@ -579,4 +580,9 @@ public abstract class EntityMagicArrow extends Entity implements IProjectile, IE
public void setShootingEntity(EntityLivingBase entity){ public void setShootingEntity(EntityLivingBase entity){
shootingEntity = new WeakReference<EntityLivingBase>(entity); shootingEntity = new WeakReference<EntityLivingBase>(entity);
} }
@Override
protected void entityInit() {
// TODO Auto-generated method stub
}
} }
@@ -40,7 +40,7 @@ public abstract class EntityMagicProjectile extends EntityThrowable {
public EntityMagicProjectile(World world, EntityLivingBase thrower, float damageMultiplier){ public EntityMagicProjectile(World world, EntityLivingBase thrower, float damageMultiplier){
super(world, thrower); super(world, thrower);
// This is the standard set of parameters for this method, used by snowballs and ender pearls amongst others. // This is the standard set of parameters for this method, used by snowballs and ender pearls amongst others.
this.setHeadingFromThrower(thrower, thrower.rotationPitch, thrower.rotationYaw, 0.0f, this.getSpeed(), 1.0f); this.shoot(thrower, thrower.rotationPitch, thrower.rotationYaw, 0.0f, this.getSpeed(), 1.0f);
this.damageMultiplier = damageMultiplier; this.damageMultiplier = damageMultiplier;
} }
@@ -61,9 +61,9 @@ public abstract class EntityMagicProjectile extends EntityThrowable {
- (this.posY + (double)(this.height / 2.0F)); - (this.posY + (double)(this.height / 2.0F));
double dz = target.posZ - this.posZ; double dz = target.posZ - this.posZ;
this.motionX = dx / this.getDistanceToEntity(target) * velocity; this.motionX = dx / this.getDistance(target) * velocity;
this.motionY = dy / this.getDistanceToEntity(target) * velocity; this.motionY = dy / this.getDistance(target) * velocity;
this.motionZ = dz / this.getDistanceToEntity(target) * velocity; this.motionZ = dz / this.getDistance(target) * velocity;
} }
@Override @Override
@@ -68,7 +68,7 @@ public class EntitySpark extends EntityMagicProjectile {
super.onUpdate(); super.onUpdate();
if(!this.isCollided && !world.isRemote){ if(!this.collided && !world.isRemote){
double seekingRange = 5.0d; double seekingRange = 5.0d;
@@ -78,7 +78,7 @@ public class EntitySpark extends EntityMagicProjectile {
for(Entity possibleTarget : entities){ for(Entity possibleTarget : entities){
// Decides if current entity should be replaced. // Decides if current entity should be replaced.
if(target == null || this.getDistanceToEntity(target) > this.getDistanceToEntity(possibleTarget)){ if(target == null || this.getDistance(target) > this.getDistance(possibleTarget)){
// Decides if new entity is a valid target. // Decides if new entity is a valid target.
if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){ if(WizardryUtilities.isValidTarget(this.getThrower(), possibleTarget)){
target = possibleTarget; target = possibleTarget;
@@ -4,12 +4,14 @@ import java.util.List;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,16 +19,17 @@ public class ItemArcaneTome extends Item {
public ItemArcaneTome(){ public ItemArcaneTome(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@SideOnly(Side.CLIENT) public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> list){ if (isInCreativeTab(tab)) {
for(int i = 1; i < Tier.values().length; i++){ for(int i = 1; i < Tier.values().length; i++){
list.add(new ItemStack(item, 1, i)); list.add(new ItemStack(this, 1, i));
}
} }
} }
@@ -51,14 +54,12 @@ public class ItemArcaneTome extends Item {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean showAdvanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag showAdvanced){
Tier tier = Tier.values()[stack.getItemDamage()]; Tier tier = Tier.values()[stack.getItemDamage()];
Tier tier2 = Tier.values()[stack.getItemDamage() - 1]; Tier tier2 = Tier.values()[stack.getItemDamage() - 1];
tooltip.add(tier.getDisplayNameWithFormatting()); tooltip.add(tier.getDisplayNameWithFormatting());
tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:arcane_tome.desc1", tooltip.add("\u00A77" + I18n.format("item.wizardry:arcane_tome.desc1", tier2.getDisplayNameWithFormatting()));
tier2.getDisplayNameWithFormatting())); tooltip.add("\u00A77" + I18n.format("item.wizardry:arcane_tome.desc2", tier.getDisplayNameWithFormatting() + "\u00A77"));
tooltip.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:arcane_tome.desc2",
tier.getDisplayNameWithFormatting() + "\u00A77"));
} }
} }
@@ -3,12 +3,12 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -16,8 +16,8 @@ public class ItemArmourUpgrade extends Item {
public ItemArmourUpgrade(){ public ItemArmourUpgrade(){
super(); super();
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -33,16 +33,9 @@ public class ItemArmourUpgrade extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag advanced){
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:armour_upgrade.desc1", "\u00A77")); tooltip.add(I18n.format("item.wizardry:armour_upgrade.desc1", "\u00A77"));
tooltip.add( tooltip.add(I18n.format("item.wizardry:armour_upgrade.desc2", "\u00A77", "\u00A7d"));
net.minecraft.client.resources.I18n.format("item.wizardry:armour_upgrade.desc2", "\u00A77", "\u00A7d"));
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
} }
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntityFirebomb; import electroblob.wizardry.entity.projectile.EntityFirebomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemFirebomb extends Item { public class ItemFirebomb extends Item {
public ItemFirebomb(){ public ItemFirebomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,16 +32,11 @@ public class ItemFirebomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntityFirebomb firebomb = new EntityFirebomb(world, player); EntityFirebomb firebomb = new EntityFirebomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
firebomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); firebomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(firebomb); world.spawnEntity(firebomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -2,14 +2,11 @@ package electroblob.wizardry.item;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -18,9 +15,9 @@ public class ItemFlamingAxe extends ItemAxe implements IConjuredItem {
public ItemFlamingAxe(ToolMaterial material){ public ItemFlamingAxe(ToolMaterial material){
super(material, 8, -3); super(material, 8, -3);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -81,11 +78,4 @@ public class ItemFlamingAxe extends ItemAxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
// Why does this method pass in an item as an argument? It is always the same item the method is invoked on.
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> items){
items.add(new ItemStack(this, 1));
}
} }
@@ -3,15 +3,12 @@ package electroblob.wizardry.item;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -20,9 +17,9 @@ public class ItemFrostAxe extends ItemAxe implements IConjuredItem {
public ItemFrostAxe(ToolMaterial material){ public ItemFrostAxe(ToolMaterial material){
super(material, 8, -3); super(material, 8, -3);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -84,10 +81,4 @@ public class ItemFrostAxe extends ItemAxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -3,12 +3,14 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import electroblob.wizardry.WizardData; import electroblob.wizardry.WizardData;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.event.DiscoverSpellEvent; import electroblob.wizardry.event.DiscoverSpellEvent;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -16,7 +18,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@@ -27,7 +28,7 @@ public class ItemIdentificationScroll extends Item {
public ItemIdentificationScroll(){ public ItemIdentificationScroll(){
super(); super();
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -38,9 +39,9 @@ public class ItemIdentificationScroll extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean par4){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag par4){
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:identification_scroll.desc1", "\u00A77")); tooltip.add(I18n.format("item.wizardry:identification_scroll.desc1", "\u00A77"));
tooltip.add(net.minecraft.client.resources.I18n.format("item.wizardry:identification_scroll.desc2", "\u00A77")); tooltip.add(I18n.format("item.wizardry:identification_scroll.desc2", "\u00A77"));
} }
@Override @Override
@@ -64,7 +65,7 @@ public class ItemIdentificationScroll extends Item {
// Identification scrolls give the chat readout in creative mode, otherwise it looks like // Identification scrolls give the chat readout in creative mode, otherwise it looks like
// nothing happens! // nothing happens!
properties.discoverSpell(spell); properties.discoverSpell(spell);
player.addStat(WizardryAchievements.identify_spell); AdvancementHelper.grantAdvancement(player, EnumAdvancement.identify_spell);
player.playSound(SoundEvents.ENTITY_PLAYER_LEVELUP, 1.25f, 1); player.playSound(SoundEvents.ENTITY_PLAYER_LEVELUP, 1.25f, 1);
if(!player.capabilities.isCreativeMode) stack.shrink(1); if(!player.capabilities.isCreativeMode) stack.shrink(1);
if(!world.isRemote) player.sendMessage(new TextComponentTranslation("spell.discover", if(!world.isRemote) player.sendMessage(new TextComponentTranslation("spell.discover",
@@ -82,10 +83,5 @@ public class ItemIdentificationScroll extends Item {
return new ActionResult<ItemStack>(EnumActionResult.FAIL, stack); return new ActionResult<ItemStack>(EnumActionResult.FAIL, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntityPoisonBomb; import electroblob.wizardry.entity.projectile.EntityPoisonBomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemPoisonBomb extends Item { public class ItemPoisonBomb extends Item {
public ItemPoisonBomb(){ public ItemPoisonBomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,17 +32,11 @@ public class ItemPoisonBomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntityPoisonBomb poisonbomb = new EntityPoisonBomb(world, player); EntityPoisonBomb poisonbomb = new EntityPoisonBomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
poisonbomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); poisonbomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(poisonbomb); world.spawnEntity(poisonbomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -8,6 +8,7 @@ import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -26,16 +27,17 @@ public class ItemScroll extends Item {
public ItemScroll(){ public ItemScroll(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.SPELLS); setCreativeTab(WizardryTabs.SPELLS);
} }
@Override @Override
@SideOnly(Side.CLIENT) public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, NonNullList<ItemStack> list){ if (isInCreativeTab(tab)) {
for(Spell spell : Spell.getSpells(Spell.nonContinuousSpells)){ for(Spell spell : Spell.getSpells(Spell.nonContinuousSpells)){
list.add(new ItemStack(item, 1, spell.id())); list.add(new ItemStack(this, 1, spell.id()));
}
} }
} }
@@ -114,7 +116,7 @@ public class ItemScroll extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
} }
@@ -2,7 +2,6 @@ package electroblob.wizardry.item;
import electroblob.wizardry.entity.projectile.EntitySmokeBomb; import electroblob.wizardry.entity.projectile.EntitySmokeBomb;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -10,16 +9,13 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemSmokeBomb extends Item { public class ItemSmokeBomb extends Item {
public ItemSmokeBomb(){ public ItemSmokeBomb(){
this.maxStackSize = 16; setMaxStackSize(16);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@@ -36,16 +32,11 @@ public class ItemSmokeBomb extends Item {
if(!world.isRemote){ if(!world.isRemote){
EntitySmokeBomb smokebomb = new EntitySmokeBomb(world, player); EntitySmokeBomb smokebomb = new EntitySmokeBomb(world, player);
// This is the standard set of parameters for this method, used by snowballs and ender pearls. // This is the standard set of parameters for this method, used by snowballs and ender pearls.
smokebomb.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f); smokebomb.shoot(player, player.rotationPitch, player.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(smokebomb); world.spawnEntity(smokebomb);
} }
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,15 +1,14 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,11 +16,9 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemSpectralArmour extends ItemArmor implements IConjuredItem { public class ItemSpectralArmour extends ItemArmor implements IConjuredItem {
public ItemSpectralArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType){ public ItemSpectralArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType){
super(material, renderIndex, armourType); super(material, renderIndex, armourType);
setCreativeTab(null);
this.setCreativeTab(null); setMaxDamage(getBaseDuration());
this.setMaxDamage(getBaseDuration());
} }
@Override @Override
@@ -92,21 +89,16 @@ public class ItemSpectralArmour extends ItemArmor implements IConjuredItem {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
EntityEquipmentSlot armorSlot, net.minecraft.client.model.ModelBiped _default){ EntityEquipmentSlot armorSlot, ModelBiped _default){
net.minecraft.client.renderer.GlStateManager.enableBlend(); GlStateManager.enableBlend();
net.minecraft.client.renderer.GlStateManager.tryBlendFuncSeparate( GlStateManager.tryBlendFuncSeparate(
net.minecraft.client.renderer.GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.SourceFactor.SRC_ALPHA,
net.minecraft.client.renderer.GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA,
net.minecraft.client.renderer.GlStateManager.SourceFactor.ONE, GlStateManager.SourceFactor.ONE,
net.minecraft.client.renderer.GlStateManager.DestFactor.ZERO); GlStateManager.DestFactor.ZERO
);
return super.getArmorModel(entityLiving, itemStack, armorSlot, _default); return super.getArmorModel(entityLiving, itemStack, armorSlot, _default);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
} }
@@ -4,7 +4,6 @@ import javax.annotation.Nullable;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -14,7 +13,6 @@ import net.minecraft.init.Enchantments;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.IItemPropertyGetter; import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArrow; import net.minecraft.item.ItemArrow;
import net.minecraft.item.ItemBow; import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -22,7 +20,6 @@ import net.minecraft.stats.StatList;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundCategory;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -33,9 +30,9 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
public ItemSpectralBow(){ public ItemSpectralBow(){
super(); super();
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter(){ this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter(){
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn){ public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn){
@@ -183,7 +180,7 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
ItemArrow itemarrow = (ItemArrow)Items.ARROW; ItemArrow itemarrow = (ItemArrow)Items.ARROW;
EntityArrow entityarrow = itemarrow.createArrow(world, new ItemStack(itemarrow), entityplayer); EntityArrow entityarrow = itemarrow.createArrow(world, new ItemStack(itemarrow), entityplayer);
entityarrow.setAim(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F,
f * 3.0F, 1.0F); f * 3.0F, 1.0F);
if(f == 1.0F){ if(f == 1.0F){
@@ -220,10 +217,4 @@ public class ItemSpectralBow extends ItemBow implements IConjuredItem {
} }
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,12 +1,9 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,9 +12,9 @@ public class ItemSpectralPickaxe extends ItemPickaxe implements IConjuredItem {
public ItemSpectralPickaxe(ToolMaterial material){ public ItemSpectralPickaxe(ToolMaterial material){
super(material); super(material);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -72,10 +69,4 @@ public class ItemSpectralPickaxe extends ItemPickaxe implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -1,12 +1,9 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword; import net.minecraft.item.ItemSword;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -15,9 +12,9 @@ public class ItemSpectralSword extends ItemSword implements IConjuredItem {
public ItemSpectralSword(ToolMaterial material){ public ItemSpectralSword(ToolMaterial material){
super(material); super(material);
this.setMaxDamage(getBaseDuration()); setMaxDamage(getBaseDuration());
this.setNoRepair(); setNoRepair();
this.setCreativeTab(null); setCreativeTab(null);
} }
@Override @Override
@@ -72,10 +69,4 @@ public class ItemSpectralSword extends ItemSword implements IConjuredItem {
return false; return false;
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
} }
@@ -8,6 +8,10 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.WizardryGuiHandler; import electroblob.wizardry.WizardryGuiHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@@ -25,19 +29,21 @@ public class ItemSpellBook extends Item {
public ItemSpellBook(){ public ItemSpellBook(){
super(); super();
this.setHasSubtypes(true); setHasSubtypes(true);
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.SPELLS); setCreativeTab(WizardryTabs.SPELLS);
} }
@Override @Override
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> list){ public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list){
// In this particular case, getTotalSpellCount() is a more efficient way of doing this since the spell instance if (isInCreativeTab(tab)) {
// is not required, only the id. // In this particular case, getTotalSpellCount() is a more efficient way of doing this since the spell instance
for(int i = 0; i < Spell.getTotalSpellCount(); i++){ // is not required, only the id.
// i+1 is used so that the metadata ties up with the id() method. In other words, the none spell has id for(int i = 0; i < Spell.getTotalSpellCount(); i++){
// 0 and since this is not used as a spell book the metadata starts at 1. // i+1 is used so that the metadata ties up with the id() method. In other words, the none spell has id
list.add(new ItemStack(item, 1, i + 1)); // 0 and since this is not used as a spell book the metadata starts at 1.
list.add(new ItemStack(this, 1, i + 1));
}
} }
} }
@@ -50,10 +56,12 @@ public class ItemSpellBook extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack itemstack, World world, List<String> tooltip, ITooltipFlag advanced){
// Tooltip is left blank for wizards buying generic spell books. // Tooltip is left blank for wizards buying generic spell books.
if(itemstack.getItemDamage() != OreDictionary.WILDCARD_VALUE){ if(itemstack.getItemDamage() != OreDictionary.WILDCARD_VALUE){
EntityPlayerSP player = Minecraft.getMinecraft().player;
if (player == null) { return; }
Spell spell = Spell.get(itemstack.getItemDamage()); Spell spell = Spell.get(itemstack.getItemDamage());
boolean discovered = true; boolean discovered = true;
@@ -74,7 +82,7 @@ public class ItemSpellBook extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
@@ -5,6 +5,8 @@ import java.util.List;
import electroblob.wizardry.SpellGlyphData; import electroblob.wizardry.SpellGlyphData;
import electroblob.wizardry.WizardData; import electroblob.wizardry.WizardData;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
@@ -13,7 +15,6 @@ import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.event.SpellCastEvent.Source; import electroblob.wizardry.event.SpellCastEvent.Source;
import electroblob.wizardry.packet.PacketCastSpell; import electroblob.wizardry.packet.PacketCastSpell;
import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.packet.WizardryPacketHandler;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
@@ -21,7 +22,11 @@ import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WandHelper;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -33,7 +38,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -70,7 +74,7 @@ public class ItemWand extends Item {
} }
this.tier = tier; this.tier = tier;
this.element = element; this.element = element;
this.setMaxDamage(this.tier.maxCharge); setMaxDamage(this.tier.maxCharge);
} }
@Override @Override
@@ -81,16 +85,10 @@ public class ItemWand extends Item {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.gui.FontRenderer getFontRenderer(ItemStack stack){ public FontRenderer getFontRenderer(ItemStack stack){
return Wizardry.proxy.getFontRenderer(stack); return Wizardry.proxy.getFontRenderer(stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item parItem, CreativeTabs parTab, NonNullList<ItemStack> parListSubItems){
parListSubItems.add(new ItemStack(this, 1));
}
// Max damage is modifiable with upgrades. // Max damage is modifiable with upgrades.
@Override @Override
public int getMaxDamage(ItemStack itemstack){ public int getMaxDamage(ItemStack itemstack){
@@ -100,8 +98,8 @@ public class ItemWand extends Item {
} }
@Override @Override
public void onCreated(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer){ public void onCreated(ItemStack stack, World par2World, EntityPlayer player){
par3EntityPlayer.addStat(WizardryAchievements.arcane_initiate); AdvancementHelper.grantAdvancement(player, EnumAdvancement.arcane_initiate);
} }
@Override @Override
@@ -123,7 +121,7 @@ public class ItemWand extends Item {
// EDIT: There is a way to check, using StatFileWriter#hasAchievementUnlocked, but this ends up calling the // EDIT: There is a way to check, using StatFileWriter#hasAchievementUnlocked, but this ends up calling the
// same // same
// thing as addStat anyway, meaning there's no point and it's probably not much of a problem anyway. // thing as addStat anyway, meaning there's no point and it's probably not much of a problem anyway.
((EntityPlayer)entity).addStat(WizardryAchievements.elemental); AdvancementHelper.grantAdvancement((EntityPlayer)entity, EnumAdvancement.elemental);
} }
} }
@@ -155,10 +153,11 @@ public class ItemWand extends Item {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void addInformation(ItemStack itemstack, EntityPlayer player, List<String> text, boolean advanced){ public void addInformation(ItemStack itemstack, World world, List<String> text, ITooltipFlag advanced){
EntityPlayerSP player = Minecraft.getMinecraft().player;
if (player == null) { return; }
// +0.5f is necessary due to the error in the way floats are calculated. // +0.5f is necessary due to the error in the way floats are calculated.
if(element != null) text.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.buff", if(element != null) text.add("\u00A78" + I18n.format("item.wizardry:wand.buff",
(int)((tier.level + 1) * Constants.DAMAGE_INCREASE_PER_TIER * 100 + 0.5f) + "%", (int)((tier.level + 1) * Constants.DAMAGE_INCREASE_PER_TIER * 100 + 0.5f) + "%",
element.getDisplayName())); element.getDisplayName()));
@@ -170,11 +169,11 @@ public class ItemWand extends Item {
discovered = false; discovered = false;
} }
text.add("\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.spell", text.add("\u00A77" + I18n.format("item.wizardry:wand.spell",
discovered ? "\u00A77" + spell.getDisplayNameWithFormatting() discovered ? "\u00A77" + spell.getDisplayNameWithFormatting()
: "#\u00A79" + SpellGlyphData.getGlyphName(spell, player.world))); : "#\u00A79" + SpellGlyphData.getGlyphName(spell, player.world)));
text.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wand.mana", text.add("\u00A79" + I18n.format("item.wizardry:wand.mana",
(this.getMaxDamage(itemstack) - this.getDamage(itemstack)), this.getMaxDamage(itemstack))); (this.getMaxDamage(itemstack) - this.getDamage(itemstack)), this.getMaxDamage(itemstack)));
} }
@@ -3,24 +3,26 @@ package electroblob.wizardry.item;
import java.util.List; import java.util.List;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Petrify; import electroblob.wizardry.spell.Petrify;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.EnumAction; import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumHandSide; import net.minecraft.util.EnumHandSide;
import net.minecraft.util.NonNullList; import net.minecraft.world.World;
import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.common.ISpecialArmor;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@@ -36,19 +38,19 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){ public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){
super(material, renderIndex, armourType); super(material, renderIndex, armourType);
this.element = element; this.element = element;
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag advanced){
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip
.add("\u00A7d" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.legendary")); .add("\u00A7d" + I18n.format("item.wizardry:wizard_armour.legendary"));
if(element != null) if(element != null)
tooltip.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.buff", tooltip.add("\u00A78" + I18n.format("item.wizardry:wizard_armour.buff",
(int)(Constants.COST_REDUCTION_PER_ARMOUR * 100) + "%", element.getDisplayName())); (int)(Constants.COST_REDUCTION_PER_ARMOUR * 100) + "%", element.getDisplayName()));
tooltip.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.mana", tooltip.add("\u00A79" + I18n.format("item.wizardry:wizard_armour.mana",
(this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack))); (this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack)));
} }
@@ -65,10 +67,10 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
EntityEquipmentSlot armourSlot, net.minecraft.client.model.ModelBiped _default){ EntityEquipmentSlot armourSlot, ModelBiped _default){
net.minecraft.client.model.ModelBiped model = Wizardry.proxy.getWizardArmourModel(); ModelBiped model = Wizardry.proxy.getWizardArmourModel();
// Legs use modelBiped // Legs use modelBiped
if(armourSlot == EntityEquipmentSlot.LEGS) return null; if(armourSlot == EntityEquipmentSlot.LEGS) return null;
@@ -96,29 +98,29 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
ItemStack itemstackL = leftHanded ? entityLiving.getHeldItemMainhand() : entityLiving.getHeldItemOffhand(); ItemStack itemstackL = leftHanded ? entityLiving.getHeldItemMainhand() : entityLiving.getHeldItemOffhand();
if(!itemstackR.isEmpty()){ if(!itemstackR.isEmpty()){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM; model.rightArmPose = ModelBiped.ArmPose.ITEM;
if(entityLiving.getItemInUseCount() > 0){ if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction = itemstackR.getItemUseAction(); EnumAction enumaction = itemstackR.getItemUseAction();
if(enumaction == EnumAction.BLOCK){ if(enumaction == EnumAction.BLOCK){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK; model.rightArmPose = ModelBiped.ArmPose.BLOCK;
}else if(enumaction == EnumAction.BOW){ }else if(enumaction == EnumAction.BOW){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW; model.rightArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
} }
} }
} }
if(!itemstackL.isEmpty()){ if(!itemstackL.isEmpty()){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM; model.leftArmPose = ModelBiped.ArmPose.ITEM;
if(entityLiving.getItemInUseCount() > 0){ if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction1 = itemstackL.getItemUseAction(); EnumAction enumaction1 = itemstackL.getItemUseAction();
if(enumaction1 == EnumAction.BLOCK){ if(enumaction1 == EnumAction.BLOCK){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK; model.leftArmPose = ModelBiped.ArmPose.BLOCK;
}else if(enumaction1 == EnumAction.BOW){ }else if(enumaction1 == EnumAction.BOW){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW; model.leftArmPose = ModelBiped.ArmPose.BOW_AND_ARROW;
} }
} }
} }
@@ -200,12 +202,6 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
} }
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
/** /**
* Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and which * Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and which
* is an armour slot (not a hand slot). This only exists because the 1.10.2/1.11.2 versions of Forge still uses an * is an armour slot (not a hand slot). This only exists because the 1.10.2/1.11.2 versions of Forge still uses an
@@ -237,7 +233,7 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
} }
} }
// If it gets this far, then all slots must be wizard armour, so trigger the achievement. // If it gets this far, then all slots must be wizard armour, so trigger the achievement.
player.addStat(WizardryAchievements.armour_set); AdvancementHelper.grantAdvancement(player, EnumAdvancement.armour_set);
} }
} }
@@ -5,17 +5,15 @@ import java.util.List;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.WizardryGuiHandler; import electroblob.wizardry.WizardryGuiHandler;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemWizardHandbook extends Item { public class ItemWizardHandbook extends Item {
@@ -24,14 +22,13 @@ public class ItemWizardHandbook extends Item {
public ItemWizardHandbook(){ public ItemWizardHandbook(){
super(); super();
this.setMaxStackSize(1); setMaxStackSize(1);
this.setCreativeTab(WizardryTabs.WIZARDRY); setCreativeTab(WizardryTabs.WIZARDRY);
} }
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){ public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag advanced){
tooltip.add( tooltip.add("\u00A77" + I18n.format("item.wizardry:wizard_handbook.desc", AUTHOR));
"\u00A77" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_handbook.desc", AUTHOR));
} }
@Override @Override
@@ -41,9 +38,4 @@ public class ItemWizardHandbook extends Item {
return ActionResult.newResult(EnumActionResult.SUCCESS, stack); return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
} }
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> items){
items.add(new ItemStack(this, 1));
}
} }
@@ -7,8 +7,8 @@ import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.fml.common.registry.RegistryBuilder; import net.minecraftforge.registries.RegistryBuilder;
/** /**
* Class responsible for defining, storing and registering all of wizardry's spells. * Class responsible for defining, storing and registering all of wizardry's spells.
@@ -1,10 +1,5 @@
package electroblob.wizardry.registry; package electroblob.wizardry.registry;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.stats.Achievement;
import net.minecraftforge.common.AchievementPage;
/** /**
* Class responsible for defining, storing and registering all of wizardry's achievements (achievements don't have a * Class responsible for defining, storing and registering all of wizardry's achievements (achievements don't have a
* registry, but it make sense to do them the same way as everything else). * registry, but it make sense to do them the same way as everything else).
@@ -12,56 +7,32 @@ import net.minecraftforge.common.AchievementPage;
* @author Electroblob * @author Electroblob
* @since Wizardry 2.1 * @since Wizardry 2.1
*/ */
public final class WizardryAchievements { /*public final class WizardryAchievements {
public static final Achievement crystal = new Achievement("crystal", "crystal", -1, -1, WizardryItems.magic_crystal, public static final Achievement crystal = new Achievement("crystal", "crystal", -1, -1, WizardryItems.magic_crystal, null).registerStat();
null).registerStat(); public static final Achievement arcane_initiate = new Achievement("arcane_initiate", "arcane_initiate", 2, -1, WizardryItems.magic_wand, crystal).registerStat();
public static final Achievement arcane_initiate = new Achievement("arcane_initiate", "arcane_initiate", 2, -1, public static final Achievement apprentice = new Achievement("apprentice", "apprentice", 2, 3, WizardryItems.apprentice_wand, arcane_initiate).registerStat();
WizardryItems.magic_wand, crystal).registerStat(); public static final Achievement master = new Achievement("master", "master", 3, 6, WizardryItems.master_wand, apprentice).registerStat();
public static final Achievement apprentice = new Achievement("apprentice", "apprentice", 2, 3, public static final Achievement all_spells = new Achievement("all_spells", "all_spells", 5, 7, WizardryItems.wizard_handbook, master).registerStat().setSpecial();
WizardryItems.apprentice_wand, arcane_initiate).registerStat(); public static final Achievement wizard_trade = new Achievement("wizard_trade", "wizard_trade", 2, -5, Items.EMERALD, arcane_initiate).registerStat();
public static final Achievement master = new Achievement("master", "master", 3, 6, WizardryItems.master_wand, public static final Achievement buy_master_spell = new Achievement("buy_master_spell", "buy_master_spell", 5, -5, WizardryItems.spell_book, wizard_trade).registerStat().setSpecial();
apprentice).registerStat(); public static final Achievement freeze_blaze = new Achievement("freeze_blaze", "freeze_blaze", -1, 3, Blocks.ICE, apprentice).registerStat();
public static final Achievement all_spells = new Achievement("all_spells", "all_spells", 5, 7, public static final Achievement charge_creeper = new Achievement("charge_creeper", "charge_creeper", -1, 1, Items.GUNPOWDER, arcane_initiate).registerStat();
WizardryItems.wizard_handbook, master).registerStat().setSpecial(); public static final Achievement frankenstein = new Achievement("frankenstein", "frankenstein", -3, 1, WizardryItems.advanced_lightning_wand, charge_creeper).registerStat().setSpecial();
public static final Achievement wizard_trade = new Achievement("wizard_trade", "wizard_trade", 2, -5, Items.EMERALD, public static final Achievement special_upgrade = new Achievement("special_upgrade", "special_upgrade", 4, 1, WizardryItems.condenser_upgrade, arcane_initiate).registerStat();
arcane_initiate).registerStat(); public static final Achievement craft_flask = new Achievement("craft_flask", "craft_flask", 4, -2, WizardryItems.mana_flask, arcane_initiate).registerStat();
public static final Achievement buy_master_spell = new Achievement("buy_master_spell", "buy_master_spell", 5, -5, public static final Achievement elemental = new Achievement("elemental", "elemental", 6, -1, WizardryItems.basic_fire_wand, arcane_initiate).registerStat();
WizardryItems.spell_book, wizard_trade).registerStat().setSpecial(); public static final Achievement armour_set = new Achievement("armour_set", "armour_set", 0, -4, WizardryItems.wizard_hat, arcane_initiate).registerStat();
public static final Achievement freeze_blaze = new Achievement("freeze_blaze", "freeze_blaze", -1, 3, Blocks.ICE, public static final Achievement legendary = new Achievement("legendary", "legendary", -2, -5, WizardryItems.armour_upgrade, armour_set).registerStat().setSpecial();
apprentice).registerStat(); public static final Achievement self_destruct = new Achievement("self_destruct", "self_destruct", 1, 0, Blocks.PUMPKIN, arcane_initiate).registerStat();
public static final Achievement charge_creeper = new Achievement("charge_creeper", "charge_creeper", -1, 1, public static final Achievement pig_tornado = new Achievement("pig_tornado", "pig_tornado", 6, 3, Items.SADDLE, apprentice).registerStat().setSpecial();
Items.GUNPOWDER, arcane_initiate).registerStat(); public static final Achievement jam_wizard = new Achievement("jam_wizard", "jam_wizard", 4, 4, Blocks.WEB, apprentice).registerStat();
public static final Achievement frankenstein = new Achievement("frankenstein", "frankenstein", -3, 1, public static final Achievement slime_skeleton = new Achievement("slime_skeleton", "slime_skeleton", 1, 5, Items.SLIME_BALL, apprentice).registerStat();
WizardryItems.advanced_lightning_wand, charge_creeper).registerStat().setSpecial(); public static final Achievement anger_wizard = new Achievement("anger_wizard", "anger_wizard", 1, -7, Items.IRON_SWORD, wizard_trade).registerStat();
public static final Achievement special_upgrade = new Achievement("special_upgrade", "special_upgrade", 4, 1, public static final Achievement defeat_evil_wizard = new Achievement("defeat_evil_wizard", "defeat_evil_wizard", 4, -7, WizardryItems.wizard_boots_necromancy, wizard_trade).registerStat();
WizardryItems.condenser_upgrade, arcane_initiate).registerStat(); public static final Achievement max_out_wand = new Achievement("max_out_wand", "max_out_wand", 7, 1, WizardryItems.arcane_tome, special_upgrade).registerStat().setSpecial();
public static final Achievement craft_flask = new Achievement("craft_flask", "craft_flask", 4, -2, public static final Achievement element_master = new Achievement("element_master", "element_master", 7, -3, WizardryItems.master_ice_wand, elemental).registerStat().setSpecial();
WizardryItems.mana_flask, arcane_initiate).registerStat(); public static final Achievement identify_spell = new Achievement("identify_spell", "identify_spell", -2, -3, WizardryItems.identification_scroll, arcane_initiate).registerStat();
public static final Achievement elemental = new Achievement("elemental", "elemental", 6, -1,
WizardryItems.basic_fire_wand, arcane_initiate).registerStat();
public static final Achievement armour_set = new Achievement("armour_set", "armour_set", 0, -4,
WizardryItems.wizard_hat, arcane_initiate).registerStat();
public static final Achievement legendary = new Achievement("legendary", "legendary", -2, -5,
WizardryItems.armour_upgrade, armour_set).registerStat().setSpecial();
public static final Achievement self_destruct = new Achievement("self_destruct", "self_destruct", 1, 0,
Blocks.PUMPKIN, arcane_initiate).registerStat();
public static final Achievement pig_tornado = new Achievement("pig_tornado", "pig_tornado", 6, 3, Items.SADDLE,
apprentice).registerStat().setSpecial();
public static final Achievement jam_wizard = new Achievement("jam_wizard", "jam_wizard", 4, 4, Blocks.WEB,
apprentice).registerStat();
public static final Achievement slime_skeleton = new Achievement("slime_skeleton", "slime_skeleton", 1, 5,
Items.SLIME_BALL, apprentice).registerStat();
public static final Achievement anger_wizard = new Achievement("anger_wizard", "anger_wizard", 1, -7,
Items.IRON_SWORD, wizard_trade).registerStat();
public static final Achievement defeat_evil_wizard = new Achievement("defeat_evil_wizard", "defeat_evil_wizard", 4,
-7, WizardryItems.wizard_boots_necromancy, wizard_trade).registerStat();
public static final Achievement max_out_wand = new Achievement("max_out_wand", "max_out_wand", 7, 1,
WizardryItems.arcane_tome, special_upgrade).registerStat().setSpecial();
public static final Achievement element_master = new Achievement("element_master", "element_master", 7, -3,
WizardryItems.master_ice_wand, elemental).registerStat().setSpecial();
public static final Achievement identify_spell = new Achievement("identify_spell", "identify_spell", -2, -3,
WizardryItems.identification_scroll, arcane_initiate).registerStat();
private static final Achievement[] ACHIEVEMENTS_LIST = {crystal, arcane_initiate, apprentice, master, all_spells, private static final Achievement[] ACHIEVEMENTS_LIST = {crystal, arcane_initiate, apprentice, master, all_spells,
wizard_trade, buy_master_spell, freeze_blaze, charge_creeper, frankenstein, special_upgrade, craft_flask, wizard_trade, buy_master_spell, freeze_blaze, charge_creeper, frankenstein, special_upgrade, craft_flask,
@@ -70,4 +41,4 @@ public final class WizardryAchievements {
public static final AchievementPage WIZARDRY_ACHIEVEMENT_PAGE = new AchievementPage("Wizardry", ACHIEVEMENTS_LIST); public static final AchievementPage WIZARDRY_ACHIEVEMENT_PAGE = new AchievementPage("Wizardry", ACHIEVEMENTS_LIST);
} }*/
@@ -15,7 +15,7 @@ import net.minecraft.block.material.Material;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's blocks. * Class responsible for defining, storing and registering all of wizardry's blocks.
@@ -9,6 +9,8 @@ import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.item.ItemArcaneTome; import electroblob.wizardry.item.ItemArcaneTome;
@@ -42,7 +44,7 @@ import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for * Class responsible for defining, storing and registering all of wizardry's items. Also registers the ItemBlocks for
@@ -103,8 +105,8 @@ public final class WizardryItems {
public static final Item mana_flask = new Item(){ public static final Item mana_flask = new Item(){
@Override @Override
public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer entityplayer){ public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer player){
entityplayer.addStat(WizardryAchievements.craft_flask); AdvancementHelper.grantAdvancement(player, EnumAdvancement.craft_flask);
} }
}.setCreativeTab(WizardryTabs.WIZARDRY); }.setCreativeTab(WizardryTabs.WIZARDRY);
@@ -291,7 +293,6 @@ public final class WizardryItems {
@SubscribeEvent @SubscribeEvent
public static void register(RegistryEvent.Register<Item> event){ public static void register(RegistryEvent.Register<Item> event){
IForgeRegistry<Item> registry = event.getRegistry(); IForgeRegistry<Item> registry = event.getRegistry();
// ItemBlocks // ItemBlocks
@@ -13,7 +13,7 @@ import net.minecraft.world.World;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for defining, storing and registering all of wizardry's potion effects. * Class responsible for defining, storing and registering all of wizardry's potion effects.
@@ -1,8 +1,9 @@
package electroblob.wizardry.registry; package electroblob.wizardry.registry;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.common.collect.Lists;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
@@ -76,13 +77,21 @@ import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.storage.loot.LootTableList; import net.minecraft.world.storage.loot.LootTableList;
import net.minecraft.world.storage.loot.functions.LootFunctionManager; import net.minecraft.world.storage.loot.functions.LootFunctionManager;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.EntityRegistry;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import net.minecraftforge.registries.IForgeRegistry;
/** /**
* Class responsible for registering all the things that don't have (or need) instances: entities, loot tables, recipes, * Class responsible for registering all the things that don't have (or need) instances: entities, loot tables, recipes,
@@ -91,6 +100,7 @@ import net.minecraftforge.oredict.OreDictionary;
* @author Electroblob * @author Electroblob
* @since Wizardry 1.0 * @since Wizardry 1.0
*/ */
@Mod.EventBusSubscriber
public final class WizardryRegistry { public final class WizardryRegistry {
// NOTE: In 1.12, recipes have a registry (they can still stay here though since we don't keep references to them) // NOTE: In 1.12, recipes have a registry (they can still stay here though since we don't keep references to them)
@@ -217,11 +227,9 @@ public final class WizardryRegistry {
registerEntity(EntityWitherSkeletonMinion.class, "wither_skeleton_minion", id++, 128, LIVING_UPDATE_INTERVAL, true); registerEntity(EntityWitherSkeletonMinion.class, "wither_skeleton_minion", id++, 128, LIVING_UPDATE_INTERVAL, true);
// TODO: May need fixing // TODO: May need fixing
List<Biome> biomes = new ArrayList<Biome>(); List<Biome> biomes = Lists.newArrayList();
for(Biome biome : Biome.EXPLORATION_BIOMES_LIST){ for (Biome biome : ForgeRegistries.BIOMES.getValues()) {
if(biome != null){ biomes.add(biome);
biomes.add(biome);
}
} }
biomes.remove(Biomes.MUSHROOM_ISLAND); biomes.remove(Biomes.MUSHROOM_ISLAND);
biomes.remove(Biomes.MUSHROOM_ISLAND_SHORE); biomes.remove(Biomes.MUSHROOM_ISLAND_SHORE);
@@ -246,7 +254,9 @@ public final class WizardryRegistry {
} }
/** Called from the init method in the main mod class to register all the recipes. */ /** Called from the init method in the main mod class to register all the recipes. */
public static void registerRecipes(){ @SubscribeEvent
public static void registerRecipes(RegistryEvent.Register<IRecipe> event){
IForgeRegistry<IRecipe> registry = event.getRegistry();
ItemStack magicCrystalStack = new ItemStack(WizardryItems.magic_crystal); ItemStack magicCrystalStack = new ItemStack(WizardryItems.magic_crystal);
ItemStack magicWandStack = new ItemStack(WizardryItems.magic_wand, 1, Tier.BASIC.maxCharge); ItemStack magicWandStack = new ItemStack(WizardryItems.magic_wand, 1, Tier.BASIC.maxCharge);
@@ -284,30 +294,30 @@ public final class WizardryRegistry {
ItemStack scrollStack = new ItemStack(WizardryItems.blank_scroll); ItemStack scrollStack = new ItemStack(WizardryItems.blank_scroll);
ItemStack paperStack = new ItemStack(Items.PAPER); ItemStack paperStack = new ItemStack(Items.PAPER);
GameRegistry.addRecipe(magicWandStack, " x", " y ", "z ", 'x', magicCrystalStack, 'y', stickStack, 'z', goldNuggetStack); registry.register(new ShapedOreRecipe(null, magicWandStack, " x", " y ", "z ", 'x', magicCrystalStack, 'y', stickStack, 'z', goldNuggetStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "magic_wand")));
GameRegistry.addRecipe(spellBookStack, " x ", "xyx", " x ", 'x', magicCrystalStack, 'y', bookStack); registry.register(new ShapedOreRecipe(null, spellBookStack, " x ", "xyx", " x ", 'x', magicCrystalStack, 'y', bookStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "spellbook")));
GameRegistry.addRecipe(arcaneWorkbenchStack, "vwv", "xyx", "zzz", 'v', goldNuggetStack, 'w', purpleCarpetStack, 'x', magicCrystalStack, 'y', lapisBlockStack, 'z', stoneStack); registry.register(new ShapedOreRecipe(null, arcaneWorkbenchStack, "vwv", "xyx", "zzz", 'v', goldNuggetStack, 'w', purpleCarpetStack, 'x', magicCrystalStack, 'y', lapisBlockStack, 'z', stoneStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "arcane_workbench")));
GameRegistry.addRecipe(manaFlaskStack, "yyy", "yxy", "yyy", 'x', bottleStack, 'y', magicCrystalStack); registry.register(new ShapedOreRecipe(null, manaFlaskStack, "yyy", "yxy", "yyy", 'x', bottleStack, 'y', magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "mana_flask")));
GameRegistry.addRecipe(transportationStoneStack, " x ", "xyx", " x ", 'x', stoneStack, 'y', magicCrystalStack); registry.register(new ShapedOreRecipe(null, transportationStoneStack, " x ", "xyx", " x ", 'x', stoneStack, 'y', magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "transportation_stone")));
GameRegistry.addRecipe(hatStack, "yyy", "y y", 'y', silkStack); registry.register(new ShapedOreRecipe(null, hatStack, "yyy", "y y", 'y', silkStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "hat")));
GameRegistry.addRecipe(robeStack, "y y", "yyy", "yyy", 'y', silkStack); registry.register(new ShapedOreRecipe(null, robeStack, "y y", "yyy", "yyy", 'y', silkStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "robe")));
GameRegistry.addRecipe(leggingsStack, "yyy", "y y", "y y", 'y', silkStack); registry.register(new ShapedOreRecipe(null, leggingsStack, "yyy", "y y", "y y", 'y', silkStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "leggings")));
GameRegistry.addRecipe(bootsStack, "y y", "y y", 'y', silkStack); registry.register(new ShapedOreRecipe(null, bootsStack, "y y", "y y", 'y', silkStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "boots")));
GameRegistry.addRecipe(silkStack1, " x ", "xyx", " x ", 'x', stringStack, 'y', magicCrystalStack); registry.register(new ShapedOreRecipe(null, silkStack1, " x ", "xyx", " x ", 'x', stringStack, 'y', magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "silk")));
GameRegistry.addRecipe(crystalBlockStack, "zzz", "zzz", "zzz", 'z', magicCrystalStack); registry.register(new ShapedOreRecipe(null, crystalBlockStack, "zzz", "zzz", "zzz", 'z', magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "crystal_block")));
GameRegistry.addShapelessRecipe(wizardHandbookStack, bookStack, magicCrystalStack); registry.register(new ShapelessOreRecipe(null, wizardHandbookStack, bookStack, magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "wizard_handbook")));
GameRegistry.addShapelessRecipe(magicCrystalStack1, crystalFlowerStack); registry.register(new ShapelessOreRecipe(null, magicCrystalStack1, crystalFlowerStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "magic_crystal_1")));
GameRegistry.addShapelessRecipe(magicCrystalStack2, crystalBlockStack); registry.register(new ShapelessOreRecipe(null, magicCrystalStack2, crystalBlockStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "magic_crystal_2")));
if(Wizardry.settings.firebombIsCraftable) GameRegistry.addShapelessRecipe(firebombStack, bottleStack, gunpowderStack, blazePowderStack, blazePowderStack); if(Wizardry.settings.firebombIsCraftable) registry.register(new ShapelessOreRecipe(null, firebombStack, bottleStack, gunpowderStack, blazePowderStack, blazePowderStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "fire_bomb")));
if(Wizardry.settings.poisonBombIsCraftable) GameRegistry.addShapelessRecipe(poisonBombStack, bottleStack, gunpowderStack, spiderEyeStack, spiderEyeStack); if(Wizardry.settings.poisonBombIsCraftable) registry.register(new ShapelessOreRecipe(null, poisonBombStack, bottleStack, gunpowderStack, spiderEyeStack, spiderEyeStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "poison_bomb")));
if(Wizardry.settings.smokeBombIsCraftable) GameRegistry.addShapelessRecipe(smokeBombStack, bottleStack, gunpowderStack, coalStack, coalStack); if(Wizardry.settings.smokeBombIsCraftable) registry.register(new ShapelessOreRecipe(null, smokeBombStack, bottleStack, gunpowderStack, coalStack, coalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "smoke_bomb")));
if(Wizardry.settings.useAlternateScrollRecipe){ if(Wizardry.settings.useAlternateScrollRecipe){
GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack, magicCrystalStack); registry.register(new ShapelessOreRecipe(null, scrollStack, paperStack, stringStack, magicCrystalStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "scroll_1")));
}else{ }else{
GameRegistry.addShapelessRecipe(scrollStack, paperStack, stringStack); registry.register(new ShapelessOreRecipe(null, scrollStack, paperStack, stringStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "scroll_2")));
} }
// Mana flask recipes // Mana flask recipes
@@ -316,7 +326,7 @@ public final class WizardryRegistry {
for(Element element : Element.values()){ for(Element element : Element.values()){
for(Tier tier : Tier.values()){ for(Tier tier : Tier.values()){
miscWandStack = new ItemStack(WizardryUtilities.getWand(tier, element), 1, OreDictionary.WILDCARD_VALUE); miscWandStack = new ItemStack(WizardryUtilities.getWand(tier, element), 1, OreDictionary.WILDCARD_VALUE);
GameRegistry.addShapelessRecipe(miscWandStack, miscWandStack, manaFlaskStack); registry.register(new ShapelessOreRecipe(null, miscWandStack, miscWandStack, manaFlaskStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "misc_wand")));
} }
} }
@@ -325,7 +335,7 @@ public final class WizardryRegistry {
for(Element element : Element.values()){ for(Element element : Element.values()){
for(EntityEquipmentSlot slot : WizardryUtilities.ARMOUR_SLOTS){ for(EntityEquipmentSlot slot : WizardryUtilities.ARMOUR_SLOTS){
miscArmourStack = new ItemStack(WizardryUtilities.getArmour(element, slot), 1, OreDictionary.WILDCARD_VALUE); miscArmourStack = new ItemStack(WizardryUtilities.getArmour(element, slot), 1, OreDictionary.WILDCARD_VALUE);
GameRegistry.addShapelessRecipe(miscArmourStack, miscArmourStack, manaFlaskStack); registry.register(new ShapelessOreRecipe(null, miscArmourStack, miscArmourStack, manaFlaskStack).setRegistryName(new ResourceLocation(Wizardry.MODID, "misc_armour")));
} }
} }
} }
@@ -1,12 +1,13 @@
package electroblob.wizardry.spell; package electroblob.wizardry.spell;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.entity.living.EntityWizard; import electroblob.wizardry.entity.living.EntityWizard;
import electroblob.wizardry.event.SpellCastEvent; import electroblob.wizardry.event.SpellCastEvent;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -43,7 +44,7 @@ public class ArcaneJammer extends Spell {
if(rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.ENTITY && WizardryUtilities.isLiving(rayTrace.entityHit)){ if(rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.ENTITY && WizardryUtilities.isLiving(rayTrace.entityHit)){
EntityLivingBase entity = (EntityLivingBase)rayTrace.entityHit; EntityLivingBase entity = (EntityLivingBase)rayTrace.entityHit;
if(entity instanceof EntityWizard) caster.addStat(WizardryAchievements.jam_wizard); if(entity instanceof EntityWizard) { AdvancementHelper.grantAdvancement(caster, EnumAdvancement.jam_wizard); }
if(!world.isRemote){ if(!world.isRemote){
entity.addPotionEffect(new PotionEffect(WizardryPotions.arcane_jammer, entity.addPotionEffect(new PotionEffect(WizardryPotions.arcane_jammer,
@@ -78,9 +79,9 @@ public class ArcaneJammer extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -113,9 +113,9 @@ public class Banish extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < 25; i += 2){ for(int i = 1; i < 25; i += 2){
@@ -90,9 +90,9 @@ public class Bubble extends Spell {
} }
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -87,9 +87,9 @@ public class Entrapment extends Spell {
} }
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < 25; i += 2){ for(int i = 1; i < 25; i += 2){
@@ -61,9 +61,9 @@ public class Fireball extends Spell {
- (caster.posY + (double)(caster.height / 2.0F)); - (caster.posY + (double)(caster.height / 2.0F));
double dz = target.posZ - caster.posZ; double dz = target.posZ - caster.posZ;
fireball.accelerationX = dx / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationX = dx / caster.getDistance(target) * 0.1;
fireball.accelerationY = dy / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationY = dy / caster.getDistance(target) * 0.1;
fireball.accelerationZ = dz / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationZ = dz / caster.getDistance(target) * 0.1;
fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ); fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ);
@@ -60,9 +60,9 @@ public class GreaterFireball extends Spell {
- (caster.posY + (double)(caster.height / 2.0F)); - (caster.posY + (double)(caster.height / 2.0F));
double dz = target.posZ - caster.posZ; double dz = target.posZ - caster.posZ;
fireball.accelerationX = dx / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationX = dx / caster.getDistance(target) * 0.1;
fireball.accelerationY = dy / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationY = dy / caster.getDistance(target) * 0.1;
fireball.accelerationZ = dz / caster.getDistanceToEntity(target) * 0.1; fireball.accelerationZ = dz / caster.getDistance(target) * 0.1;
fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ); fireball.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ);
@@ -2,10 +2,11 @@ package electroblob.wizardry.spell;
import java.util.List; import java.util.List;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -58,7 +59,7 @@ public class IceAge extends Spell {
target.extinguish(); target.extinguish();
} }
if(target instanceof EntityBlaze) caster.addStat(WizardryAchievements.freeze_blaze, 1); if(target instanceof EntityBlaze) { AdvancementHelper.grantAdvancement(caster, EnumAdvancement.freeze_blaze); }
if(target instanceof EntityLiving){ if(target instanceof EntityLiving){
@@ -1,10 +1,11 @@
package electroblob.wizardry.spell; package electroblob.wizardry.spell;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
@@ -52,7 +53,7 @@ public class IceStatue extends Spell {
// Stops the entity looking red while frozen and the resulting z-fighting // Stops the entity looking red while frozen and the resulting z-fighting
target.hurtTime = 0; target.hurtTime = 0;
if(target instanceof EntityBlaze) caster.addStat(WizardryAchievements.freeze_blaze, 1); if(target instanceof EntityBlaze) { AdvancementHelper.grantAdvancement(caster, EnumAdvancement.freeze_blaze); }
// Short mobs such as spiders and pigs // Short mobs such as spiders and pigs
if((target.height < 1.2 || target.isChild()) && WizardryUtilities.canBlockBeReplaced(world, pos)){ if((target.height < 1.2 || target.isChild()) && WizardryUtilities.canBlockBeReplaced(world, pos)){
@@ -82,7 +82,7 @@ public class Intimidate extends Spell {
*/ */
public static boolean runAway(EntityCreature target, EntityLivingBase caster){ public static boolean runAway(EntityCreature target, EntityLivingBase caster){
if(target.getDistanceToEntity(caster) < 16){ if(target.getDistance(caster) < 16){
Vec3d Vec3d = RandomPositionGenerator.findRandomTargetBlockAwayFrom(target, 16, 7, Vec3d Vec3d = RandomPositionGenerator.findRandomTargetBlockAwayFrom(target, 16, 7,
new Vec3d(caster.posX, caster.posY, caster.posZ)); new Vec3d(caster.posX, caster.posY, caster.posZ));
@@ -1,9 +1,10 @@
package electroblob.wizardry.spell; package electroblob.wizardry.spell;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import electroblob.wizardry.util.WizardryUtilities; import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
@@ -109,11 +110,11 @@ public class LightningBolt extends Spell {
event.getLightning().getEntityData().getUniqueId("summoningPlayer")); event.getLightning().getEntityData().getUniqueId("summoningPlayer"));
if(event.getEntity() instanceof EntityCreeper){ if(event.getEntity() instanceof EntityCreeper){
player.addStat(WizardryAchievements.charge_creeper); AdvancementHelper.grantAdvancement(player, EnumAdvancement.charge_creeper);
} }
if(event.getEntity() instanceof EntityPig){ if(event.getEntity() instanceof EntityPig){
player.addStat(WizardryAchievements.frankenstein); AdvancementHelper.grantAdvancement(player, EnumAdvancement.frankenstein);
} }
} }
@@ -172,7 +172,7 @@ public class MindControl extends Spell {
for(EntityLivingBase possibleTarget : possibleTargets){ for(EntityLivingBase possibleTarget : possibleTargets){
if(WizardryUtilities.isValidTarget(caster, possibleTarget) && (newAITarget == null if(WizardryUtilities.isValidTarget(caster, possibleTarget) && (newAITarget == null
|| target.getDistanceToEntity(possibleTarget) < target.getDistanceToEntity(newAITarget))){ || target.getDistance(possibleTarget) < target.getDistance(newAITarget))){
newAITarget = possibleTarget; newAITarget = possibleTarget;
} }
} }
@@ -88,9 +88,9 @@ public class Poison extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -39,7 +39,7 @@ public class Shockwave extends Spell {
for(EntityLivingBase target : targets){ for(EntityLivingBase target : targets){
if(WizardryUtilities.isValidTarget(caster, target)){ if(WizardryUtilities.isValidTarget(caster, target)){
// Damage increases closer to player up to a maximum of 4 hearts (at 1 block distance). // Damage increases closer to player up to a maximum of 4 hearts (at 1 block distance).
float damage = Math.min(8.0f / target.getDistanceToEntity(caster), 8.0f); float damage = Math.min(8.0f / target.getDistance(caster), 8.0f);
target.attackEntityFrom(MagicDamage.causeDirectMagicDamage(caster, DamageType.BLAST), target.attackEntityFrom(MagicDamage.causeDirectMagicDamage(caster, DamageType.BLAST),
damage * modifiers.get(SpellModifiers.DAMAGE)); damage * modifiers.get(SpellModifiers.DAMAGE));
@@ -48,7 +48,7 @@ public class Shockwave extends Spell {
// Entity speed increases closer to the player to a maximum of 3 (at 1 block distance). // Entity speed increases closer to the player to a maximum of 3 (at 1 block distance).
// This is the entity's speed compared to its distance from the player. Used for a similar triangles // This is the entity's speed compared to its distance from the player. Used for a similar triangles
// based x, y and z speed calculation. // based x, y and z speed calculation.
double velocityFactor = Math.min(5 / target.getDistanceSqToEntity(caster), 3.0d); double velocityFactor = Math.min(5 / target.getDistanceSq(caster), 3.0d);
double dx = target.posX - caster.posX; double dx = target.posX - caster.posX;
double dy = target.posY + 1 - caster.posY; double dy = target.posY + 1 - caster.posY;
@@ -1,11 +1,12 @@
package electroblob.wizardry.spell; package electroblob.wizardry.spell;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.SpellType;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.entity.living.EntityMagicSlime; import electroblob.wizardry.entity.living.EntityMagicSlime;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.registry.WizardrySounds;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
@@ -48,7 +49,7 @@ public class Slime extends Spell {
this.getNameForTranslationFormatted())); this.getNameForTranslationFormatted()));
}else if(!(target instanceof EntityMagicSlime)){ }else if(!(target instanceof EntityMagicSlime)){
if(target instanceof EntitySkeleton) caster.addStat(WizardryAchievements.slime_skeleton); if(target instanceof EntitySkeleton) { AdvancementHelper.grantAdvancement(caster, EnumAdvancement.slime_skeleton); }
if(!world.isRemote){ if(!world.isRemote){
EntityMagicSlime slime = new EntityMagicSlime(world, caster, target, EntityMagicSlime slime = new EntityMagicSlime(world, caster, target,
@@ -91,9 +92,9 @@ public class Slime extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -28,7 +28,7 @@ public class Snowball extends Spell {
if(!world.isRemote){ if(!world.isRemote){
EntitySnowball snowball = new EntitySnowball(world, caster); EntitySnowball snowball = new EntitySnowball(world, caster);
snowball.setHeadingFromThrower(caster, caster.rotationPitch, caster.rotationYaw, 0.0f, 1.5f, 1.0f); snowball.shoot(caster, caster.rotationPitch, caster.rotationYaw, 0.0f, 1.5f, 1.0f);
world.spawnEntity(snowball); world.spawnEntity(snowball);
} }
@@ -1,10 +1,10 @@
package electroblob.wizardry.spell; package electroblob.wizardry.spell;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
@@ -13,6 +13,7 @@ import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.entity.living.EntityWizard; import electroblob.wizardry.entity.living.EntityWizard;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.SpellModifiers;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -23,10 +24,11 @@ import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.registry.IForgeRegistry;
import net.minecraftforge.fml.common.registry.IForgeRegistryEntry;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
/** /**
* Generic spell class which is the superclass to all spells in wizardry. When extending this class, you must do the * Generic spell class which is the superclass to all spells in wizardry. When extending this class, you must do the
@@ -258,7 +260,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
*/ */
// This is final so nothing can override it, because that would cause all kinds of problems! // This is final so nothing can override it, because that would cause all kinds of problems!
public final int id(){ public final int id(){
return registry.getValues().indexOf(this); return ((ForgeRegistry<Spell>)registry).getID(this);
} }
/** /**
@@ -295,7 +297,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayName(){ public String getDisplayName(){
return net.minecraft.client.resources.I18n.format("spell." + unlocalisedName); return I18n.format("spell." + unlocalisedName);
} }
/** /**
@@ -312,8 +314,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDisplayNameWithFormatting(){ public String getDisplayNameWithFormatting(){
return this.element.getFormattingCode() return this.element.getFormattingCode() + I18n.format("spell." + unlocalisedName);
+ net.minecraft.client.resources.I18n.format("spell." + unlocalisedName);
} }
/** /**
@@ -330,7 +331,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public String getDescription(){ public String getDescription(){
return net.minecraft.client.resources.I18n.format("spell." + unlocalisedName + ".desc"); return I18n.format("spell." + unlocalisedName + ".desc");
} }
/** Returns whether the spell is enabled in the config. */ /** Returns whether the spell is enabled in the config. */
@@ -371,7 +372,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
* returned by Spell.getSpells(Spell.allSpells).size(), but this method is more efficient. * returned by Spell.getSpells(Spell.allSpells).size(), but this method is more efficient.
*/ */
public static int getTotalSpellCount(){ public static int getTotalSpellCount(){
return registry.getValues().size() - 1; return registry.getValuesCollection().size() - 1;
} }
/** /**
@@ -383,10 +384,10 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
* better way; see </i>{@link Spell#getSpells(Predicate)}. * better way; see </i>{@link Spell#getSpells(Predicate)}.
*/ */
public static Spell get(int id){ public static Spell get(int id){
if(id < 0 || id >= registry.getValues().size()){ if(id < 0 || id >= registry.getValuesCollection().size()){
return Spells.none; return Spells.none;
} }
Spell spell = registry.getValues().get(id); Spell spell = ((ForgeRegistry<Spell>)registry).getValue(id);
return spell == null ? Spells.none : spell; return spell == null ? Spells.none : spell;
} }
@@ -399,7 +400,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
public static Spell get(String name){ public static Spell get(String name){
ResourceLocation key = new ResourceLocation(name); ResourceLocation key = new ResourceLocation(name);
if(key.getResourceDomain().equals("minecraft")) key = new ResourceLocation(Wizardry.MODID, name); if(key.getResourceDomain().equals("minecraft")) key = new ResourceLocation(Wizardry.MODID, name);
return registry.getValue(key); return ((ForgeRegistry<Spell>)registry).getValue(key);
} }
/** Returns a list of all registered spells' registry names, excluding the 'none' spell. Used in commands. */ /** Returns a list of all registered spells' registry names, excluding the 'none' spell. Used in commands. */
@@ -430,14 +431,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl<Spell> implements C
* empty.</i> * empty.</i>
*/ */
public static List<Spell> getSpells(Predicate<Spell> filter){ public static List<Spell> getSpells(Predicate<Spell> filter){
return registry.getValuesCollection().stream().filter(filter.and(p -> p != Spells.none)).collect(Collectors.toList());
ArrayList<Spell> spells = new ArrayList<Spell>(1);
for(Spell spell : registry.getValues()){
if(filter.test(spell) && spell != Spells.none) spells.add(spell);
}
return spells;
} }
/** Predicate which allows all spells. */ /** Predicate which allows all spells. */
@@ -49,11 +49,11 @@ public class Whirlwind extends Spell {
if(world.isRemote){ if(world.isRemote){
for(int i = 0; i < 10; i++){ for(int i = 0; i < 10; i++){
double x2 = (double)(caster.posX + world.rand.nextFloat() - 0.5F double x2 = (double)(caster.posX + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().x * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().x * caster.getDistance(target) * 0.5);
double y2 = (double)(WizardryUtilities.getPlayerEyesPos(caster) + world.rand.nextFloat() - 0.5F double y2 = (double)(WizardryUtilities.getPlayerEyesPos(caster) + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().y * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().y * caster.getDistance(target) * 0.5);
double z2 = (double)(caster.posZ + world.rand.nextFloat() - 0.5F double z2 = (double)(caster.posZ + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().z * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().z * caster.getDistance(target) * 0.5);
world.spawnParticle(EnumParticleTypes.CLOUD, x2, y2, z2, caster.getLookVec().x, world.spawnParticle(EnumParticleTypes.CLOUD, x2, y2, z2, caster.getLookVec().x,
caster.getLookVec().y, caster.getLookVec().z); caster.getLookVec().y, caster.getLookVec().z);
// Minecraft.getMinecraft().effectRenderer.addEffect(new EntitySparkleFX(world, x2, y2, z2, // Minecraft.getMinecraft().effectRenderer.addEffect(new EntitySparkleFX(world, x2, y2, z2,
@@ -88,11 +88,11 @@ public class Whirlwind extends Spell {
if(world.isRemote){ if(world.isRemote){
for(int i = 0; i < 10; i++){ for(int i = 0; i < 10; i++){
double x2 = (double)(caster.posX + world.rand.nextFloat() - 0.5F double x2 = (double)(caster.posX + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().x * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().x * caster.getDistance(target) * 0.5);
double y2 = (double)(caster.posY + caster.getEyeHeight() + world.rand.nextFloat() - 0.5F double y2 = (double)(caster.posY + caster.getEyeHeight() + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().y * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().y * caster.getDistance(target) * 0.5);
double z2 = (double)(caster.posZ + world.rand.nextFloat() - 0.5F double z2 = (double)(caster.posZ + world.rand.nextFloat() - 0.5F
+ caster.getLookVec().z * caster.getDistanceToEntity(target) * 0.5); + caster.getLookVec().z * caster.getDistance(target) * 0.5);
world.spawnParticle(EnumParticleTypes.CLOUD, x2, y2, z2, caster.getLookVec().x, world.spawnParticle(EnumParticleTypes.CLOUD, x2, y2, z2, caster.getLookVec().x,
caster.getLookVec().y, caster.getLookVec().z); caster.getLookVec().y, caster.getLookVec().z);
} }
@@ -92,9 +92,9 @@ public class Wither extends Spell {
if(world.isRemote){ if(world.isRemote){
double dx = (target.posX - caster.posX) / caster.getDistanceToEntity(target); double dx = (target.posX - caster.posX) / caster.getDistance(target);
double dy = (target.posY - caster.posY) / caster.getDistanceToEntity(target); double dy = (target.posY - caster.posY) / caster.getDistance(target);
double dz = (target.posZ - caster.posZ) / caster.getDistanceToEntity(target); double dz = (target.posZ - caster.posZ) / caster.getDistance(target);
for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){ for(int i = 1; i < (int)(25 * modifiers.get(WizardryItems.range_upgrade)); i += 2){
@@ -61,9 +61,9 @@ public class WitherSkull extends Spell {
- (caster.posY + (double)(caster.height / 2.0F)); - (caster.posY + (double)(caster.height / 2.0F));
double dz = target.posZ - caster.posZ; double dz = target.posZ - caster.posZ;
witherskull.accelerationX = dx / caster.getDistanceToEntity(target) * 0.1; witherskull.accelerationX = dx / caster.getDistance(target) * 0.1;
witherskull.accelerationY = dy / caster.getDistanceToEntity(target) * 0.1; witherskull.accelerationY = dy / caster.getDistance(target) * 0.1;
witherskull.accelerationZ = dz / caster.getDistanceToEntity(target) * 0.1; witherskull.accelerationZ = dz / caster.getDistance(target) * 0.1;
witherskull.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ); witherskull.setPosition(caster.posX, caster.posY + caster.getEyeHeight(), caster.posZ);
@@ -5,6 +5,8 @@ import java.util.Set;
import electroblob.wizardry.WizardData; import electroblob.wizardry.WizardData;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.constants.Constants; import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.constants.Tier; import electroblob.wizardry.constants.Tier;
import electroblob.wizardry.event.SpellBindEvent; import electroblob.wizardry.event.SpellBindEvent;
@@ -14,7 +16,6 @@ import electroblob.wizardry.item.ItemSpellBook;
import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.item.ItemWand;
import electroblob.wizardry.item.ItemWizardArmour; import electroblob.wizardry.item.ItemWizardArmour;
import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.Spells;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WandHelper;
@@ -297,7 +298,7 @@ public class ContainerArcaneWorkbench extends Container {
newWand.setItemDamage(newWand.getMaxDamage() - (wand.getMaxDamage() - wand.getItemDamage())); newWand.setItemDamage(newWand.getMaxDamage() - (wand.getMaxDamage() - wand.getItemDamage()));
this.putStackInSlot(WAND_SLOT, newWand); this.putStackInSlot(WAND_SLOT, newWand);
this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY); this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY);
player.addStat(WizardryAchievements.apprentice, 1); AdvancementHelper.grantAdvancement(player, EnumAdvancement.apprentice);
} }
break; break;
@@ -320,7 +321,7 @@ public class ContainerArcaneWorkbench extends Container {
newWand.setItemDamage(newWand.getMaxDamage() - (wand.getMaxDamage() - wand.getItemDamage())); newWand.setItemDamage(newWand.getMaxDamage() - (wand.getMaxDamage() - wand.getItemDamage()));
this.putStackInSlot(WAND_SLOT, newWand); this.putStackInSlot(WAND_SLOT, newWand);
this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY); this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY);
player.addStat(WizardryAchievements.master, 1); AdvancementHelper.grantAdvancement(player, EnumAdvancement.master);
} }
break; break;
@@ -374,10 +375,10 @@ public class ContainerArcaneWorkbench extends Container {
} }
this.getSlot(UPGRADE_SLOT).decrStackSize(1); this.getSlot(UPGRADE_SLOT).decrStackSize(1);
player.addStat(WizardryAchievements.special_upgrade, 1); AdvancementHelper.grantAdvancement(player, EnumAdvancement.special_upgrade);
if(WandHelper.getTotalUpgrades(wand) == Tier.MASTER.upgradeLimit){ if(WandHelper.getTotalUpgrades(wand) == Tier.MASTER.upgradeLimit){
player.addStat(WizardryAchievements.max_out_wand, 1); AdvancementHelper.grantAdvancement(player, EnumAdvancement.max_out_wand);
} }
} }
} }
@@ -428,7 +429,7 @@ public class ContainerArcaneWorkbench extends Container {
if(!wand.getTagCompound().hasKey("legendary")){ if(!wand.getTagCompound().hasKey("legendary")){
wand.getTagCompound().setBoolean("legendary", true); wand.getTagCompound().setBoolean("legendary", true);
this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY); this.putStackInSlot(UPGRADE_SLOT, ItemStack.EMPTY);
player.addStat(WizardryAchievements.legendary); AdvancementHelper.grantAdvancement(player, EnumAdvancement.legendary);
} }
} }
// Charges armour by appropriate amount // Charges armour by appropriate amount
@@ -1,6 +1,7 @@
package electroblob.wizardry.util; package electroblob.wizardry.util;
import electroblob.wizardry.registry.WizardryAchievements; import electroblob.wizardry.advancement.AdvancementHelper;
import electroblob.wizardry.advancement.AdvancementHelper.EnumAdvancement;
import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MagicDamage.DamageType;
import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -45,7 +46,7 @@ public interface IElementalDamage {
WizardryUtilities.chargeCreeper((EntityCreeper)event.getEntityLiving()); WizardryUtilities.chargeCreeper((EntityCreeper)event.getEntityLiving());
// Gives the player that caused the shock damage the 'It's Gonna Blow' achievement // Gives the player that caused the shock damage the 'It's Gonna Blow' achievement
if(event.getSource().getTrueSource() instanceof EntityPlayer){ if(event.getSource().getTrueSource() instanceof EntityPlayer){
((EntityPlayer)event.getSource().getTrueSource()).addStat(WizardryAchievements.charge_creeper); AdvancementHelper.grantAdvancement((EntityPlayer)event.getSource().getTrueSource(), EnumAdvancement.charge_creeper);
} }
} }
} }
@@ -41,7 +41,7 @@ public class WizardryPathFinder {
@Nullable @Nullable
private Path findPath(IBlockAccess world, EntityLiving entity, double x, double y, double z, float range){ private Path findPath(IBlockAccess world, EntityLiving entity, double x, double y, double z, float range){
this.path.clearPath(); this.path.clearPath();
this.nodeProcessor.initProcessor(world, entity); this.nodeProcessor.init(world, entity);
PathPoint pathpoint = this.nodeProcessor.getStart(); PathPoint pathpoint = this.nodeProcessor.getStart();
PathPoint pathpoint1 = this.nodeProcessor.getPathPointToCoords(x, y, z); PathPoint pathpoint1 = this.nodeProcessor.getPathPointToCoords(x, y, z);
Path path = this.findPath(pathpoint, pathpoint1, range); Path path = this.findPath(pathpoint, pathpoint1, range);
@@ -27,6 +27,7 @@ import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.spell.MindControl; import electroblob.wizardry.spell.MindControl;
import electroblob.wizardry.spell.Spell; import electroblob.wizardry.spell.Spell;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -667,7 +668,7 @@ public final class WizardryUtilities {
// Essentially the same as getting the tessellator. For most code, you'll want the tessellator AND the // Essentially the same as getting the tessellator. For most code, you'll want the tessellator AND the
// vertexbuffer // vertexbuffer
// stored in local variables. // stored in local variables.
net.minecraft.client.renderer.VertexBuffer buffer = net.minecraft.client.renderer.Tessellator.getInstance() BufferBuilder buffer = net.minecraft.client.renderer.Tessellator.getInstance()
.getBuffer(); .getBuffer();
// Equivalent of tessellator.startDrawingQuads() // Equivalent of tessellator.startDrawingQuads()
buffer.begin(org.lwjgl.opengl.GL11.GL_QUADS, buffer.begin(org.lwjgl.opengl.GL11.GL_QUADS,
@@ -0,0 +1,21 @@
{
"display": {
"icon": {
"item": "wizardry:wizard_handbook"
},
"title": {
"translate": "achievement.all_spells"
},
"description": {
"translate": "achievement.all_spells.desc"
},
"frame": "goal",
"announce_to_chat": false
},
"parent": "wizardry:master",
"criteria": {
"coded_trigger": {
"trigger": "minecraft:impossible"
}
}
}
@@ -0,0 +1,21 @@
{
"display": {
"icon": {
"item": "minecraft:iron_sword"
},
"title": {
"translate": "achievement.anger_wizard"
},
"description": {
"translate": "achievement.anger_wizard.desc"
},
"frame": "task",
"announce_to_chat": false
},
"parent": "wizardry:wizard_trade",
"criteria": {
"coded_trigger": {
"trigger": "minecraft:impossible"
}
}
}
@@ -0,0 +1,21 @@
{
"display": {
"icon": {
"item": "wizardry:apprentice_wand"
},
"title": {
"translate": "achievement.apprentice"
},
"description": {
"translate": "achievement.apprentice.desc"
},
"frame": "task",
"announce_to_chat": false
},
"parent": "wizardry:arcane_initiate",
"criteria": {
"coded_trigger": {
"trigger": "minecraft:impossible"
}
}
}
@@ -0,0 +1,21 @@
{
"display": {
"icon": {
"item": "wizardry:magic_wand"
},
"title": {
"translate": "achievement.arcane_initiate"
},
"description": {
"translate": "achievement.arcane_initiate.desc"
},
"frame": "task",
"announce_to_chat": false
},
"parent": "wizardry:crystal",
"criteria": {
"coded_trigger": {
"trigger": "minecraft:impossible"
}
}
}

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