Piterros990
Duke Fishron
I have a question, how can I make a weapon that works in a similiar style to portal gun, so in this case left click melee, right shoots?
I believe that in the example mod, (and in Al0n37's Example mod on youtube) there is a dual-use weapon, so you may wanna check that out.I have a question, how can I make a weapon that works in a similiar style to portal gun, so in this case left click melee, right shoots?
Thanks!I believe that in the example mod, (and in Al0n37's Example mod on youtube) there is a dual-use weapon, so you may wanna check that out.
public override void AddRecipeGroups()
{
RecipeGroup group = new RecipeGroup(() => Lang.misc[37] + " " + GetItem("Wings").item.name, new int[]
{
ItemType(ItemID.AngelWings),
ItemType(ItemID.DemonWings),
ItemType(ItemID.Jetpack),
ItemType(ItemID.ButterflyWings),
ItemType(ItemID.FairyWings),
ItemType(ItemID.HarpyWings),
ItemType(ItemID.BoneWings),
ItemType(ItemID.FlameWings),
ItemType(ItemID.FrozenWings),
ItemType(ItemID.GhostWings),
ItemType(ItemID.SteampunkWings),
ItemType(ItemID.LeafWings),
ItemType(ItemID.BatWings),
ItemType(ItemID.BeeWings),
ItemType(ItemID.TatteredFairyWings),
ItemType(ItemID.SpookyWings),
ItemType(ItemID.FestiveWings),
ItemType(ItemID.BeetleWings),
ItemType(ItemID.FinWings),
ItemType(ItemID.FishronWings),
ItemType(ItemID.MothronWings),
ItemType(ItemID.WingsSolar),
ItemType(ItemID.WingsVortex),
ItemType(ItemID.WingsNebula),
ItemType(ItemID.WingsStardust),
ItemType(ItemID.Hoverboard)
});
RecipeGroup.RegisterGroup("EpicModpack:Wings", group);
}
using System;
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ModLoader;
namespace EpicnessModRemastered.NPCs.Bosses
{
//ported from my tAPI mod because I'm lazy
public abstract class CorruptWorm : ModNPC
{
/* ai[0] = follower
* ai[1] = following
* ai[2] = distanceFromTail
* ai[3] = head
*/
public bool head;
public bool tail;
public int minLength;
public int maxLength;
public int headType;
public int bodyType;
public int tailType;
public bool flies = false;
public bool directional = false;
public float speed;
public float turnSpeed;
public override void AI()
{
if (npc.localAI[1] == 0f)
{
npc.localAI[1] = 1f;
Init();
}
if (npc.ai[3] > 0f)
{
npc.realLife = (int)npc.ai[3];
}
if (!head && npc.timeLeft < 300)
{
npc.timeLeft = 300;
}
if (npc.target < 0 || npc.target == 255 || Main.player[npc.target].dead)
{
npc.TargetClosest(true);
}
if (Main.player[npc.target].dead && npc.timeLeft > 300)
{
npc.timeLeft = 300;
}
if (Main.netMode != 1)
{
if (!tail && npc.ai[0] == 0f)
{
if (head)
{
npc.ai[3] = (float)npc.whoAmI;
npc.realLife = npc.whoAmI;
npc.ai[2] = (float)Main.rand.Next(minLength, maxLength + 1);
npc.ai[0] = (float)NPC.NewNPC((int)(npc.position.X + (float)(npc.width / 2)), (int)(npc.position.Y + (float)npc.height), bodyType, npc.whoAmI, mod.NPCType("CorruptWormBody"));
}
else if (npc.ai[2] > 0f)
{
npc.ai[0] = (float)NPC.NewNPC((int)(npc.position.X + (float)(npc.width / 2)), (int)(npc.position.Y + (float)npc.height), npc.type, npc.whoAmI, mod.NPCType("CorruptWormHead"));
}
else
{
npc.ai[0] = (float)NPC.NewNPC((int)(npc.position.X + (float)(npc.width / 2)), (int)(npc.position.Y + (float)npc.height), tailType, npc.whoAmI, mod.NPCType("CorruptWormTail"));
}
Main.npc[(int)npc.ai[0]].ai[3] = npc.ai[3];
Main.npc[(int)npc.ai[0]].realLife = npc.realLife;
Main.npc[(int)npc.ai[0]].ai[1] = (float)npc.whoAmI;
Main.npc[(int)npc.ai[0]].ai[2] = npc.ai[2] - 1f;
npc.netUpdate = true;
}
if (!head && (!Main.npc[(int)npc.ai[1]].active || (Main.npc[(int)npc.ai[1]].type != headType && Main.npc[(int)npc.ai[1]].type != bodyType)))
{
npc.life = 0;
npc.HitEffect(0, 10.0);
npc.active = false;
}
if (!tail && (!Main.npc[(int)npc.ai[0]].active || (Main.npc[(int)npc.ai[0]].type != bodyType && Main.npc[(int)npc.ai[0]].type != tailType)))
{
npc.life = 0;
npc.HitEffect(0, 10.0);
npc.active = false;
}
if (!npc.active && Main.netMode == 2)
{
NetMessage.SendData(28, -1, -1, "", npc.whoAmI, -1f, 0f, 0f, 0, 0, 0);
}
}
int num180 = (int)(npc.position.X / 16f) - 1;
int num181 = (int)((npc.position.X + (float)npc.width) / 16f) + 2;
int num182 = (int)(npc.position.Y / 16f) - 1;
int num183 = (int)((npc.position.Y + (float)npc.height) / 16f) + 2;
if (num180 < 0)
{
num180 = 0;
}
if (num181 > Main.maxTilesX)
{
num181 = Main.maxTilesX;
}
if (num182 < 0)
{
num182 = 0;
}
if (num183 > Main.maxTilesY)
{
num183 = Main.maxTilesY;
}
bool flag18 = flies;
if (!flag18)
{
for (int num184 = num180; num184 < num181; num184++)
{
for (int num185 = num182; num185 < num183; num185++)
{
if (Main.tile[num184, num185] != null && ((Main.tile[num184, num185].nactive() && (Main.tileSolid[(int)Main.tile[num184, num185].type] || (Main.tileSolidTop[(int)Main.tile[num184, num185].type] && Main.tile[num184, num185].frameY == 0))) || Main.tile[num184, num185].liquid > 64))
{
Vector2 vector17;
vector17.X = (float)(num184 * 16);
vector17.Y = (float)(num185 * 16);
if (npc.position.X + (float)npc.width > vector17.X && npc.position.X < vector17.X + 16f && npc.position.Y + (float)npc.height > vector17.Y && npc.position.Y < vector17.Y + 16f)
{
flag18 = true;
if (Main.rand.Next(100) == 0 && npc.behindTiles && Main.tile[num184, num185].nactive())
{
WorldGen.KillTile(num184, num185, true, true, false);
}
if (Main.netMode != 1 && Main.tile[num184, num185].type == 2)
{
ushort arg_BFCA_0 = Main.tile[num184, num185 - 1].type;
}
}
}
}
}
}
if (!flag18 && head)
{
Rectangle rectangle = new Rectangle((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height);
int num186 = 1000;
bool flag19 = true;
for (int num187 = 0; num187 < 255; num187++)
{
if (Main.player[num187].active)
{
Rectangle rectangle2 = new Rectangle((int)Main.player[num187].position.X - num186, (int)Main.player[num187].position.Y - num186, num186 * 2, num186 * 2);
if (rectangle.Intersects(rectangle2))
{
flag19 = false;
break;
}
}
}
if (flag19)
{
flag18 = true;
}
}
if (directional)
{
if (npc.velocity.X < 0f)
{
npc.spriteDirection = 1;
}
else if (npc.velocity.X > 0f)
{
npc.spriteDirection = -1;
}
}
float num188 = speed;
float num189 = turnSpeed;
Vector2 vector18 = new Vector2(npc.position.X + (float)npc.width * 0.5f, npc.position.Y + (float)npc.height * 0.5f);
float num191 = Main.player[npc.target].position.X + (float)(Main.player[npc.target].width / 2);
float num192 = Main.player[npc.target].position.Y + (float)(Main.player[npc.target].height / 2);
num191 = (float)((int)(num191 / 16f) * 16);
num192 = (float)((int)(num192 / 16f) * 16);
vector18.X = (float)((int)(vector18.X / 16f) * 16);
vector18.Y = (float)((int)(vector18.Y / 16f) * 16);
num191 -= vector18.X;
num192 -= vector18.Y;
float num193 = (float)System.Math.Sqrt((double)(num191 * num191 + num192 * num192));
if (npc.ai[1] > 0f && npc.ai[1] < (float)Main.npc.Length)
{
try
{
vector18 = new Vector2(npc.position.X + (float)npc.width * 0.5f, npc.position.Y + (float)npc.height * 0.5f);
num191 = Main.npc[(int)npc.ai[1]].position.X + (float)(Main.npc[(int)npc.ai[1]].width / 2) - vector18.X;
num192 = Main.npc[(int)npc.ai[1]].position.Y + (float)(Main.npc[(int)npc.ai[1]].height / 2) - vector18.Y;
}
catch
{
}
npc.rotation = (float)System.Math.Atan2((double)num192, (double)num191) + 1.57f;
num193 = (float)System.Math.Sqrt((double)(num191 * num191 + num192 * num192));
int num194 = npc.width;
num193 = (num193 - (float)num194) / num193;
num191 *= num193;
num192 *= num193;
npc.velocity = Vector2.Zero;
npc.position.X = npc.position.X + num191;
npc.position.Y = npc.position.Y + num192;
if (directional)
{
if (num191 < 0f)
{
npc.spriteDirection = 1;
}
if (num191 > 0f)
{
npc.spriteDirection = -1;
}
}
}
else
{
if (!flag18)
{
npc.TargetClosest(true);
npc.velocity.Y = npc.velocity.Y + 0.11f;
if (npc.velocity.Y > num188)
{
npc.velocity.Y = num188;
}
if ((double)(System.Math.Abs(npc.velocity.X) + System.Math.Abs(npc.velocity.Y)) < (double)num188 * 0.4)
{
if (npc.velocity.X < 0f)
{
npc.velocity.X = npc.velocity.X - num189 * 1.1f;
}
else
{
npc.velocity.X = npc.velocity.X + num189 * 1.1f;
}
}
else if (npc.velocity.Y == num188)
{
if (npc.velocity.X < num191)
{
npc.velocity.X = npc.velocity.X + num189;
}
else if (npc.velocity.X > num191)
{
npc.velocity.X = npc.velocity.X - num189;
}
}
else if (npc.velocity.Y > 4f)
{
if (npc.velocity.X < 0f)
{
npc.velocity.X = npc.velocity.X + num189 * 0.9f;
}
else
{
npc.velocity.X = npc.velocity.X - num189 * 0.9f;
}
}
}
else
{
if (!flies && npc.behindTiles && npc.soundDelay == 0)
{
float num195 = num193 / 40f;
if (num195 < 10f)
{
num195 = 10f;
}
if (num195 > 20f)
{
num195 = 20f;
}
npc.soundDelay = (int)num195;
Main.PlaySound(15, (int)npc.position.X, (int)npc.position.Y, 1);
}
num193 = (float)System.Math.Sqrt((double)(num191 * num191 + num192 * num192));
float num196 = System.Math.Abs(num191);
float num197 = System.Math.Abs(num192);
float num198 = num188 / num193;
num191 *= num198;
num192 *= num198;
if (ShouldRun())
{
bool flag20 = true;
for (int num199 = 0; num199 < 255; num199++)
{
if (Main.player[num199].active && !Main.player[num199].dead && Main.player[num199].ZoneCorrupt)
{
flag20 = false;
}
}
if (flag20)
{
if (Main.netMode != 1 && (double)(npc.position.Y / 16f) > (Main.rockLayer + (double)Main.maxTilesY) / 2.0)
{
npc.active = false;
int num200 = (int)npc.ai[0];
while (num200 > 0 && num200 < 200 && Main.npc[num200].active && Main.npc[num200].aiStyle == npc.aiStyle)
{
int num201 = (int)Main.npc[num200].ai[0];
Main.npc[num200].active = false;
npc.life = 0;
if (Main.netMode == 2)
{
NetMessage.SendData(23, -1, -1, "", num200, 0f, 0f, 0f, 0, 0, 0);
}
num200 = num201;
}
if (Main.netMode == 2)
{
NetMessage.SendData(23, -1, -1, "", npc.whoAmI, 0f, 0f, 0f, 0, 0, 0);
}
}
num191 = 0f;
num192 = num188;
}
}
bool flag21 = false;
if (npc.type == 87)
{
if (((npc.velocity.X > 0f && num191 < 0f) || (npc.velocity.X < 0f && num191 > 0f) || (npc.velocity.Y > 0f && num192 < 0f) || (npc.velocity.Y < 0f && num192 > 0f)) && System.Math.Abs(npc.velocity.X) + System.Math.Abs(npc.velocity.Y) > num189 / 2f && num193 < 300f)
{
flag21 = true;
if (System.Math.Abs(npc.velocity.X) + System.Math.Abs(npc.velocity.Y) < num188)
{
npc.velocity *= 1.1f;
}
}
if (npc.position.Y > Main.player[npc.target].position.Y || (double)(Main.player[npc.target].position.Y / 16f) > Main.worldSurface || Main.player[npc.target].dead)
{
flag21 = true;
if (System.Math.Abs(npc.velocity.X) < num188 / 2f)
{
if (npc.velocity.X == 0f)
{
npc.velocity.X = npc.velocity.X - (float)npc.direction;
}
npc.velocity.X = npc.velocity.X * 1.1f;
}
else
{
if (npc.velocity.Y > -num188)
{
npc.velocity.Y = npc.velocity.Y - num189;
}
}
}
}
if (!flag21)
{
if ((npc.velocity.X > 0f && num191 > 0f) || (npc.velocity.X < 0f && num191 < 0f) || (npc.velocity.Y > 0f && num192 > 0f) || (npc.velocity.Y < 0f && num192 < 0f))
{
if (npc.velocity.X < num191)
{
npc.velocity.X = npc.velocity.X + num189;
}
else
{
if (npc.velocity.X > num191)
{
npc.velocity.X = npc.velocity.X - num189;
}
}
if (npc.velocity.Y < num192)
{
npc.velocity.Y = npc.velocity.Y + num189;
}
else
{
if (npc.velocity.Y > num192)
{
npc.velocity.Y = npc.velocity.Y - num189;
}
}
if ((double)System.Math.Abs(num192) < (double)num188 * 0.2 && ((npc.velocity.X > 0f && num191 < 0f) || (npc.velocity.X < 0f && num191 > 0f)))
{
if (npc.velocity.Y > 0f)
{
npc.velocity.Y = npc.velocity.Y + num189 * 2f;
}
else
{
npc.velocity.Y = npc.velocity.Y - num189 * 2f;
}
}
if ((double)System.Math.Abs(num191) < (double)num188 * 0.2 && ((npc.velocity.Y > 0f && num192 < 0f) || (npc.velocity.Y < 0f && num192 > 0f)))
{
if (npc.velocity.X > 0f)
{
npc.velocity.X = npc.velocity.X + num189 * 2f;
}
else
{
npc.velocity.X = npc.velocity.X - num189 * 2f;
}
}
}
else
{
if (num196 > num197)
{
if (npc.velocity.X < num191)
{
npc.velocity.X = npc.velocity.X + num189 * 1.1f;
}
else if (npc.velocity.X > num191)
{
npc.velocity.X = npc.velocity.X - num189 * 1.1f;
}
if ((double)(System.Math.Abs(npc.velocity.X) + System.Math.Abs(npc.velocity.Y)) < (double)num188 * 0.5)
{
if (npc.velocity.Y > 0f)
{
npc.velocity.Y = npc.velocity.Y + num189;
}
else
{
npc.velocity.Y = npc.velocity.Y - num189;
}
}
}
else
{
if (npc.velocity.Y < num192)
{
npc.velocity.Y = npc.velocity.Y + num189 * 1.1f;
}
else if (npc.velocity.Y > num192)
{
npc.velocity.Y = npc.velocity.Y - num189 * 1.1f;
}
if ((double)(System.Math.Abs(npc.velocity.X) + System.Math.Abs(npc.velocity.Y)) < (double)num188 * 0.5)
{
if (npc.velocity.X > 0f)
{
npc.velocity.X = npc.velocity.X + num189;
}
else
{
npc.velocity.X = npc.velocity.X - num189;
}
}
}
}
}
}
npc.rotation = (float)System.Math.Atan2((double)npc.velocity.Y, (double)npc.velocity.X) + 1.57f;
if (head)
{
if (flag18)
{
if (npc.localAI[0] != 1f)
{
npc.netUpdate = true;
}
npc.localAI[0] = 1f;
}
else
{
if (npc.localAI[0] != 0f)
{
npc.netUpdate = true;
}
npc.localAI[0] = 0f;
}
if (((npc.velocity.X > 0f && npc.oldVelocity.X < 0f) || (npc.velocity.X < 0f && npc.oldVelocity.X > 0f) || (npc.velocity.Y > 0f && npc.oldVelocity.Y < 0f) || (npc.velocity.Y < 0f && npc.oldVelocity.Y > 0f)) && !npc.justHit)
{
npc.netUpdate = true;
return;
}
}
}
CustomBehavior();
}
public virtual void Init()
{
}
public virtual bool ShouldRun()
{
return false;
}
public virtual void CustomBehavior()
{
}
}
}
using System;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace EpicnessModRemastered.NPCs.Bosses
{
public class CorruptWormHead : CorruptWorm
{
public CorruptWormHead()
{
npc.name = "Corrupt Worm Head";
}
public override void SetDefaults()
{
npc.name = "Corrupt Worm Head";
npc.displayName = "Corupt Worm";
npc.aiStyle = -1;
npc.lifeMax = 200000;
npc.damage = 675;
npc.defense = 0;
npc.knockBackResist = 0f;
npc.width = 38;
npc.height = 100;
Main.npcFrameCount[npc.type] = 1;
npc.value = Item.buyPrice(4, 60, 75, 45);
npc.npcSlots = 1f;
npc.boss = true;
npc.lavaImmune = true;
npc.soundHit = 8;
npc.soundKilled = 14;
npc.buffImmune[24] = true;
music = MusicID.Boss3;
npc.noTileCollide = true;
bossBag = mod.ItemType("ArgothTheDemonLordBag");
}
public override void NPCLoot()
{
if (Main.rand.Next(15) == 0)
{
Item.NewItem((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height, mod.ItemType("SuperMagicalChest"));
}
{
Item.NewItem((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height, mod.ItemType("CorruptBar"), 20);
}
if (Main.expertMode)
{
npc.DropBossBags();
}
}
public override void ScaleExpertStats(int numPlayers, float bossLifeScale)
{
npc.lifeMax = (int)(npc.lifeMax * 0.625f * bossLifeScale);
npc.damage = (int)(npc.damage * 0.3f);
}
public override void AutoloadHead(ref string headTexture, ref string bossHeadTexture)
{
bossHeadTexture = "EpicnessModRemastered/NPCs/Bosses/ArgothBossHead";
}
public override void BossLoot(ref string name, ref int potionType)
{
name = "CorruptWorm";
potionType = ItemID.SuperHealingPotion;
}
}
}
using System;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace EpicnessModRemastered.NPCs.Bosses
{
public class CorruptWormBody : ModNPC
{
public override void SetDefaults()
{
npc.name = "Corrupt Worm Body";
npc.displayName = "Corupt Worm";
npc.aiStyle = 6;
npc.lifeMax = 200000;
npc.damage = 145;
npc.defense = 85;
npc.knockBackResist = 0f;
npc.width = 38;
npc.height = 100;
Main.npcFrameCount[npc.type] = 1;
npc.value = Item.buyPrice(4, 60, 75, 45);
npc.npcSlots = 1f;
npc.boss = true;
npc.lavaImmune = true;
npc.soundHit = 8;
npc.soundKilled = 14;
npc.buffImmune[24] = true;
music = MusicID.Boss3;
npc.noTileCollide = true;
bossBag = mod.ItemType("ArgothTheDemonLordBag");
}
public override void ScaleExpertStats(int numPlayers, float bossLifeScale)
{
npc.lifeMax = (int)(npc.lifeMax * 0.625f * bossLifeScale);
npc.damage = (int)(npc.damage * 0.3f);
}
public override void AutoloadHead(ref string headTexture, ref string bossHeadTexture)
{
bossHeadTexture = "EpicnessModRemastered/NPCs/Bosses/ArgothBossHead";
}
}
}
Mod browser Is under heavy load. What do I do?
using System;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace MetalMania.NPCs.Boss
{
public class SoluriumSlimeMaster : ModNPC
{
public override void SetDefaults()
{
npc.name = "Solurium Slime Master";
npc.displayName = "Solurium Slime Monster";
npc.aiStyle = 15;
npc.lifeMax = 120000;
npc.damage = 80;
npc.defense = 30;
npc.knockBackResist = 0f;
npc.width = 410;
npc.height = 210;
npc.value = Item.buyPrice(0, 8, 75, 40);
npc.npcSlots = 1f;
npc.boss = true;
npc.lavaImmune = false;
npc.noGravity = false;
npc.noTileCollide = false;
npc.soundHit = 1;
npc.soundKilled = 1;
npc.buffImmune[24] = false;
music = MusicID.Boss3;
npc.netAlways = true;
}
public override void AutoloadHead(ref string headTexture, ref string bossHeadTexture)
{
bossHeadTexture = "MetalMania/NPCs/Boss/SoluriumSlimeMaster_head";
}
public override void BossLoot(ref string name, ref int potionType)
{
potionType = ItemID.GreaterHealingPotion;
Item.NewItem((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height, mod.ItemType("BottledSpark"), Main.rand.Next(8, 32));
Item.NewItem((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height, mod.ItemType("MeteriumWormStaff"), 1);
ManiaWorld.downedBossSoluriumSlime = true;
npc.ai[2] = 0;
}
public override void ScaleExpertStats(int numPlayers, float bossLifeScale)
{
npc.lifeMax = (int)(npc.lifeMax * 1.3f * bossLifeScale);
npc.damage = (int)(npc.damage * 1.1f);
npc.defense = 40;
}
public override void AI()
{
npc.ai[0]++;
Player player = Main.player[npc.target];
if (!player.active || player.dead)
{
npc.velocity = new Vector2(0f, 10f);
if (npc.timeLeft > 10)
{
npc.timeLeft = 10;
}
return;
}
npc.ai[3]++;
if (npc.ai[3] % 600 == 3)
{
NPC.NewNPC((int)npc.position.X, (int)npc.position.Y, mod.NPCType("SoluriumSlimeMinion"));
}
}
}
}
Please helpWhat's wrong with that code?
Code:public override void AddRecipeGroups() { RecipeGroup group = new RecipeGroup(() => Lang.misc[37] + " " + GetItem("Wings").item.name, new int[] { ItemType(ItemID.AngelWings), ItemType(ItemID.DemonWings), ItemType(ItemID.Jetpack), ItemType(ItemID.ButterflyWings), ItemType(ItemID.FairyWings), ItemType(ItemID.HarpyWings), ItemType(ItemID.BoneWings), ItemType(ItemID.FlameWings), ItemType(ItemID.FrozenWings), ItemType(ItemID.GhostWings), ItemType(ItemID.SteampunkWings), ItemType(ItemID.LeafWings), ItemType(ItemID.BatWings), ItemType(ItemID.BeeWings), ItemType(ItemID.TatteredFairyWings), ItemType(ItemID.SpookyWings), ItemType(ItemID.FestiveWings), ItemType(ItemID.BeetleWings), ItemType(ItemID.FinWings), ItemType(ItemID.FishronWings), ItemType(ItemID.MothronWings), ItemType(ItemID.WingsSolar), ItemType(ItemID.WingsVortex), ItemType(ItemID.WingsNebula), ItemType(ItemID.WingsStardust), ItemType(ItemID.Hoverboard) }); RecipeGroup.RegisterGroup("EpicModpack:Wings", group); }
EDIT: Also, game crashes whenever I try to get into a world or create new one. What's wrong?
Eny moded items have them they didnt beforeWhich mods are you using ?