From 2131deec3a54bec7c0dbc69e32daf8a34f1cc35b Mon Sep 17 00:00:00 2001 From: Jordan Date: Mon, 23 Jan 2023 21:26:01 -0500 Subject: [PATCH 01/32] WIP Config loading rewrite --- .../common/driveables/DriveableType.java | 1267 +++++++++-------- .../flansmod/common/driveables/PlaneType.java | 268 ++-- .../common/driveables/VehicleType.java | 122 +- .../driveables/mechas/MechaItemType.java | 139 +- .../common/driveables/mechas/MechaType.java | 157 +- .../com/flansmod/common/guns/AAGunType.java | 157 +- .../flansmod/common/guns/AttachmentType.java | 190 +-- .../com/flansmod/common/guns/BulletType.java | 232 ++- .../com/flansmod/common/guns/GrenadeType.java | 211 +-- .../com/flansmod/common/guns/GunType.java | 617 ++++---- .../flansmod/common/guns/ShootableType.java | 199 +-- .../common/guns/boxes/GunBoxType.java | 181 +-- .../common/paintjob/PaintableType.java | 136 +- .../com/flansmod/common/parts/PartType.java | 48 +- .../flansmod/common/teams/ArmourBoxType.java | 40 +- .../com/flansmod/common/teams/ArmourType.java | 86 +- .../flansmod/common/teams/PlayerClass.java | 80 +- .../java/com/flansmod/common/teams/Team.java | 210 +-- .../com/flansmod/common/tools/ToolType.java | 70 +- .../com/flansmod/common/types/InfoType.java | 172 ++- .../java/com/flansmod/utils/ConfigMap.java | 45 + .../java/com/flansmod/utils/ConfigUtils.java | 154 ++ 22 files changed, 2215 insertions(+), 2566 deletions(-) create mode 100644 src/main/java/com/flansmod/utils/ConfigMap.java create mode 100644 src/main/java/com/flansmod/utils/ConfigUtils.java diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 2a83970a..8fb8c304 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; +import com.flansmod.utils.ConfigMap; import net.minecraft.block.material.Material; import net.minecraft.client.model.ModelBase; import net.minecraft.init.Items; @@ -472,639 +473,639 @@ public void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); - try { - if (split[0].equals("VehicleGunModelScale")) - vehicleGunModelScale = Float.parseFloat(split[1]); - - if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelDriveable.class); - else if (split[0].equals("VehicleGunReloadTick")) - reloadSoundTick = Integer.parseInt(split[1]); - else if (split[0].equals("Texture")) - texture = split[1]; - - else if (split[0].equals("IsExplosionWhenDestroyed")) - isExplosionWhenDestroyed = Boolean.parseBoolean(split[1]); -//Explosion alterations - else if(split[0].equals("DeathFireRadius") || split[0].equals("DeathFire")) - deathFireRadius = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionRadius") || split[0].equals("DeathExplosion")) - deathExplosionRadius = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionPower")) - deathExplosionPower = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionBreaksBlocks")) - deathExplosionBreaksBlocks = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("DeathExplosionDamageVsLiving")) - deathExplosionDamageVsLiving = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionDamageVsPlayer")) - deathExplosionDamageVsPlayer = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionDamageVsPlane")) - deathExplosionDamageVsPlane = Float.parseFloat(split[1]); - else if(split[0].equals("DeathExplosionDamageVsVehicle")) - deathExplosionDamageVsVehicle = Float.parseFloat(split[1]); - - else if (split[0].equals("FallDamageFactor")) - fallDamageFactor = Float.parseFloat(split[1]); - - //Movement Variables - else if (split[0].equals("MaxThrottle")) - maxThrottle = Float.parseFloat(split[1]); - else if (split[0].equals("MaxNegativeThrottle")) - maxNegativeThrottle = Float.parseFloat(split[1]); - else if (split[0].equals("ClutchBrake")) - clutchBrake = Float.parseFloat(split[1]); - else if (split[0].equals("MaxThrottleInWater")) - maxThrottleInWater = Float.parseFloat(split[1]); - else if (split[0].equals("MaxDepth")) - maxDepth = Integer.parseInt(split[1]); - else if (split[0].equals("Drag")) - drag = Float.parseFloat(split[1]); - else if (split[0].equals("TurretOrigin")) - turretOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - else if (split[0].equals("TurretOriginOffset")) - turretOriginOffset = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - else if (split[0].equals("CollisionPoint") || split[0].equals("AddCollisionPoint")) - collisionPoints.add(new DriveablePosition(split)); - else if (split[0].equals("CollisionDamageEnable")) - collisionDamageEnable = Boolean.parseBoolean(split[1]); - else if (split[0].equals("CollisionDamageThrottle")) - collisionDamageThrottle = Float.parseFloat(split[1]); - else if (split[0].equals("CollisionDamageTimes")) - collisionDamageTimes = Float.parseFloat(split[1]); - else if (split[0].equals("CanLockAngle")) - canLockOnAngle = Integer.parseInt(split[1]); - else if (split[0].equals("LockOnSoundTime")) - lockOnSoundTime = Integer.parseInt(split[1]); - else if (split[0].equals("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToVehicles")) - lockOnToVehicles = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToPlanes")) - lockOnToPlanes = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToMechas")) - lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToPlayers")) - lockOnToPlayers = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToLivings")) - lockOnToLivings = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockedOnSoundRange")) - lockedOnSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("CanRoll")) - canRoll = Boolean.parseBoolean(split[1]); - - //Flares - if (split[0].equals("HasFlare")) - hasFlare = Boolean.parseBoolean(split[1]); - if (split[0].equals("FlareDelay")) { - flareDelay = Integer.parseInt(split[1]); - if (flareDelay <= 0) - flareDelay = 1; - } - if (split[0].equals("TimeFlareUsing")) { - timeFlareUsing = Integer.parseInt(split[1]); - if (timeFlareUsing <= 0) - timeFlareUsing = 1; - } - - - //Boats - else if (split[0].equals("PlaceableOnLand")) - placeableOnLand = Boolean.parseBoolean(split[1]); - else if (split[0].equals("PlaceableOnWater")) - placeableOnWater = Boolean.parseBoolean(split[1]); - else if (split[0].equals("WorksUnderwater")) - worksUnderWater = Boolean.parseBoolean(split[1]); - else if (split[0].equals("PlaceableOnSponge")) - placeableOnSponge = Boolean.parseBoolean(split[1]); - else if (split[0].equals("FloatOnWater")) - floatOnWater = Boolean.parseBoolean(split[1]); - else if (split[0].equals("Boat")) { - placeableOnLand = false; - placeableOnWater = true; - floatOnWater = true; - wheelStepHeight = 0F; - } else if (split[0].equals("Buoyancy")) - buoyancy = Float.parseFloat(split[1]); - else if (split[0].equals("FloatOffset")) - floatOffset = Float.parseFloat(split[1]); - - else if (split[0].equals("CanMountEntity")) - canMountEntity = Boolean.parseBoolean(split[1]); - - //Wheels - else if (split[0].equals("Wheel") || split[0].equals("WheelPosition")) { - wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); - } else if (split[0].equals("WheelRadius") || split[0].equals("WheelStepHeight")) - wheelStepHeight = Float.parseFloat(split[1]); - else if (split[0].equals("WheelSpringStrength") || split[0].equals("SpringStrength")) - wheelSpringStrength = Float.parseFloat(split[1]); - else if (split[0].equals("TrackFrames")) - animFrames = Integer.parseInt(split[1]) - 1; - - //Harvesting - else if (split[0].equals("Harvester")) - harvestBlocks = Boolean.parseBoolean(split[1]); - else if (split[0].equals("CollectHarvest")) - collectHarvest = Boolean.parseBoolean(split[1]); - else if (split[0].equals("DropHarvest")) - dropHarvest = Boolean.parseBoolean(split[1]); - else if (split[0].equals("HarvestBox")) { - harvestBoxSize = new Vector3f(split[1], shortName); - harvestBoxPos = new Vector3f(split[2], shortName); - } else if (split[0].equals("HarvestMaterial")) { - materialsHarvested.add(getMaterial(split[1])); - } else if (split[0].equals("HarvestToolType")) { - switch (split[1]) { - case "Axe": - materialsHarvested.add(Material.wood); - materialsHarvested.add(Material.plants); - materialsHarvested.add(Material.vine); - break; - case "Pickaxe": - case "Drill": - materialsHarvested.add(Material.iron); - materialsHarvested.add(Material.anvil); - materialsHarvested.add(Material.rock); - break; - case "Spade": - case "Shovel": - case "Excavator": - materialsHarvested.add(Material.ground); - materialsHarvested.add(Material.grass); - materialsHarvested.add(Material.sand); - materialsHarvested.add(Material.snow); - materialsHarvested.add(Material.clay); - break; - case "Hoe": - case "Combine": - materialsHarvested.add(Material.plants); - materialsHarvested.add(Material.leaves); - materialsHarvested.add(Material.vine); - materialsHarvested.add(Material.cactus); - materialsHarvested.add(Material.gourd); - break; - case "Tank": - materialsHarvested.add(Material.leaves); - materialsHarvested.add(Material.cactus); - materialsHarvested.add(Material.wood); - materialsHarvested.add(Material.plants); - break; - } - } - - //Cargo / Payload - else if (split[0].equals("CargoSlots")) - numCargoSlots = Integer.parseInt(split[1]); - else if (split[0].equals("BombSlots") || split[0].equals("MineSlots")) - numBombSlots = Integer.parseInt(split[1]); - else if (split[0].equals("MissileSlots") || split[0].equals("ShellSlots")) - numMissileSlots = Integer.parseInt(split[1]); - else if (split[0].equals("FuelTankSize")) - fuelTankSize = Integer.parseInt(split[1]); - else if (split[0].equals("EngineStartTime")) - engineStartTime = Integer.parseInt(split[1]); - else if (split[0].equals("FilterAmmunitionInput")) - filterAmmunition = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("BulletDetection")) - bulletDetectionRadius = Integer.parseInt(split[1]); - - //Ammo limiters - else if (split[0].equals("AddAmmo")) - ammo.add(BulletType.getBullet(split[1])); - else if (split[0].equals("AllowAllAmmo") || split[0].equals("AcceptAllAmmo")) - acceptAllAmmo = Boolean.parseBoolean(split[1]); - - //Weaponry - else if (split[0].equals("Primary")) - primary = EnumWeaponType.valueOf(split[1].toUpperCase()); - else if (split[0].equals("Secondary")) - secondary = EnumWeaponType.valueOf(split[1].toUpperCase()); - else if (split[0].equals("ShootDelayPrimary")) - shootDelayPrimary = Integer.parseInt(split[1]); - else if (split[0].equals("ShootDelaySecondary")) - shootDelaySecondary = Integer.parseInt(split[1]); - else if (split[0].equals("DamageMultiplierPrimary")) - damageMultiplierPrimary = Float.parseFloat(split[1]); - else if (split[0].equals("DamageMultiplierSecondary")) - damageMultiplierSecondary = Float.parseFloat(split[1]); - else if (split[0].equals("RoundsPerMinPrimary")) - shootDelayPrimary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; - else if (split[0].equals("RoundsPerMinSecondary")) - shootDelaySecondary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; - else if (split[0].equals("PlaceTimePrimary")) - placeTimePrimary = Integer.parseInt(split[1]); - else if (split[0].equals("PlaceTimeSecondary")) - placeTimeSecondary = Integer.parseInt(split[1]); - else if (split[0].equals("ReloadTimePrimary")) - reloadTimePrimary = Integer.parseInt(split[1]); - else if (split[0].equals("ReloadTimeSecondary")) - reloadTimeSecondary = Integer.parseInt(split[1]); - else if (split[0].equals("AlternatePrimary")) - alternatePrimary = Boolean.parseBoolean(split[1]); - else if (split[0].equals("AlternateSecondary")) - alternateSecondary = Boolean.parseBoolean(split[1]); - else if (split[0].equals("ModePrimary")) - modePrimary = EnumFireMode.valueOf(split[1].toUpperCase()); - else if (split[0].equals("ModeSecondary")) - modeSecondary = EnumFireMode.valueOf(split[1].toUpperCase()); - else if (split[0].equals("BulletSpeed")) - bulletSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("BulletSpread")) - bulletSpread = Float.parseFloat(split[1]); - else if (split[0].equals("RangingGun")) - rangingGun = Boolean.parseBoolean(split[1]); - else if (split[0].equals("GunLength")) - gunLength = Float.parseFloat(split[1]); - else if (split[0].equals("RecoilDistance")) - recoilDist = Float.parseFloat(split[1]); - else if (split[0].equals("RecoilTime")) - recoilTime = Float.parseFloat(split[1]); - else if (split[0].equals("ShootPointPrimary")) { - DriveablePosition rootPos; - Vector3f offPos; - String[] gun; - if (split.length == 9) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); - } else if (split.length == 8) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; - offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); - } else { - gun = split; - offPos = new Vector3f(0, 0, 0); - } - rootPos = getShootPoint(gun); - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsPrimary.add(sPoint); - if (rootPos instanceof PilotGun) - pilotGuns.add((PilotGun) sPoint.rootPos); - } else if (split[0].equals("ShootPointSecondary")) { - DriveablePosition rootPos; - Vector3f offPos; - String[] gun; - if (split.length == 9) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); - } else if (split.length == 8) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; - offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); - } else { - gun = split; - offPos = new Vector3f(0, 0, 0); - } - rootPos = getShootPoint(gun); - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsSecondary.add(sPoint); - if (rootPos instanceof PilotGun) - pilotGuns.add((PilotGun) sPoint.rootPos); - } else if (split[0].equals("EnableReloadTime")) - enableReloadTime = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("ShootParticlesPrimary")) - shootParticlesPrimary.add(new ShootParticle( - split[1], - Float.parseFloat(split[2]), - Float.parseFloat(split[3]), - Float.parseFloat(split[4]))); - else if (split[0].equals("ShootParticlesSecondary")) - shootParticlesSecondary.add(new ShootParticle( - split[1], - Float.parseFloat(split[2]), - Float.parseFloat(split[3]), - Float.parseFloat(split[4]))); - - - if (split[0].equals("SetPlayerInvisible")) - setPlayerInvisible = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("IT1")) - IT1 = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("FixedPrimary")) - fixedPrimaryFire = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("FixedSecondary")) - fixedSecondaryFire = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("PrimaryAngle")) - primaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - if (split[0].equals("SecondaryAngle")) - secondaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - - //Backwards compatibility stuff - else if (split[0].equals("AddGun")) { - DriveablePosition rootPos; - Vector3f offPos; - secondary = EnumWeaponType.GUN; - PilotGun pilotGun; - if (split.length == 6) { - rootPos = (PilotGun) getShootPoint(split); - offPos = new Vector3f(0, 0, 0); - pilotGun = (PilotGun) getShootPoint(split); - } else { - String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - rootPos = (PilotGun) getShootPoint(gun); - pilotGun = (PilotGun) getShootPoint(gun); - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); - } - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsSecondary.add(sPoint); - pilotGuns.add(pilotGun); - driveableRecipe.add(new ItemStack(pilotGun.type.item)); - } else if (split[0].equals("BombPosition")) { - primary = EnumWeaponType.BOMB; - if (split.length == 4) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); - else if (split.length == 7) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); - - } else if (split[0].equals("BarrelPosition")) { - primary = EnumWeaponType.SHELL; - if (split.length == 4) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); - else if (split.length == 7) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); - } else if (split[0].equals("ShootDelay")) - shootDelaySecondary = Float.parseFloat(split[1]); - else if (split[0].equals("ShellDelay") || split[0].equals("BombDelay")) - shootDelayPrimary = Float.parseFloat(split[1]); - - //Recipe - else if (split[0].equals("AddRecipeParts")) { - EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); - ArrayList stacks = new ArrayList<>(); - for (int i = 0; i < (split.length - 2) / 2; i++) { - int amount = Integer.parseInt(split[2 * i + 2]); - boolean damaged = split[2 * i + 3].contains("."); - String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; - int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; - - // Only add part if it is NOT null. (Seems obvious?) - ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); - if (potentialPart != null) { - stacks.add(potentialPart); - driveableRecipe.add(potentialPart); - } - - } - ItemStack[] items = new ItemStack[stacks.size()]; - items = stacks.toArray(items); - partwiseRecipe.put(part, items); - } - - //Dyes - else if (split[0].equals("AddDye")) { - int amount = Integer.parseInt(split[1]); - int damage = -1; - for (int i = 0; i < ItemDye.field_150923_a.length; i++) { - if (ItemDye.field_150923_a[i].equals(split[2])) - damage = i; - } - if (damage == -1) { - FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); - return; - } - driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); - } - - - //Health - else if (split[0].equals("SetupPart")) { - EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); - CollisionBox box; - if (split.length > 9) { - box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); - } else { - box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); - } - health.put(part, box); - //Driver Position - } else if (split[0].equals("DriverPart")) { - seats[0].part = EnumDriveablePart.getPart(split[1]); - } else if (split[0].equals("DriverGun") || split[0].equals("PilotGun")) { - seats[0].gunName = split[2]; - } else if (split[0].equals("DriverGunOrigin")) - seats[0].gunOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - - else if (split[0].equals("RotatedDriverOffset")) { - seats[0].rotatedOffset = new Vector3f(Integer.parseInt(split[1]) / 16F, Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F); - } else if (split[0].equals("RotatedPassengerOffset")) { - seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); - } else if (split[0].equals("DriverAimSpeed")) { - seats[0].aimingSpeed = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - } else if (split[0].equals("PassengerAimSpeed")) { - seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); - } else if (split[0].equals("DriverLegacyAiming")) { - seats[0].legacyAiming = Boolean.parseBoolean(split[1]); - } else if (split[0].equals("PassengerLegacyAiming")) { - seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); - } else if (split[0].equals("DriverYawBeforePitch")) { - seats[0].yawBeforePitch = Boolean.parseBoolean(split[1]); - } else if (split[0].equals("PassengerYawBeforePitch")) { - seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); - } else if (split[0].equals("DriverLatePitch")) { - seats[0].latePitch = Boolean.parseBoolean(split[1]); - } else if (split[0].equals("PassengerLatePitch")) { - seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); - } else if (split[0].equals("DriverTraverseSounds")) { - seats[0].traverseSounds = Boolean.parseBoolean(split[1]); - } else if (split[0].equals("PassengerTraverseSounds")) { - seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); - } - - else if (split[0].equals("GunOrigin")) - seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); - - //Y offset for badly built models :P - else if (split[0].equals("YOffset")) - yOffset = Float.parseFloat(split[1]); - //Third person camera distance - else if (split[0].equals("CameraDistance")) - cameraDistance = Float.parseFloat(split[1]); - - //Sound - else if (split[0].equals("StartSoundRange")) - startSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("StartSoundLength")) - startSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("EngineSoundRange")) - engineSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("EngineSoundLength")) - engineSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("IdleSoundLength")) - idleSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("ExitSoundLength")) - exitSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("BackSoundRange")) - backSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("BackSoundLength")) - backSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("SoundTime")) - soundTime = Integer.parseInt(split[1]); - else if (split[0].equals("YawSoundLength")) - seats[0].yawSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("PitchSoundLength")) - seats[0].pitchSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("PassengerYawSoundLength")) - seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); - else if (split[0].equals("PassengerPitchSoundLength")) - seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); - else if (split[0].equals("StartSound")) { - startSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("EngineSound")) { - engineSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("IdleSound")) { - idleSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ExitSound")) { - exitSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("BackSound")) { - backSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("YawSound")) { - seats[0].yawSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("PitchSound")) { - seats[0].pitchSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("PassengerYawSound")) { - seats[Integer.parseInt(split[1])].yawSound = split[2]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("PassengerPitchSound")) { - seats[Integer.parseInt(split[1])].pitchSound = split[2]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ShootMainSound") || split[0].equals("ShootSoundPrimary") || split[0].equals("ShellSound") || split[0].equals("BombSound")) { - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ShootReloadSound")) { - shootReloadSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ShootSecondarySound") || split[0].equals("ShootSoundSecondary")) { - shootSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("PlaceSoundPrimary")) { - placeSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("PlaceSoundSecondary")) { - placeSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ReloadSoundPrimary")) { - reloadSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("ReloadSoundSecondary")) { - reloadSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("LockedOnSound")) { - lockedOnSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("LockOnSound")) { - lockOnSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("LockingOnSound")) { - lockingOnSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } - if (split[0].equals("FlareSound")) { - flareSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - - if (split[0].equals("FancyCollision")) - fancyCollision = Boolean.parseBoolean(split[1]); - - if (split[0].equals("AddCollisionMesh")) { - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "core"); - collisionBox.add(box); - //colbox = box; - } - - if (split[0].equals("AddCollisionMeshRaw")) { - Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); - Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); - Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); - Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); - Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); - Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); - Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); - Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); - Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); - CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "core"); - collisionBox.add(box); - //colbox = box; - } - - if (split[0].equals("AddTurretCollisionMesh")) { - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "turret"); - collisionBox.add(box); - //colbox = box; - } - - if (split[0].equals("AddTurretCollisionMeshRaw")) { - Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); - Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); - Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); - Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); - Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); - Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); - Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); - Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); - Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); - CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "turret"); - collisionBox.add(box); - //colbox = box; - } - - - if (split[0].equals("LeftLinkPoint")) { - leftTrackPoints.add(new Vector3f(split[1], shortName)); - } - - if (split[0].equals("RightLinkPoint")) { - rightTrackPoints.add(new Vector3f(split[1], shortName)); - } - - if (split[0].equals("TrackLinkLength")) { - trackLinkLength = Float.parseFloat(split[1]); - } - - // ICBM Mod Radar - else if (split[0].equals("OnRadar")) - onRadar = split[1].equals("True"); - - else if (split[0].equalsIgnoreCase("AddParticle") || split[0].equalsIgnoreCase("AddEmitter")) { - ParticleEmitter emitter = new ParticleEmitter(); - emitter.effectType = split[1]; - emitter.emitRate = Integer.parseInt(split[2]); - emitter.origin = new Vector3f(split[3], shortName); - emitter.extents = new Vector3f(split[4], shortName); - emitter.velocity = new Vector3f(split[5], shortName); - emitter.minThrottle = Float.parseFloat(split[6]); - emitter.maxThrottle = Float.parseFloat(split[7]); - emitter.minHealth = Float.parseFloat(split[8]); - emitter.maxHealth = Float.parseFloat(split[9]); - emitter.part = split[10]; - //Scale from model coords to world coords - emitter.origin.scale(1.0f / 16.0f); - emitter.extents.scale(1.0f / 16.0f); - emitter.velocity.scale(1.0f / 16.0f); - emitters.add(emitter); - } - } catch (Exception e) { - if (split != null) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) msg.append(" ").append(s); - FlansMod.log("Errored reading " + file.name + msg); - } else { - FlansMod.log("Errored reading " + file.name); - } - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } - } + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); +// try { +// if (split[0].equals("VehicleGunModelScale")) +// vehicleGunModelScale = Float.parseFloat(split[1]); +// +// if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) +// model = FlansMod.proxy.loadModel(split[1], shortName, ModelDriveable.class); +// else if (split[0].equals("VehicleGunReloadTick")) +// reloadSoundTick = Integer.parseInt(split[1]); +// else if (split[0].equals("Texture")) +// texture = split[1]; +// +// else if (split[0].equals("IsExplosionWhenDestroyed")) +// isExplosionWhenDestroyed = Boolean.parseBoolean(split[1]); +////Explosion alterations +// else if(split[0].equals("DeathFireRadius") || split[0].equals("DeathFire")) +// deathFireRadius = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionRadius") || split[0].equals("DeathExplosion")) +// deathExplosionRadius = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionPower")) +// deathExplosionPower = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionBreaksBlocks")) +// deathExplosionBreaksBlocks = Boolean.parseBoolean(split[1].toLowerCase()); +// else if(split[0].equals("DeathExplosionDamageVsLiving")) +// deathExplosionDamageVsLiving = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionDamageVsPlayer")) +// deathExplosionDamageVsPlayer = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionDamageVsPlane")) +// deathExplosionDamageVsPlane = Float.parseFloat(split[1]); +// else if(split[0].equals("DeathExplosionDamageVsVehicle")) +// deathExplosionDamageVsVehicle = Float.parseFloat(split[1]); +// +// else if (split[0].equals("FallDamageFactor")) +// fallDamageFactor = Float.parseFloat(split[1]); +// +// //Movement Variables +// else if (split[0].equals("MaxThrottle")) +// maxThrottle = Float.parseFloat(split[1]); +// else if (split[0].equals("MaxNegativeThrottle")) +// maxNegativeThrottle = Float.parseFloat(split[1]); +// else if (split[0].equals("ClutchBrake")) +// clutchBrake = Float.parseFloat(split[1]); +// else if (split[0].equals("MaxThrottleInWater")) +// maxThrottleInWater = Float.parseFloat(split[1]); +// else if (split[0].equals("MaxDepth")) +// maxDepth = Integer.parseInt(split[1]); +// else if (split[0].equals("Drag")) +// drag = Float.parseFloat(split[1]); +// else if (split[0].equals("TurretOrigin")) +// turretOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); +// else if (split[0].equals("TurretOriginOffset")) +// turretOriginOffset = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); +// else if (split[0].equals("CollisionPoint") || split[0].equals("AddCollisionPoint")) +// collisionPoints.add(new DriveablePosition(split)); +// else if (split[0].equals("CollisionDamageEnable")) +// collisionDamageEnable = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("CollisionDamageThrottle")) +// collisionDamageThrottle = Float.parseFloat(split[1]); +// else if (split[0].equals("CollisionDamageTimes")) +// collisionDamageTimes = Float.parseFloat(split[1]); +// else if (split[0].equals("CanLockAngle")) +// canLockOnAngle = Integer.parseInt(split[1]); +// else if (split[0].equals("LockOnSoundTime")) +// lockOnSoundTime = Integer.parseInt(split[1]); +// else if (split[0].equals("LockOnToDriveables")) +// lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockOnToVehicles")) +// lockOnToVehicles = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockOnToPlanes")) +// lockOnToPlanes = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockOnToMechas")) +// lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockOnToPlayers")) +// lockOnToPlayers = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockOnToLivings")) +// lockOnToLivings = Boolean.parseBoolean(split[1].toLowerCase()); +// else if (split[0].equals("LockedOnSoundRange")) +// lockedOnSoundRange = Integer.parseInt(split[1]); +// else if (split[0].equals("CanRoll")) +// canRoll = Boolean.parseBoolean(split[1]); +// +// //Flares +// if (split[0].equals("HasFlare")) +// hasFlare = Boolean.parseBoolean(split[1]); +// if (split[0].equals("FlareDelay")) { +// flareDelay = Integer.parseInt(split[1]); +// if (flareDelay <= 0) +// flareDelay = 1; +// } +// if (split[0].equals("TimeFlareUsing")) { +// timeFlareUsing = Integer.parseInt(split[1]); +// if (timeFlareUsing <= 0) +// timeFlareUsing = 1; +// } +// +// +// //Boats +// else if (split[0].equals("PlaceableOnLand")) +// placeableOnLand = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("PlaceableOnWater")) +// placeableOnWater = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("WorksUnderwater")) +// worksUnderWater = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("PlaceableOnSponge")) +// placeableOnSponge = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("FloatOnWater")) +// floatOnWater = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("Boat")) { +// placeableOnLand = false; +// placeableOnWater = true; +// floatOnWater = true; +// wheelStepHeight = 0F; +// } else if (split[0].equals("Buoyancy")) +// buoyancy = Float.parseFloat(split[1]); +// else if (split[0].equals("FloatOffset")) +// floatOffset = Float.parseFloat(split[1]); +// +// else if (split[0].equals("CanMountEntity")) +// canMountEntity = Boolean.parseBoolean(split[1]); +// +// //Wheels +// else if (split[0].equals("Wheel") || split[0].equals("WheelPosition")) { +// wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); +// } else if (split[0].equals("WheelRadius") || split[0].equals("WheelStepHeight")) +// wheelStepHeight = Float.parseFloat(split[1]); +// else if (split[0].equals("WheelSpringStrength") || split[0].equals("SpringStrength")) +// wheelSpringStrength = Float.parseFloat(split[1]); +// else if (split[0].equals("TrackFrames")) +// animFrames = Integer.parseInt(split[1]) - 1; +// +// //Harvesting +// else if (split[0].equals("Harvester")) +// harvestBlocks = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("CollectHarvest")) +// collectHarvest = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("DropHarvest")) +// dropHarvest = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("HarvestBox")) { +// harvestBoxSize = new Vector3f(split[1], shortName); +// harvestBoxPos = new Vector3f(split[2], shortName); +// } else if (split[0].equals("HarvestMaterial")) { +// materialsHarvested.add(getMaterial(split[1])); +// } else if (split[0].equals("HarvestToolType")) { +// switch (split[1]) { +// case "Axe": +// materialsHarvested.add(Material.wood); +// materialsHarvested.add(Material.plants); +// materialsHarvested.add(Material.vine); +// break; +// case "Pickaxe": +// case "Drill": +// materialsHarvested.add(Material.iron); +// materialsHarvested.add(Material.anvil); +// materialsHarvested.add(Material.rock); +// break; +// case "Spade": +// case "Shovel": +// case "Excavator": +// materialsHarvested.add(Material.ground); +// materialsHarvested.add(Material.grass); +// materialsHarvested.add(Material.sand); +// materialsHarvested.add(Material.snow); +// materialsHarvested.add(Material.clay); +// break; +// case "Hoe": +// case "Combine": +// materialsHarvested.add(Material.plants); +// materialsHarvested.add(Material.leaves); +// materialsHarvested.add(Material.vine); +// materialsHarvested.add(Material.cactus); +// materialsHarvested.add(Material.gourd); +// break; +// case "Tank": +// materialsHarvested.add(Material.leaves); +// materialsHarvested.add(Material.cactus); +// materialsHarvested.add(Material.wood); +// materialsHarvested.add(Material.plants); +// break; +// } +// } +// +// //Cargo / Payload +// else if (split[0].equals("CargoSlots")) +// numCargoSlots = Integer.parseInt(split[1]); +// else if (split[0].equals("BombSlots") || split[0].equals("MineSlots")) +// numBombSlots = Integer.parseInt(split[1]); +// else if (split[0].equals("MissileSlots") || split[0].equals("ShellSlots")) +// numMissileSlots = Integer.parseInt(split[1]); +// else if (split[0].equals("FuelTankSize")) +// fuelTankSize = Integer.parseInt(split[1]); +// else if (split[0].equals("EngineStartTime")) +// engineStartTime = Integer.parseInt(split[1]); +// else if (split[0].equals("FilterAmmunitionInput")) +// filterAmmunition = Boolean.parseBoolean(split[1]); +// +// else if (split[0].equals("BulletDetection")) +// bulletDetectionRadius = Integer.parseInt(split[1]); +// +// //Ammo limiters +// else if (split[0].equals("AddAmmo")) +// ammo.add(BulletType.getBullet(split[1])); +// else if (split[0].equals("AllowAllAmmo") || split[0].equals("AcceptAllAmmo")) +// acceptAllAmmo = Boolean.parseBoolean(split[1]); +// +// //Weaponry +// else if (split[0].equals("Primary")) +// primary = EnumWeaponType.valueOf(split[1].toUpperCase()); +// else if (split[0].equals("Secondary")) +// secondary = EnumWeaponType.valueOf(split[1].toUpperCase()); +// else if (split[0].equals("ShootDelayPrimary")) +// shootDelayPrimary = Integer.parseInt(split[1]); +// else if (split[0].equals("ShootDelaySecondary")) +// shootDelaySecondary = Integer.parseInt(split[1]); +// else if (split[0].equals("DamageMultiplierPrimary")) +// damageMultiplierPrimary = Float.parseFloat(split[1]); +// else if (split[0].equals("DamageMultiplierSecondary")) +// damageMultiplierSecondary = Float.parseFloat(split[1]); +// else if (split[0].equals("RoundsPerMinPrimary")) +// shootDelayPrimary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; +// else if (split[0].equals("RoundsPerMinSecondary")) +// shootDelaySecondary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; +// else if (split[0].equals("PlaceTimePrimary")) +// placeTimePrimary = Integer.parseInt(split[1]); +// else if (split[0].equals("PlaceTimeSecondary")) +// placeTimeSecondary = Integer.parseInt(split[1]); +// else if (split[0].equals("ReloadTimePrimary")) +// reloadTimePrimary = Integer.parseInt(split[1]); +// else if (split[0].equals("ReloadTimeSecondary")) +// reloadTimeSecondary = Integer.parseInt(split[1]); +// else if (split[0].equals("AlternatePrimary")) +// alternatePrimary = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("AlternateSecondary")) +// alternateSecondary = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("ModePrimary")) +// modePrimary = EnumFireMode.valueOf(split[1].toUpperCase()); +// else if (split[0].equals("ModeSecondary")) +// modeSecondary = EnumFireMode.valueOf(split[1].toUpperCase()); +// else if (split[0].equals("BulletSpeed")) +// bulletSpeed = Float.parseFloat(split[1]); +// else if (split[0].equals("BulletSpread")) +// bulletSpread = Float.parseFloat(split[1]); +// else if (split[0].equals("RangingGun")) +// rangingGun = Boolean.parseBoolean(split[1]); +// else if (split[0].equals("GunLength")) +// gunLength = Float.parseFloat(split[1]); +// else if (split[0].equals("RecoilDistance")) +// recoilDist = Float.parseFloat(split[1]); +// else if (split[0].equals("RecoilTime")) +// recoilTime = Float.parseFloat(split[1]); +// else if (split[0].equals("ShootPointPrimary")) { +// DriveablePosition rootPos; +// Vector3f offPos; +// String[] gun; +// if (split.length == 9) { +// gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; +// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); +// } else if (split.length == 8) { +// gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; +// offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); +// } else { +// gun = split; +// offPos = new Vector3f(0, 0, 0); +// } +// rootPos = getShootPoint(gun); +// ShootPoint sPoint = new ShootPoint(rootPos, offPos); +// shootPointsPrimary.add(sPoint); +// if (rootPos instanceof PilotGun) +// pilotGuns.add((PilotGun) sPoint.rootPos); +// } else if (split[0].equals("ShootPointSecondary")) { +// DriveablePosition rootPos; +// Vector3f offPos; +// String[] gun; +// if (split.length == 9) { +// gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; +// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); +// } else if (split.length == 8) { +// gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; +// offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); +// } else { +// gun = split; +// offPos = new Vector3f(0, 0, 0); +// } +// rootPos = getShootPoint(gun); +// ShootPoint sPoint = new ShootPoint(rootPos, offPos); +// shootPointsSecondary.add(sPoint); +// if (rootPos instanceof PilotGun) +// pilotGuns.add((PilotGun) sPoint.rootPos); +// } else if (split[0].equals("EnableReloadTime")) +// enableReloadTime = Boolean.parseBoolean(split[1]); +// +// else if (split[0].equals("ShootParticlesPrimary")) +// shootParticlesPrimary.add(new ShootParticle( +// split[1], +// Float.parseFloat(split[2]), +// Float.parseFloat(split[3]), +// Float.parseFloat(split[4]))); +// else if (split[0].equals("ShootParticlesSecondary")) +// shootParticlesSecondary.add(new ShootParticle( +// split[1], +// Float.parseFloat(split[2]), +// Float.parseFloat(split[3]), +// Float.parseFloat(split[4]))); +// +// +// if (split[0].equals("SetPlayerInvisible")) +// setPlayerInvisible = Boolean.parseBoolean(split[1].toLowerCase()); +// if (split[0].equals("IT1")) +// IT1 = Boolean.parseBoolean(split[1].toLowerCase()); +// if (split[0].equals("FixedPrimary")) +// fixedPrimaryFire = Boolean.parseBoolean(split[1].toLowerCase()); +// if (split[0].equals("FixedSecondary")) +// fixedSecondaryFire = Boolean.parseBoolean(split[1].toLowerCase()); +// if (split[0].equals("PrimaryAngle")) +// primaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); +// if (split[0].equals("SecondaryAngle")) +// secondaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); +// +// //Backwards compatibility stuff +// else if (split[0].equals("AddGun")) { +// DriveablePosition rootPos; +// Vector3f offPos; +// secondary = EnumWeaponType.GUN; +// PilotGun pilotGun; +// if (split.length == 6) { +// rootPos = (PilotGun) getShootPoint(split); +// offPos = new Vector3f(0, 0, 0); +// pilotGun = (PilotGun) getShootPoint(split); +// } else { +// String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; +// rootPos = (PilotGun) getShootPoint(gun); +// pilotGun = (PilotGun) getShootPoint(gun); +// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); +// } +// ShootPoint sPoint = new ShootPoint(rootPos, offPos); +// shootPointsSecondary.add(sPoint); +// pilotGuns.add(pilotGun); +// driveableRecipe.add(new ItemStack(pilotGun.type.item)); +// } else if (split[0].equals("BombPosition")) { +// primary = EnumWeaponType.BOMB; +// if (split.length == 4) +// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); +// else if (split.length == 7) +// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); +// +// } else if (split[0].equals("BarrelPosition")) { +// primary = EnumWeaponType.SHELL; +// if (split.length == 4) +// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); +// else if (split.length == 7) +// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); +// } else if (split[0].equals("ShootDelay")) +// shootDelaySecondary = Float.parseFloat(split[1]); +// else if (split[0].equals("ShellDelay") || split[0].equals("BombDelay")) +// shootDelayPrimary = Float.parseFloat(split[1]); +// +// //Recipe +// else if (split[0].equals("AddRecipeParts")) { +// EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); +// ArrayList stacks = new ArrayList<>(); +// for (int i = 0; i < (split.length - 2) / 2; i++) { +// int amount = Integer.parseInt(split[2 * i + 2]); +// boolean damaged = split[2 * i + 3].contains("."); +// String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; +// int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; +// +// // Only add part if it is NOT null. (Seems obvious?) +// ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); +// if (potentialPart != null) { +// stacks.add(potentialPart); +// driveableRecipe.add(potentialPart); +// } +// +// } +// ItemStack[] items = new ItemStack[stacks.size()]; +// items = stacks.toArray(items); +// partwiseRecipe.put(part, items); +// } +// +// //Dyes +// else if (split[0].equals("AddDye")) { +// int amount = Integer.parseInt(split[1]); +// int damage = -1; +// for (int i = 0; i < ItemDye.field_150923_a.length; i++) { +// if (ItemDye.field_150923_a[i].equals(split[2])) +// damage = i; +// } +// if (damage == -1) { +// FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); +// return; +// } +// driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); +// } +// +// +// //Health +// else if (split[0].equals("SetupPart")) { +// EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); +// CollisionBox box; +// if (split.length > 9) { +// box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); +// } else { +// box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); +// } +// health.put(part, box); +// //Driver Position +// } else if (split[0].equals("DriverPart")) { +// seats[0].part = EnumDriveablePart.getPart(split[1]); +// } else if (split[0].equals("DriverGun") || split[0].equals("PilotGun")) { +// seats[0].gunName = split[2]; +// } else if (split[0].equals("DriverGunOrigin")) +// seats[0].gunOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); +// +// else if (split[0].equals("RotatedDriverOffset")) { +// seats[0].rotatedOffset = new Vector3f(Integer.parseInt(split[1]) / 16F, Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F); +// } else if (split[0].equals("RotatedPassengerOffset")) { +// seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); +// } else if (split[0].equals("DriverAimSpeed")) { +// seats[0].aimingSpeed = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); +// } else if (split[0].equals("PassengerAimSpeed")) { +// seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); +// } else if (split[0].equals("DriverLegacyAiming")) { +// seats[0].legacyAiming = Boolean.parseBoolean(split[1]); +// } else if (split[0].equals("PassengerLegacyAiming")) { +// seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); +// } else if (split[0].equals("DriverYawBeforePitch")) { +// seats[0].yawBeforePitch = Boolean.parseBoolean(split[1]); +// } else if (split[0].equals("PassengerYawBeforePitch")) { +// seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); +// } else if (split[0].equals("DriverLatePitch")) { +// seats[0].latePitch = Boolean.parseBoolean(split[1]); +// } else if (split[0].equals("PassengerLatePitch")) { +// seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); +// } else if (split[0].equals("DriverTraverseSounds")) { +// seats[0].traverseSounds = Boolean.parseBoolean(split[1]); +// } else if (split[0].equals("PassengerTraverseSounds")) { +// seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); +// } +// +// else if (split[0].equals("GunOrigin")) +// seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); +// +// //Y offset for badly built models :P +// else if (split[0].equals("YOffset")) +// yOffset = Float.parseFloat(split[1]); +// //Third person camera distance +// else if (split[0].equals("CameraDistance")) +// cameraDistance = Float.parseFloat(split[1]); +// +// //Sound +// else if (split[0].equals("StartSoundRange")) +// startSoundRange = Integer.parseInt(split[1]); +// else if (split[0].equals("StartSoundLength")) +// startSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("EngineSoundRange")) +// engineSoundRange = Integer.parseInt(split[1]); +// else if (split[0].equals("EngineSoundLength")) +// engineSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("IdleSoundLength")) +// idleSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("ExitSoundLength")) +// exitSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("BackSoundRange")) +// backSoundRange = Integer.parseInt(split[1]); +// else if (split[0].equals("BackSoundLength")) +// backSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("SoundTime")) +// soundTime = Integer.parseInt(split[1]); +// else if (split[0].equals("YawSoundLength")) +// seats[0].yawSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("PitchSoundLength")) +// seats[0].pitchSoundLength = Integer.parseInt(split[1]); +// else if (split[0].equals("PassengerYawSoundLength")) +// seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); +// else if (split[0].equals("PassengerPitchSoundLength")) +// seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); +// else if (split[0].equals("StartSound")) { +// startSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("EngineSound")) { +// engineSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("IdleSound")) { +// idleSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ExitSound")) { +// exitSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("BackSound")) { +// backSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("YawSound")) { +// seats[0].yawSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("PitchSound")) { +// seats[0].pitchSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("PassengerYawSound")) { +// seats[Integer.parseInt(split[1])].yawSound = split[2]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("PassengerPitchSound")) { +// seats[Integer.parseInt(split[1])].pitchSound = split[2]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ShootMainSound") || split[0].equals("ShootSoundPrimary") || split[0].equals("ShellSound") || split[0].equals("BombSound")) { +// shootSoundPrimary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ShootReloadSound")) { +// shootReloadSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ShootSecondarySound") || split[0].equals("ShootSoundSecondary")) { +// shootSoundSecondary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("PlaceSoundPrimary")) { +// placeSoundPrimary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("PlaceSoundSecondary")) { +// placeSoundSecondary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ReloadSoundPrimary")) { +// reloadSoundPrimary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("ReloadSoundSecondary")) { +// reloadSoundSecondary = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("LockedOnSound")) { +// lockedOnSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } else if (split[0].equals("LockOnSound")) { +// lockOnSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "guns", split[1]); +// } else if (split[0].equals("LockingOnSound")) { +// lockingOnSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "guns", split[1]); +// } +// if (split[0].equals("FlareSound")) { +// flareSound = split[1]; +// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); +// } +// +// if (split[0].equals("FancyCollision")) +// fancyCollision = Boolean.parseBoolean(split[1]); +// +// if (split[0].equals("AddCollisionMesh")) { +// CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "core"); +// collisionBox.add(box); +// //colbox = box; +// } +// +// if (split[0].equals("AddCollisionMeshRaw")) { +// Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); +// Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); +// Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); +// Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); +// Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); +// Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); +// Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); +// Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); +// Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); +// Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); +// CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "core"); +// collisionBox.add(box); +// //colbox = box; +// } +// +// if (split[0].equals("AddTurretCollisionMesh")) { +// CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "turret"); +// collisionBox.add(box); +// //colbox = box; +// } +// +// if (split[0].equals("AddTurretCollisionMeshRaw")) { +// Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); +// Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); +// Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); +// Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); +// Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); +// Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); +// Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); +// Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); +// Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); +// Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); +// CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "turret"); +// collisionBox.add(box); +// //colbox = box; +// } +// +// +// if (split[0].equals("LeftLinkPoint")) { +// leftTrackPoints.add(new Vector3f(split[1], shortName)); +// } +// +// if (split[0].equals("RightLinkPoint")) { +// rightTrackPoints.add(new Vector3f(split[1], shortName)); +// } +// +// if (split[0].equals("TrackLinkLength")) { +// trackLinkLength = Float.parseFloat(split[1]); +// } +// +// // ICBM Mod Radar +// else if (split[0].equals("OnRadar")) +// onRadar = split[1].equals("True"); +// +// else if (split[0].equalsIgnoreCase("AddParticle") || split[0].equalsIgnoreCase("AddEmitter")) { +// ParticleEmitter emitter = new ParticleEmitter(); +// emitter.effectType = split[1]; +// emitter.emitRate = Integer.parseInt(split[2]); +// emitter.origin = new Vector3f(split[3], shortName); +// emitter.extents = new Vector3f(split[4], shortName); +// emitter.velocity = new Vector3f(split[5], shortName); +// emitter.minThrottle = Float.parseFloat(split[6]); +// emitter.maxThrottle = Float.parseFloat(split[7]); +// emitter.minHealth = Float.parseFloat(split[8]); +// emitter.maxHealth = Float.parseFloat(split[9]); +// emitter.part = split[10]; +// //Scale from model coords to world coords +// emitter.origin.scale(1.0f / 16.0f); +// emitter.extents.scale(1.0f / 16.0f); +// emitter.velocity.scale(1.0f / 16.0f); +// emitters.add(emitter); +// } +// } catch (Exception e) { +// if (split != null) { +// StringBuilder msg = new StringBuilder(" : "); +// for (String s : split) msg.append(" ").append(s); +// FlansMod.log("Errored reading " + file.name + msg); +// } else { +// FlansMod.log("Errored reading " + file.name); +// } +// if (FlansMod.printStackTrace) { +// e.printStackTrace(); +// } +// } } private DriveablePosition getShootPoint(String[] split) { diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 3293e808..1fab1735 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -1,7 +1,10 @@ package com.flansmod.common.driveables; import java.util.ArrayList; +import java.util.HashMap; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.item.ItemStack; import com.flansmod.client.model.ModelPlane; @@ -108,214 +111,131 @@ public void preRead(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { //Plane Mode - if(split[0].equals("Mode")) - mode = EnumPlaneMode.getMode(split[1]); + if(config.containsKey("Mode")) + mode = EnumPlaneMode.getMode(config.get("Mode")); //Better flight model? - if (split[0].equals("NewFlightControl")) - newFlightControl = Boolean.parseBoolean(split[1]); - + newFlightControl = ConfigUtils.configBool(config, "NewFlightControl", newFlightControl); //Yaw modifiers - if(split[0].equals("TurnLeftSpeed")) - turnLeftModifier = Float.parseFloat(split[1]); - if(split[0].equals("TurnRightSpeed")) - turnRightModifier = Float.parseFloat(split[1]); + turnLeftModifier = ConfigUtils.configFloat(config, "TurnLeftSpeed", turnLeftModifier); + turnRightModifier = ConfigUtils.configFloat(config, "TurnRightSpeed", turnRightModifier); //Pitch modifiers - if(split[0].equals("LookUpSpeed")) - lookUpModifier = Float.parseFloat(split[1]); - if(split[0].equals("LookDownSpeed")) - lookDownModifier = Float.parseFloat(split[1]); + lookUpModifier = ConfigUtils.configFloat(config, "LookUpSpeed", lookUpModifier); + lookDownModifier = ConfigUtils.configFloat(config, "LookDownSpeed", lookDownModifier); //Roll modifiers - if(split[0].equals("RollLeftSpeed")) - rollLeftModifier = Float.parseFloat(split[1]); - if(split[0].equals("RollRightSpeed")) - rollRightModifier = Float.parseFloat(split[1]); - + rollLeftModifier = ConfigUtils.configFloat(config, "RollLeftSpeed", rollLeftModifier); + rollRightModifier = ConfigUtils.configFloat(config, "RollRightSpeed", rollRightModifier); + //Lift - if(split[0].equals("Lift")) - lift = Float.parseFloat(split[1]); + lift = ConfigUtils.configFloat(config, "Lift", lift); //Flight variables - if(split[0].equals("TakeoffSpeed")) - takeoffSpeed = Float.parseFloat(split[1]); - if(split[0].equals("MaxSpeed")) - maxSpeed = Float.parseFloat(split[1]); + takeoffSpeed = ConfigUtils.configFloat(config, "TakeoffSpeed", takeoffSpeed); + maxSpeed = ConfigUtils.configFloat(config, "MaxSpeed", maxSpeed); //Is it Supersonic? - if (split[0].equals("Supersonic")) - supersonic = Boolean.parseBoolean(split[1]); - if(split[0].equals("MaxThrust")) - maxThrust = Float.parseFloat(split[1]); - if (split[0].equals("Mass")) - mass = Float.parseFloat(split[1]); - if(split[0].equals("WingArea")) - wingArea = Float.parseFloat(split[1]); + supersonic = ConfigUtils.configBool(config, "Supersonic", supersonic); + maxThrust = ConfigUtils.configFloat(config, "MaxThrust", maxThrust); + mass = ConfigUtils.configFloat(config, "Mass", mass); + wingArea = ConfigUtils.configFloat(config, "WingArea", wingArea); + + + heliThrottlePull = ConfigUtils.configBool(config, "HeliThrottlePull", heliThrottlePull); + emptyDrag = ConfigUtils.configFloat(config, "EmptyDrag", emptyDrag); - if (split[0].equals("HeliThrottlePull")) - heliThrottlePull = Boolean.parseBoolean(split[1]); - if (split[0].equals("EmptyDrag")) - emptyDrag = Float.parseFloat(split[1]); - //Propellers and Armaments + planeShootDelay = ConfigUtils.configInt(config, "ShootDelay", planeShootDelay); + planeBombDelay = ConfigUtils.configInt(config, "BombDelay", planeBombDelay); - if(split[0].equals("ShootDelay")) - planeShootDelay = Integer.parseInt(split[1]); - if(split[0].equals("BombDelay")) - planeBombDelay = Integer.parseInt(split[1]); - //Propellers - if(split[0].equals("Propeller")) - { + if(config.containsKey("Propeller")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Propeller"); Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); propellers.add(propeller); driveableRecipe.add(new ItemStack(propeller.itemType.item)); } - if(split[0].equals("HeliPropeller")) - { + if(config.containsKey("HeliPropeller")) { + String[] split = ConfigUtils.getSplitFromKey(config, "HeliPropeller"); Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); heliPropellers.add(propeller); driveableRecipe.add(new ItemStack(propeller.itemType.item)); } - if(split[0].equals("HeliTailPropeller")) - { + if(config.containsKey("HeliTailPropeller")) { + String[] split = ConfigUtils.getSplitFromKey(config, "HeliTailPropeller"); Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); heliTailPropellers.add(propeller); driveableRecipe.add(new ItemStack(propeller.itemType.item)); } - - if(split[0].equals("HasFlare")) - hasFlare = split[1].equals("True"); - if(split[0].equals("FlareDelay")) - { - flareDelay = Integer.parseInt(split[1]); - if(flareDelay<=0) - flareDelay = 1; - } - if(split[0].equals("TimeFlareUsing")) - { - timeFlareUsing = Integer.parseInt(split[1]); - if(timeFlareUsing<=0) - timeFlareUsing = 1; - } + + hasFlare = ConfigUtils.configBool(config, "HasFlare", hasFlare); + flareDelay = ConfigUtils.configInt(config, "FlareDelay", flareDelay); + flareDelay = flareDelay <= 0 ? 1 : flareDelay; + + timeFlareUsing = ConfigUtils.configInt(config, "TimeFlareUsing", timeFlareUsing); + timeFlareUsing = timeFlareUsing <= 0 ? 1 : timeFlareUsing; //Sound - if(split[0].equals("PropSoundLength")) - engineSoundLength = Integer.parseInt(split[1]); - if(split[0].equals("PropSound")) - { - engineSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if(split[0].equals("ShootSound")) - { - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if(split[0].equals("BombSound")) - { - shootSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } + engineSoundLength = ConfigUtils.configInt(config, "PropSoundLength", engineSoundLength); + engineSound = ConfigUtils.configDriveableSound(contentPack, config, "PropSound", engineSound); + shootSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ShootSound", shootSoundPrimary); + shootSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "BombSound", shootSoundSecondary); + - //Aesthetics - if(split[0].equals("HasGear")) - hasGear = split[1].equals("True"); - if(split[0].equals("HasDoor")) - hasDoor = split[1].equals("True"); - if(split[0].equals("HasWing")) - hasWing = split[1].equals("True"); - if(split[0].equals("FoldWingForLand")) - foldWingForLand = split[1].equals("True"); - if(split[0].equals("FlyWithOpenDoor")) - flyWithOpenDoor = split[1].equals("True"); - if(split[0].equals("AutoOpenDoorsNearGround")) - autoOpenDoorsNearGround = Boolean.parseBoolean(split[1]); - if (split[0].equals("AutoDeployLandingGearNearGround")) - autoDeployLandingGearNearGround = Boolean.parseBoolean(split[1]); - if(split[0].equals("RestingPitch")) - restingPitch = Float.parseFloat(split[1]); - if(split[0].equals("SpinWithoutTail")) - spinWithoutTail = Boolean.parseBoolean(split[1]); - if(split[0].equals("Valkyrie")) - valkyrie = Boolean.parseBoolean(split[1]); - + hasGear = ConfigUtils.configBool(config, "HasGear", hasGear); + hasDoor = ConfigUtils.configBool(config, "HasDoor", hasDoor); + hasWing = ConfigUtils.configBool(config, "HasWing", hasWing); + foldWingForLand = ConfigUtils.configBool(config, "FoldWingForLand", foldWingForLand); + flyWithOpenDoor = ConfigUtils.configBool(config, "FlyWithOpenDoor", flyWithOpenDoor); + autoOpenDoorsNearGround = ConfigUtils.configBool(config, "AutoOpenDoorsNearGround", autoOpenDoorsNearGround); + autoDeployLandingGearNearGround = ConfigUtils.configBool(config, "AutoDeployLandingGearNearGround", autoDeployLandingGearNearGround); + restingPitch = ConfigUtils.configFloat(config, "RestingPitch", restingPitch); + spinWithoutTail = ConfigUtils.configBool(config, "SpinWithoutTail", spinWithoutTail); + valkyrie = ConfigUtils.configBool(config, "Valkyrie", valkyrie); + //Animations //Wings - if(split[0].equals("WingPosition1")) - wingPos1 = new Vector3f(split[1], shortName); - if(split[0].equals("WingPosition2")) - wingPos2 = new Vector3f(split[1], shortName); - if(split[0].equals("WingRotation1")) - wingRot1 = new Vector3f(split[1], shortName); - if(split[0].equals("WingRotation2")) - wingRot2 = new Vector3f(split[1], shortName); - if(split[0].equals("WingRate")) - wingRate = new Vector3f(split[1], shortName); - if(split[0].equals("WingRotRate")) - wingRotRate = new Vector3f(split[1], shortName); - + ConfigUtils.configVector(config, "WingPosition1", wingPos1, shortName); + ConfigUtils.configVector(config, "WingPosition2", wingPos2, shortName); + ConfigUtils.configVector(config, "WingRotation1", wingRot1, shortName); + ConfigUtils.configVector(config, "WingRotation2", wingRot2, shortName); + ConfigUtils.configVector(config, "WingRate", wingRate, shortName); + ConfigUtils.configVector(config, "WingRotRate", wingRotRate, shortName); + //Wing Wheels - if(split[0].equals("WingWheelPosition1")) - wingWheelPos1 = new Vector3f(split[1], shortName); - if(split[0].equals("WingWheelPosition2")) - wingWheelPos2 = new Vector3f(split[1], shortName); - if(split[0].equals("WingWheelRotation1")) - wingWheelRot1 = new Vector3f(split[1], shortName); - if(split[0].equals("WingWheelRotation2")) - wingWheelRot2 = new Vector3f(split[1], shortName); - if(split[0].equals("WingWheelRate")) - wingWheelRate = new Vector3f(split[1], shortName); - if(split[0].equals("WingWheelRotRate")) - wingWheelRotRate = new Vector3f(split[1], shortName); - + ConfigUtils.configVector(config, "WingWheelPosition1", wingWheelPos1, shortName); + ConfigUtils.configVector(config, "WingWheelPosition2", wingWheelPos2, shortName); + ConfigUtils.configVector(config, "WingWheelRotation1", wingWheelRot1, shortName); + ConfigUtils.configVector(config, "WingWheelRotation2", wingWheelRot2, shortName); + ConfigUtils.configVector(config, "WingWheelRate", wingWheelRate, shortName); + ConfigUtils.configVector(config, "WingWheelRotRate", wingWheelRotRate, shortName); + //Body Wheels - if(split[0].equals("BodyWheelPosition1")) - bodyWheelPos1 = new Vector3f(split[1], shortName); - if(split[0].equals("BodyWheelPosition2")) - bodyWheelPos2 = new Vector3f(split[1], shortName); - if(split[0].equals("BodyWheelRotation1")) - bodyWheelRot1 = new Vector3f(split[1], shortName); - if(split[0].equals("BodyWheelRotation2")) - bodyWheelRot2 = new Vector3f(split[1], shortName); - if(split[0].equals("BodyWheelRate")) - bodyWheelRate = new Vector3f(split[1], shortName); - if(split[0].equals("BodyWheelRotRate")) - bodyWheelRotRate = new Vector3f(split[1], shortName); - + ConfigUtils.configVector(config, "BodyWheelPosition1", bodyWheelPos1, shortName); + ConfigUtils.configVector(config, "BodyWheelPosition2", bodyWheelPos2, shortName); + ConfigUtils.configVector(config, "BodyWheelRotation1", bodyWheelRot1, shortName); + ConfigUtils.configVector(config, "BodyWheelRotation2", bodyWheelRot2, shortName); + ConfigUtils.configVector(config, "BodyWheelRate", bodyWheelRate, shortName); + ConfigUtils.configVector(config, "BodyWheelRotRate", bodyWheelRotRate, shortName); + //Tail Wheels - if(split[0].equals("TailWheelPosition1")) - tailWheelPos1 = new Vector3f(split[1], shortName); - if(split[0].equals("TailWheelPosition2")) - tailWheelPos2 = new Vector3f(split[1], shortName); - if(split[0].equals("TailWheelRotation1")) - tailWheelRot1 = new Vector3f(split[1], shortName); - if(split[0].equals("TailWheelRotation2")) - tailWheelRot2 = new Vector3f(split[1], shortName); - if(split[0].equals("TailWheelRate")) - tailWheelRate = new Vector3f(split[1], shortName); - if(split[0].equals("TailWheelRotRate")) - tailWheelRotRate = new Vector3f(split[1], shortName); - - if(split[0].equals("DoorPosition1")) - doorPos1 = new Vector3f(split[1], shortName); - if(split[0].equals("DoorPosition2")) - doorPos2 = new Vector3f(split[1], shortName); - if(split[0].equals("DoorRotation1")) - doorRot1 = new Vector3f(split[1], shortName); - if(split[0].equals("DoorRotation2")) - doorRot2 = new Vector3f(split[1], shortName); - if(split[0].equals("DoorRate")) - doorRate = new Vector3f(split[1], shortName); - if(split[0].equals("DoorRotRate")) - doorRotRate = new Vector3f(split[1], shortName); - + ConfigUtils.configVector(config, "TailWheelPosition1", tailWheelPos1, shortName); + ConfigUtils.configVector(config, "TailWheelPosition2", tailWheelPos2, shortName); + ConfigUtils.configVector(config, "TailWheelRotation1", tailWheelRot1, shortName); + ConfigUtils.configVector(config, "TailWheelRotation2", tailWheelRot2, shortName); + ConfigUtils.configVector(config, "TailWheelRate", tailWheelRate, shortName); + ConfigUtils.configVector(config, "TailWheelRotRate", tailWheelRotRate, shortName); + + ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); + ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); + ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); + ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); + ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); + ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + //In-flight inventory - if(split[0].equals("InflightInventory")) - invInflight = split[1].equals("False"); + invInflight = ConfigUtils.configBool(config, "InflightInventory", invInflight); } catch (Exception ignored) { diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 18b356fe..6f80f9bf 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -1,6 +1,7 @@ package com.flansmod.common.driveables; import java.util.ArrayList; +import java.util.HashMap; import com.flansmod.client.model.ModelVehicle; import com.flansmod.common.FlansMod; @@ -8,6 +9,8 @@ import com.flansmod.common.types.TypeFile; import com.flansmod.common.vector.Vector3f; import com.flansmod.common.vector.Vector3i; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; public class VehicleType extends DriveableType { /** @@ -98,94 +101,59 @@ public void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); try { //Movement modifiers - if (split[0].equals("TurnLeftSpeed")) - turnLeftModifier = Float.parseFloat(split[1]); - if (split[0].equals("TurnRightSpeed")) - turnRightModifier = Float.parseFloat(split[1]); - if (split[0].equals("SquashMobs")) - squashMobs = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("FourWheelDrive")) - fourWheelDrive = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("Tank") || split[0].equals("TankMode")) - tank = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("ThrottleDecay")) - throttleDecay = Float.parseFloat(split[1]); - if (split[0].equals("Mass")) - mass = Float.parseFloat(split[1]); - if (split[0].equals("UseRealisticAcceleration")) - useRealisticAcceleration = Boolean.parseBoolean(split[1]); - if (split[0].equals("Gravity")) - gravity = Float.parseFloat(split[1]); - if (split[0].equals("MaxFallSpeed")) - maxFallSpeed = Float.parseFloat(split[1]); - if (split[0].equals(("BrakingModifier"))) - brakingModifier = Float.parseFloat(split[1]); + turnLeftModifier = ConfigUtils.configFloat(config,"TurnLeftSpeed", turnLeftModifier); + turnRightModifier = ConfigUtils.configFloat(config,"TurnRightSpeed", turnRightModifier); + squashMobs = ConfigUtils.configBool(config,"SquashMobs", squashMobs); + fourWheelDrive = ConfigUtils.configBool(config,"FourWheelDrive", fourWheelDrive); + tank = ConfigUtils.configBool(config,"Tank", "TankMode", tank); + throttleDecay = ConfigUtils.configFloat(config,"ThrottleDecay", throttleDecay); + mass = ConfigUtils.configFloat(config,"Mass", mass); + useRealisticAcceleration = ConfigUtils.configBool(config,"UseRealisticAcceleration", useRealisticAcceleration); + gravity = ConfigUtils.configFloat(config,"Gravity", gravity); + maxFallSpeed = ConfigUtils.configFloat(config,"MaxFallSpeed", maxFallSpeed); + brakingModifier = ConfigUtils.configFloat(config,"BrakingModifier", brakingModifier); //Visuals - if (split[0].equals("HasDoor")) - hasDoor = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("ShootWithOpenDoor")) - shootWithOpenDoor = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("RotateWheels")) - rotateWheels = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("FixTrackLink")) - trackLinkFix = Integer.parseInt(split[1].toLowerCase()); - if (split[0].equals("FlipLinkFix")) - flipLinkFix = Boolean.parseBoolean(split[1].toLowerCase()); + hasDoor = ConfigUtils.configBool(config,"HasDoor", hasDoor); + shootWithOpenDoor = ConfigUtils.configBool(config,"ShootWithOpenDoor", shootWithOpenDoor); + rotateWheels = ConfigUtils.configBool(config,"RotateWheels", rotateWheels); + trackLinkFix = ConfigUtils.configInt(config,"FixTrackLink", trackLinkFix); + flipLinkFix = ConfigUtils.configBool(config,"FlipLinkFix", flipLinkFix); //Animations - if (split[0].equals("DoorPosition1")) - doorPos1 = new Vector3f(split[1], shortName); - if (split[0].equals("DoorPosition2")) - doorPos2 = new Vector3f(split[1], shortName); - if (split[0].equals("DoorRotation1")) - doorRot1 = new Vector3f(split[1], shortName); - if (split[0].equals("DoorRotation2")) - doorRot2 = new Vector3f(split[1], shortName); - if (split[0].equals("DoorRate")) - doorRate = new Vector3f(split[1], shortName); - if (split[0].equals("DoorRotRate")) - doorRotRate = new Vector3f(split[1], shortName); - - if (split[0].equals("Door2Position1")) - door2Pos1 = new Vector3f(split[1], shortName); - if (split[0].equals("Door2Position2")) - door2Pos2 = new Vector3f(split[1], shortName); - if (split[0].equals("Door2Rotation1")) - door2Rot1 = new Vector3f(split[1], shortName); - if (split[0].equals("Door2Rotation2")) - door2Rot2 = new Vector3f(split[1], shortName); - if (split[0].equals("Door2Rate")) - door2Rate = new Vector3f(split[1], shortName); - if (split[0].equals("Door2RotRate")) - door2RotRate = new Vector3f(split[1], shortName); + ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); + ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); + ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); + ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); + ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); + ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + + ConfigUtils.configVector(config, "Door2Position1", door2Pos1, shortName); + ConfigUtils.configVector(config, "Door2Position2", door2Pos2, shortName); + ConfigUtils.configVector(config, "Door2Rotation1", door2Rot1, shortName); + ConfigUtils.configVector(config, "Door2Rotation2", door2Rot2, shortName); + ConfigUtils.configVector(config, "Door2Rate", door2Rate, shortName); + ConfigUtils.configVector(config, "Door2RotRate", door2RotRate, shortName); //Armaments - if (split[0].equals("ShootDelay")) - vehicleShootDelay = Integer.parseInt(split[1]); - if (split[0].equals("ShellDelay")) - vehicleShellDelay = Integer.parseInt(split[1]); + vehicleShootDelay = ConfigUtils.configInt(config,"ShootDelay", vehicleShootDelay); + vehicleShellDelay = ConfigUtils.configInt(config,"ShellDelay", vehicleShellDelay); //Sound - if (split[0].equals("ShootSound")) { - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (split[0].equals("ShellSound")) { - shootSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } else if (split[0].equals("DriftSoundLength")) - driftSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("DriftSound")) { - driftSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (split[0].equalsIgnoreCase("AddSmokePoint") || split[0].equalsIgnoreCase("AddSmokeDispenser")) { + shootSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ShootSound", shootSoundPrimary); + shootSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "ShellSound", shootSoundSecondary); + driftSoundLength = ConfigUtils.configInt(config,"DriftSoundLength", driftSoundLength); + driftSound = ConfigUtils.configDriveableSound(contentPack, config, "DriftSound", driftSound); + if (config.containsKey("AddSmokePoint") || config.containsKey("AddSmokeDispenser")) { + String key = "AddSmokePoint"; + if (config.containsKey("AddSmokeDispenser")) + key = "AddSmokeDispenser"; + String[] split = ConfigUtils.getSplitFromKey(config, key); SmokePoint smoke = new SmokePoint(); smoke.position = new Vector3f(split[1], shortName); smoke.direction = new Vector3f(split[2], shortName); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java index bb409116..edb92d0d 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java @@ -1,7 +1,10 @@ package com.flansmod.common.driveables.mechas; import java.util.ArrayList; +import java.util.HashMap; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -64,109 +67,69 @@ public MechaItemType(TypeFile file) } @Override - protected void preRead(TypeFile file) - { - } + protected void preRead(TypeFile file) { } @Override - protected void postRead(TypeFile file) - { - } + protected void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if(FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelMechaTool.class); - if(split[0].equals("Texture")) - texture = split[1]; - if(split[0].equals("Type")) - type = EnumMechaItemType.getToolType(split[1]); - if(split[0].equals("ToolType")) - function = EnumMechaToolType.getToolType(split[1]); - if(split[0].equals("Speed")) - speed = Float.parseFloat(split[1]); - if(split[0].equals("ToolHardness")) - toolHardness = Float.parseFloat(split[1]); - if(split[0].equals("Reach")) - reach = Float.parseFloat(split[1]); - + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + if(FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelMechaTool.class); + texture = ConfigUtils.configString(config, "Texture", texture); + if(config.containsKey("Type")) + type = EnumMechaItemType.getToolType(config.get("Type")); + if(config.containsKey("ToolType")) + function = EnumMechaToolType.getToolType(config.get("ToolType")); + speed = ConfigUtils.configFloat(config, "Speed", speed); + toolHardness = ConfigUtils.configFloat(config, "ToolHardness", toolHardness); + reach = ConfigUtils.configFloat(config, "Reach", reach); + /** The following are the upgrade booleans and multipliers, which * are alphabetised. Mess with the order at your peril*/ - - if(split[0].equals("AutoFuel")) - autoCoal = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("Armour")) - damageResistance = Float.parseFloat(split[1]); - if(split[0].equals("CoalMultiplier")) - fortuneCoal = Float.parseFloat(split[1]); - if(split[0].equals("DetectSound")) - detectSound = split[1]; - if(split[0].equals("DiamondDetect")) - diamondDetect = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("DiamondMultiplier")) - fortuneDiamond = Float.parseFloat(split[1]); - if(split[0].equals("EmeraldMultiplier")) - fortuneEmerald = Float.parseFloat(split[1]); - if(split[0].equals("FlameBurst")) - flameBurst = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("Floatation")) - floater = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("ForceBlockFallDamage")) - forceBlockFallDamage = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("ForceDark")) - forceDark = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("InfiniteAmmo")) - infiniteAmmo = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("IronMultiplier")) - fortuneIron = Float.parseFloat(split[1]); - if(split[0].equals("IronRefine")) - refineIron = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("ItemVacuum")) - vacuumItems = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("LightLevel")) - lightLevel = Integer.parseInt(split[1]); - if(split[0].equals("Nanorepair")) - autoRepair = Boolean.parseBoolean(split[1].toLowerCase()); - if (split[0].equals("NanorepairAmount")) - autoRepairAmount = Float.parseFloat(split[1]); - if(split[0].equals("RedstoneMultiplier")) - fortuneRedstone = Float.parseFloat(split[1]); - if(split[0].equals("RocketPack")) - rocketPack = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("RocketPower")) - rocketPower = Float.parseFloat(split[1]); - if(split[0].equals("SoundEffect")) - soundEffect = split[1]; - if(split[0].equals("SoundTime")) - soundTime = Float.parseFloat(split[1]); - if(split[0].equals("SpeedMultiplier")) - speedMultiplier = Float.parseFloat(split[1]); - if(split[0].equals("StopMechaFallDamage")) - stopMechaFallDamage = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("WasteCompact")) - wasteCompact = Boolean.parseBoolean(split[1].toLowerCase()); - } - catch (Exception ignored) - { + + autoCoal = ConfigUtils.configBool(config, "AutoFuel", autoCoal); + damageResistance = ConfigUtils.configFloat(config, "Armour", damageResistance); + fortuneCoal = ConfigUtils.configFloat(config, "CoalMultiplier", fortuneCoal); + diamondDetect = ConfigUtils.configBool(config, "DiamondDetect", diamondDetect); + fortuneDiamond = ConfigUtils.configFloat(config, "DiamondMultiplier", fortuneDiamond); + fortuneEmerald = ConfigUtils.configFloat(config, "EmeraldMultiplier", fortuneEmerald); + flameBurst = ConfigUtils.configBool(config, "FlameBurst", flameBurst); + floater = ConfigUtils.configBool(config, "Floatation", floater); + forceBlockFallDamage = ConfigUtils.configBool(config, "ForceBlockFallDamage", forceBlockFallDamage); + forceDark = ConfigUtils.configBool(config, "ForceDark", forceDark); + infiniteAmmo = ConfigUtils.configBool(config, "InfiniteAmmo", infiniteAmmo); + fortuneIron = ConfigUtils.configFloat(config, "IronMultiplier", fortuneIron); + refineIron = ConfigUtils.configBool(config, "IronRefine", refineIron); + vacuumItems = ConfigUtils.configBool(config, "ItemVacuum", vacuumItems); + lightLevel = ConfigUtils.configInt(config, "LightLevel", lightLevel); + autoRepair = ConfigUtils.configBool(config, "Nanorepair", autoRepair); + autoRepairAmount = ConfigUtils.configFloat(config, "NanorepairAmount", autoRepairAmount); + fortuneRedstone = ConfigUtils.configFloat(config, "RedstoneMultiplier", fortuneRedstone); + rocketPack = ConfigUtils.configBool(config, "RocketPack", rocketPack); + rocketPower = ConfigUtils.configFloat(config, "RocketPower", rocketPower); + soundEffect = ConfigUtils.configString(config, "SoundEffect", soundEffect); + soundTime = ConfigUtils.configFloat(config, "SoundTime", soundTime); + speedMultiplier = ConfigUtils.configFloat(config, "SpeedMultiplier", speedMultiplier); + stopMechaFallDamage = ConfigUtils.configBool(config, "StopMechaFallDamage", stopMechaFallDamage); + wasteCompact = ConfigUtils.configBool(config, "WasteCompact", wasteCompact); + + } catch (Exception ignored) { + } } - public static MechaItemType getTool(String find) - { - for(MechaItemType type : types) - { + public static MechaItemType getTool(String find) { + for(MechaItemType type : types) { if(type.shortName.equals(find)) return type; } return null; } - public void reloadModel() - { + public void reloadModel() { if(modelString != null) model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java index 764a6234..258e05a0 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java @@ -1,6 +1,7 @@ package com.flansmod.common.driveables.mechas; import java.util.ArrayList; +import java.util.HashMap; import com.flansmod.client.model.ModelMecha; import com.flansmod.common.FlansMod; @@ -13,6 +14,8 @@ import com.flansmod.common.guns.EnumFireMode; import com.flansmod.common.types.TypeFile; import com.flansmod.common.vector.Vector3f; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; public class MechaType extends DriveableType { @@ -95,95 +98,73 @@ public MechaType(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { //Movement modifiers - if(split[0].equals("TurnLeftSpeed")) - turnLeftModifier = Float.parseFloat(split[1]); - if(split[0].equals("TurnRightSpeed")) - turnRightModifier = Float.parseFloat(split[1]); - if(split[0].equals("MoveSpeed")) - moveSpeed = Float.parseFloat(split[1]); - if(split[0].equals("SquashMobs")) - squashMobs = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("StepHeight")) - stepHeight = Integer.parseInt(split[1]); - if(split[0].equals("JumpHeight")) - { - jumpHeight = Float.parseFloat(split[1]); + turnLeftModifier = ConfigUtils.configFloat(config, "TurnLeftSpeed", turnLeftModifier); + turnRightModifier = ConfigUtils.configFloat(config, "TurnRightSpeed", turnRightModifier); + moveSpeed = ConfigUtils.configFloat(config, "MoveSpeed", moveSpeed); + squashMobs = ConfigUtils.configBool(config, "SquashMobs", squashMobs); + stepHeight = ConfigUtils.configInt(config, "StepHeight", stepHeight); + if(config.containsKey("JumpHeight")) { + jumpHeight = Float.parseFloat(config.get("JumpHeight")); jumpVelocity = (float) Math.sqrt(Math.abs(9.81F * (jumpHeight + 0.2F) / 200F)); } - if(split[0].equals("RotateSpeed")) - rotateSpeed = Float.parseFloat(split[1]); - - else if(split[0].equals("StompSound")) - { - stompSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - else if(split[0].equals("StompSoundLength")) - stompSoundLength = Integer.parseInt(split[1]); - else if(split[0].equals("StompRangeLower")) - stompRangeLower = Float.parseFloat(split[1]); - else if(split[0].equals("StompRangeUpper")) - stompRangeUpper = Float.parseFloat(split[1]); - - if(split[0].equals("LeftArmOrigin")) + rotateSpeed = ConfigUtils.configFloat(config, "RotateSpeed", rotateSpeed); + stompSound = ConfigUtils.configDriveableSound(contentPack, config, "StompSound", stompSound); + stompSoundLength = ConfigUtils.configInt(config, "StompSoundLength", stompSoundLength); + stompRangeLower = ConfigUtils.configFloat(config, "StompRangeLower", stompRangeLower); + stompRangeUpper = ConfigUtils.configFloat(config, "StompRangeUpper", stompRangeUpper); + + if(config.containsKey("LeftArmOrigin")) { + String[] split = ConfigUtils.getSplitFromKey(config, "LeftArmOrigin"); leftArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - if(split[0].equals("RightArmOrigin")) + } + + if(config.containsKey("RightArmOrigin")) { + String[] split = ConfigUtils.getSplitFromKey(config, "RightArmOrigin"); rightArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - if(split[0].equals("ArmLength")) - armLength = Float.parseFloat(split[1]) / 16F; - if(split[0].equals("LegLength")) - legLength = Float.parseFloat(split[1]) / 16F; - if(split[0].equals("HeldItemScale")) - heldItemScale = Float.parseFloat(split[1]); - if(split[0].equals("Height")) - height = (Float.parseFloat(split[1])/16F); - if(split[0].equals("Width")) - width = (Float.parseFloat(split[1])/16F); - if(split[0].equals("ChassisHeight")) - chassisHeight = (Integer.parseInt(split[1]))/16F; - if(split[0].equals("FallDamageMultiplier")) - fallDamageMultiplier = Float.parseFloat(split[1]); - if(split[0].equals("BlockDamageFromFalling")) - blockDamageFromFalling = Float.parseFloat(split[1]); - if(split[0].equals("Reach")) - reach = Float.parseFloat(split[1]); - if(split[0].equals("TakeFallDamage")) - takeFallDamage = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("DamageBlocksFromFalling")) - damageBlocksFromFalling = Boolean.parseBoolean(split[1].toLowerCase()); - if(split[0].equals("LegSwingLimit")) - legSwingLimit = Float.parseFloat(split[1]); - if(split[0].equals("LimitHeadTurn")) - { + } + + armLength = ConfigUtils.configFloat(config, "ArmLength", armLength) / 16F; + legLength = ConfigUtils.configFloat(config, "LegLength", legLength) / 16F; + heldItemScale = ConfigUtils.configFloat(config, "HeldItemScale", heldItemScale); + height = ConfigUtils.configFloat(config, "Height", height); + width = ConfigUtils.configFloat(config, "Width", width); + if(config.containsKey("ChassisHeight")) + chassisHeight = (Integer.parseInt(config.get("ChassisHeight")))/16F; + + fallDamageMultiplier = ConfigUtils.configFloat(config, "FallDamageMultiplier", fallDamageMultiplier); + blockDamageFromFalling = ConfigUtils.configFloat(config, "BlockDamageFromFalling", blockDamageFromFalling); + reach = ConfigUtils.configFloat(config, "Reach", reach); + takeFallDamage = ConfigUtils.configBool(config, "TakeFallDamage", takeFallDamage); + damageBlocksFromFalling = ConfigUtils.configBool(config, "DamageBlocksFromFalling", damageBlocksFromFalling); + legSwingLimit = ConfigUtils.configFloat(config, "LegSwingLimit", legSwingLimit); + + if(config.containsKey("LimitHeadTurn")) { + String[] split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); limitHeadTurn = Boolean.parseBoolean(split[1].toLowerCase()); limitHeadTurnValue = Float.parseFloat(split[2]); } - if(split[0].equals("LegSwingTime")) - legSwingTime = Float.parseFloat(split[1]); - if(split[0].equals("UpperArmLimit")) - upperArmLimit = Float.parseFloat(split[1]); - if(split[0].equals("LowerArmLimit")) - lowerArmLimit = Float.parseFloat(split[1]); - if(split[0].equals("LeftHandModifier")) - { + legSwingTime = ConfigUtils.configFloat(config, "LegSwingTime", legSwingTime); + upperArmLimit = ConfigUtils.configFloat(config, "UpperArmLimit", upperArmLimit); + lowerArmLimit = ConfigUtils.configFloat(config, "LowerArmLimit", lowerArmLimit); + if(config.containsKey("LeftHandModifier")) { + String[] split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); leftHandModifierX = Float.parseFloat(split[1])/16F; leftHandModifierY = Float.parseFloat(split[2])/16F; leftHandModifierZ = Float.parseFloat(split[3])/16F; } - if(split[0].equals("RightHandModifier")) - { + if(config.containsKey("RightHandModifier")) { + String[] split = ConfigUtils.getSplitFromKey(config, "RightHandModifier"); rightHandModifierX = Float.parseFloat(split[1])/16F; rightHandModifierY = Float.parseFloat(split[2])/16F; rightHandModifierZ = Float.parseFloat(split[3])/16F; } - - else if(split[0].equals("LegNode")){ + + if(config.containsKey("LegNode")){ + String[] split = ConfigUtils.getSplitFromKey(config, "LegNode"); LegNode node = new LegNode(); node.rotation = Integer.parseInt(split[1]); node.lowerBound = Float.parseFloat(split[2]); @@ -192,15 +173,12 @@ else if(split[0].equals("LegNode")){ node.legPart = Integer.parseInt(split[5]); legNodes.add(node); } - else if(split[0].equals("LegAnimSpeed")) - legAnimSpeed = Float.parseFloat(split[1]); - else if(split[0].equals("RestrictInventoryInput")) - restrictInventoryInput = Boolean.parseBoolean(split[1]); - else if(split[0].equals("AllowMechaToolsInRestrictedInv")) - allowMechaToolsInRestrictedInv = Boolean.parseBoolean(split[1]); - } - catch (Exception ignored) - { + legAnimSpeed = ConfigUtils.configFloat(config, "LegAnimSpeed", legAnimSpeed); + restrictInventoryInput = ConfigUtils.configBool(config, "RestrictInventoryInput", restrictInventoryInput); + allowMechaToolsInRestrictedInv = ConfigUtils.configBool(config, "AllowMechaToolsInRestrictedInv", allowMechaToolsInRestrictedInv); + + } catch (Exception ignored) { + } } @@ -210,20 +188,16 @@ public void reloadModel() model = FlansMod.proxy.loadModel(modelString, shortName, ModelMecha.class); } - private DriveablePosition getShootPoint(String[] split) - { + private DriveablePosition getShootPoint(String[] split) { //No need to look for a specific gun. - if(split.length == 5) - { + if(split.length == 5) { return new DriveablePosition(split); } return new DriveablePosition(new Vector3f(), EnumDriveablePart.core); } - public static MechaType getMecha(String find) - { - for(MechaType type : types) - { + public static MechaType getMecha(String find) { + for(MechaType type : types) { if(type.shortName.equals(find)) return type; } @@ -231,8 +205,7 @@ public static MechaType getMecha(String find) } - public class LegNode - { + public class LegNode { public int rotation; public float lowerBound; public float upperBound; diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index d5dd3a35..88b4b41f 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -1,8 +1,11 @@ package com.flansmod.common.guns; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.item.ItemStack; @@ -47,137 +50,75 @@ public class AAGunType extends InfoType public static List infoTypes = new ArrayList(); - public AAGunType(TypeFile file) - { + public AAGunType(TypeFile file) { super(file); infoTypes.add(this); } @Override - protected void preRead(TypeFile file) - { - } + protected void preRead(TypeFile file) { } @Override - protected void postRead(TypeFile file) - { - } + protected void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) - { - model = FlansMod.proxy.loadModel(split[1], shortName, ModelAAGun.class); - } - else if (split[0].equals("Texture")) - { - texture = split[1]; - } - else if (split[0].equals("Damage")) - { - damage = Integer.parseInt(split[1]); - } - else if (split[0].equals("ReloadTime")) - { - reloadTime = Integer.parseInt(split[1]); - } - else if (split[0].equals("Recoil")) - { - recoil = Integer.parseInt(split[1]); - } - else if (split[0].equals("Accuracy")) - { - accuracy = Integer.parseInt(split[1]); - } - else if (split[0].equals("ShootDelay")) - { - shootDelay = Integer.parseInt(split[1]); - } - else if (split[0].equals("ShootSound")) - { - shootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "aaguns", split[1]); - } - else if (split[0].equals("ReloadSound")) - { - reloadSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "aaguns", split[1]); - } - else if (split[0].equals("FireAlternately")) - { - fireAlternately = split[1].equals("True"); - } - else if (split[0].equals("NumBarrels")) - { + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAAGun.class); + texture = ConfigUtils.configString(config, "Texture", texture); + damage = ConfigUtils.configInt(config, "Damage", damage); + reloadTime = ConfigUtils.configInt(config, "ReloadTime", reloadTime); + recoil = ConfigUtils.configInt(config, "Recoil", recoil); + accuracy = ConfigUtils.configInt(config, "Accuracy", accuracy); + shootDelay = ConfigUtils.configInt(config, "ShootDelay", shootDelay); + shootSound = ConfigUtils.configAASound(contentPack, config, "ShootSound", shootSound); + reloadSound = ConfigUtils.configAASound(contentPack, config, "ReloadSound", reloadSound); + fireAlternately = ConfigUtils.configBool(config, "FireAlternately", fireAlternately); + if (config.containsKey("NumBarrels")) { + String[] split = config.get("NumBarrels").split(" "); numBarrels = Integer.parseInt(split[1]); barrelX = new int[numBarrels]; barrelY = new int[numBarrels]; barrelZ = new int[numBarrels]; } - else if(split[0].equals("Barrel")) - { + if(config.containsKey("Barrel")) { + String[] split = config.get("Barrel").split(" "); int id = Integer.parseInt(split[1]); barrelX[id] = Integer.parseInt(split[2]); barrelY[id] = Integer.parseInt(split[3]); barrelZ[id] = Integer.parseInt(split[4]); } - else if (split[0].equals("Health")) - { - health = Integer.parseInt(split[1]); - } - else if (split[0].equals("TopViewLimit")) - { - topViewLimit = Float.parseFloat(split[1]); - } - else if (split[0].equals("BottomViewLimit")) - { - bottomViewLimit = Float.parseFloat(split[1]); - } - else if (split[0].equals("Ammo")) - { - BulletType type = BulletType.getBullet(split[1]); - if (type != null) - { + health = ConfigUtils.configInt(config, "Health", health); + topViewLimit = ConfigUtils.configFloat(config, "TopViewLimit", topViewLimit); + bottomViewLimit = ConfigUtils.configFloat(config, "BottomViewLimit", bottomViewLimit); + if (config.containsKey("Ammo")) { + BulletType type = BulletType.getBullet(config.get("Ammo")); + if (type != null) { ammo.add(type); } } - else if (split[0].equals("GunnerPos")) - { + if (config.containsKey("GunnerPos")) { + String[] split = config.get("GunnerPos").split(" "); gunnerX = Integer.parseInt(split[1]); gunnerY = Integer.parseInt(split[2]); gunnerZ = Integer.parseInt(split[3]); } - else if(split[0].equals("TargetMobs")) - targetMobs = Boolean.parseBoolean(split[1]); - else if(split[0].equals("TargetPlayers")) - targetPlayers = Boolean.parseBoolean(split[1]); - else if(split[0].equals("TargetVehicles")) - targetVehicles = Boolean.parseBoolean(split[1]); - else if(split[0].equals("TargetPlanes")) - targetPlanes = Boolean.parseBoolean(split[1]); - else if(split[0].equals("TargetMechas")) - targetMechas = Boolean.parseBoolean(split[1]); - else if(split[0].equals("TargetDriveables")) - targetMechas = targetPlanes = targetVehicles = Boolean.parseBoolean(split[1]); - else if(split[0].equals("ShareAmmo")) - shareAmmo = Boolean.parseBoolean(split[1]); - else if (split[0].equals("TargetRange")) - { - targetRange = Float.parseFloat(split[1]); - } - else if(split[0].equals("CanShootHomingMissile")) - canShootHomingMissile = Boolean.parseBoolean(split[1]); - else if (split[0].equals("CountExplodeAfterShoot")) - countExplodeAfterShoot = Integer.parseInt(split[1]); - else if(split[0].equals("IsDropThis")) - isDropThis = Boolean.parseBoolean(split[1]); - - } catch (Exception e) - { + targetMobs = ConfigUtils.configBool(config, "TargetMobs", targetMobs); + targetPlayers = ConfigUtils.configBool(config, "TargetPlayers", targetPlayers); + targetVehicles = ConfigUtils.configBool(config, "TargetVehicles", targetVehicles); + targetPlanes = ConfigUtils.configBool(config, "TargetPlanes", targetPlanes); + targetMechas = ConfigUtils.configBool(config, "TargetMechas", targetMechas); + if(config.containsKey("TargetDriveables")) + targetMechas = targetPlanes = targetVehicles = Boolean.parseBoolean(config.get("TargetDriveables")); + shareAmmo = ConfigUtils.configBool(config, "ShareAmmo", shareAmmo); + targetRange = ConfigUtils.configFloat(config, "TargetRange", targetRange); + canShootHomingMissile = ConfigUtils.configBool(config, "CanShootHomingMissile", canShootHomingMissile); + countExplodeAfterShoot = ConfigUtils.configInt(config, "CountExplodeAfterShoot", countExplodeAfterShoot); + isDropThis = ConfigUtils.configBool(config, "IsDropThis", isDropThis); + + } catch (Exception e) { FlansMod.log("Failed to read AA Gun file " + e); } } @@ -193,10 +134,8 @@ public boolean isAmmo(ItemStack stack) { return stack.getItem() instanceof ItemBullet && isAmmo(((ItemBullet) stack.getItem()).type); } - public static AAGunType getAAGun(String s) - { - for (AAGunType gun : infoTypes) - { + public static AAGunType getAAGun(String s) { + for (AAGunType gun : infoTypes) { if (gun.shortName.equals(s)) return gun; } diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index cdd4e4da..55d15388 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -1,8 +1,11 @@ package com.flansmod.common.guns; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -124,133 +127,82 @@ public AttachmentType(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if(split[0].equals("AttachmentType")) - type = EnumAttachmentType.get(split[1]); - else if(FMLCommonHandler.instance().getSide().isClient() && (split[0].equals("Model"))) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelAttachment.class); - else if(split[0].equals("ModelScale")) - modelScale = Float.parseFloat(split[1]); - else if(split[0].equals("Texture")) - texture = split[1]; - - else if(split[0].equals("Silencer")) - silencer = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("DisableMuzzleFlash") || split[0].equals("DisableFlash")) - disableMuzzleFlash = Boolean.parseBoolean(split[1].toLowerCase()); - + protected void read(ConfigMap config, TypeFile file) { + try { + + super.read(config, file); + if (config.containsKey("AttachmentType")) + type = EnumAttachmentType.get(config.get("AttachmentType")); + + if(FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("Model"))) + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAttachment.class); + + modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); + texture = ConfigUtils.configString(config, "Texture", texture); + silencer = ConfigUtils.configBool(config, "Silencer", silencer); + disableMuzzleFlash = ConfigUtils.configBool(config, "DisableMuzzleFlash", "DisableFlash", disableMuzzleFlash); + //Flashlight settings - else if(split[0].equals("Flashlight")) - flashlight = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("FlashlightRange")) - flashlightRange = Float.parseFloat(split[1]); - else if(split[0].equals("FlashlightStrength")) - flashlightStrength = Integer.parseInt(split[1]); - //Mode override - else if(split[0].equals("ModeOverride")) - modeOverride = EnumFireMode.getFireMode(split[1]); + flashlight = ConfigUtils.configBool(config, "Flashlight", flashlight); + flashlightRange = ConfigUtils.configFloat(config, "FlashlightRange", flashlightRange); + flashlightStrength = ConfigUtils.configInt(config, "FlashlightStrength", flashlightStrength); + //Mode override + if(config.containsKey("ModeOverride")) + modeOverride = EnumFireMode.getFireMode(config.get("ModeOverride")); +// //Secondary Stuff - else if(split[0].equals("SecondaryMode")) - secondaryFire = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("SecondaryAmmo")) - secondaryAmmo.add(split[1]); - else if(split[0].equals("SecondaryDamage")) - secondaryDamage = Float.parseFloat(split[1]); - else if(split[0].equals("SecondarySpread") || split[0].equals("SecondaryAccuracy")) - secondarySpread = secondaryDefaultSpread = Float.parseFloat(split[1]); - else if(split[0].equals("SecondaryBulletSpeed")) - secondarySpeed = Float.parseFloat(split[1]); - else if(split[0].equals("SecondaryShootDelay")) - secondaryShootDelay = Integer.parseInt(split[1]); - else if(split[0].equals("SecondaryReloadTime")) - secondaryReloadTime = Integer.parseInt(split[1]); - else if(split[0].equals("SecondaryShootDelay")) - secondaryShootDelay = Integer.parseInt(split[1]); - else if(split[0].equals("SecondaryNumBullets")) - secondaryNumBullets = Integer.parseInt(split[1]); - else if(split[0].equals("LoadSecondaryIntoGun")) - numSecAmmoItems = Integer.parseInt(split[1]); - else if(split[0].equals("SecondaryFireMode")) - secondaryFireMode = EnumFireMode.getFireMode(split[1]); - else if(split[0].equals("SecondaryShootSound")) - { - secondaryShootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } - else if(split[0].equals("SecondaryReloadSound")) - { - secondaryReloadSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } - else if(split[0].equals("ModeSwitchSound")) - { - toggleSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } - - //Multipliers - else if(split[0].equals("MeleeDamageMultiplier")) - meleeDamageMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("DamageMultiplier")) - damageMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("SpreadMultiplier")) - spreadMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("RecoilMultiplier")) - recoilMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("RecoilControlMultiplier")) - recoilControlMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("RecoilControlMultiplierSneaking")) - recoilControlMultiplierSneaking = Float.parseFloat(split[1]); - else if(split[0].equals("RecoilControlMultiplierSprinting")) - recoilControlMultiplierSprinting = Float.parseFloat(split[1]); - else if(split[0].equals("BulletSpeedMultiplier")) - bulletSpeedMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("ReloadTimeMultiplier")) - reloadTimeMultiplier = Float.parseFloat(split[1]); - else if(split[0].equals("MovementSpeedMultiplier") || split[0].equals("MoveSpeedModifier")) - moveSpeedMultiplier = Float.parseFloat(split[1]); - //Scope Variables + secondaryFire = ConfigUtils.configBool(config, "SecondaryMode", secondaryFire); + //todo fix multiples +// else if(split[0].equals("SecondaryAmmo")) +// secondaryAmmo.add(split[1]); + secondaryAmmo.add(ConfigUtils.configString(config, "SecondaryAmmo", "")); + secondaryDamage = ConfigUtils.configFloat(config, "SecondaryDamage", secondaryDamage); + secondarySpread = ConfigUtils.configFloat(config, "SecondarySpread", "SecondaryAccuracy", secondarySpread); + secondarySpeed = ConfigUtils.configFloat(config, "SecondaryBulletSpeed", secondarySpeed); + secondaryShootDelay = ConfigUtils.configInt(config, "SecondaryShootDelay", secondaryShootDelay); + secondaryReloadTime = ConfigUtils.configInt(config, "SecondaryReloadTime", secondaryReloadTime); + secondaryShootDelay = ConfigUtils.configInt(config, "SecondaryShootDelay", secondaryShootDelay); + secondaryNumBullets = ConfigUtils.configInt(config, "SecondaryNumBullets", secondaryNumBullets); + numSecAmmoItems = ConfigUtils.configInt(config, "LoadSecondaryIntoGun", numSecAmmoItems); + if (config.containsKey("SecondaryFireMode")) + secondaryFireMode = EnumFireMode.getFireMode(config.get("SecondaryFireMode")); + secondaryShootSound = ConfigUtils.configGunSound(contentPack, config, "SecondaryShootSound", secondaryShootSound); + secondaryReloadSound = ConfigUtils.configGunSound(contentPack, config, "SecondaryReloadSound", secondaryReloadSound); + toggleSound = ConfigUtils.configGunSound(contentPack, config, "ModeSwitchSound", toggleSound); - else if (split[0].equals("HasVariableZoom")){ - hasVariableZoom = Boolean.parseBoolean(split[1]); - } - else if (split[0].equals("MinZoom")) { - minZoom = Float.parseFloat(split[1]); - } - else if (split[0].equals("MaxZoom")) { - maxZoom = Float.parseFloat(split[1]); - } - else if (split[0].equals("ZoomAugment")) { - zoomAugment = Float.parseFloat(split[1]); - } + //Multipliers + meleeDamageMultiplier = ConfigUtils.configFloat(config, "MeleeDamageMultiplier", meleeDamageMultiplier); + damageMultiplier = ConfigUtils.configFloat(config, "DamageMultiplier", damageMultiplier); + spreadMultiplier = ConfigUtils.configFloat(config, "SpreadMultiplier", spreadMultiplier); + recoilMultiplier = ConfigUtils.configFloat(config, "RecoilMultiplier", recoilMultiplier); + recoilControlMultiplier = ConfigUtils.configFloat(config, "RecoilControlMultiplier", recoilControlMultiplier); + recoilControlMultiplierSneaking = ConfigUtils.configFloat(config, "RecoilControlMultiplierSneaking", recoilControlMultiplierSneaking); + recoilControlMultiplierSprinting = ConfigUtils.configFloat(config, "RecoilControlMultiplierSprinting", recoilControlMultiplierSprinting); + bulletSpeedMultiplier = ConfigUtils.configFloat(config, "BulletSpeedMultiplier", bulletSpeedMultiplier); + recoilControlMultiplierSprinting = ConfigUtils.configFloat(config, "RecoilControlMultiplierSprinting", recoilControlMultiplierSprinting); + moveSpeedMultiplier = ConfigUtils.configFloat(config, "MovementSpeedMultiplier", "MoveSpeedModifier", moveSpeedMultiplier); - else if(split[0].equals("ZoomLevel")) - zoomLevel = Float.parseFloat(split[1]); - else if(split[0].equals("FOVZoomLevel")) - FOVZoomLevel = Float.parseFloat(split[1]); - else if (split[0].equals("ZoomOverlay")) - { + //Scope Variables + minZoom = ConfigUtils.configFloat(config, "MinZoom", minZoom); + maxZoom = ConfigUtils.configFloat(config, "MaxZoom", maxZoom); + zoomAugment = ConfigUtils.configFloat(config, "ZoomAugment", zoomAugment); + zoomLevel = ConfigUtils.configFloat(config, "ZoomLevel", zoomLevel); + FOVZoomLevel = ConfigUtils.configFloat(config, "FOVZoomLevel", FOVZoomLevel); + if (config.containsKey("ZoomOverlay")) { hasScopeOverlay = true; - if (split[1].equals("None")) + if (config.get("ZoomOverlay").equals("None")) hasScopeOverlay = false; - else zoomOverlay = split[1]; - } - else if(split[0].equals("HasNightVision")) - hasNightVision = Boolean.parseBoolean(split[1].toLowerCase()); - - } - catch (Exception e) - { - FlansMod.log("Reading attachment file failed."); - if(FlansMod.printStackTrace) - { - e.printStackTrace(); + else zoomOverlay = config.get("ZoomOverlay"); } + hasNightVision = ConfigUtils.configBool(config, "HasNightVision", hasNightVision); + + } catch (Exception e) { + FlansMod.log("Reading attachment file failed."); + if(FlansMod.printStackTrace) + { + e.printStackTrace(); + } } } diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 04c2acf5..872a24af 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -1,8 +1,11 @@ package com.flansmod.common.guns; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.item.Item; import net.minecraft.potion.PotionEffect; @@ -130,159 +133,96 @@ public BulletType(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if(split[0].equals("FlakParticles")) - flak = Integer.parseInt(split[1]); - else if(split[0].equals("FlakParticleType")) - flakParticles = split[1]; - else if(split[0].equals("SetEntitiesOnFire")) - setEntitiesOnFire = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("HitSoundEnable")) - hitSoundEnable = Boolean.parseBoolean(split[1]); - else if(split[0].equals("EntityHitSoundEnable")) - entityHitSoundEnable = Boolean.parseBoolean(split[1]); - else if(split[0].equals("HitSound")) - { - hitSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "sound", split[1]); - } - else if(split[0].equals("HitSoundRange")) - hitSoundRange = Float.parseFloat(split[1]); - else if(split[0].equals("Penetrates")) - penetratingPower = (Boolean.parseBoolean(split[1].toLowerCase()) ? 1F : 0.7F); - else if(split[0].equals("Penetration") || split[0].equals("PenetratingPower")) - penetratingPower = Float.parseFloat(split[1]); - else if(split[0].equals("PenetrationDecay")) - penetrationDecay = Float.parseFloat(split[1]); - else if(split[0].equals("DragInAir")) - { - dragInAir = Float.parseFloat(split[1]); - dragInAir = dragInAir<0? 0: dragInAir>1? 1: dragInAir; + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + flak = ConfigUtils.configInt(config, "FlakParticles", flak); + flakParticles = ConfigUtils.configString(config, "FlakParticleType", flakParticles); + setEntitiesOnFire = ConfigUtils.configBool(config, "SetEntitiesOnFire", setEntitiesOnFire); + hitSoundEnable = ConfigUtils.configBool(config, "HitSoundEnable", hitSoundEnable); + entityHitSoundEnable = ConfigUtils.configBool(config, "EntityHitSoundEnable", entityHitSoundEnable); + hitSound = ConfigUtils.configSound(contentPack, config, "HitSound", hitSound); + hitSoundRange = ConfigUtils.configFloat(config, "HitSoundRange", hitSoundRange); + //Dont know why its like this + if (config.containsKey("Penetrates")) { + boolean pens = Boolean.parseBoolean(config.get("Penetrates")); + penetratingPower = pens ? 1F : 0.7F; } - else if(split[0].equals("DragInWater")) - { - dragInWater = Float.parseFloat(split[1]); - dragInWater = dragInWater<0? 0: dragInWater>1? 1: dragInWater; - } - - else if(split[0].equals("NumBullets")) - numBullets = Integer.parseInt(split[1]); - else if(split[0].equals("Accuracy") || split[0].equals("Spread")) - bulletSpread = Float.parseFloat(split[1]); - - else if(split[0].equals("LivingProximityTrigger")) - livingProximityTrigger = Float.parseFloat(split[1]); - else if(split[0].equals("VehicleProximityTrigger")) - driveableProximityTrigger = Float.parseFloat(split[1]); - else if(split[0].equals("DamageToTriggerer")) - damageToTriggerer = Float.parseFloat(split[1]); - else if(split[0].equals("PrimeDelay") || split[0].equals("TriggerDelay")) - primeDelay = Integer.parseInt(split[1]); - else if(split[0].equals("NumExplodeParticles")) - explodeParticles = Integer.parseInt(split[1]); - else if(split[0].equals("ExplodeParticles")) - explodeParticleType = split[1]; - else if(split[0].equals("SmokeTime")) - smokeTime = Integer.parseInt(split[1]); - else if(split[0].equals("SmokeParticles")) - smokeParticleType = split[1]; - else if(split[0].equals("SmokeEffect")) - smokeEffects.add(getPotionEffect(split)); - else if(split[0].equals("SmokeRadius")) - smokeRadius = Float.parseFloat(split[1]); - else if(split[0].equals("VLS") || split[0].equals("HasDeadZone")) - VLS = Boolean.parseBoolean(split[1]); - else if(split[0].equals("VLSTime") || split[0].equals("DeadZoneTime")) - VLSTime = Integer.parseInt(split[1]); - else if(split[0].equals("FixedTrackDirection")) - fixedDirection = Boolean.parseBoolean(split[1]); - else if(split[0].equals("GuidedTurnRadius")) - turnRadius = Float.parseFloat(split[1]); - else if(split[0].equals("GuidedPhaseSpeed")) - trackPhaseSpeed = Float.parseFloat(split[1]); - else if(split[0].equals("GuidedPhaseTurnSpeed")) - trackPhaseTurn = Float.parseFloat(split[1]); - else if(split[0].equals("BoostParticle")) - boostPhaseParticle = split[1]; - else if(split[0].equals("Torpedo")) - torpedo = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("Bomb")) + penetratingPower = ConfigUtils.configFloat(config, "Penetration", "PenetratingPower", penetratingPower); + penetrationDecay = ConfigUtils.configFloat(config, "PenetrationDecay", penetrationDecay); + dragInAir = ConfigUtils.configFloat(config, "DragInAir", dragInAir); + dragInAir = dragInAir<0? 0: dragInAir>1? 1: dragInAir; + dragInWater = ConfigUtils.configFloat(config, "DragInWater", dragInWater); + dragInWater = dragInWater<0? 0: dragInWater>1? 1: dragInWater; + numBullets = ConfigUtils.configInt(config, "NumBullets", numBullets); + bulletSpread = ConfigUtils.configFloat(config, "Accuracy", "Spread", bulletSpread); + livingProximityTrigger = ConfigUtils.configFloat(config, "LivingProximityTrigger", livingProximityTrigger); + driveableProximityTrigger = ConfigUtils.configFloat(config, "VehicleProximityTrigger", driveableProximityTrigger); + damageToTriggerer = ConfigUtils.configFloat(config, "DamageToTriggerer", damageToTriggerer); + primeDelay = ConfigUtils.configInt(config, "PrimeDelay", "TriggerDelay", primeDelay); + explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); + explodeParticleType = ConfigUtils.configString(config, "ExplodeParticles", explodeParticleType); + smokeTime = ConfigUtils.configInt(config, "SmokeTime", smokeTime); + smokeParticleType = ConfigUtils.configString(config, "SmokeParticles", smokeParticleType); + //todo this is prob broken + if (config.containsKey("SmokeEffect")) + smokeEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "SmokeEffect"))); +// else if(split[0].equals("SmokeEffect")) +// smokeEffects.add(getPotionEffect(split)); + + smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); + VLS = ConfigUtils.configBool(config, "VLS", "HasDeadZone", VLS); + VLSTime = ConfigUtils.configInt(config, "DeadZoneTime", VLSTime); + fixedDirection = ConfigUtils.configBool(config, "FixedTrackDirection", fixedDirection); + turnRadius = ConfigUtils.configFloat(config, "GuidedTurnRadius", turnRadius); + trackPhaseSpeed = ConfigUtils.configFloat(config, "GuidedPhaseSpeed", trackPhaseSpeed); + trackPhaseTurn = ConfigUtils.configFloat(config, "GuidedPhaseTurnSpeed", trackPhaseTurn); + boostPhaseParticle = ConfigUtils.configString(config, "BoostParticle", boostPhaseParticle); + torpedo = ConfigUtils.configBool(config, "Torpedo", torpedo); + if (config.containsKey("Bomb")) weaponType = EnumWeaponType.BOMB; - else if(split[0].equals("Shell")) + if (config.containsKey("Shell")) weaponType = EnumWeaponType.SHELL; - else if(split[0].equals("Missile")) + if (config.containsKey("Missile")) weaponType = EnumWeaponType.MISSILE; - else if(split[0].equals("WeaponType")) - weaponType = EnumWeaponType.valueOf(split[1].toUpperCase()); - - else if(split[0].equals("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnToVehicles")) - lockOnToVehicles = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnToPlanes")) - lockOnToPlanes = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnToMechas")) - lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnToPlayers")) - lockOnToPlayers = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnToLivings")) - lockOnToLivings = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("MaxLockOnAngle")) - maxLockOnAngle = Float.parseFloat(split[1]); - else if(split[0].equals("LockOnForce") || split[0].equals("TurningForce")) - lockOnForce = Float.parseFloat(split[1]); - else if(split[0].equals("MaxDegreeOfLockOnMissile")) - maxDegreeOfMissile = Integer.parseInt(split[1]); - else if(split[0].equals("TickStartHoming")) - tickStartHoming = Integer.parseInt(split[1]); - else if(split[0].equals("EnableSACLOS")) - enableSACLOS = Boolean.parseBoolean(split[1]); - else if(split[0].equals("MaxDegreeOFSACLOS")) - maxDegreeOfSACLOS = Integer.parseInt(split[1]); - else if(split[0].equals("MaxRangeOfMissile")) - maxRangeOfMissile = Integer.parseInt(split[1]); - else if(split[0].equals("CanSpotEntityDriveable")) - canSpotEntityDriveable = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("ShootForSettingPos")) - shootForSettingPos = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("ShootForSettingPosHeight")) - shootForSettingPosHeight = Integer.parseInt(split[1]); - else if(split[0].equals("IsDoTopAttack")) - isDoTopAttack = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("KnockbackModifier")) - knockbackModifier = Float.parseFloat(split[1]); - - - - else if(split[0].equals("PotionEffect")) - hitEffects.add(getPotionEffect(split)); - else if(split[0].equals("ManualGuidance")) - manualGuidance = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LaserGuidance")) - laserGuidance = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("LockOnFuse")) - lockOnFuse = Integer.parseInt(split[1]); - else if(split[0].equals("MaxRange")) - maxRange = Integer.parseInt(split[1]); - - else if(split[0].equals("FancyDescription")) - fancyDescription = Boolean.parseBoolean(split[1]); - else if(split[0].equals("BulletSpeedMultiplier")) - speedMultiplier = Float.parseFloat(split[1]); - } - catch (Exception e) - { + if (config.containsKey("WeaponType")) + weaponType = EnumWeaponType.valueOf(config.get("WeaponType").toUpperCase()); + if (config.containsKey("LockOnToDriveables")) + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables").toLowerCase()); + lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); + lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); + lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); + lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); + lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); + maxLockOnAngle = ConfigUtils.configFloat(config, "MaxLockOnAngle", maxLockOnAngle); + lockOnForce = ConfigUtils.configFloat(config, "LockOnForce", "TurningForce", lockOnForce); + maxDegreeOfMissile = ConfigUtils.configInt(config, "MaxDegreeOfLockOnMissile", maxDegreeOfMissile); + tickStartHoming = ConfigUtils.configInt(config, "TickStartHoming", tickStartHoming); + enableSACLOS = ConfigUtils.configBool(config, "EnableSACLOS", enableSACLOS); + maxDegreeOfSACLOS = ConfigUtils.configInt(config, "MaxDegreeOFSACLOS", maxDegreeOfSACLOS); + maxRangeOfMissile = ConfigUtils.configInt(config, "MaxRangeOfMissile", maxRangeOfMissile); + canSpotEntityDriveable = ConfigUtils.configBool(config, "CanSpotEntityDriveable", canSpotEntityDriveable); + shootForSettingPos = ConfigUtils.configBool(config, "ShootForSettingPos", shootForSettingPos); + shootForSettingPosHeight = ConfigUtils.configInt(config, "ShootForSettingPosHeight", shootForSettingPosHeight); + isDoTopAttack = ConfigUtils.configBool(config, "IsDoTopAttack", isDoTopAttack); + knockbackModifier = ConfigUtils.configFloat(config, "KnockbackModifier", knockbackModifier); + if (config.containsKey("PotionEffect")) + hitEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "PotionEffect"))); + //todo verify +// else if(split[0].equals("PotionEffect")) +// hitEffects.add(getPotionEffect(split)); + + manualGuidance = ConfigUtils.configBool(config, "ManualGuidance", manualGuidance); + laserGuidance = ConfigUtils.configBool(config, "LaserGuidance", laserGuidance); + lockOnFuse = ConfigUtils.configInt(config, "LockOnFuse", lockOnFuse); + maxRange = ConfigUtils.configInt(config, "MaxRange", maxRange); + fancyDescription = ConfigUtils.configBool(config, "FancyDescription", fancyDescription); + speedMultiplier = ConfigUtils.configFloat(config, "BulletSpeedMultiplier", speedMultiplier); + + } catch (Exception e) { FlansMod.log("Reading bullet file failed."); if(FlansMod.printStackTrace) - { e.printStackTrace(); - } } } diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index cffefb24..44b284c5 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -1,7 +1,10 @@ package com.flansmod.common.guns; import java.util.ArrayList; +import java.util.HashMap; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.potion.PotionEffect; @@ -116,8 +119,7 @@ public class GrenadeType extends ShootableType * TODO : Give guns a "can get ammo from bag" variable. Stops miniguns and such getting ammo */ public int numClips = 0; - public GrenadeType(TypeFile file) - { + public GrenadeType(TypeFile file) { super(file); grenades.add(this); } @@ -129,151 +131,90 @@ protected void preRead(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if(split[0].equals("MeleeDamage")) - meleeDamage = Integer.parseInt(split[1]); - + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + meleeDamage = ConfigUtils.configInt(config, "MeleeDamage", meleeDamage); //Grenade Throwing - else if(split[0].equals("ThrowDelay")) - throwDelay = Integer.parseInt(split[1]); - else if(split[0].equals("ThrowSound")) - throwSound = split[1]; - else if(split[0].equals("DropItemOnThrow")) - dropItemOnThrow = split[1]; - else if(split[0].equals("CanThrow")) - canThrow = Boolean.parseBoolean(split[1]); + throwDelay = ConfigUtils.configInt(config, "ThrowDelay", throwDelay); + meleeDamage = ConfigUtils.configInt(config, "MeleeDamage", meleeDamage); + throwSound = ConfigUtils.configString(config, "ThrowSound", throwSound); + dropItemOnThrow = ConfigUtils.configString(config, "DropItemOnThrow", dropItemOnThrow); + canThrow = ConfigUtils.configBool(config, "CanThrow", canThrow); //Grenade Physics - else if(split[0].equals("PenetratesEntities")) - penetratesEntities = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("PenetratesBlocks")) - penetratesBlocks = Boolean.parseBoolean(split[1].toLowerCase()); - - else if(split[0].equals("BounceSound")) - bounceSound = split[1]; - else if(split[0].equals("Sticky")) - sticky = Boolean.parseBoolean(split[1]); - else if(split[0].equals("LivingProximityTrigger")) - livingProximityTrigger = Float.parseFloat(split[1]); - else if(split[0].equals("VehicleProximityTrigger")) - driveableProximityTrigger = Float.parseFloat(split[1]); - else if(split[0].equals("DamageToTriggerer")) - damageToTriggerer = Float.parseFloat(split[1]); - else if(split[0].equals("DetonateWhenShot")) - detonateWhenShot = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("PrimeDelay") || split[0].equals("TriggerDelay")) - primeDelay = Integer.parseInt(split[1]); - - else if(split[0].equals("StickToThrower")) - stickToThrower = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("StickToEntity")) - stickToEntity = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("StickToDriveable")) - stickToDriveable = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("StickToEntityAfter")) - stickToEntityAfter = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("AllowStickSound")) - allowStickSound = Boolean.parseBoolean(split[1]); - - else if(split[0].equals("StickSoundRange")) - stickSoundRange = Integer.parseInt(split[1]); - - else if(split[0].equals("StickSound")) - { - stickSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "sound", split[1]); - } - - else if(split[0].equals("NumExplodeParticles")) - explodeParticles = Integer.parseInt(split[1]); - else if(split[0].equals("ExplodeParticles")) - explodeParticleType = split[1]; - else if(split[0].equals("SmokeTime")) - smokeTime = Integer.parseInt(split[1]); - else if(split[0].equals("SmokeParticles")) - smokeParticleType = split[1]; - else if(split[0].equals("SmokeEffect")) - smokeEffects.add(getPotionEffect(split)); - else if(split[0].equals("SmokeRadius")) - smokeRadius = Float.parseFloat(split[1]); - else if(split[0].equals("SpinWhenThrown")) - spinWhenThrown = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Remote")) - remote = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("FlashBang")) - flashBang = Boolean.parseBoolean(split[1]); - else if(split[0].equals("FlashTime")) - flashTime = Integer.parseInt(split[1]); - else if(split[0].equals("FlashRange")) - flashRange = Integer.parseInt(split[1]); - else if(split[0].equals("FlashSoundEnable")) - flashSoundEnable = Boolean.parseBoolean(split[1]); - else if(split[0].equals("FlashSoundRange")) - flashSoundRange = Integer.parseInt(split[1]); - else if(split[0].equals("FlashSound")) - { - flashSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "sound", split[1]); - } - else if(split[0].equals("FlashDamageEnable")) - flashDamageEnable = Boolean.parseBoolean(split[1]); - else if(split[0].equals("FlashDamage")) - flashDamage = Float.parseFloat(split[1]); - else if(split[0].equals("FlashEffects")) - flashEffects = Boolean.parseBoolean(split[1]); - else if(split[0].equals("FlashEffectsID")) - flashEffectsID = Integer.parseInt(split[1]); - else if(split[0].equals("FlashEffectsDuration")) - flashEffectsDuration = Integer.parseInt(split[1]); - else if(split[0].equals("FlashEffectsLevel")) - flashEffectsLevel = Integer.parseInt(split[1]); - - else if(split[0].equals("MotionSensor")) - motionSensor = Boolean.parseBoolean(split[1]); - else if(split[0].equals("MotionSensorRange")) - motionSensorRange = Float.parseFloat(split[1]); - else if(split[0].equals("MotionSoundRange")) - motionSoundRange = Float.parseFloat(split[1]); - else if(split[0].equals("MotionSound")) - { - motionSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "sound", split[1]); - } - else if(split[0].equals("MotionTime")) - motionTime = Integer.parseInt(split[1]); + penetratesEntities = ConfigUtils.configBool(config, "PenetratesEntities", penetratesEntities); + penetratesBlocks = ConfigUtils.configBool(config, "PenetratesBlocks", penetratesBlocks); + + bounceSound = ConfigUtils.configString(config, "BounceSound", bounceSound); + livingProximityTrigger = ConfigUtils.configFloat(config, "LivingProximityTrigger", livingProximityTrigger); + driveableProximityTrigger = ConfigUtils.configFloat(config, "VehicleProximityTrigger", driveableProximityTrigger); + damageToTriggerer = ConfigUtils.configFloat(config, "DamageToTriggerer", damageToTriggerer); + primeDelay = ConfigUtils.configInt(config, "PrimeDelay", "TriggerDelay", primeDelay); + + //Sticky settings + sticky = ConfigUtils.configBool(config, "Sticky", sticky); + stickToThrower = ConfigUtils.configBool(config, "StickToThrower", stickToThrower); + stickToEntity = ConfigUtils.configBool(config, "StickToEntity", stickToEntity); + stickToDriveable = ConfigUtils.configBool(config, "StickToDriveable", stickToDriveable); + stickToEntityAfter = ConfigUtils.configBool(config, "StickToEntityAfter", stickToEntityAfter); + allowStickSound = ConfigUtils.configBool(config, "AllowStickSound", allowStickSound); + stickSoundRange = ConfigUtils.configInt(config, "StickSoundRange", stickSoundRange); + stickSound = ConfigUtils.configSound(contentPack, config, "StickSound", stickSound); + + explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); + explodeParticleType = ConfigUtils.configString(config, "ExplodeParticles", explodeParticleType); + smokeTime = ConfigUtils.configInt(config, "SmokeTime", smokeTime); + explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); + smokeParticleType = ConfigUtils.configString(config, "SmokeParticles", smokeParticleType); + if(config.containsKey("SmokeEffect")) + smokeEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "SmokeEffect"))); + smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); + spinWhenThrown = ConfigUtils.configBool(config, "SpinWhenThrown", spinWhenThrown); + remote = ConfigUtils.configBool(config, "Remote", remote); + + flashBang = ConfigUtils.configBool(config, "FlashBang", flashBang); + flashTime = ConfigUtils.configInt(config, "FlashTime", flashTime); + flashRange = ConfigUtils.configInt(config, "FlashRange", flashRange); + flashSoundEnable = ConfigUtils.configBool(config, "FlashSoundEnable", flashSoundEnable); + flashSoundRange = ConfigUtils.configInt(config, "FlashSoundRange", flashSoundRange); + flashSound = ConfigUtils.configSound(contentPack, config, "FlashSound", flashSound); + flashDamageEnable = ConfigUtils.configBool(config, "FlashDamageEnable", flashDamageEnable); + flashDamage = ConfigUtils.configFloat(config, "FlashDamage", flashDamage); + flashEffects = ConfigUtils.configBool(config, "FlashEffects", flashEffects); + flashEffectsID = ConfigUtils.configInt(config, "FlashEffectsID", flashEffectsID); + flashEffectsDuration = ConfigUtils.configInt(config, "FlashEffectsDuration", flashEffectsDuration); + flashEffectsLevel = ConfigUtils.configInt(config, "FlashEffectsLevel", flashEffectsLevel); + flashBang = ConfigUtils.configBool(config, "FlashBang", flashBang); + + motionSensor = ConfigUtils.configBool(config, "MotionSensor", motionSensor); + motionSensorRange = ConfigUtils.configFloat(config, "MotionSensorRange", motionSensorRange); + motionSoundRange = ConfigUtils.configFloat(config, "MotionSoundRange", motionSoundRange); + motionSound = ConfigUtils.configSound(contentPack, config, "MotionSound", motionSound); + motionTime = ConfigUtils.configInt(config, "MotionTime", motionTime); //Deployable Bag Stuff - else if(split[0].equals("DeployableBag")) + if(config.containsKey("DeployableBag")) isDeployableBag = true; - else if(split[0].equals("NumUses")) - numUses = Integer.parseInt(split[1]); - else if(split[0].equals("HealAmount")) - healAmount = Float.parseFloat(split[1]); - else if(split[0].equals("AddPotionEffect") || split[0].equals("PotionEffect")) - potionEffects.add(getPotionEffect(split)); - else if(split[0].equals("NumClips")) - numClips = Integer.parseInt(split[1]); - } - catch (Exception e) - { + numUses = ConfigUtils.configInt(config, "NumUses", numUses); + healAmount = ConfigUtils.configFloat(config, "HealAmount", healAmount); + if(config.containsKey("AddPotionEffect") || config.containsKey("PotionEffect")) { + String key = "AddPotionEffect"; + if (config.containsKey("PotionEffect")) + key = "PotionEffect"; + potionEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, key))); + } + + numClips = ConfigUtils.configInt(config, "NumClips", numClips); + } catch (Exception e) { FlansMod.log("Reading grenade file failed."); e.printStackTrace(); } } - public static GrenadeType getGrenade(String s) - { - for(GrenadeType grenade : grenades) - { + public static GrenadeType getGrenade(String s) { + for(GrenadeType grenade : grenades) { if(grenade.shortName.equals(s)) return grenade; } diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index f59bfa6f..7530990b 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -6,6 +6,8 @@ import com.flansmod.common.paintjob.Paintjob; import com.flansmod.common.types.TypeFile; import com.flansmod.common.vector.Vector3f; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -503,374 +505,281 @@ public void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); - try { - if (split[0].equals("Damage")) - damage = Float.parseFloat(split[1]); - else if (split[0].equals("MeleeDamage")) { - meleeDamage = Float.parseFloat(split[1]); - if (meleeDamage > 0F) - secondaryFunction = EnumSecondaryFunction.MELEE; - } else if (split[0].equals("MeleeDamageDriveableModifier")) { - meleeDamageDriveableModifier = Float.parseFloat(split[1]); - } else if (split[0].equals("CounterRecoilForce")) - recoilCounterCoefficient = Float.parseFloat(split[1]); - else if (split[0].equals("CounterRecoilForceSneaking")) - recoilCounterCoefficientSneaking = Float.parseFloat(split[1]); - else if (split[0].equals("CounterRecoilForceSprinting")) - recoilCounterCoefficientSprinting = Float.parseFloat(split[1]); - else if (split[0].equals("SneakSpreadModifier")) - sneakSpreadMultiplier = Float.parseFloat(split[1]); - else if (split[0].equals("SprintSpreadModifier")) - sprintSpreadMultiplier = Float.parseFloat(split[1]); - else if (split[0].equals("CanForceReload")) - canForceReload = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowRearm")) - allowRearm = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("ReloadTime")) - reloadTime = Integer.parseInt(split[1]); - - //Recoil - else if (split[0].equals("Recoil")) - recoilPitch = Float.parseFloat(split[1]); - else if (split[0].equals("FancyRecoil")) { - try { - if (split.length > 1) { - recoil.read(split); - useFancyRecoil = true; - } - } catch (Exception e) { - useFancyRecoil = false; - FlansMod.log("Failed to read fancy recoil for " + shortName); - e.printStackTrace(); + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + + damage = ConfigUtils.configFloat(config, "Damage", damage); + if (config.containsKey("MeleeDamage")) { + meleeDamage = Float.parseFloat(config.get("MeleeDamage")); + if (meleeDamage > 0F) + secondaryFunction = EnumSecondaryFunction.MELEE; + } + meleeDamageDriveableModifier = ConfigUtils.configFloat(config, "MeleeDamageDriveableModifier", meleeDamageDriveableModifier); + recoilCounterCoefficient = ConfigUtils.configFloat(config, "CounterRecoilForce", recoilCounterCoefficient); + recoilCounterCoefficientSneaking = ConfigUtils.configFloat(config, "CounterRecoilForceSneaking", recoilCounterCoefficientSneaking); + recoilCounterCoefficientSprinting = ConfigUtils.configFloat(config, "CounterRecoilForceSprinting", recoilCounterCoefficientSprinting); + sneakSpreadMultiplier = ConfigUtils.configFloat(config, "SneakSpreadModifier", sneakSpreadMultiplier); + sprintSpreadMultiplier = ConfigUtils.configFloat(config, "SprintSpreadModifier", sprintSpreadMultiplier); + canForceReload = ConfigUtils.configBool(config, "CanForceReload", canForceReload); + allowRearm = ConfigUtils.configBool(config, "AllowRearm", allowRearm); + reloadTime = ConfigUtils.configInt(config, "ReloadTime", reloadTime); + + //Recoil + recoilPitch = ConfigUtils.configFloat(config, "Recoil", recoilPitch); + if (config.containsKey("FancyRecoil")) { + String[] split = ConfigUtils.getSplitFromKey(config, "FancyRecoil"); + try { + if (split.length > 1) { + recoil.read(split); + useFancyRecoil = true; } + } catch (Exception e) { + useFancyRecoil = false; + FlansMod.log("Failed to read fancy recoil for " + shortName); + e.printStackTrace(); } - else if (split[0].equals("RecoilYaw")) - recoilYaw = Float.parseFloat(split[1]) / 10; - else if (split[0].equals("RandomRecoilRange")) - rndRecoilPitchRange = Float.parseFloat(split[1]); - else if (split[0].equals("RandomRecoilYawRange")) - rndRecoilYawRange = Float.parseFloat(split[1]); - else if (split[0].equals("DecreaseRecoil")) - decreaseRecoilPitch = Float.parseFloat(split[1]); - else if (split[0].equals("DecreaseRecoilYaw")) - decreaseRecoilYaw = Float.parseFloat(split[1]) > 0 ? Float.parseFloat(split[1]) : 0.5F; - else if (split[0].equals("RecoilSneakingMultiplier")) - recoilSneakingMultiplier = Float.parseFloat(split[1]); - else if (split[0].equals("RecoilSprintingMultiplier")) - recoilSprintingMultiplier = Float.parseFloat(split[1]); - else if (split[0].equals("RecoilSneakingMultiplierYaw")) - recoilSneakingMultiplierYaw = Float.parseFloat(split[1]); - else if (split[0].equals("RecoilSprintingMultiplierYaw")) - recoilSprintingMultiplierYaw = Float.parseFloat(split[1]); - else if (split[0].equals("Accuracy") || split[0].equals("Spread")) - defaultSpread = bulletSpread = Float.parseFloat(split[1]); - else if (split[0].equals("ADSSpreadModifier")) - adsSpreadModifier = Float.parseFloat(split[1]); - else if (split[0].equals("ADSSpreadModifierShotgun")) - adsSpreadModifierShotgun = Float.parseFloat(split[1]); - else if (split[0].equals("NumBullets")) - numBullets = Integer.parseInt(split[1]); - else if (split[0].equals("AllowNumBulletsByBulletType")) - allowNumBulletsByBulletType = Boolean.parseBoolean(split[1]); - else if (split[0].equals("AllowSpreadByBullet")) - allowSpreadByBullet = Boolean.parseBoolean(split[1]); - else if (split[0].equals("CanLockAngle")) - canLockOnAngle = Integer.parseInt(split[1]); - else if (split[0].equals("LockOnSoundTime")) - lockOnSoundTime = Integer.parseInt(split[1]); - else if (split[0].equals("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToVehicles")) - lockOnToVehicles = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToPlanes")) - lockOnToPlanes = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToMechas")) - lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToPlayers")) - lockOnToPlayers = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("LockOnToLivings")) - lockOnToLivings = Boolean.parseBoolean(split[1].toLowerCase()); - - else if (split[0].equals("ConsumeGunOnUse")) - consumeGunUponUse = Boolean.parseBoolean(split[1]); - else if (split[0].equals("ShowCrosshair")) - showCrosshair = Boolean.parseBoolean(split[1]); - else if (split[0].equals("DropItemOnShoot")) - dropItemOnShoot = split[1]; - else if (split[0].equals("NumBurstRounds")) - numBurstRounds = Integer.parseInt(split[1]); - else if (split[0].equals("MinigunStartSpeed")) - minigunStartSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("ItemUseAction")) - itemUseAction = EnumAction.valueOf(split[1].toLowerCase()); - else if (split[0].equals("HipFireWhileSprinting")) - hipFireWhileSprinting = Boolean.parseBoolean(split[1].toLowerCase()) ? 1 : 2; - else if (split[0].equals("MaxRangeLockOn")) - maxRangeLockOn = Integer.parseInt(split[1]); - - - //Sounds - else if (split[0].equals("ShootDelay")) - shootDelay = Float.parseFloat(split[1]); - else if (split[0].equals("RoundsPerMin")) - roundsPerMin = Float.parseFloat(split[1]); - else if (split[0].equals("SoundLength")) - shootSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("DistortSound")) - distortSound = split[1].equals("True"); - else if (split[0].equals("IdleSoundRange")) - idleSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("MeleeSoundRange")) - meleeSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("ReloadSoundRange")) - reloadSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("GunSoundRange")) - gunSoundRange = Integer.parseInt(split[1]); - else if (split[0].equals("ShootSound")) { - shootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("BulletInsertSound")) { - bulletInsert = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("ActionSound")) { - actionSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("LastShootSound")) { - lastShootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("SuppressedShootSound")) { - suppressedShootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("ReloadSound")) { - reloadSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("EmptyReloadSound")) { - reloadSoundOnEmpty = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("EmptyClickSound")) { - clickSoundOnEmpty = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("EmptyClickSoundRepeated")) { - clickSoundOnEmptyRepeated = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("IdleSound")) { - idleSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("IdleSoundLength")) - idleSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("MeleeSound")) { - meleeSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); + } + recoilYaw = ConfigUtils.configFloat(config, "RecoilYaw", recoilYaw) / 10; + rndRecoilPitchRange = ConfigUtils.configFloat(config, "RandomRecoilRange", rndRecoilPitchRange); + rndRecoilYawRange = ConfigUtils.configFloat(config, "RandomRecoilYawRange", rndRecoilYawRange); + decreaseRecoilPitch = ConfigUtils.configFloat(config, "DecreaseRecoil", decreaseRecoilPitch); + decreaseRecoilYaw = ConfigUtils.configFloat(config, "DecreaseRecoilYaw", decreaseRecoilYaw); + decreaseRecoilYaw = decreaseRecoilYaw > 0 ? decreaseRecoilYaw : 0.5F; + recoilSneakingMultiplier = ConfigUtils.configFloat(config, "RecoilSneakingMultiplier", recoilSneakingMultiplier); + recoilSprintingMultiplier = ConfigUtils.configFloat(config, "RecoilSprintingMultiplier", recoilSprintingMultiplier); + recoilSneakingMultiplierYaw = ConfigUtils.configFloat(config, "RecoilSneakingMultiplierYaw", recoilSneakingMultiplierYaw); + recoilSprintingMultiplierYaw = ConfigUtils.configFloat(config, "RecoilSprintingMultiplierYaw", recoilSprintingMultiplierYaw); + defaultSpread = ConfigUtils.configFloat(config, "Accuracy", "Spread", defaultSpread); + adsSpreadModifier = ConfigUtils.configFloat(config, "ADSSpreadModifier", adsSpreadModifier); + adsSpreadModifierShotgun = ConfigUtils.configFloat(config, "ADSSpreadModifierShotgun", adsSpreadModifierShotgun); + numBullets = ConfigUtils.configInt(config, "NumBullets", numBullets); + allowNumBulletsByBulletType = ConfigUtils.configBool(config, "AllowNumBulletsByBulletType", allowNumBulletsByBulletType); + allowSpreadByBullet = ConfigUtils.configBool(config, "AllowSpreadByBullet", allowSpreadByBullet); + canLockOnAngle = ConfigUtils.configInt(config, "CanLockAngle", canLockOnAngle); + + //Lock on settings + lockOnSoundTime = ConfigUtils.configInt(config, "LockOnSoundTime", lockOnSoundTime); + if (config.containsKey("LockOnToDriveables")) + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables")); + lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); + lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); + lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); + lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); + lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); + maxRangeLockOn = ConfigUtils.configInt(config, "MaxRangeLockOn", maxRangeLockOn); + + consumeGunUponUse = ConfigUtils.configBool(config, "ConsumeGunOnUse", consumeGunUponUse); + showCrosshair = ConfigUtils.configBool(config, "ShowCrosshair", showCrosshair); + dropItemOnShoot = config.get("DropItemOnShoot"); + numBurstRounds = ConfigUtils.configInt(config, "NumBurstRounds", numBurstRounds); + minigunStartSpeed = ConfigUtils.configFloat(config, "MinigunStartSpeed", minigunStartSpeed); + if (config.containsKey("ItemUseAction")) { + itemUseAction = EnumAction.valueOf(config.get("ItemUseAction").toLowerCase()); + } + if (config.containsKey("HipFireWhileSprinting")) + hipFireWhileSprinting = Boolean.parseBoolean(config.get("HipFireWhileSprinting").toLowerCase()) ? 1 : 2; + + //Sounds + shootDelay = ConfigUtils.configFloat(config, "ShootDelay", shootDelay); + roundsPerMin = ConfigUtils.configFloat(config, "RoundsPerMin", roundsPerMin); + shootSoundLength = ConfigUtils.configInt(config, "SoundLength", shootSoundLength); + distortSound = ConfigUtils.configBool(config, "DistortSound", distortSound); + idleSoundRange = ConfigUtils.configInt(config, "IdleSoundRange", idleSoundRange); + meleeSoundRange = ConfigUtils.configInt(config, "MeleeSoundRange", meleeSoundRange); + reloadSoundRange = ConfigUtils.configInt(config, "ReloadSoundRange", reloadSoundRange); + gunSoundRange = ConfigUtils.configInt(config, "GunSoundRange", gunSoundRange); + shootSound = ConfigUtils.configGunSound(contentPack, config, "ShootSound", shootSound); + bulletInsert = ConfigUtils.configGunSound(contentPack, config, "BulletInsertSound", bulletInsert); + actionSound = ConfigUtils.configGunSound(contentPack, config, "ActionSound", actionSound); + lastShootSound = ConfigUtils.configGunSound(contentPack, config, "LastShootSound", lastShootSound); + suppressedShootSound = ConfigUtils.configGunSound(contentPack, config, "SuppressedShootSound", suppressedShootSound); + reloadSound = ConfigUtils.configGunSound(contentPack, config, "ReloadSound", reloadSound); + reloadSoundOnEmpty = ConfigUtils.configGunSound(contentPack, config, "EmptyReloadSound", reloadSoundOnEmpty); + clickSoundOnEmpty = ConfigUtils.configGunSound(contentPack, config, "EmptyClickSound", clickSoundOnEmpty); + clickSoundOnEmptyRepeated = ConfigUtils.configGunSound(contentPack, config, "EmptyClickSoundRepeated", clickSoundOnEmptyRepeated); + idleSound = ConfigUtils.configGunSound(contentPack, config, "IdleSound", idleSound); + idleSoundLength = ConfigUtils.configInt(config, "IdleSoundLength", idleSoundLength); + meleeSound = ConfigUtils.configGunSound(contentPack, config, "MeleeSound", meleeSound); + + //Looping sounds + warmupSound = ConfigUtils.configGunSound(contentPack, config, "WarmupSound", warmupSound); + warmupSoundLength = ConfigUtils.configInt(config, "WarmupSoundLength", warmupSoundLength); + if (config.containsKey("LoopedSound") || config.containsKey("SpinSound")) { + String key = "LoopedSound"; + if (config.containsKey("SpinSound")) + key = "SpinSound"; + loopedSound = config.get(key); + useLoopingSounds = true; + FlansMod.proxy.loadSound(contentPack, "guns", config.get(key)); + } + loopedSound = ConfigUtils.configSound(contentPack, config, "LoopedSound", "SpinSound", loopedSound); + if (loopedSound != null && !loopedSound.isEmpty()) + useLoopingSounds = true; + loopedSoundLength = ConfigUtils.configInt(config, "LoopedSoundLength", "SpinSoundLength", loopedSoundLength); + cooldownSound = ConfigUtils.configGunSound(contentPack, config, "CooldownSound", cooldownSound); + lockOnSound = ConfigUtils.configGunSound(contentPack, config, "LockOnSound", lockOnSound); + distantShootSound = ConfigUtils.configGunSound(contentPack, config, "DistantSound", distantShootSound); + distantSoundRange = ConfigUtils.configInt(config, "DistantSoundRange", distantSoundRange); + + + //Modes and zoom settings + hasVariableZoom = ConfigUtils.configBool(config, "HasVariableZoom", hasVariableZoom); + minZoom = ConfigUtils.configFloat(config, "MinZoom", minZoom); + maxZoom = ConfigUtils.configFloat(config, "MaxZoom", maxZoom); + //TODO IS THIS REQUIRED? SAME CODE ON zoomLevel + if(maxZoom>1F) + secondaryFunction=EnumSecondaryFunction.ZOOM; + zoomAugment = ConfigUtils.configFloat(config, "ZoomAugment", zoomAugment); + if (config.containsKey("Mode")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Mode"); + mode = EnumFireMode.getFireMode(split[1]); + defaultmode = mode; + submode = new EnumFireMode[split.length - 1]; + for (int i = 0; i < submode.length; i++) { + submode[i] = EnumFireMode.getFireMode(split[1 + i]); } + } + if (config.containsKey("Scope")) { + hasScopeOverlay = true; + if (config.get("Scope").equalsIgnoreCase("None")) + hasScopeOverlay = false; + else defaultScopeTexture = config.get("Scope"); + } + allowNightVision = ConfigUtils.configBool(config, "AllowNightVision", allowNightVision); + zoomLevel = ConfigUtils.configFloat(config, "ZoomLevel", zoomLevel); + if (zoomLevel > 1F) + secondaryFunction = EnumSecondaryFunction.ZOOM; - //Looping sounds - else if (split[0].equals("WarmupSound")) { - warmupSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("WarmupSoundLength")) - warmupSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("LoopedSound") || split[0].equals("SpinSound")) { - loopedSound = split[1]; - useLoopingSounds = true; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("LoopedSoundLength") || split[0].equals("SpinSoundLength")) - loopedSoundLength = Integer.parseInt(split[1]); - else if (split[0].equals("CooldownSound")) { - cooldownSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("LockOnSound")) { - lockOnSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("DistantSound")) { - distantShootSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "guns", split[1]); - } else if (split[0].equals("DistantSoundRange")) { - distantSoundRange = Integer.parseInt(split[1]); - } + FOVFactor = ConfigUtils.configFloat(config, "FOVZoomLevel", FOVFactor); + if (FOVFactor > 1F) + secondaryFunction = EnumSecondaryFunction.ADS_ZOOM; - //Modes and zoom settings + deployable = ConfigUtils.configBool(config, "Deployable", deployable); - else if (split[0].equals("HasVariableZoom")){ - hasVariableZoom = Boolean.parseBoolean(split[1]); - } - else if (split[0].equals("MinZoom")) { - minZoom = Float.parseFloat(split[1]); - } - else if (split[0].equals("MaxZoom")) { - maxZoom = Float.parseFloat(split[1]); - if(maxZoom>1F) - secondaryFunction=EnumSecondaryFunction.ZOOM; - } - else if (split[0].equals("ZoomAugment")) { - zoomAugment = Float.parseFloat(split[1]); - } + if (FMLCommonHandler.instance().getSide().isClient() && deployable && config.containsKey("DeployedModel")) { + deployableModel = FlansMod.proxy.loadModel(config.get("DeployedModel"), shortName, ModelMG.class); + deployableModelString = config.get("DeployedModel"); + } + if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("Model"))) { + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelGun.class); + } + if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("CasingModel"))) { + casingModel = FlansMod.proxy.loadModel(config.get("CasingModel"), shortName, ModelCasing.class); + casingModelString = config.get("CasingModel"); + } - else if (split[0].equals("Mode")) { - mode = EnumFireMode.getFireMode(split[1]); - defaultmode = mode; - submode = new EnumFireMode[split.length - 1]; - for (int i = 0; i < submode.length; i++) { - submode[i] = EnumFireMode.getFireMode(split[1 + i]); - } - } else if (split[0].equals("Scope")) { - hasScopeOverlay = true; - if (split[1].equals("None")) - hasScopeOverlay = false; - else defaultScopeTexture = split[1]; - } else if (split[0].equals("AllowNightVision")) { - allowNightVision = Boolean.parseBoolean(split[1]); - } else if (split[0].equals("ZoomLevel")) { - zoomLevel = Float.parseFloat(split[1]); - if (zoomLevel > 1F) - secondaryFunction = EnumSecondaryFunction.ZOOM; - } else if (split[0].equals("FOVZoomLevel")) { - FOVFactor = Float.parseFloat(split[1]); - if (FOVFactor > 1F) - secondaryFunction = EnumSecondaryFunction.ADS_ZOOM; - } else if (split[0].equals("Deployable")) - deployable = split[1].equals("True"); - else if (FMLCommonHandler.instance().getSide().isClient() && deployable && split[0].equals("DeployedModel")) { - deployableModel = FlansMod.proxy.loadModel(split[1], shortName, ModelMG.class); - deployableModelString = split[1]; - } else if (FMLCommonHandler.instance().getSide().isClient() && (split[0].equals("Model"))) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelGun.class); - else if (FMLCommonHandler.instance().getSide().isClient() && (split[0].equals("CasingModel"))) { - casingModel = FlansMod.proxy.loadModel(split[1], shortName, ModelCasing.class); - casingModelString = split[1]; - } else if (FMLCommonHandler.instance().getSide().isClient() && (split[0].equals("FlashModel"))) { - flashModel = FlansMod.proxy.loadModel(split[1], shortName, ModelFlash.class); - flashModelString = split[1]; - } else if (split[0].equals("CasingTexture")) - casingTexture = split[1]; - else if (split[0].equals("FlashTexture")) - flashTexture = split[1]; - else if (split[0].equals("MuzzleFlashParticle")) - muzzleFlashParticle = split[1]; - else if (split[0].equals("MuzzleFlashParticleSize")) - muzzleFlashParticleSize = Float.parseFloat(split[1]); - else if (split[0].equals("ShowMuzzleFlashParticle")) { - showMuzzleFlashParticles = Boolean.parseBoolean(split[1]); - useMuzzleFlashDefaults = false; - } - else if (split[0].equals("ShowMuzzleFlashParticleFirstPerson")) - showMuzzleFlashParticlesFirstPerson = Boolean.parseBoolean(split[1]); - else if (split[0].equals("MuzzleFlashParticleShoulderOffset")) - muzzleFlashParticlesShoulderOffset = new Vector3f(split[1], null); - else if (split[0].equals("MuzzleFlashParticleHandOffset")) - muzzleFlashParticlesHandOffset = new Vector3f(split[1], null); - else if (split[0].equals("ModelScale")) - modelScale = Float.parseFloat(split[1]); - else if (split[0].equals("Texture")) - texture = split[1]; - else if (split[0].equals("HitTexture")) - hitTexture = split[1]; - else if (split[0].equals("DeployedTexture")) - deployableTexture = split[1]; - else if (split[0].equals("StandBackDistance")) - standBackDist = Float.parseFloat(split[1]); - else if (split[0].equals("TopViewLimit")) - topViewLimit = -Float.parseFloat(split[1]); - else if (split[0].equals("BottomViewLimit")) - bottomViewLimit = Float.parseFloat(split[1]); - else if (split[0].equals("SideViewLimit")) - sideViewLimit = Float.parseFloat(split[1]); - else if (split[0].equals("PivotHeight")) - pivotHeight = Float.parseFloat(split[1]); - else if (split[0].equals("Ammo")) { - ShootableType type = ShootableType.getShootableType(split[1]); - if (type != null) - ammo.add(type); - } else if (split[0].equals("NumAmmoSlots") || split[0].equals("NumAmmoItemsInGun") || split[0].equals("LoadIntoGun")) - numPrimaryAmmoItems = Integer.parseInt(split[1]); - else if (split[0].equals("BulletSpeed")) - bulletSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("CanShootUnderwater")) - canShootUnderwater = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("CanSetPosition")) - canSetPosition = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("OneHanded")) { - oneHanded = Boolean.parseBoolean(split[1].toLowerCase()); - } - else if (split[0].equals("SecondaryFunction")) - secondaryFunction = EnumSecondaryFunction.get(split[1]); - else if (split[0].equals("UsableByPlayers")) - usableByPlayers = Boolean.parseBoolean(split[1]); - else if (split[0].equals("UsableByMechas")) - usableByMechas = Boolean.parseBoolean(split[1]); - - //Custom Melee Stuff - else if (split[0].equals("UseCustomMelee") && Boolean.parseBoolean(split[1])) - secondaryFunction = EnumSecondaryFunction.CUSTOM_MELEE; - else if (split[0].equals("UseCustomMeleeWhenShoot") && Boolean.parseBoolean(split[1])) - secondaryFunctionWhenShoot = EnumSecondaryFunction.CUSTOM_MELEE; - else if (split[0].equals("MeleeTime")) - meleeTime = Integer.parseInt(split[1]); - else if (split[0].equals("AddNode")) { - meleePath.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); - meleePathAngles.add(new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]))); - } else if (split[0].equals("MeleeDamagePoint") || split[0].equals("MeleeDamageOffset")) { - meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); - } + if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("FlashModel"))) { + flashModel = FlansMod.proxy.loadModel(config.get("FlashModel"), shortName, ModelFlash.class); + flashModelString = config.get("FlashModel"); + } - //Player modifiers - else if (split[0].equals("MoveSpeedModifier") || split[0].equals("Slowness")) - moveSpeedModifier = Float.parseFloat(split[1]); - else if (split[0].equals("KnockbackReduction") || split[0].equals("KnockbackModifier")) - knockbackModifier = Float.parseFloat(split[1]); - else if (split[0].equals("SwitchDelay")) - switchDelay = Float.parseFloat(split[1]); - //Attachment settings - else if (split[0].equals("AllowAllAttachments")) - allowAllAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowAttachments")) { - for (int i = 1; i < split.length; i++) { - allowedAttachments.add(AttachmentType.getAttachment(split[i])); - } - } else if (split[0].equals("AllowBarrelAttachments")) - allowBarrelAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowScopeAttachments")) - allowScopeAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowStockAttachments")) - allowStockAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowGripAttachments")) - allowGripAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowGadgetAttachments")) - allowGadgetAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowSlideAttachments")) - allowSlideAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowPumpAttachments")) - allowPumpAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("AllowAccessoryAttachments")) - allowAccessoryAttachments = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("NumGenericAttachmentSlots")) - numGenericAttachmentSlots = Integer.parseInt(split[1]); - - //Shield settings - else if (split[0].equalsIgnoreCase("shield")) { - shield = true; - shieldDamageAbsorption = Float.parseFloat(split[1]); - shieldOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); - shieldDimensions = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); - } else if (FMLCommonHandler.instance().getSide().isClient()) { - processAnimationConfigs(split); - } + casingTexture = config.get("CasingTexture"); + flashTexture = config.get("FlashTexture"); + muzzleFlashParticle = config.get("MuzzleFlashParticle"); + muzzleFlashParticleSize = ConfigUtils.configFloat(config, "MuzzleFlashParticleSize", muzzleFlashParticleSize); + showMuzzleFlashParticles = ConfigUtils.configBool(config, "ShowMuzzleFlashParticle", showMuzzleFlashParticles); + if (showMuzzleFlashParticles) + useMuzzleFlashDefaults = false; + showMuzzleFlashParticlesFirstPerson = ConfigUtils.configBool(config, "ShowMuzzleFlashParticleFirstPerson", showMuzzleFlashParticlesFirstPerson); + //todo double check + muzzleFlashParticlesShoulderOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleShoulderOffset", muzzleFlashParticlesShoulderOffset); + muzzleFlashParticlesHandOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleHandOffset", muzzleFlashParticlesHandOffset); + modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); + texture = config.get("Texture"); + hitTexture = config.get("CasingTexture"); + deployableTexture = config.get("DeployedTexture"); + topViewLimit = ConfigUtils.configFloat(config, "TopViewLimit", modelScale); + bottomViewLimit = ConfigUtils.configFloat(config, "BottomViewLimit", modelScale); + sideViewLimit = ConfigUtils.configFloat(config, "SideViewLimit", modelScale); + pivotHeight = ConfigUtils.configFloat(config, "PivotHeight", modelScale); + //todo, fix, will only work for 1 +// if (config.containsKey("Ammo")) { +// String[] munitions = config.get("Ammo").split(" "); +// for (String munition : munitions) { +// ShootableType type = ShootableType.getShootableType(munition); +// if (type != null) +// ammo.add(type); +// } +// } + for (String ammoType : config.ammos) { + ShootableType type = ShootableType.getShootableType(ammoType); + ammo.add(type); + } + numPrimaryAmmoItems = ConfigUtils.configInt(config, "NumAmmoSlots", "NumAmmoItemsInGun", "LoadIntoGun", numPrimaryAmmoItems); + bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); + canShootUnderwater = ConfigUtils.configBool(config, "CanShootUnderwater", canShootUnderwater); + canSetPosition = ConfigUtils.configBool(config, "CanSetPosition", canSetPosition); + oneHanded = ConfigUtils.configBool(config, "OneHanded", oneHanded); + if (config.containsKey("SecondaryFunction")) + secondaryFunction = EnumSecondaryFunction.get(config.get("SecondaryFunction")); + usableByPlayers = ConfigUtils.configBool(config, "UsableByPlayers", usableByPlayers); + usableByMechas = ConfigUtils.configBool(config, "UsableByMechas", usableByMechas); + + //Custom Melee Stuff + if (config.containsKey("UseCustomMelee") && Boolean.parseBoolean(config.get("UseCustomMelee"))) { + secondaryFunction = EnumSecondaryFunction.CUSTOM_MELEE; + secondaryFunction = EnumSecondaryFunction.get(config.get("SecondaryFunction")); + } + if (config.containsKey("UseCustomMeleeWhenShoot") && Boolean.parseBoolean(config.get("UseCustomMeleeWhenShoot"))) + secondaryFunctionWhenShoot = EnumSecondaryFunction.CUSTOM_MELEE; + meleeTime = ConfigUtils.configInt(config, "MeleeTime", meleeTime); + if (config.containsKey("AddNode")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddNode"); + meleePath.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + meleePathAngles.add(new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]))); + } + if (config.containsKey("MeleeDamagePoint")) { + String[] split = ConfigUtils.getSplitFromKey(config, "MeleeDamagePoint"); + meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + } else if (config.containsKey("MeleeDamageOffset")) { + String[] split = ConfigUtils.getSplitFromKey(config, "MeleeDamageOffset"); + meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + } - } catch (Exception e) { - if (split != null) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) msg.append(" ").append(s); - FlansMod.log("Reading gun file failed. " + file.name + msg); - } else { - FlansMod.log("Reading gun file failed. " + file.name); + //Player modifiers + moveSpeedModifier = ConfigUtils.configFloat(config, "MoveSpeedModifier", "Slowness", moveSpeedModifier); + knockbackModifier = ConfigUtils.configFloat(config, "KnockbackReduction", "KnockbackModifier", knockbackModifier); + switchDelay = ConfigUtils.configFloat(config, "SwitchDelay", switchDelay); + + //Attachment settings + allowAllAttachments = ConfigUtils.configBool(config, "AllowAllAttachments", allowAllAttachments); + + if (config.containsKey("AllowAttachments")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AllowAttachments"); + for (int i = 1; i < split.length; i++) { + allowedAttachments.add(AttachmentType.getAttachment(split[i])); } - if (FlansMod.printStackTrace) { - e.printStackTrace(); + } + if (config.containsKey("AllowAttachments")) { + String[] attachments = config.get("AllowAttachments").split(" "); + for (String attachment : attachments) { + allowedAttachments.add(AttachmentType.getAttachment(attachment)); } } + allowBarrelAttachments = ConfigUtils.configBool(config, "AllowBarrelAttachments", allowBarrelAttachments); + allowScopeAttachments = ConfigUtils.configBool(config, "AllowScopeAttachments", allowScopeAttachments); + allowStockAttachments = ConfigUtils.configBool(config, "AllowStockAttachments", allowStockAttachments); + allowGripAttachments = ConfigUtils.configBool(config, "AllowGripAttachments", allowGripAttachments); + allowGadgetAttachments = ConfigUtils.configBool(config, "AllowGadgetAttachments", allowGadgetAttachments); + allowSlideAttachments = ConfigUtils.configBool(config, "AllowSlideAttachments", allowSlideAttachments); + allowPumpAttachments = ConfigUtils.configBool(config, "AllowPumpAttachments", allowPumpAttachments); + allowAccessoryAttachments = ConfigUtils.configBool(config, "AllowAccessoryAttachments", allowAccessoryAttachments); + numGenericAttachmentSlots = ConfigUtils.configInt(config, "NumGenericAttachmentSlots", numGenericAttachmentSlots); + + //Shield settings + if (config.containsKey("shield")) { + String[] split = ConfigUtils.getSplitFromKey(config, "shield"); + shield = true; + shieldDamageAbsorption = Float.parseFloat(split[1]); + shieldOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); + shieldDimensions = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); + } + //TODO fix this call + if (FMLCommonHandler.instance().getSide().isClient()) { + //processAnimationConfigs(split); + } } public void processAnimationConfigs(String[] split) { diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index f0e02e14..88fb1f64 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -3,6 +3,8 @@ import com.flansmod.common.FlansMod; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -169,131 +171,82 @@ public void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); - try { - //Model and Texture - if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelBase.class); - else if (split[0].equals("Texture")) - texture = split[1]; + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); - //Item Stuff - else if (split[0].equals("StackSize") || split[0].equals("MaxStackSize")) - maxStackSize = Integer.parseInt(split[1]); - else if (split[0].equals("DropItemOnShoot")) - dropItemOnShoot = split[1]; - else if (split[0].equals("DropItemOnReload")) - dropItemOnReload = split[1]; - else if (split[0].equals("DropItemOnHit")) - dropItemOnHit = split[1]; - else if (split[0].equals("RoundsPerItem")) - roundsPerItem = Integer.parseInt(split[1]); - - //Physics - else if (split[0].equals("FallSpeed")) - fallSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("ThrowSpeed") || split[0].equals("ShootSpeed")) - throwSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("HitBoxSize")) - hitBoxSize = Float.parseFloat(split[1]); - - else if (split[0].equals("Damage")) - damageVsLiving = damageVsPlayer = damageVsEntity = damageVsPlanes = damageVsVehicles = Float.parseFloat(split[1]); - //Hit stuff - else if (split[0].equals("DamageVsLiving")) - damageVsLiving = Float.parseFloat(split[1]); - else if (split[0].equals("DamageVsPlayer")) { - damageVsPlayer = Float.parseFloat(split[1]); - readDamageVsPlayer = true; - } else if (split[0].equals("DamageVsEntity")) { - damageVsEntity = Float.parseFloat(split[1]); - readDamageVsEntity = true; - } else if (split[0].equals("DamageVsVehicles")) { - damageVsVehicles = Float.parseFloat(split[1]); - } else if (split[0].equals("DamageVsPlanes")) { - damageVsPlanes = Float.parseFloat(split[1]); - readDamageVsPlanes = true; - } else if (split[0].equals("IgnoreArmorProbability")) - ignoreArmorProbability = Float.parseFloat(split[1]); - else if (split[0].equals("IgnoreArmorDamageFactor")) - ignoreArmorDamageFactor = Float.parseFloat(split[1]); - - else if (split[0].equals("BreaksGlass")) - breaksGlass = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Bounciness")) - bounciness = Float.parseFloat(split[1]); - - else if (split[0].equals("HasLight")) - hasLight = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("HasDynamicLight")) - hasDynamicLight = Boolean.parseBoolean(split[1].toLowerCase()); - - //Detonation conditions etc - else if (split[0].equals("Fuse")) - fuse = Integer.parseInt(split[1]); - else if (split[0].equals("DespawnTime")) - despawnTime = Integer.parseInt(split[1]); - else if (split[0].equals("ExplodeOnImpact") || split[0].equals("DetonateOnImpact")) - explodeOnImpact = Boolean.parseBoolean(split[1].toLowerCase()); - - //Detonation - else if (split[0].equals("FireRadius") || split[0].equals("Fire")) - fireRadius = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionRadius") || split[0].equals("Explosion")) - explosionRadius = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionPower")) - explosionPower = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionBreaksBlocks")) - explosionBreaksBlocks = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("ExplosionDamageVsLiving")) - explosionDamageVsLiving = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionDamageVsPlayer")) - explosionDamageVsPlayer = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionDamageVsPlane")) - explosionDamageVsPlane = Float.parseFloat(split[1]); - else if (split[0].equals("ExplosionDamageVsVehicle")) - explosionDamageVsVehicle = Float.parseFloat(split[1]); - - else if (split[0].equals("DropItemOnDetonate")) - dropItemOnDetonate = split[1]; - else if (split[0].equals("DetonateSound")) - detonateSound = split[1]; - - //Submunitions - else if (split[0].equals("HasSubmunitions")) - hasSubmunitions = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("Submunition")) - submunition = split[1]; - else if (split[0].equals("NumSubmunitions")) - numSubmunitions = Integer.parseInt(split[1]); - else if (split[0].equals("SubmunitionDelay")) - subMunitionTimer = Integer.parseInt(split[1]); - else if (split[0].equals("SubmunitionSpread")) - submunitionSpread = Float.parseFloat(split[1]); - - else if (split[0].equals("FlareParticleCount")) - smokeParticleCount = Integer.parseInt(split[1]); - else if (split[0].equals("DebrisParticleCount")) - debrisParticleCount = Integer.parseInt(split[1]); - - //Particles - else if (split[0].equals("TrailParticles") || split[0].equals("SmokeTrail")) - trailParticles = Boolean.parseBoolean(split[1].toLowerCase()); - else if (split[0].equals("TrailParticleType")) - trailParticleType = split[1]; - } catch (Exception e) { - if (split != null) { - String msg = " : "; - for (String s : split) msg = msg + " " + s; - FlansMod.log("Reading grenade file failed. " + file.name + msg); - } else { - FlansMod.log("Reading grenade file failed. " + file.name); - } - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + //Model and Texture + if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) { + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelBase.class); + } + if (configMap.containsKey("Texture")) + texture = config.get("Texture"); + + //Item Stuff + maxStackSize = ConfigUtils.configInt(config, "StackSize", "MaxStackSize", maxStackSize); + dropItemOnShoot = config.get("DropItemOnShoot"); + dropItemOnReload = config.get("DropItemOnReload"); + dropItemOnHit = config.get("DropItemOnHit"); + roundsPerItem = ConfigUtils.configInt(config, "RoundsPerItem", roundsPerItem); + + //Physics + fallSpeed = ConfigUtils.configFloat(config, "FallSpeed", fallSpeed); + throwSpeed = ConfigUtils.configFloat(config, "ThrowSpeed", "ShootSpeed", throwSpeed); + hitBoxSize = ConfigUtils.configFloat(config, "HitBoxSize", hitBoxSize); + + //Hit stuff + if (config.containsKey("Damage")) { + damageVsLiving = damageVsPlayer = damageVsEntity = damageVsPlanes = damageVsVehicles = Float.parseFloat(config.get("Damage")); + } + damageVsLiving = ConfigUtils.configFloat(config, "DamageVsLiving", damageVsLiving); + if (config.containsKey("DamageVsPlayer")) { + damageVsPlayer = ConfigUtils.configFloat(config, "DamageVsPlayer", damageVsPlayer); + readDamageVsPlayer = true; + } + if (config.containsKey("DamageVsEntity")) { + damageVsEntity = ConfigUtils.configFloat(config, "DamageVsEntity", damageVsEntity); + readDamageVsEntity = true; + } + damageVsVehicles = ConfigUtils.configFloat(config, "DamageVsVehicles", damageVsVehicles); + if (config.containsKey("DamageVsPlanes")) { + damageVsPlanes = ConfigUtils.configFloat(config, "DamageVsPlanes", damageVsPlanes); + readDamageVsPlanes = true; } + ignoreArmorProbability = ConfigUtils.configFloat(config, "IgnoreArmorProbability", ignoreArmorProbability); + ignoreArmorDamageFactor = ConfigUtils.configFloat(config, "IgnoreArmorDamageFactor", ignoreArmorDamageFactor); + breaksGlass = ConfigUtils.configBool(config, "BreaksGlass", breaksGlass); + bounciness = ConfigUtils.configFloat(config, "Bounciness", bounciness); + hasLight = ConfigUtils.configBool(config, "HasLight", hasLight); + hasDynamicLight = ConfigUtils.configBool(config, "HasDynamicLight", hasDynamicLight); + + //Detonation conditions etc + fuse = ConfigUtils.configInt(config, "Fuse", fuse); + despawnTime = ConfigUtils.configInt(config, "DespawnTime", despawnTime); + explodeOnImpact = ConfigUtils.configBool(config, "ExplodeOnImpact", "DetonateOnImpact", explodeOnImpact); + + //Detonation + fireRadius = ConfigUtils.configFloat(config, "FireRadius", "Fire", fireRadius); + explosionRadius = ConfigUtils.configFloat(config, "ExplosionRadius", "Explosion", explosionRadius); + explosionPower = ConfigUtils.configFloat(config, "ExplosionPower", explosionPower); + explosionBreaksBlocks = ConfigUtils.configBool(config, "ExplosionBreaksBlocks", explosionBreaksBlocks); + explosionDamageVsLiving = ConfigUtils.configFloat(config, "ExplosionDamageVsLiving", explosionDamageVsLiving); + explosionDamageVsPlayer = ConfigUtils.configFloat(config, "ExplosionDamageVsPlayer", explosionDamageVsPlayer); + explosionDamageVsPlane = ConfigUtils.configFloat(config, "ExplosionDamageVsPlane", explosionDamageVsPlane); + explosionDamageVsVehicle = ConfigUtils.configFloat(config, "ExplosionDamageVsVehicle", explosionDamageVsVehicle); + dropItemOnDetonate = config.get("DropItemOnDetonate"); + detonateSound = config.get("DetonateSound"); + + //Submunitions + hasSubmunitions = ConfigUtils.configBool(config, "HasSubmunitions", hasSubmunitions); + submunition = config.get("Submunition"); + numSubmunitions = ConfigUtils.configInt(config, "NumSubmunitions", numSubmunitions); + subMunitionTimer = ConfigUtils.configInt(config, "SubmunitionDelay", subMunitionTimer); + submunitionSpread = ConfigUtils.configFloat(config, "SubmunitionSpread", submunitionSpread); + smokeParticleCount = ConfigUtils.configInt(config, "FlareParticleCount", smokeParticleCount); + debrisParticleCount = ConfigUtils.configInt(config, "DebrisParticleCount", debrisParticleCount); + + //Particles + trailParticles = ConfigUtils.configBool(config, "TrailParticles", "SmokeTrail", trailParticles); + trailParticleType = config.get("TrailParticleType"); } public static ShootableType getShootableType(String string) { diff --git a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java index 5555a59a..4a249718 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java +++ b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java @@ -5,6 +5,8 @@ import java.util.HashMap; import java.util.List; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.block.Block; import net.minecraft.client.model.ModelBase; import net.minecraft.item.Item; @@ -51,15 +53,13 @@ public GunBoxType(TypeFile file) } @Override - public void preRead(TypeFile file) - { + public void preRead(TypeFile file) { gunEntries = new GunBoxEntry[8]; currentPage = new GunPage("Default"); } @Override - public void postRead(TypeFile file) - { + public void postRead(TypeFile file) { //Add any remaining gun entries to the pagelist if EOF. currentPage.addGunList(Arrays.copyOf(gunEntries, nextGun + 1)); gunPages.add(currentPage); @@ -68,45 +68,52 @@ public void postRead(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) - { - super.read(split, file); - try - { - if (split[0].equals("TopTexture")) - topTexturePath = split[1]; - if (split[0].equals("BottomTexture")) - bottomTexturePath = split[1]; - if (split[0].equals("SideTexture")) - sideTexturePath = split[1]; - if (split[0].equals("Page") || split[0].equals("SetPage")) - { + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + //Block Textures + ConfigUtils.configString(config, "TopTexture", topTexturePath); + ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); + ConfigUtils.configString(config, "SideTexture", sideTexturePath); + + //GunBox gui customisation + ConfigUtils.configString(config, "GuiTexture", guiTexturePath); + ConfigUtils.configString(config, "GunBoxNameColor", gunBoxTextColor); + ConfigUtils.configString(config, "PageTextColor", pageTextColor); + ConfigUtils.configString(config, "ListTextColor", itemListTextColor); + ConfigUtils.configString(config, "ItemTextColor", itemTextColor); + ConfigUtils.configString(config, "ButtonTextColor", buttonTextColor); + ConfigUtils.configString(config, "ButtonTextHighlight", buttonTextHoverColor); + + + if (config.containsKey("Page") || config.containsKey("SetPage")) { + String key = "Page"; + if (config.containsKey("SetPage")) + key = "SetPage"; + + String[] split = ConfigUtils.getSplitFromKey(config, key); //If empty, rename the page. If not, add the current page to list and start next one. String[] pageNameArray = Arrays.copyOfRange(split, 1, split.length); StringBuilder pageName = new StringBuilder(); - for(int i = 0; i < pageNameArray.length; i++) - { + for(int i = 0; i < pageNameArray.length; i++) { pageName.append(pageNameArray[i]); if((i + 1) < pageNameArray.length) { pageName.append(" "); } } - if(gunEntries[0] != null) - { + if(gunEntries[0] != null) { currentPage.addGunList(Arrays.copyOf(gunEntries, nextGun + 1)); iteratePage(pageName.toString()); - } - else - { + } else { currentPage.setPageName(pageName.toString()); } - } - if (split[0].equals("AddGun")) + + if (config.containsKey("AddGun")) { try { - List parts = getRecipe(split); + List parts = getRecipe(ConfigUtils.getSplitFromKey(config, "AddGun")); nextGun++; if(nextGun > gunEntries.length - 1) { @@ -114,44 +121,30 @@ protected void read(String[] split, TypeFile file) iteratePage("Default " + (gunPages.size() + 2)); nextGun++; } - gunEntries[nextGun] = new GunBoxEntry(InfoType.getType(split[1]), parts); + gunEntries[nextGun] = new GunBoxEntry(InfoType.getType(config.get("AddGun")), parts); } catch(Exception e) { if (FlansMod.printDebugLog) { - FlansMod.log("Failed to add gun %s to box %s", split[1], shortName); + FlansMod.log("Failed to add gun %s to box %s", config.get("AddGun"), shortName); } - + } } - if (split[0].equals("AddAmmo") || split[0].equals("AddAltAmmo") || split[0].equals("AddAlternateAmmo")) { + if (config.containsKey("AddAmmo") || config.containsKey("AddAltAmmo")) { + String key = "AddAmmo"; + if (config.containsKey("AddAltAmmo")) + key = "AddAltAmmo"; try { - if (InfoType.getType(split[1]) != null && InfoType.getType(split[1]).item != null) { - gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(InfoType.getType(split[1]), getRecipe(split))); + if (InfoType.getType(config.get("key")) != null && InfoType.getType(config.get("key")).item != null) { + gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(InfoType.getType(config.get("key")), getRecipe(ConfigUtils.getSplitFromKey(config, key)))); } } catch(Exception e) { - FlansMod.log("Failed to add ammo (%s) to box (%s)", split[1], shortName); + FlansMod.log("Failed to add ammo (%s) to box (%s)", config.get("key"), shortName); } } - //GunBox gui customisation - if(split[0].equals("GuiTexture")) - guiTexturePath = split[1]; - if(split[0].equals("GunBoxNameColor")) - gunBoxTextColor = split[1]; - if(split[0].equals("PageTextColor")) - pageTextColor = split[1]; - if(split[0].equals("ListTextColor")) - itemListTextColor = split[1]; - if(split[0].equals("ItemTextColor")) - itemTextColor = split[1]; - if(split[0].equals("ButtonTextColor")) - buttonTextColor = split[1]; - if(split[0].equals("ButtonTextHighlight")) - buttonTextHoverColor = split[1]; - } - catch (Exception e) - { + catch (Exception e) { FlansMod.log("Reading gun box file failed : " + shortName); if (FlansMod.printStackTrace) { FlansMod.log(e.toString()); @@ -159,8 +152,7 @@ protected void read(String[] split, TypeFile file) } } - public void iteratePage(String s) - { + public void iteratePage(String s) { //Add current to the pages and setup a new current gunPages.add(currentPage); gunEntries = new GunBoxEntry[8]; @@ -168,15 +160,12 @@ public void iteratePage(String s) currentPage = new GunPage(s); } - public static GunBoxType getBox(String s) - { + public static GunBoxType getBox(String s) { return gunBoxMap.get(s); } - public static GunBoxType getBox(Block block) - { - for(GunBoxType type : gunBoxMap.values()) - { + public static GunBoxType getBox(Block block) { + for(GunBoxType type : gunBoxMap.values()) { if(type.block == block) return type; } @@ -184,12 +173,10 @@ public static GunBoxType getBox(Block block) } //Gunbox Entry method - public List getRecipe(String[] split) - { + public List getRecipe(String[] split) { List recipe = new ArrayList(); - for (int i = 0; i < (split.length - 2) / 2; i++) - { + for (int i = 0; i < (split.length - 2) / 2; i++) { if (split[i * 2 + 3].contains(".")) recipe.add(getRecipeElement(split[i * 2 + 3].split("\\.")[0], Integer.parseInt(split[i * 2 + 2]), Integer.valueOf(split[i * 2 + 3].split("\\.")[1]), shortName)); else @@ -201,49 +188,43 @@ public List getRecipe(String[] split) /** Reimported from old code */ @Override - public void addRecipe(Item par1Item) - { - if (smeltableFrom != null) - { + public void addRecipe(Item par1Item) { + if (smeltableFrom != null) { GameRegistry.addSmelting(getRecipeElement(smeltableFrom, 0), new ItemStack(item), 0.0F); } if (recipeLine == null) return; - try - { + try { if (!shapeless) { // Fix oversized recipes int rows = 3; // First column - if (((String) recipe[0]).charAt(0) == ' ' && ((String) recipe[1]).charAt(0) == ' ' && ((String) recipe[2]).charAt(0) == ' ') - { - for (int i = 0; i < 3; i++) + if (((String) recipe[0]).charAt(0) == ' ' && ((String) recipe[1]).charAt(0) == ' ' && ((String) recipe[2]).charAt(0) == ' ') { + for (int i = 0; i < 3; i++) { recipe[i] = ((String) recipe[i]).substring(1); + } + // New first column - if (((String) recipe[0]).charAt(0) == ' ' && ((String) recipe[1]).charAt(0) == ' ' && ((String) recipe[2]).charAt(0) == ' ') - { + if (((String) recipe[0]).charAt(0) == ' ' && ((String) recipe[1]).charAt(0) == ' ' && ((String) recipe[2]).charAt(0) == ' ') { for (int i = 0; i < 3; i++) recipe[i] = ((String) recipe[i]).substring(1); } } // Last column int last = ((String) recipe[0]).length() - 1; - if (((String) recipe[0]).charAt(last) == ' ' && ((String) recipe[1]).charAt(last) == ' ' && ((String) recipe[2]).charAt(last) == ' ') - { + if (((String) recipe[0]).charAt(last) == ' ' && ((String) recipe[1]).charAt(last) == ' ' && ((String) recipe[2]).charAt(last) == ' ') { for (int i = 0; i < 3; i++) recipe[i] = ((String) recipe[i]).substring(0, last); // New last column last--; - if (((String) recipe[0]).charAt(last) == ' ' && ((String) recipe[1]).charAt(last) == ' ' && ((String) recipe[2]).charAt(last) == ' ') - { + if (((String) recipe[0]).charAt(last) == ' ' && ((String) recipe[1]).charAt(last) == ' ' && ((String) recipe[2]).charAt(last) == ' ') { for (int i = 0; i < 3; i++) recipe[i] = ((String) recipe[i]).substring(0, 0); } } // Top row - if (recipe[0].equals(" ") || recipe[0].equals(" ") || recipe[0].equals(" ")) - { + if (recipe[0].equals(" ") || recipe[0].equals(" ") || recipe[0].equals(" ")) { Object[] newRecipe = new Object[recipe.length - 1]; newRecipe[0] = recipe[1]; newRecipe[1] = recipe[2]; @@ -259,24 +240,21 @@ public void addRecipe(Item par1Item) } } // Bottom row - if (recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ")) - { + if (recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ")) { Object[] newRecipe = new Object[recipe.length - 1]; newRecipe[0] = recipe[0]; newRecipe[1] = recipe[1]; recipe = newRecipe; rows--; // Next bottom row - if (recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ")) - { + if (recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ") || recipe[rows - 1].equals(" ")) { Object[] newRecipe1 = new Object[recipe.length - 1]; newRecipe1[0] = recipe[0]; recipe = newRecipe1; rows--; } } - for (int i = 0; i < (recipeLine.length - 1) / 2; i++) - { + for (int i = 0; i < (recipeLine.length - 1) / 2; i++) { recipe[i * 2 + rows] = recipeLine[i * 2 + 1].charAt(0); // Split ID with . and if it contains a second part, use it // as damage value. @@ -287,11 +265,9 @@ public void addRecipe(Item par1Item) } GameRegistry.addRecipe(new ItemStack(block, recipeOutput, 0), recipe); } - else - { + else { recipe = new Object[recipeLine.length - 1]; - for (int i = 0; i < (recipeLine.length - 1); i++) - { + for (int i = 0; i < (recipeLine.length - 1); i++) { if (recipeLine[i + 1].contains(".")) recipe[i] = getRecipeElement(recipeLine[i + 1].split("\\.")[0], Integer.valueOf(recipeLine[i + 1].split("\\.")[1])); else @@ -300,35 +276,24 @@ public void addRecipe(Item par1Item) GameRegistry.addShapelessRecipe(new ItemStack(block, recipeOutput, 0), recipe); } } - catch (Exception e) - { - if(recipe!=null) - { + catch (Exception e) { + if(recipe!=null) { StringBuilder msg = new StringBuilder(" : "); for(Object o : recipe) msg.append(" ").append(o); FlansMod.log("Failed to add recipe for : " + shortName + msg); - } - else - { + } else { FlansMod.log("Failed to add recipe for : " + shortName); } - if(FlansMod.printStackTrace) - { + if(FlansMod.printStackTrace) { e.printStackTrace(); } } } @Override - public float GetRecommendedScale() - { - return 50.0f; - } + public float GetRecommendedScale() { return 50.0f; } @Override @SideOnly(Side.CLIENT) - public ModelBase GetModel() - { - return null; - } + public ModelBase GetModel() { return null; } } \ No newline at end of file diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index 39f472b3..15c01fae 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -1,11 +1,13 @@ package com.flansmod.common.paintjob; import java.util.ArrayList; +import java.util.HashMap; import com.flansmod.common.FlansMod; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigMap; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -39,7 +41,6 @@ public void preRead(TypeFile file) public void postRead(TypeFile file) { //After all lines have been read, set up the default paintjob - defaultPaintjob = new Paintjob(0, iconPath, texture, new ItemStack[0], true); defaultPaintjob = new Paintjob(0, "default", iconPath, texture, new ItemStack[0], true); //Move to a new list to ensure that the default paintjob is always first ArrayList newPaintjobList = new ArrayList(); @@ -49,80 +50,79 @@ public void postRead(TypeFile file) } /** Pack reader */ - protected void read(String[] split, TypeFile file) + protected void read(ConfigMap config, TypeFile file) { - super.read(split, file); - try - { - //Paintjobs - if(split[0].toLowerCase().equals("paintjob")) - { - ItemStack[] dyeStacks = new ItemStack[(split.length - 3) / 2]; - for(int i = 0; i < (split.length - 3) / 2; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 4]), getDyeDamageValue(split[i * 2 + 3])); - - //if(split[1].contains("_")) - //{ - // String[] splat = split[1].split("_"); - // if(splat[0].equals(iconPath)) - // split[1] = splat[1]; - //} - paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], dyeStacks, true)); - } - - } - catch (Exception e) - { - FlansMod.log("Reading paintable file failed : " + shortName); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } - } - try - { - //Paintjobs - if(split[0].toLowerCase().equals("advpaintjob")) - { - ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; - for(int i = 0; i < (split.length - 4) / 2; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); - paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); - } - } - catch (Exception e) - { - FlansMod.log("Reading file failed : " + shortName); - e.printStackTrace(); - } + super.read(config, file); + //iconName textureName [dyeName dyeAmount (dyeDamage)] + if (config.containsKey("PaintJob")) { + try { + String[] split = config.get("PaintJob").split(" "); + int numDyes = (split.length - 2) / 2; + ItemStack[] dyeStacks = new ItemStack[numDyes]; + for(int i = 0; i < numDyes; i++) + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 3]), getDyeDamageValue(split[i * 2 + 2])); - try - { - // Other configs.. - if (split[0].equalsIgnoreCase("AddPaintableToTables")) - { - if (split.length == 2) + if(split[1].contains("_")) { - addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); + String[] splat = split[1].split("_"); + if(splat[0].equals(iconPath)) + split[1] = splat[1]; } - else if (split.length == 3) - { - String paintjobId = split[1]; - - for (Paintjob paintjob : paintjobs) - { - if (paintjob.textureName.equals(paintjobId)) - { - paintjob.addToTables = Boolean.parseBoolean(split[2]); - } - } + paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], dyeStacks, true)); + } catch (Exception e) { + FlansMod.log("Reading paintable file failed : " + shortName); + if (FlansMod.printStackTrace) { + e.printStackTrace(); } } } - catch (Exception e) - { - FlansMod.log("Reading file failed : " + shortName); - e.printStackTrace(); - } + + //todo adv paintjobs +// try +// { +// //Paintjobs +// if(split[0].toLowerCase().equals("advpaintjob")) +// { +// ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; +// for(int i = 0; i < (split.length - 4) / 2; i++) +// dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); +// paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); +// } +// } +// catch (Exception e) +// { +// FlansMod.log("Reading file failed : " + shortName); +// e.printStackTrace(); +// } +// +// try +// { +// // Other configs.. +// if (split[0].equalsIgnoreCase("AddPaintableToTables")) +// { +// if (split.length == 2) +// { +// addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); +// } +// else if (split.length == 3) +// { +// String paintjobId = split[1]; +// +// for (Paintjob paintjob : paintjobs) +// { +// if (paintjob.textureName.equals(paintjobId)) +// { +// paintjob.addToTables = Boolean.parseBoolean(split[2]); +// } +// } +// } +// } +// } +// catch (Exception e) +// { +// FlansMod.log("Reading file failed : " + shortName); +// e.printStackTrace(); +// } } public Paintjob getPaintjob(int i) diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index 103d54d4..2adee5fa 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -4,6 +4,8 @@ import com.flansmod.common.types.EnumType; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; @@ -92,23 +94,25 @@ public void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); try { - if (split[0].equals("Category")) - category = getCategory(split[1]); - else if (split[0].equals("StackSize")) - stackSize = Integer.parseInt(split[1]); - else if (split[0].equals("EngineSpeed")) - engineSpeed = Float.parseFloat(split[1]); - else if (split[0].equals("FuelConsumption")) - fuelConsumption = Float.parseFloat(split[1]); - else if (split[0].equals("EnginePower")) - enginePower = Float.parseFloat(split[1]); - else if (split[0].equals("Fuel")) - fuel = Integer.parseInt(split[1]); - //Recipe - else if (split[0].equals("PartBoxRecipe")) { + if (config.containsKey("Category")) + category = getCategory(config.get("Category")); + if (config.containsKey("StackSize")) + stackSize = Integer.parseInt(config.get("StackSize")); + if (config.containsKey("EngineSpeed")) + engineSpeed = Float.parseFloat(config.get("EngineSpeed")); + if (config.containsKey("FuelConsumption")) + fuelConsumption = Float.parseFloat(config.get("FuelConsumption")); + if (config.containsKey("EnginePower")) + enginePower = Float.parseFloat(config.get("EnginePowewr")); + if (config.containsKey("Fuel")) + fuel = Integer.parseInt(config.get("Fuel")); + + //Recipe + if (config.containsKey("PartBoxRecipe")) { + String[] split = config.get("PartBoxRecipe").split(" "); ItemStack[] stacks = new ItemStack[(split.length - 2) / 2]; for (int i = 0; i < (split.length - 2) / 2; i++) { int amount = Integer.parseInt(split[2 * i + 2]); @@ -118,19 +122,17 @@ else if (split[0].equals("PartBoxRecipe")) { stacks[i] = getRecipeElement(itemName, amount, damage, shortName); } partBoxRecipe.addAll(Arrays.asList(stacks)); - } else if (split[0].equals("WorksWith")) { + } else if (config.containsKey("WorksWith")) { + String[] split = config.get("WorksWith").split(" "); worksWith = new ArrayList(); for (int i = 0; i < split.length - 1; i++) { worksWith.add(EnumType.get(split[i + 1])); } } - //------- RedstoneFlux ------- - else if (split[0].equals("UseRF") || split[0].equals("UseRFPower")) - useRFPower = Boolean.parseBoolean(split[1]); - else if (split[0].equals("RFDrawRate")) - RFDrawRate = Integer.parseInt(split[1]); - //----------------------------- + //RedstoneFlux + useRFPower = ConfigUtils.configBool(config, "UseRF", "UseRFPower", useRFPower); + RFDrawRate = ConfigUtils.configInt(config, "RFDrawRate", RFDrawRate); } catch (Exception e) { FlansMod.log("Reading part file failed."); e.printStackTrace(); diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 4c9f3924..148859ce 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.HashMap; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -37,9 +39,7 @@ public ArmourBoxType(TypeFile file) } @Override - public void preRead(TypeFile file) - { - } + public void preRead(TypeFile file) { } @Override public void postRead(TypeFile file) @@ -48,20 +48,19 @@ public void postRead(TypeFile file) } @Override - protected void read(String[] split, TypeFile file) + protected void read(ConfigMap config, TypeFile file) { - super.read(split, file); - try - { - if (split[0].equals("TopTexture")) - topTexturePath = split[1]; - if (split[0].equals("BottomTexture")) - bottomTexturePath = split[1]; - if (split[0].equals("SideTexture")) - sideTexturePath = split[1]; - - if(split[0].toLowerCase().equals("addarmour") || split[0].toLowerCase().equals("addarmor")) - { + super.read(config, file); + try { + topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); + bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); + sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); + + if (config.containsKey("addarmour") || config.containsKey("addarmor")) { + String key = "addarmour"; + if (config.containsKey("addarmor")) + key = "addarmor"; + String[] split = config.get(key).split(" "); String name = split[2]; for(int i = 3; i < split.length; i++) name = name + " " + split[i]; @@ -87,7 +86,7 @@ protected void read(String[] split, TypeFile file) stack = getRecipeElement(lineSplit[j * 2 + 1].split("\\.")[0], Integer.valueOf(lineSplit[j * 2 + 2]), Integer.valueOf(lineSplit[j * 2 + 1].split("\\.")[1]), shortName); else stack = getRecipeElement(lineSplit[j * 2 + 1], Integer.valueOf(lineSplit[j * 2 + 2]), 0, shortName); - + if(stack != null) { entry.requiredStacks[i].add(stack); } else { @@ -95,12 +94,11 @@ protected void read(String[] split, TypeFile file) } } } - + pages.add(entry); } - - } catch (Exception e) - { + + } catch (Exception e) { FlansMod.log("Reading armour box file failed : " + shortName); if (FlansMod.printStackTrace) e.printStackTrace(); diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index f6d28bd9..474a62e5 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -1,12 +1,15 @@ package com.flansmod.common.teams; import java.util.ArrayList; +import java.util.HashMap; import com.flansmod.client.model.ModelCustomArmour; import com.flansmod.common.FlansMod; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -99,71 +102,50 @@ protected void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); try { - if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) { - model = FlansMod.proxy.loadModel(split[1], shortName, ModelCustomArmour.class); + if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) { + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelCustomArmour.class); model.type = this; } - if (split[0].equals("Type")) { - if (split[1].equals("Hat") || split[1].equals("Helmet")) + if (config.containsKey("Type")) { + if (config.get("Type").equals("Hat") || config.get("Type").equals("Helmet")) type = 0; - if (split[1].equals("Chest") || split[1].equals("Body")) + if (config.get("Type").equals("Chest") || config.get("Type").equals("Body")) type = 1; - if (split[1].equals("Legs") || split[1].equals("Pants")) + if (config.get("Type").equals("Legs") || config.get("Type").equals("Pants")) type = 2; - if (split[1].equals("Shoes") || split[1].equals("Boots")) + if (config.get("Type").equals("Shoes") || config.get("Type").equals("Boots")) type = 3; } - if (split[0].equals("DamageReduction") || split[0].equals("Defence")) - { - defence = Double.parseDouble(split[1]); + if (config.containsKey("DamageReduction") || config.containsKey("Defence")) { + String key = "DamageReduction"; + if (config.containsKey("Defence")) + key = "Defence"; + defence = Double.parseDouble(config.get(key)); bulletDefence = defence; } - if (split[0].equals("BulletDefence")) { - bulletDefence = Double.parseDouble(split[1]); - } - if (split[0].equals("OtherDefence")) { - defence = Double.parseDouble(split[1]); - } - if (split[0].equals("MoveSpeedModifier") || split[0].equals("Slowness")) - moveSpeedModifier = Float.parseFloat(split[1]); - if (split[0].equals("JumpModifier")) - jumpModifier = Float.parseFloat(split[1]); - if (split[0].equals("KnockbackReduction") || split[0].equals("KnockbackModifier")) - knockbackModifier = Float.parseFloat(split[1]); - if (split[0].equals("PenetrationResistance")) - penetrationResistance = Float.parseFloat(split[1]); - - if (split[0].equals("NightVision")) - nightVision = Boolean.parseBoolean(split[1]); - if (split[0].equals("Invisible")) - invisible = Boolean.parseBoolean(split[1]); - if (split[0].equals("NegateFallDamage")) - negateFallDamage = Boolean.parseBoolean(split[1]); - if (split[0].equals("FireResistance")) - fireResistance = Boolean.parseBoolean(split[1]); - if (split[0].equals("WaterBreathing")) - waterBreathing = Boolean.parseBoolean(split[1]); - if (split[0].equals("Overlay")) - overlay = split[1]; - - if (split[0].equals("SmokeProtection")) - smokeProtection = Boolean.parseBoolean(split[1]); - - if (split[0].equals("OnWaterWalking")) - onWaterWalking = Boolean.parseBoolean(split[1]); - - if (split[0].equals("Durability")) { - durability = Integer.parseInt(split[1]); + bulletDefence = ConfigUtils.configDouble(config, "BulletDefence", bulletDefence); + defence = ConfigUtils.configDouble(config, "OtherDefence", defence); + moveSpeedModifier = ConfigUtils.configFloat(config, "MoveSpeedModifier", "Slowness", moveSpeedModifier); + jumpModifier = ConfigUtils.configFloat(config, "JumpModifier", jumpModifier); + knockbackModifier = ConfigUtils.configFloat(config, "KnockbackReduction", "KnockbackModifier", knockbackModifier); + penetrationResistance = ConfigUtils.configFloat(config, "PenetrationResistance", penetrationResistance); + nightVision = ConfigUtils.configBool(config, "NightVision", nightVision); + invisible = ConfigUtils.configBool(config, "Invisible", invisible); + negateFallDamage = ConfigUtils.configBool(config, "NegateFallDamage", negateFallDamage); + fireResistance = ConfigUtils.configBool(config, "FireResistance", fireResistance); + waterBreathing = ConfigUtils.configBool(config, "WaterBreathing", waterBreathing); + overlay = ConfigUtils.configString(config, "Overlay", overlay); + smokeProtection = ConfigUtils.configBool(config, "SmokeProtection", smokeProtection); + onWaterWalking = ConfigUtils.configBool(config, "OnWaterWalking", onWaterWalking); + if (config.containsKey("Durability")) { + durability = Integer.parseInt(config.get("Durability")); hasDurability = durability > 0; } - - if (split[0].equals("ArmourTexture") || split[0].equals("ArmorTexture")) { - armourTextureName = split[1]; - } + armourTextureName = ConfigUtils.configString(config, "ArmourTexture", "ArmorTexture", armourTextureName); } catch (Exception e) { FlansMod.log("Reading armour file failed."); if (FlansMod.printStackTrace) { diff --git a/src/main/java/com/flansmod/common/teams/PlayerClass.java b/src/main/java/com/flansmod/common/teams/PlayerClass.java index 731d1b80..e42cd5dc 100644 --- a/src/main/java/com/flansmod/common/teams/PlayerClass.java +++ b/src/main/java/com/flansmod/common/teams/PlayerClass.java @@ -7,6 +7,8 @@ import com.flansmod.common.paintjob.Paintjob; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; @@ -16,6 +18,7 @@ import net.minecraft.world.World; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class PlayerClass extends InfoType { @@ -36,49 +39,66 @@ public PlayerClass(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) { - super.read(split, file); - if (split[0].equals("AddItem")) { - startingItemStrings.add(split); + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + //todo setup for multiple AddItem + if (config.containsKey("AddItem")) { + startingItemStrings.add(ConfigUtils.getSplitFromKey(config, "AddItem")); } - if (split[0].equals("UnlockLevel")) { - lvl = Integer.parseInt(split[1]); + for (String item : config.items) { + startingItemStrings.add(item.split(" ")); } - if (split[0].equals("SkinOverride")) - texture = split[1]; - if (split[0].equals("Hat") || split[0].equals("Helmet")) { - if (split[1].equals("None")) + lvl = ConfigUtils.configInt(config, "UnlockLevel", lvl); + texture = ConfigUtils.configString(config, "SkinOverride", texture); + + if(config.containsKey("Hat") || config.containsKey("Helmet")) { + String key = "Hat"; + if (config.containsKey("Helmet")) + key = "Helmet"; + if(config.get(key).equalsIgnoreCase("None")) return; - for (Item item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour) item).type; - if (armour != null && armour.shortName.equals(split[1])) + for(Item item : FlansMod.armourItems) + { + ArmourType armour = ((ItemTeamArmour)item).type; + if(armour != null && armour.shortName.equals(config.get(key))) hat = new ItemStack(item); } } - if (split[0].equals("Chest") || split[0].equals("Top")) { - if (split[1].equals("None")) + if (config.containsKey("Chest") || config.containsKey("Top")) { + String key = "Chest"; + if (config.containsKey("Top")) + key = "Top"; + if(config.get(key).equalsIgnoreCase("None")) return; - for (Item item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour) item).type; - if (armour != null && armour.shortName.equals(split[1])) + for(Item item : FlansMod.armourItems) + { + ArmourType armour = ((ItemTeamArmour)item).type; + if(armour != null && armour.shortName.equals(config.get(key))) chest = new ItemStack(item); } } - if (split[0].equals("Legs") || split[0].equals("Bottom")) { - if (split[1].equals("None")) + if (config.containsKey("Legs") || config.containsKey("Bottom")) { + String key = "Legs"; + if (config.containsKey("Bottom")) + key = "Bottom"; + if(config.get(key).equalsIgnoreCase("None")) return; - for (Item item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour) item).type; - if (armour != null && armour.shortName.equals(split[1])) + for(Item item : FlansMod.armourItems) + { + ArmourType armour = ((ItemTeamArmour)item).type; + if(armour != null && armour.shortName.equals(config.get(key))) legs = new ItemStack(item); } } - if (split[0].equals("Shoes") || split[0].equals("Boots")) { - if (split[1].equals("None")) + if (config.containsKey("Shoes") || config.containsKey("Boots")) { + String key = "Shoes"; + if (config.containsKey("Boots")) + key = "Boots"; + if(config.get(key).equalsIgnoreCase("None")) return; for (Item item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour) item).type; - if (armour != null && armour.shortName.equals(split[1])) + ArmourType armour = ((ItemTeamArmour)item).type; + if(armour != null && armour.shortName.equals(config.get(key))) shoes = new ItemStack(item); } } @@ -86,8 +106,7 @@ protected void read(String[] split, TypeFile file) { @Override - protected void preRead(TypeFile file) { - } + protected void preRead(TypeFile file) { } /** * This loads the items once for clients connecting to remote servers, since the clients can't tell what attachments a gun has in the GUI and they need to load it at least once @@ -135,8 +154,9 @@ public void onWorldLoad(World world) { } } for (InfoType type : InfoType.infoTypes) { - if (type.shortName.equals(itemNames[0]) && type.item != null) + if (type.shortName.equals(itemNames[0]) && type.item != null) { matchingItem = type.item; + } } if (matchingItem == null) { FlansMod.log("Tried to add " + split[1] + " to player class " + shortName + " but the item did not exist"); diff --git a/src/main/java/com/flansmod/common/teams/Team.java b/src/main/java/com/flansmod/common/teams/Team.java index 8a3d89a8..771d62b1 100644 --- a/src/main/java/com/flansmod/common/teams/Team.java +++ b/src/main/java/com/flansmod/common/teams/Team.java @@ -1,10 +1,9 @@ package com.flansmod.common.teams; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.util.*; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.client.model.ModelBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -40,8 +39,7 @@ public class Team extends InfoType public ItemStack legs; public ItemStack shoes; - public Team(String s, String s1, int teamCol, char textCol) - { + public Team(String s, String s1, int teamCol, char textCol) { super(new TypeFile(EnumType.team, s, "", false)); shortName = s; name = s1; @@ -50,119 +48,88 @@ public Team(String s, String s1, int teamCol, char textCol) teams.add(this); } - public Team(TypeFile file) - { + public Team(TypeFile file) { super(file); teams.add(this); } - @Override - protected void preRead(TypeFile file) - { - } - - + protected void preRead(TypeFile file) { } @Override - protected void postRead(TypeFile file) - { - } - + protected void postRead(TypeFile file) { } @Override - protected void read(String[] split, TypeFile file) + protected void read(ConfigMap config, TypeFile file) { - super.read(split, file); + super.read(config, file); try { - if (split[0].equals("TeamColour")) - { + if (config.containsKey("TeamColour")) { + String[] split = ConfigUtils.getSplitFromKey(config, "TeamColour"); teamColour = (Integer.parseInt(split[1]) << 16) + ((Integer.parseInt(split[2])) << 8) + ((Integer.parseInt(split[3]))); - } - if (split[0].equals("TextColour")) - { - if(split[1].equals("Black")) - textColour = '0'; - if(split[1].equals("Blue")) - textColour = '1'; - if(split[1].equals("Green")) - textColour = '2'; - if(split[1].equals("Aqua")) - textColour = '3'; - if(split[1].equals("Red")) - textColour = '4'; - if(split[1].equals("Purple")) - textColour = '5'; - if(split[1].equals("Orange")) - textColour = '6'; - if(split[1].equals("LGrey")) - textColour = '7'; - if(split[1].equals("Grey")) - textColour = '8'; - if(split[1].equals("LBlue")) - textColour = '9'; - if(split[1].equals("LGreen")) - textColour = 'a'; - if(split[1].equals("LAqua")) - textColour = 'b'; - if(split[1].equals("Red")) - textColour = 'c'; - if(split[1].equals("Pink")) - textColour = 'd'; - if(split[1].equals("Yellow")) - textColour = 'e'; - if(split[1].equals("White")) - textColour = 'f'; } - if(split[0].equals("Hat") || split[0].equals("Helmet")) - { - if(split[1].equals("None")) + if (config.containsKey("TextColour")) { + getColourCode(config, config.get("TextColour")); + } + if(config.containsKey("Hat") || config.containsKey("Helmet")) { + String key = "Hat"; + if (config.containsKey("Helmet")) + key = "Helmet"; + if(config.get(key).equalsIgnoreCase("None")) return; for(Item item : FlansMod.armourItems) { ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(split[1])) + if(armour != null && armour.shortName.equals(config.get(key))) hat = new ItemStack(item); } } - if(split[0].equals("Chest") || split[0].equals("Top")) - { - if(split[1].equals("None")) + if(config.containsKey("Chest") || config.containsKey("Top")) { + String key = "Chest"; + if (config.containsKey("Top")) + key = "Top"; + if(config.get(key).equalsIgnoreCase("None")) return; for(Item item : FlansMod.armourItems) { ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(split[1])) + if(armour != null && armour.shortName.equals(config.get(key))) chest = new ItemStack(item); } } - if(split[0].equals("Legs") || split[0].equals("Bottom")) - { - if(split[1].equals("None")) + if(config.containsKey("Legs") || config.containsKey("Bottom")) { + String key = "Legs"; + if (config.containsKey("Bottom")) + key = "Bottom"; + if(config.get(key).equalsIgnoreCase("None")) return; for(Item item : FlansMod.armourItems) { ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(split[1])) + if(armour != null && armour.shortName.equals(config.get(key))) legs = new ItemStack(item); } } - if(split[0].equals("Shoes") || split[0].equals("Boots")) - { - if(split[1].equals("None")) + if(config.containsKey("Shoes") || config.containsKey("Boots")) { + String key = "Shoes"; + if (config.containsKey("Boots")) + key = "Boots"; + if(config.get(key).equalsIgnoreCase("None")) return; for(Item item : FlansMod.armourItems) { ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(split[1])) + if(armour != null && armour.shortName.equals(config.get(key))) shoes = new ItemStack(item); } } - if(split[0].equals("AddDefaultClass") || split[0].equals("AddClass")) - { - classes.add(PlayerClass.getClass(split[1])); + if(config.containsKey("AddDefaultClass") || config.containsKey("AddClass")) { + String key = "AddDefaultClass"; + if (config.containsKey("AddClass")) + key = "AddClass"; + classes.add(PlayerClass.getClass(config.get(key))); } - if(split[0].equals("allowedForRoundsGenerator")){ - this.allowedForRoundsGenerator = Boolean.parseBoolean(split[1]); + if(config.containsKey("allowedForRoundsGenerator")){ + this.allowedForRoundsGenerator = Boolean.parseBoolean(config.get("allowedForRoundsGenerator")); } } catch (Exception e) { @@ -180,7 +147,62 @@ public static Team getTeam(String s) } return null; } - + + private static char getColourCode(ConfigMap config, String colour) { + char textCode; + switch(config.get("TextColour")) { + case "Black": + textCode = '0'; + break; + case "Blue": + textCode = '1'; + break; + case "Green": + textCode = '2'; + break; + case "Aqua": + textCode = '3'; + break; + case "Purple": + textCode = '5'; + break; + case "Orange": + textCode = '6'; + break; + case "LGrey": + textCode = '7'; + break; + case "Grey": + textCode = '8'; + break; + case "LBlue": + textCode = '9'; + break; + case "LGreen": + textCode = 'a'; + break; + case "LAqua": + textCode = 'b'; + break; + case "Red": + textCode = 'c'; + break; + case "Pink": + textCode = 'd'; + break; + case "Yellow": + textCode = 'e'; + break; + case "White": + textCode = 'f'; + break; + default: + textCode = '0'; + break; + } + + return textCode; + } /* //Called both by ops and the gametype public void addBase(ITeamBase base) @@ -195,27 +217,23 @@ public void removeBase(ITeamBase base) } */ - public void removePlayer(EntityPlayer player) - { + public void removePlayer(EntityPlayer player) { removePlayer(player.getCommandSenderName()); } - public String removePlayer(String username) - { + public String removePlayer(String username) { members.remove(username); if(PlayerHandler.getPlayerData(username) != null) PlayerHandler.getPlayerData(username).team = null; return username; } - public EntityPlayer addPlayer(EntityPlayer player) - { + public EntityPlayer addPlayer(EntityPlayer player) { addPlayer(player.getCommandSenderName()); return player; } - public String addPlayer(String username) - { + public String addPlayer(String username) { ArrayList list = new ArrayList(); list.add(username); for(Team team : teams) @@ -227,24 +245,20 @@ public String addPlayer(String username) return username; } - public String removeWorstPlayer() - { + public String removeWorstPlayer() { sortPlayers(); if(members.size() == 0) return null; else return removePlayer(members.get(members.size() - 1)); } - public void sortPlayers() - { + public void sortPlayers() { Collections.sort(members, new ComparatorScore()); } - public static class ComparatorScore implements Comparator - { + public static class ComparatorScore implements Comparator { @Override - public int compare(String a, String b) - { + public int compare(String a, String b) { PlayerData dataA = PlayerHandler.getPlayerData(a); PlayerData dataB = PlayerHandler.getPlayerData(b); if(dataA == null || dataB == null) @@ -255,15 +269,13 @@ public int compare(String a, String b) } @Override - public float GetRecommendedScale() - { + public float GetRecommendedScale() { return 50.0f; } @Override @SideOnly(Side.CLIENT) - public ModelBase GetModel() - { + public ModelBase GetModel() { return null; } } diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index 53d74a65..bc3811b7 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.HashMap; +import com.flansmod.utils.ConfigMap; import net.minecraft.client.model.ModelBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -14,6 +15,7 @@ import com.flansmod.common.FlansMod; import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; +import com.flansmod.utils.ConfigUtils; public class ToolType extends InfoType { @@ -54,54 +56,38 @@ protected void postRead(TypeFile file) tools.put(shortName, this); } + + /** Pack reader */ @Override - protected void read(String[] split, TypeFile file) + protected void read(ConfigMap config, TypeFile file) { - super.read(split, file); - try - { - if(FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) - model = FlansMod.proxy.loadModel(split[1], shortName, ModelBase.class); - else if(split[0].equals("Texture")) - texture = split[1]; - else if(split[0].equals("Parachute")) - parachute = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("ExplosiveRemote")) - remote = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Key")) - key = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Heal") || split[0].equals("HealPlayers")) - healPlayers = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Repair") || split[0].equals("RepairVehicles")) - healDriveables = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("HealAmount") || split[0].equals("RepairAmount")) - healAmount = Integer.parseInt(split[1]); - else if(split[0].equals("ToolLife") || split[0].equals("ToolUses")) - toolLife = Integer.parseInt(split[1]); - else if(split[0].equals("EUPerCharge")) - EUPerCharge = Integer.parseInt(split[1]); - else if(split[0].equals("RechargeRecipe")) + super.read(config, file); + + if(FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelBase.class); + texture = config.get("Texture"); + parachute = ConfigUtils.configBool(config, "Parachute", parachute); + remote = ConfigUtils.configBool(config, "ExplosiveRemote", remote); + key = ConfigUtils.configBool(config, "Key", key); + healPlayers = ConfigUtils.configBool(config, "Heal", "HealPlayers", healPlayers); + healDriveables = ConfigUtils.configBool(config, "Repair", "RepairVehicles", healDriveables); + healAmount = ConfigUtils.configInt(config, "HealAmount", "RepairAmount", toolLife); + toolLife = ConfigUtils.configInt(config, "ToolLife", "ToolUes", toolLife); + EUPerCharge = ConfigUtils.configInt(config, "EUPerCharge", EUPerCharge); + if(config.containsKey("RechargeRecipe")) { + String[] split = ConfigUtils.getSplitFromKey(config, "RechargeRecipe"); + for(int i = 0; i < (split.length - 1) / 2; i++) { - for(int i = 0; i < (split.length - 1) / 2; i++) - { - int amount = Integer.parseInt(split[2 * i + 1]); - boolean damaged = split[2 * i + 2].contains("."); - String itemName = damaged ? split[2 * i + 2].split("\\.")[0] : split[2 * i + 2]; - int damage = damaged ? Integer.parseInt(split[2 * i + 2].split("\\.")[1]) : 0; - rechargeRecipe.add(getRecipeElement(itemName, amount, damage, shortName)); - } + int amount = Integer.parseInt(split[2 * i + 1]); + boolean damaged = split[2 * i + 2].contains("."); + String itemName = damaged ? split[2 * i + 2].split("\\.")[0] : split[2 * i + 2]; + int damage = damaged ? Integer.parseInt(split[2 * i + 2].split("\\.")[1]) : 0; + rechargeRecipe.add(getRecipeElement(itemName, amount, damage, shortName)); } - else if(split[0].equals("DestroyOnEmpty")) - destroyOnEmpty = Boolean.parseBoolean(split[1].toLowerCase()); - else if(split[0].equals("Food") || split[0].equals("Foodness")) - foodness = Integer.parseInt(split[1]); - } - catch (Exception e) - { - FlansMod.log("Reading file failed : " + shortName); - e.printStackTrace(); } + destroyOnEmpty = ConfigUtils.configBool(config, "DestroyOnEmpty", destroyOnEmpty); + foodness = ConfigUtils.configInt(config, "Food", "Foodness", foodness); } @Override diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index c3666fce..bc0e79f2 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -2,6 +2,8 @@ import com.flansmod.api.IInfoType; import com.flansmod.common.FlansMod; +import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -18,6 +20,7 @@ import java.util.List; public abstract class InfoType implements IInfoType { + public ConfigMap configMap = new ConfigMap(); /** * infoTypes */ @@ -51,27 +54,6 @@ public InfoType(TypeFile file) { infoTypes.add(this); } - public void read(TypeFile file) { - preRead(file); - for (; ; ) { - String line; - line = file.readLine(); - if (line == null) - break; - if (line.startsWith("//")) - continue; - String[] split = line.split(" "); - if (split.length < 2) - continue; - read(split, file); - } - postRead(file); - - if (shortName == null) { - infoTypes.remove(this); - } - } - /** * Method for performing actions prior to reading the type file */ @@ -82,66 +64,109 @@ public void read(TypeFile file) { */ protected abstract void postRead(TypeFile file); - /** - * Pack reader - */ - protected void read(String[] split, TypeFile file) { - try { - if (split[0].equals("Model")) - modelString = split[1]; - else if (split[0].equals("ModelScale")) - modelScale = Float.parseFloat(split[1]); - else if (split[0].equals("Name")) { - name = split[1]; - for (int i = 0; i < split.length - 2; i++) - name += " " + split[i + 2]; - } else if (split[0].equals("Description")) { - description = split[1]; - for (int i = 0; i < split.length - 2; i++) { - description = description + " " + split[i + 2]; + public void read(TypeFile file) { + preRead(file); + boolean readRecipe = false; + int recipePart = 0; + for (; ; ) { + String line = file.readLine(); + + //If its after a Recipe line, its a recipe + if (readRecipe && recipePart <= 2) { + if (line != null) { + if (line.length() == 3) + configMap.put("Recipe" + recipePart++, line); + else if (line.length() == 2) + configMap.put("Recipe" + recipePart++, line + " "); + else if (line.length() == 1) + configMap.put("Recipe" + recipePart++, line + " "); + } else { + configMap.put("Recipe" + recipePart++, " "); } - } else if (split[0].equals("ShortName")) { - shortName = split[1]; - if (iconPath == null || iconPath.isEmpty()) { - // bogus default icon, if none is given at all - otherwise texture is blank. - iconPath = "Missing-Icon-" + shortName; + continue; + } + + //Ignore the line in these cases + if (line == null) + break; + if (line.startsWith("//")) + continue; + String[] split = line.split(" "); + + //If its ammo, add it to the ammo list + if (split[0].equalsIgnoreCase("ammo")) { + configMap.ammos.add(split[1]); + continue; + } else if (split[0].equalsIgnoreCase("additem")) { + configMap.items.add(line); + continue; } - } else if (split[0].equals("Colour") || split[0].equals("Color")) { - colour = (Integer.parseInt(split[1]) << 16) + ((Integer.parseInt(split[2])) << 8) + ((Integer.parseInt(split[3]))); - } else if (split[0].equals("Icon")) { - iconPath = split[1]; - } else if (split[0].equals("RecipeOutput")) { - recipeOutput = Integer.parseInt(split[1]); - } else if (split[0].equals("Recipe")) { - recipe = new Object[split.length + 2]; - for (int i = 0; i < 3; i++) { - String line; - line = file.readLine(); - if (line == null) { - continue; + + if (split.length > 2) { + String data = ""; + for (int i = 1; i < split.length; i++) { + data += split[i] + " "; } - if (line.startsWith("//")) { - i--; - continue; + configMap.put(split[0].toLowerCase(), data.trim()); + if (split[0].equalsIgnoreCase("recipe")) { + readRecipe = true; } - recipe[i] = line; + } else if (split.length == 2){ + configMap.put(split[0].toLowerCase(), split[1]); + } else { + continue; } - recipeLine = split; - shapeless = false; - } else if (split[0].equals("ShapelessRecipe")) { - recipeLine = split; - shapeless = true; - } else if (split[0].equals("SmeltableFrom")) { - smeltableFrom = split[1]; - } else if (split[0].equals("CanDrop")) - canDrop = Boolean.parseBoolean(split[1]); + } - } catch (Exception e) { - FlansMod.log("Reading file failed : " + shortName); - e.printStackTrace(); + shortName = ConfigUtils.configString(configMap, "ShortName", shortName); + + if (shortName == null ) { + infoTypes.remove(this); + } else { + read(configMap, file); + postRead(file); } } + /** + * Pack reader + */ + protected void read(ConfigMap config, TypeFile file) { + + modelString = ConfigUtils.configString(configMap, "Model", modelString); + if (config.containsKey("ModelScale")) + modelScale = Float.parseFloat(config.get("ModelScale")); + name = ConfigUtils.configString(configMap, "Name", name); + description = ConfigUtils.configString(configMap, "Description", description); + shortName = ConfigUtils.configString(configMap, "ShortName", shortName); + + if (config.containsKey("Color")) { + String[] rgb = config.get("Color").split(" "); + colour = (Integer.parseInt(rgb[0]) << 16) + ((Integer.parseInt(rgb[1])) << 8) + ((Integer.parseInt(rgb[2]))); + } else if (config.containsKey("Colour")) { + String[] rgb = config.get("Colour").split(" "); + colour = (Integer.parseInt(rgb[0]) << 16) + ((Integer.parseInt(rgb[1])) << 8) + ((Integer.parseInt(rgb[2]))); + } + + iconPath = (config.get("Icon") == null || config.get("Icon").isEmpty()) ? "Missing-Icon-" + shortName : config.get("Icon"); + if (config.containsKey("RecipeOutput")) + recipeOutput = ConfigUtils.configInt(config, "RecipeOutput", recipeOutput); + if (config.containsKey("Recipe")) { + recipeLine = ("Recipe " + config.get("Recipe")).split(" "); + String[] split = ConfigUtils.getSplitFromKey(config, "Recipe"); + recipe = new Object[split.length + 2]; + recipe[0] = config.get("recipe0"); + recipe[1] = config.get("recipe1"); + recipe[2] = config.get("recipe2"); + } else if (config.containsKey("ShapelessRecipe")) { + recipeLine = ("Recipe " + config.get("Recipe")).split(" "); + shapeless = true; + } + smeltableFrom = ConfigUtils.configString(configMap, "SmeltableFrom", smeltableFrom); + if (config.containsKey("CanDrop")) + canDrop = Boolean.parseBoolean(config.get("CanDrop")); + } + public void addRecipe() { this.addRecipe(getItem()); } @@ -220,8 +245,9 @@ public void addRecipe(Item par1Item) { else recipe[i * 2 + rows + 1] = getRecipeElement(recipeLine[i * 2 + 2], 0); } - GameRegistry.addRecipe(new ItemStack(item, recipeOutput), recipe); + GameRegistry.addRecipe(new ItemStack(item, recipeOutput), recipe); } else { + recipe = new Object[recipeLine.length - 1]; for (int i = 0; i < (recipeLine.length - 1); i++) { if (recipeLine[i + 1].contains(".")) diff --git a/src/main/java/com/flansmod/utils/ConfigMap.java b/src/main/java/com/flansmod/utils/ConfigMap.java new file mode 100644 index 00000000..3a638ecc --- /dev/null +++ b/src/main/java/com/flansmod/utils/ConfigMap.java @@ -0,0 +1,45 @@ +package com.flansmod.utils; + +import java.util.*; + +public final class ConfigMap extends HashMap { + private final HashMap defaultMap = new HashMap<>(); + public ArrayList ammos = new ArrayList<>(); + public ArrayList items = new ArrayList<>(); + public boolean containsKey(String key) { + return defaultMap.containsKey(key.toLowerCase()); + } + + public String get(String key) { + return defaultMap.get(key.toLowerCase()); + } + + public String put(String key, String value) { + return defaultMap.put(key.toLowerCase(), value); + } + + public int size() { + return defaultMap.size(); + } + + public Set> entrySet() { + return defaultMap.entrySet(); + } + + public Collection values() { + return defaultMap.values(); + } + + public int hashCode() { + return defaultMap.hashCode(); + } + + public boolean isEmpty() { + return defaultMap.isEmpty(); + } + + public boolean equals(Object o) { + return defaultMap.equals(o); + } +} + diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java new file mode 100644 index 00000000..2f4b1292 --- /dev/null +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -0,0 +1,154 @@ +package com.flansmod.utils; + +import com.flansmod.common.FlansMod; +import com.flansmod.common.vector.Vector3f; + +public class ConfigUtils +{ + public static String configString(ConfigMap config, String settingName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return config.get(settingName.toLowerCase()); + return defaultValue; + } + + public static String configString(ConfigMap config, String settingName, String optionalName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return config.get(settingName.toLowerCase()); + if(config.containsKey(optionalName.toLowerCase())) + return config.get(optionalName.toLowerCase()); + return defaultValue; + } + + public static int configInt(ConfigMap config, String settingName, int defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Integer.parseInt(config.get(settingName.toLowerCase())); + return defaultValue; + } + + public static int configInt(ConfigMap config, String settingName, String optionalName, int defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Integer.parseInt(config.get(settingName.toLowerCase())); + if(config.containsKey(optionalName.toLowerCase())) + return Integer.parseInt(config.get(optionalName.toLowerCase())); + return defaultValue; + } + + public static int configInt(ConfigMap config, String settingName, String optionalName, String secondOptional, int defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Integer.parseInt(config.get(settingName.toLowerCase())); + if(config.containsKey(optionalName.toLowerCase())) + return Integer.parseInt(config.get(optionalName.toLowerCase())); + if(config.containsKey(secondOptional.toLowerCase())) + return Integer.parseInt(config.get(secondOptional.toLowerCase())); + return defaultValue; + } + + public static float configFloat(ConfigMap config, String settingName, float defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Float.parseFloat(config.get(settingName.toLowerCase())); + return defaultValue; + } + + public static double configDouble(ConfigMap config, String settingName, double defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Float.parseFloat(config.get(settingName.toLowerCase())); + return defaultValue; + } + + public static float configFloat(ConfigMap config, String settingName, String optionalName, float defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Float.parseFloat(config.get(settingName.toLowerCase())); + if(config.containsKey(optionalName.toLowerCase())) + return Float.parseFloat(config.get(optionalName.toLowerCase())); + return defaultValue; + } + + public static boolean configBool(ConfigMap config, String settingName, boolean defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Boolean.parseBoolean(config.get(settingName.toLowerCase())); + return defaultValue; + } + + public static boolean configBool(ConfigMap config, String settingName, String optionalName, boolean defaultValue) { + if(config.containsKey(settingName.toLowerCase())) + return Boolean.parseBoolean(config.get(settingName.toLowerCase())); + else if (config.containsKey(optionalName.toLowerCase())) + return Boolean.parseBoolean(config.get(optionalName.toLowerCase())); + return defaultValue; + } + + public static String configSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "sound", config.get(settingName.toLowerCase())); + return config.get(settingName.toLowerCase()); + } + + return defaultValue; + } + + public static String configGunSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "guns", config.get(settingName.toLowerCase())); + return config.get(settingName.toLowerCase()); + } + + return defaultValue; + } + + public static String configAASound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "aaguns", config.get(settingName.toLowerCase())); + return config.get(settingName.toLowerCase()); + } + + return defaultValue; + } + + public static String configDriveableSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "driveables", config.get(settingName.toLowerCase())); + return config.get(settingName.toLowerCase()); + } + + return defaultValue; + } + + public static String configSound(String contentPack, ConfigMap config, String settingName, String optionalName, String defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "guns", config.get(settingName.toLowerCase())); + return config.get(settingName.toLowerCase()); + } + if(config.containsKey(optionalName.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "guns", config.get(optionalName.toLowerCase())); + return config.get(optionalName.toLowerCase()); + } + + return defaultValue; + } + + public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue) { + if(config.containsKey(settingName.toLowerCase())) { + return new Vector3f(config.get(settingName.toLowerCase()), null); + } + + return defaultValue; + } + + public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue, String shortName) { + if(config.containsKey(settingName.toLowerCase())) { + return new Vector3f(config.get(settingName.toLowerCase()), shortName); + } + + return defaultValue; + } + + public static String[] getSplitFromKey (ConfigMap config, String key) { + String[] dataPieces = config.get(key).split(" "); + String[] split = new String[dataPieces.length + 1]; + split[0] = key; + for (int i = 0; i < dataPieces.length; i++) { + split[i+1] = dataPieces[i]; + } + return split; + } +} From 2c6d738a60eea80ec911ad77723fac5eede24b21 Mon Sep 17 00:00:00 2001 From: Jordan Date: Tue, 24 Jan 2023 18:35:48 -0500 Subject: [PATCH 02/32] Update ConfigUtils to handle multi-names via a string array --- .../common/driveables/VehicleType.java | 2 +- .../flansmod/common/guns/AttachmentType.java | 6 +- .../com/flansmod/common/guns/BulletType.java | 10 +-- .../com/flansmod/common/guns/GrenadeType.java | 2 +- .../com/flansmod/common/guns/GunType.java | 12 ++-- .../flansmod/common/guns/ShootableType.java | 12 ++-- .../com/flansmod/common/parts/PartType.java | 2 +- .../com/flansmod/common/teams/ArmourType.java | 6 +- .../com/flansmod/common/tools/ToolType.java | 10 +-- .../java/com/flansmod/utils/ConfigUtils.java | 70 +++++++++---------- 10 files changed, 64 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 6f80f9bf..7bbce38b 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -109,7 +109,7 @@ protected void read(ConfigMap config, TypeFile file) { turnRightModifier = ConfigUtils.configFloat(config,"TurnRightSpeed", turnRightModifier); squashMobs = ConfigUtils.configBool(config,"SquashMobs", squashMobs); fourWheelDrive = ConfigUtils.configBool(config,"FourWheelDrive", fourWheelDrive); - tank = ConfigUtils.configBool(config,"Tank", "TankMode", tank); + tank = ConfigUtils.configBool(config,new String[]{"Tank", "TankMode"}, tank); throttleDecay = ConfigUtils.configFloat(config,"ThrottleDecay", throttleDecay); mass = ConfigUtils.configFloat(config,"Mass", mass); useRealisticAcceleration = ConfigUtils.configBool(config,"UseRealisticAcceleration", useRealisticAcceleration); diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index 55d15388..e1237068 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -140,7 +140,7 @@ protected void read(ConfigMap config, TypeFile file) { modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); texture = ConfigUtils.configString(config, "Texture", texture); silencer = ConfigUtils.configBool(config, "Silencer", silencer); - disableMuzzleFlash = ConfigUtils.configBool(config, "DisableMuzzleFlash", "DisableFlash", disableMuzzleFlash); + disableMuzzleFlash = ConfigUtils.configBool(config, new String[]{"DisableMuzzleFlash", "DisableFlash"}, disableMuzzleFlash); //Flashlight settings flashlight = ConfigUtils.configBool(config, "Flashlight", flashlight); @@ -158,7 +158,7 @@ protected void read(ConfigMap config, TypeFile file) { // secondaryAmmo.add(split[1]); secondaryAmmo.add(ConfigUtils.configString(config, "SecondaryAmmo", "")); secondaryDamage = ConfigUtils.configFloat(config, "SecondaryDamage", secondaryDamage); - secondarySpread = ConfigUtils.configFloat(config, "SecondarySpread", "SecondaryAccuracy", secondarySpread); + secondarySpread = ConfigUtils.configFloat(config, new String[]{"SecondarySpread", "SecondaryAccuracy"}, secondarySpread); secondarySpeed = ConfigUtils.configFloat(config, "SecondaryBulletSpeed", secondarySpeed); secondaryShootDelay = ConfigUtils.configInt(config, "SecondaryShootDelay", secondaryShootDelay); secondaryReloadTime = ConfigUtils.configInt(config, "SecondaryReloadTime", secondaryReloadTime); @@ -181,7 +181,7 @@ protected void read(ConfigMap config, TypeFile file) { recoilControlMultiplierSprinting = ConfigUtils.configFloat(config, "RecoilControlMultiplierSprinting", recoilControlMultiplierSprinting); bulletSpeedMultiplier = ConfigUtils.configFloat(config, "BulletSpeedMultiplier", bulletSpeedMultiplier); recoilControlMultiplierSprinting = ConfigUtils.configFloat(config, "RecoilControlMultiplierSprinting", recoilControlMultiplierSprinting); - moveSpeedMultiplier = ConfigUtils.configFloat(config, "MovementSpeedMultiplier", "MoveSpeedModifier", moveSpeedMultiplier); + moveSpeedMultiplier = ConfigUtils.configFloat(config, new String[]{"MovementSpeedMultiplier", "MoveSpeedModifier"}, moveSpeedMultiplier); //Scope Variables minZoom = ConfigUtils.configFloat(config, "MinZoom", minZoom); diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 872a24af..3ca68819 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -148,18 +148,18 @@ protected void read(ConfigMap config, TypeFile file) { boolean pens = Boolean.parseBoolean(config.get("Penetrates")); penetratingPower = pens ? 1F : 0.7F; } - penetratingPower = ConfigUtils.configFloat(config, "Penetration", "PenetratingPower", penetratingPower); + penetratingPower = ConfigUtils.configFloat(config, new String[]{"Penetration", "PenetratingPower"}, penetratingPower); penetrationDecay = ConfigUtils.configFloat(config, "PenetrationDecay", penetrationDecay); dragInAir = ConfigUtils.configFloat(config, "DragInAir", dragInAir); dragInAir = dragInAir<0? 0: dragInAir>1? 1: dragInAir; dragInWater = ConfigUtils.configFloat(config, "DragInWater", dragInWater); dragInWater = dragInWater<0? 0: dragInWater>1? 1: dragInWater; numBullets = ConfigUtils.configInt(config, "NumBullets", numBullets); - bulletSpread = ConfigUtils.configFloat(config, "Accuracy", "Spread", bulletSpread); + bulletSpread = ConfigUtils.configFloat(config, new String[]{"Accuracy", "Spread"}, bulletSpread); livingProximityTrigger = ConfigUtils.configFloat(config, "LivingProximityTrigger", livingProximityTrigger); driveableProximityTrigger = ConfigUtils.configFloat(config, "VehicleProximityTrigger", driveableProximityTrigger); damageToTriggerer = ConfigUtils.configFloat(config, "DamageToTriggerer", damageToTriggerer); - primeDelay = ConfigUtils.configInt(config, "PrimeDelay", "TriggerDelay", primeDelay); + primeDelay = ConfigUtils.configInt(config, new String[]{"PrimeDelay", "TriggerDelay"}, primeDelay); explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); explodeParticleType = ConfigUtils.configString(config, "ExplodeParticles", explodeParticleType); smokeTime = ConfigUtils.configInt(config, "SmokeTime", smokeTime); @@ -171,7 +171,7 @@ protected void read(ConfigMap config, TypeFile file) { // smokeEffects.add(getPotionEffect(split)); smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); - VLS = ConfigUtils.configBool(config, "VLS", "HasDeadZone", VLS); + VLS = ConfigUtils.configBool(config, new String[]{"VLS", "HasDeadZone"}, VLS); VLSTime = ConfigUtils.configInt(config, "DeadZoneTime", VLSTime); fixedDirection = ConfigUtils.configBool(config, "FixedTrackDirection", fixedDirection); turnRadius = ConfigUtils.configFloat(config, "GuidedTurnRadius", turnRadius); @@ -195,7 +195,7 @@ protected void read(ConfigMap config, TypeFile file) { lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); maxLockOnAngle = ConfigUtils.configFloat(config, "MaxLockOnAngle", maxLockOnAngle); - lockOnForce = ConfigUtils.configFloat(config, "LockOnForce", "TurningForce", lockOnForce); + lockOnForce = ConfigUtils.configFloat(config, new String[]{"LockOnForce", "TurningForce"}, lockOnForce); maxDegreeOfMissile = ConfigUtils.configInt(config, "MaxDegreeOfLockOnMissile", maxDegreeOfMissile); tickStartHoming = ConfigUtils.configInt(config, "TickStartHoming", tickStartHoming); enableSACLOS = ConfigUtils.configBool(config, "EnableSACLOS", enableSACLOS); diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index 44b284c5..006fbea0 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -150,7 +150,7 @@ protected void read(ConfigMap config, TypeFile file) { livingProximityTrigger = ConfigUtils.configFloat(config, "LivingProximityTrigger", livingProximityTrigger); driveableProximityTrigger = ConfigUtils.configFloat(config, "VehicleProximityTrigger", driveableProximityTrigger); damageToTriggerer = ConfigUtils.configFloat(config, "DamageToTriggerer", damageToTriggerer); - primeDelay = ConfigUtils.configInt(config, "PrimeDelay", "TriggerDelay", primeDelay); + primeDelay = ConfigUtils.configInt(config, new String[]{"PrimeDelay", "TriggerDelay"}, primeDelay); //Sticky settings sticky = ConfigUtils.configBool(config, "Sticky", sticky); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 7530990b..761826b6 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -549,7 +549,7 @@ protected void read(ConfigMap config, TypeFile file) { recoilSprintingMultiplier = ConfigUtils.configFloat(config, "RecoilSprintingMultiplier", recoilSprintingMultiplier); recoilSneakingMultiplierYaw = ConfigUtils.configFloat(config, "RecoilSneakingMultiplierYaw", recoilSneakingMultiplierYaw); recoilSprintingMultiplierYaw = ConfigUtils.configFloat(config, "RecoilSprintingMultiplierYaw", recoilSprintingMultiplierYaw); - defaultSpread = ConfigUtils.configFloat(config, "Accuracy", "Spread", defaultSpread); + defaultSpread = ConfigUtils.configFloat(config, new String[]{"Accuracy", "Spread"}, defaultSpread); adsSpreadModifier = ConfigUtils.configFloat(config, "ADSSpreadModifier", adsSpreadModifier); adsSpreadModifierShotgun = ConfigUtils.configFloat(config, "ADSSpreadModifierShotgun", adsSpreadModifierShotgun); numBullets = ConfigUtils.configInt(config, "NumBullets", numBullets); @@ -612,10 +612,10 @@ protected void read(ConfigMap config, TypeFile file) { useLoopingSounds = true; FlansMod.proxy.loadSound(contentPack, "guns", config.get(key)); } - loopedSound = ConfigUtils.configSound(contentPack, config, "LoopedSound", "SpinSound", loopedSound); + loopedSound = ConfigUtils.configSound(contentPack, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); if (loopedSound != null && !loopedSound.isEmpty()) useLoopingSounds = true; - loopedSoundLength = ConfigUtils.configInt(config, "LoopedSoundLength", "SpinSoundLength", loopedSoundLength); + loopedSoundLength = ConfigUtils.configInt(config, new String[]{"LoopedSoundLength", "SpinSoundLength"}, loopedSoundLength); cooldownSound = ConfigUtils.configGunSound(contentPack, config, "CooldownSound", cooldownSound); lockOnSound = ConfigUtils.configGunSound(contentPack, config, "LockOnSound", lockOnSound); distantShootSound = ConfigUtils.configGunSound(contentPack, config, "DistantSound", distantShootSound); @@ -707,7 +707,7 @@ protected void read(ConfigMap config, TypeFile file) { ShootableType type = ShootableType.getShootableType(ammoType); ammo.add(type); } - numPrimaryAmmoItems = ConfigUtils.configInt(config, "NumAmmoSlots", "NumAmmoItemsInGun", "LoadIntoGun", numPrimaryAmmoItems); + numPrimaryAmmoItems = ConfigUtils.configInt(config, new String[]{"NumAmmoSlots", "NumAmmoItemsInGun", "LoadIntoGun"}, numPrimaryAmmoItems); bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); canShootUnderwater = ConfigUtils.configBool(config, "CanShootUnderwater", canShootUnderwater); canSetPosition = ConfigUtils.configBool(config, "CanSetPosition", canSetPosition); @@ -739,8 +739,8 @@ protected void read(ConfigMap config, TypeFile file) { } //Player modifiers - moveSpeedModifier = ConfigUtils.configFloat(config, "MoveSpeedModifier", "Slowness", moveSpeedModifier); - knockbackModifier = ConfigUtils.configFloat(config, "KnockbackReduction", "KnockbackModifier", knockbackModifier); + moveSpeedModifier = ConfigUtils.configFloat(config, new String[]{"MoveSpeedModifier", "Slowness"}, moveSpeedModifier); + knockbackModifier = ConfigUtils.configFloat(config, new String[]{"KnockbackReduction", "KnockbackModifier"}, knockbackModifier); switchDelay = ConfigUtils.configFloat(config, "SwitchDelay", switchDelay); //Attachment settings diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 88fb1f64..063894ca 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -182,7 +182,7 @@ protected void read(ConfigMap config, TypeFile file) { texture = config.get("Texture"); //Item Stuff - maxStackSize = ConfigUtils.configInt(config, "StackSize", "MaxStackSize", maxStackSize); + maxStackSize = ConfigUtils.configInt(config, new String[]{"StackSize", "MaxStackSize"}, maxStackSize); dropItemOnShoot = config.get("DropItemOnShoot"); dropItemOnReload = config.get("DropItemOnReload"); dropItemOnHit = config.get("DropItemOnHit"); @@ -190,7 +190,7 @@ protected void read(ConfigMap config, TypeFile file) { //Physics fallSpeed = ConfigUtils.configFloat(config, "FallSpeed", fallSpeed); - throwSpeed = ConfigUtils.configFloat(config, "ThrowSpeed", "ShootSpeed", throwSpeed); + throwSpeed = ConfigUtils.configFloat(config, new String[]{"ThrowSpeed", "ShootSpeed"}, throwSpeed); hitBoxSize = ConfigUtils.configFloat(config, "HitBoxSize", hitBoxSize); //Hit stuff @@ -221,11 +221,11 @@ protected void read(ConfigMap config, TypeFile file) { //Detonation conditions etc fuse = ConfigUtils.configInt(config, "Fuse", fuse); despawnTime = ConfigUtils.configInt(config, "DespawnTime", despawnTime); - explodeOnImpact = ConfigUtils.configBool(config, "ExplodeOnImpact", "DetonateOnImpact", explodeOnImpact); + explodeOnImpact = ConfigUtils.configBool(config, new String[]{"ExplodeOnImpact", "DetonateOnImpact"}, explodeOnImpact); //Detonation - fireRadius = ConfigUtils.configFloat(config, "FireRadius", "Fire", fireRadius); - explosionRadius = ConfigUtils.configFloat(config, "ExplosionRadius", "Explosion", explosionRadius); + fireRadius = ConfigUtils.configFloat(config, new String[]{"FireRadius", "Fire"}, fireRadius); + explosionRadius = ConfigUtils.configFloat(config, new String[]{"ExplosionRadius", "Explosion"}, explosionRadius); explosionPower = ConfigUtils.configFloat(config, "ExplosionPower", explosionPower); explosionBreaksBlocks = ConfigUtils.configBool(config, "ExplosionBreaksBlocks", explosionBreaksBlocks); explosionDamageVsLiving = ConfigUtils.configFloat(config, "ExplosionDamageVsLiving", explosionDamageVsLiving); @@ -245,7 +245,7 @@ protected void read(ConfigMap config, TypeFile file) { debrisParticleCount = ConfigUtils.configInt(config, "DebrisParticleCount", debrisParticleCount); //Particles - trailParticles = ConfigUtils.configBool(config, "TrailParticles", "SmokeTrail", trailParticles); + trailParticles = ConfigUtils.configBool(config, new String[]{"TrailParticles", "SmokeTrail"}, trailParticles); trailParticleType = config.get("TrailParticleType"); } diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index 2adee5fa..a24d1372 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -131,7 +131,7 @@ protected void read(ConfigMap config, TypeFile file) { } //RedstoneFlux - useRFPower = ConfigUtils.configBool(config, "UseRF", "UseRFPower", useRFPower); + useRFPower = ConfigUtils.configBool(config, new String[]{"UseRF", "UseRFPower"}, useRFPower); RFDrawRate = ConfigUtils.configInt(config, "RFDrawRate", RFDrawRate); } catch (Exception e) { FlansMod.log("Reading part file failed."); diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index 474a62e5..47105cd8 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -129,9 +129,9 @@ protected void read(ConfigMap config, TypeFile file) { } bulletDefence = ConfigUtils.configDouble(config, "BulletDefence", bulletDefence); defence = ConfigUtils.configDouble(config, "OtherDefence", defence); - moveSpeedModifier = ConfigUtils.configFloat(config, "MoveSpeedModifier", "Slowness", moveSpeedModifier); + moveSpeedModifier = ConfigUtils.configFloat(config, new String[]{"MoveSpeedModifier", "Slowness"}, moveSpeedModifier); jumpModifier = ConfigUtils.configFloat(config, "JumpModifier", jumpModifier); - knockbackModifier = ConfigUtils.configFloat(config, "KnockbackReduction", "KnockbackModifier", knockbackModifier); + knockbackModifier = ConfigUtils.configFloat(config, new String[]{"KnockbackReduction", "KnockbackModifier"}, knockbackModifier); penetrationResistance = ConfigUtils.configFloat(config, "PenetrationResistance", penetrationResistance); nightVision = ConfigUtils.configBool(config, "NightVision", nightVision); invisible = ConfigUtils.configBool(config, "Invisible", invisible); @@ -145,7 +145,7 @@ protected void read(ConfigMap config, TypeFile file) { durability = Integer.parseInt(config.get("Durability")); hasDurability = durability > 0; } - armourTextureName = ConfigUtils.configString(config, "ArmourTexture", "ArmorTexture", armourTextureName); + armourTextureName = ConfigUtils.configString(config, new String[]{"ArmourTexture", "ArmorTexture"}, armourTextureName); } catch (Exception e) { FlansMod.log("Reading armour file failed."); if (FlansMod.printStackTrace) { diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index bc3811b7..f2c9488d 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -70,10 +70,10 @@ protected void read(ConfigMap config, TypeFile file) parachute = ConfigUtils.configBool(config, "Parachute", parachute); remote = ConfigUtils.configBool(config, "ExplosiveRemote", remote); key = ConfigUtils.configBool(config, "Key", key); - healPlayers = ConfigUtils.configBool(config, "Heal", "HealPlayers", healPlayers); - healDriveables = ConfigUtils.configBool(config, "Repair", "RepairVehicles", healDriveables); - healAmount = ConfigUtils.configInt(config, "HealAmount", "RepairAmount", toolLife); - toolLife = ConfigUtils.configInt(config, "ToolLife", "ToolUes", toolLife); + healPlayers = ConfigUtils.configBool(config, new String[]{"Heal", "HealPlayers"}, healPlayers); + healDriveables = ConfigUtils.configBool(config, new String[]{"Repair", "RepairVehicles"}, healDriveables); + healAmount = ConfigUtils.configInt(config, new String[]{"HealAmount", "RepairAmount"}, toolLife); + toolLife = ConfigUtils.configInt(config, new String[]{"ToolLife", "ToolUes"}, toolLife); EUPerCharge = ConfigUtils.configInt(config, "EUPerCharge", EUPerCharge); if(config.containsKey("RechargeRecipe")) { String[] split = ConfigUtils.getSplitFromKey(config, "RechargeRecipe"); @@ -87,7 +87,7 @@ protected void read(ConfigMap config, TypeFile file) } } destroyOnEmpty = ConfigUtils.configBool(config, "DestroyOnEmpty", destroyOnEmpty); - foodness = ConfigUtils.configInt(config, "Food", "Foodness", foodness); + foodness = ConfigUtils.configInt(config, new String[]{"Food", "Foodness"}, foodness); } @Override diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index 2f4b1292..5eee3c6d 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -11,11 +11,13 @@ public static String configString(ConfigMap config, String settingName, String d return defaultValue; } - public static String configString(ConfigMap config, String settingName, String optionalName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return config.get(settingName.toLowerCase()); - if(config.containsKey(optionalName.toLowerCase())) - return config.get(optionalName.toLowerCase()); + public static String configString(ConfigMap config, String[] settingNames, String defaultValue) { + for (String name : settingNames) { + if(config.containsKey(name.toLowerCase())) { + return config.get(name.toLowerCase()); + } + } + return defaultValue; } @@ -25,21 +27,13 @@ public static int configInt(ConfigMap config, String settingName, int defaultVal return defaultValue; } - public static int configInt(ConfigMap config, String settingName, String optionalName, int defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Integer.parseInt(config.get(settingName.toLowerCase())); - if(config.containsKey(optionalName.toLowerCase())) - return Integer.parseInt(config.get(optionalName.toLowerCase())); - return defaultValue; - } + public static int configInt(ConfigMap config, String[] settingNames, int defaultValue) { + for (String name : settingNames) { + if(config.containsKey(name.toLowerCase())) { + return Integer.parseInt(config.get(name.toLowerCase())); + } + } - public static int configInt(ConfigMap config, String settingName, String optionalName, String secondOptional, int defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Integer.parseInt(config.get(settingName.toLowerCase())); - if(config.containsKey(optionalName.toLowerCase())) - return Integer.parseInt(config.get(optionalName.toLowerCase())); - if(config.containsKey(secondOptional.toLowerCase())) - return Integer.parseInt(config.get(secondOptional.toLowerCase())); return defaultValue; } @@ -55,11 +49,13 @@ public static double configDouble(ConfigMap config, String settingName, double d return defaultValue; } - public static float configFloat(ConfigMap config, String settingName, String optionalName, float defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Float.parseFloat(config.get(settingName.toLowerCase())); - if(config.containsKey(optionalName.toLowerCase())) - return Float.parseFloat(config.get(optionalName.toLowerCase())); + public static float configFloat(ConfigMap config, String[] settingNames, float defaultValue) { + for (String name : settingNames) { + if(config.containsKey(name.toLowerCase())) { + return Float.parseFloat(config.get(name.toLowerCase())); + } + } + return defaultValue; } @@ -69,11 +65,13 @@ public static boolean configBool(ConfigMap config, String settingName, boolean d return defaultValue; } - public static boolean configBool(ConfigMap config, String settingName, String optionalName, boolean defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Boolean.parseBoolean(config.get(settingName.toLowerCase())); - else if (config.containsKey(optionalName.toLowerCase())) - return Boolean.parseBoolean(config.get(optionalName.toLowerCase())); + public static boolean configBool(ConfigMap config, String[] settingNames, boolean defaultValue) { + for (String name : settingNames) { + if(config.containsKey(name.toLowerCase())) { + return Boolean.parseBoolean(config.get(name.toLowerCase())); + } + } + return defaultValue; } @@ -113,14 +111,12 @@ public static String configDriveableSound(String contentPack, ConfigMap config, return defaultValue; } - public static String configSound(String contentPack, ConfigMap config, String settingName, String optionalName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "guns", config.get(settingName.toLowerCase())); - return config.get(settingName.toLowerCase()); - } - if(config.containsKey(optionalName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "guns", config.get(optionalName.toLowerCase())); - return config.get(optionalName.toLowerCase()); + public static String configSound(String contentPack, ConfigMap config, String[] settingNames, String defaultValue) { + for (String name : settingNames) { + if(config.containsKey(name.toLowerCase())) { + FlansMod.proxy.loadSound(contentPack, "guns", config.get(name.toLowerCase())); + return config.get(name.toLowerCase()); + } } return defaultValue; From f66dc7a918a3e3f06ec7f4396f9dc2c27b669002 Mon Sep 17 00:00:00 2001 From: willy Date: Fri, 27 Jan 2023 20:45:12 -0500 Subject: [PATCH 03/32] Fix some issues, switch over driveables --- .../java/com/flansmod/common/FlansMod.java | 4 +- .../common/driveables/DriveableType.java | 1398 ++++++++--------- .../flansmod/common/driveables/PlaneType.java | 60 +- .../common/driveables/VehicleType.java | 26 +- .../collisions/RidingEntityPosition.java | 6 +- .../common/driveables/mechas/EntityMecha.java | 225 +-- .../driveables/mechas/EnumMechaItemType.java | 39 +- .../driveables/mechas/EnumMechaSlotType.java | 30 +- .../driveables/mechas/EnumMechaToolType.java | 27 +- .../common/guns/EnumAttachmentType.java | 6 +- .../flansmod/common/guns/ShootableType.java | 6 +- .../common/guns/boxes/GunBoxType.java | 20 +- .../com/flansmod/common/types/InfoType.java | 13 +- .../java/com/flansmod/utils/ConfigUtils.java | 16 + 14 files changed, 884 insertions(+), 992 deletions(-) diff --git a/src/main/java/com/flansmod/common/FlansMod.java b/src/main/java/com/flansmod/common/FlansMod.java index e1c2ad4f..4bd55f88 100644 --- a/src/main/java/com/flansmod/common/FlansMod.java +++ b/src/main/java/com/flansmod/common/FlansMod.java @@ -7,9 +7,7 @@ import com.flansmod.client.model.GunAnimations; import com.flansmod.common.driveables.*; import com.flansmod.common.driveables.mechas.*; -import com.flansmod.common.eventhandlers.PlayerDeathEventListener; -import com.flansmod.common.eventhandlers.PlayerLoginEventListener; -import com.flansmod.common.eventhandlers.ServerTickEvent; +import com.flansmod.common.eventhandlers.*; import com.flansmod.common.guns.*; import com.flansmod.common.guns.boxes.BlockGunBox; import com.flansmod.common.guns.boxes.GunBoxType; diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 604513d2..97a5cee9 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -5,6 +5,7 @@ import java.util.List; import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.block.material.Material; import net.minecraft.client.model.ModelBase; import net.minecraft.init.Items; @@ -350,119 +351,27 @@ public DriveableType(TypeFile file) { @Override public void preRead(TypeFile file) { super.preRead(file); - //Make sure the passenger arrays are set up first - for (String line : file.lines) { - if (line == null) - break; - String[] split = line.split(" "); - if (line.startsWith("//")) - continue; - - if (split.length < 2) - continue; - - try { - if (split[0].equals("Passengers")) { - numPassengers = Integer.parseInt(split[1]); - seats = new Seat[numPassengers + 1]; - break; - } - } catch (Exception e) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) - msg.append(" ").append(s); - FlansMod.log("Errored reading " + file.name + msg); - - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } - } - } - //Make sure NumWheels is read before anything else - for (String line : file.lines) { - if (line == null) - break; - if (line.startsWith("//")) - continue; - String[] split = line.split(" "); - if (split.length < 2) - continue; - - try { - if (split[0].equals("NumWheels")) { - wheelPositions = new DriveablePosition[Integer.parseInt(split[1])]; - break; - } - } catch (Exception e) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) - msg.append(" ").append(s); - FlansMod.log("Errored pre-reading " + file.name + msg); - - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } - } + //todo +// int counter = 0; +// for (String line : file.lines) { - } - int counter = 0; - for (String line : file.lines) { - if (line == null) - break; - if (line.startsWith("//")) - continue; - String[] split = line.split(" "); - if (split.length < 2) - continue; - - try { - // Passengers / Gunner Seats - if (split[0].equals("Passenger")) { - Seat seat = new Seat(split); - seats[seat.id] = seat; - if (seat.gunType != null) { - seat.gunnerID = numPassengerGunners++; - driveableRecipe.add(new ItemStack(seat.gunType.item)); - } - counter++; - } - } catch (Exception ex) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) - msg.append(" ").append(s); - FlansMod.log("Errored pre-reading " + file.name + msg); - - if (FlansMod.printStackTrace) { - ex.printStackTrace(); - } - } - try { - if (split[0].equals("Driver") || split[0].equals("Pilot")) { - if (split.length > 4) - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), - Float.parseFloat(split[6]), Float.parseFloat(split[7])); - else - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3])); - } - } catch (Exception ex) { - StringBuilder msg = new StringBuilder(" : "); - for (String s : split) - msg.append(" ").append(s); - FlansMod.log("Errored pre-reading " + file.name + msg); - - if (FlansMod.printStackTrace) { - ex.printStackTrace(); - } - } +// // Passengers / Gunner Seats +// if (split[0].equals("Passenger")) { +// Seat seat = new Seat(split); +// seats[seat.id] = seat; +// if (seat.gunType != null) { +// seat.gunnerID = numPassengerGunners++; +// driveableRecipe.add(new ItemStack(seat.gunType.item)); +// } +// counter++; +// } - if (counter == seats.length) { - break; - } - } +// if (counter == seats.length) { +// break; +// } +// } types.add(this); @@ -483,649 +392,668 @@ public void postRead(TypeFile file) { @Override protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); -// try { -// if (split[0].equals("VehicleGunModelScale")) -// vehicleGunModelScale = Float.parseFloat(split[1]); -// -// if (FMLCommonHandler.instance().getSide().isClient() && split[0].equals("Model")) -// model = FlansMod.proxy.loadModel(split[1], shortName, ModelDriveable.class); -// else if (split[0].equals("VehicleGunReloadTick")) -// reloadSoundTick = Integer.parseInt(split[1]); -// else if (split[0].equals("Texture")) -// texture = split[1]; -// -// else if (split[0].equals("IsExplosionWhenDestroyed")) -// isExplosionWhenDestroyed = Boolean.parseBoolean(split[1]); -////Explosion alterations -// else if(split[0].equals("DeathFireRadius") || split[0].equals("DeathFire")) -// deathFireRadius = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionRadius") || split[0].equals("DeathExplosion")) -// deathExplosionRadius = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionPower")) -// deathExplosionPower = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionBreaksBlocks")) -// deathExplosionBreaksBlocks = Boolean.parseBoolean(split[1].toLowerCase()); -// else if(split[0].equals("DeathExplosionDamageVsLiving")) -// deathExplosionDamageVsLiving = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionDamageVsPlayer")) -// deathExplosionDamageVsPlayer = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionDamageVsPlane")) -// deathExplosionDamageVsPlane = Float.parseFloat(split[1]); -// else if(split[0].equals("DeathExplosionDamageVsVehicle")) -// deathExplosionDamageVsVehicle = Float.parseFloat(split[1]); -// -// else if (split[0].equals("FallDamageFactor")) -// fallDamageFactor = Float.parseFloat(split[1]); -// -// //Movement Variables -// else if (split[0].equals("MaxThrottle")) -// maxThrottle = Float.parseFloat(split[1]); -// else if (split[0].equals("MaxNegativeThrottle")) -// maxNegativeThrottle = Float.parseFloat(split[1]); -// else if (split[0].equals("ClutchBrake")) -// clutchBrake = Float.parseFloat(split[1]); -// else if (split[0].equals("MaxThrottleInWater")) -// maxThrottleInWater = Float.parseFloat(split[1]); -// else if (split[0].equals("MaxDepth")) -// maxDepth = Integer.parseInt(split[1]); -// else if (split[0].equals("Drag")) -// drag = Float.parseFloat(split[1]); -// else if (split[0].equals("TurretOrigin")) -// turretOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); -// else if (split[0].equals("TurretOriginOffset")) -// turretOriginOffset = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); -// else if (split[0].equals("CollisionPoint") || split[0].equals("AddCollisionPoint")) -// collisionPoints.add(new DriveablePosition(split)); -// else if (split[0].equals("CollisionDamageEnable")) -// collisionDamageEnable = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("CollisionDamageThrottle")) -// collisionDamageThrottle = Float.parseFloat(split[1]); -// else if (split[0].equals("CollisionDamageTimes")) -// collisionDamageTimes = Float.parseFloat(split[1]); -// else if (split[0].equals("CanLockAngle")) -// canLockOnAngle = Integer.parseInt(split[1]); -// else if (split[0].equals("LockOnSoundTime")) -// lockOnSoundTime = Integer.parseInt(split[1]); -// else if (split[0].equals("LockOnToDriveables")) -// lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockOnToVehicles")) -// lockOnToVehicles = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockOnToPlanes")) -// lockOnToPlanes = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockOnToMechas")) -// lockOnToMechas = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockOnToPlayers")) -// lockOnToPlayers = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockOnToLivings")) -// lockOnToLivings = Boolean.parseBoolean(split[1].toLowerCase()); -// else if (split[0].equals("LockedOnSoundRange")) -// lockedOnSoundRange = Integer.parseInt(split[1]); -// else if (split[0].equals("CanRoll")) -// canRoll = Boolean.parseBoolean(split[1]); -// -// //Flares -// if (split[0].equals("HasFlare")) -// hasFlare = Boolean.parseBoolean(split[1]); -// if (split[0].equals("FlareDelay")) { -// flareDelay = Integer.parseInt(split[1]); -// if (flareDelay <= 0) -// flareDelay = 1; -// } -// if (split[0].equals("TimeFlareUsing")) { -// timeFlareUsing = Integer.parseInt(split[1]); -// if (timeFlareUsing <= 0) -// timeFlareUsing = 1; -// } -// -// -// //Boats -// else if (split[0].equals("PlaceableOnLand")) -// placeableOnLand = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("PlaceableOnWater")) -// placeableOnWater = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("WorksUnderwater")) -// worksUnderWater = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("PlaceableOnSponge")) -// placeableOnSponge = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("FloatOnWater")) -// floatOnWater = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("Boat")) { -// placeableOnLand = false; -// placeableOnWater = true; -// floatOnWater = true; -// wheelStepHeight = 0F; -// } else if (split[0].equals("Buoyancy")) -// buoyancy = Float.parseFloat(split[1]); -// else if (split[0].equals("FloatOffset")) -// floatOffset = Float.parseFloat(split[1]); -// -// else if (split[0].equals("CanMountEntity")) -// canMountEntity = Boolean.parseBoolean(split[1]); -// -// //Wheels -// else if (split[0].equals("Wheel") || split[0].equals("WheelPosition")) { -// wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); -// } else if (split[0].equals("WheelRadius") || split[0].equals("WheelStepHeight")) -// wheelStepHeight = Float.parseFloat(split[1]); -// else if (split[0].equals("WheelSpringStrength") || split[0].equals("SpringStrength")) -// wheelSpringStrength = Float.parseFloat(split[1]); -// else if (split[0].equals("TrackFrames")) -// animFrames = Integer.parseInt(split[1]) - 1; -// -// //Harvesting -// else if (split[0].equals("Harvester")) -// harvestBlocks = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("CollectHarvest")) -// collectHarvest = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("DropHarvest")) -// dropHarvest = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("HarvestBox")) { -// harvestBoxSize = new Vector3f(split[1], shortName); -// harvestBoxPos = new Vector3f(split[2], shortName); -// } else if (split[0].equals("HarvestMaterial")) { -// materialsHarvested.add(getMaterial(split[1])); -// } else if (split[0].equals("HarvestToolType")) { -// switch (split[1]) { -// case "Axe": -// materialsHarvested.add(Material.wood); -// materialsHarvested.add(Material.plants); -// materialsHarvested.add(Material.vine); -// break; -// case "Pickaxe": -// case "Drill": -// materialsHarvested.add(Material.iron); -// materialsHarvested.add(Material.anvil); -// materialsHarvested.add(Material.rock); -// break; -// case "Spade": -// case "Shovel": -// case "Excavator": -// materialsHarvested.add(Material.ground); -// materialsHarvested.add(Material.grass); -// materialsHarvested.add(Material.sand); -// materialsHarvested.add(Material.snow); -// materialsHarvested.add(Material.clay); -// break; -// case "Hoe": -// case "Combine": -// materialsHarvested.add(Material.plants); -// materialsHarvested.add(Material.leaves); -// materialsHarvested.add(Material.vine); -// materialsHarvested.add(Material.cactus); -// materialsHarvested.add(Material.gourd); -// break; -// case "Tank": -// materialsHarvested.add(Material.leaves); -// materialsHarvested.add(Material.cactus); -// materialsHarvested.add(Material.wood); -// materialsHarvested.add(Material.plants); -// break; -// } -// } -// -// //Cargo / Payload -// else if (split[0].equals("CargoSlots")) -// numCargoSlots = Integer.parseInt(split[1]); -// else if (split[0].equals("BombSlots") || split[0].equals("MineSlots")) -// numBombSlots = Integer.parseInt(split[1]); -// else if (split[0].equals("MissileSlots") || split[0].equals("ShellSlots")) -// numMissileSlots = Integer.parseInt(split[1]); -// else if (split[0].equals("FuelTankSize")) -// fuelTankSize = Integer.parseInt(split[1]); -// else if (split[0].equals("EngineStartTime")) -// engineStartTime = Integer.parseInt(split[1]); -// else if (split[0].equals("FilterAmmunitionInput")) -// filterAmmunition = Boolean.parseBoolean(split[1]); -// -// else if (split[0].equals("BulletDetection")) -// bulletDetectionRadius = Integer.parseInt(split[1]); -// -// //Ammo limiters -// else if (split[0].equals("AddAmmo")) -// ammo.add(BulletType.getBullet(split[1])); -// else if (split[0].equals("AllowAllAmmo") || split[0].equals("AcceptAllAmmo")) -// acceptAllAmmo = Boolean.parseBoolean(split[1]); -// -// //Weaponry -// else if (split[0].equals("Primary")) -// primary = EnumWeaponType.valueOf(split[1].toUpperCase()); -// else if (split[0].equals("Secondary")) -// secondary = EnumWeaponType.valueOf(split[1].toUpperCase()); -// else if (split[0].equals("ShootDelayPrimary")) -// shootDelayPrimary = Integer.parseInt(split[1]); -// else if (split[0].equals("ShootDelaySecondary")) -// shootDelaySecondary = Integer.parseInt(split[1]); -// else if (split[0].equals("DamageMultiplierPrimary")) -// damageMultiplierPrimary = Float.parseFloat(split[1]); -// else if (split[0].equals("DamageMultiplierSecondary")) -// damageMultiplierSecondary = Float.parseFloat(split[1]); -// else if (split[0].equals("RoundsPerMinPrimary")) -// shootDelayPrimary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; -// else if (split[0].equals("RoundsPerMinSecondary")) -// shootDelaySecondary = Float.parseFloat(split[1]) < 1200 ? 1200F / Float.parseFloat(split[1]) : 1; -// else if (split[0].equals("PlaceTimePrimary")) -// placeTimePrimary = Integer.parseInt(split[1]); -// else if (split[0].equals("PlaceTimeSecondary")) -// placeTimeSecondary = Integer.parseInt(split[1]); -// else if (split[0].equals("ReloadTimePrimary")) -// reloadTimePrimary = Integer.parseInt(split[1]); -// else if (split[0].equals("ReloadTimeSecondary")) -// reloadTimeSecondary = Integer.parseInt(split[1]); -// else if (split[0].equals("AlternatePrimary")) -// alternatePrimary = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("AlternateSecondary")) -// alternateSecondary = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("ModePrimary")) -// modePrimary = EnumFireMode.valueOf(split[1].toUpperCase()); -// else if (split[0].equals("ModeSecondary")) -// modeSecondary = EnumFireMode.valueOf(split[1].toUpperCase()); -// else if (split[0].equals("BulletSpeed")) -// bulletSpeed = Float.parseFloat(split[1]); -// else if (split[0].equals("BulletSpread")) -// bulletSpread = Float.parseFloat(split[1]); -// else if (split[0].equals("RangingGun")) -// rangingGun = Boolean.parseBoolean(split[1]); -// else if (split[0].equals("GunLength")) -// gunLength = Float.parseFloat(split[1]); -// else if (split[0].equals("RecoilDistance")) -// recoilDist = Float.parseFloat(split[1]); -// else if (split[0].equals("RecoilTime")) -// recoilTime = Float.parseFloat(split[1]); -// else if (split[0].equals("ShootPointPrimary")) { -// DriveablePosition rootPos; -// Vector3f offPos; -// String[] gun; -// if (split.length == 9) { -// gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; -// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); -// } else if (split.length == 8) { -// gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; -// offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); -// } else { -// gun = split; -// offPos = new Vector3f(0, 0, 0); -// } -// rootPos = getShootPoint(gun); -// ShootPoint sPoint = new ShootPoint(rootPos, offPos); -// shootPointsPrimary.add(sPoint); -// if (rootPos instanceof PilotGun) -// pilotGuns.add((PilotGun) sPoint.rootPos); -// } else if (split[0].equals("ShootPointSecondary")) { -// DriveablePosition rootPos; -// Vector3f offPos; -// String[] gun; -// if (split.length == 9) { -// gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; -// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); -// } else if (split.length == 8) { -// gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; -// offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); -// } else { -// gun = split; -// offPos = new Vector3f(0, 0, 0); -// } -// rootPos = getShootPoint(gun); -// ShootPoint sPoint = new ShootPoint(rootPos, offPos); -// shootPointsSecondary.add(sPoint); -// if (rootPos instanceof PilotGun) -// pilotGuns.add((PilotGun) sPoint.rootPos); -// } else if (split[0].equals("EnableReloadTime")) -// enableReloadTime = Boolean.parseBoolean(split[1]); -// -// else if (split[0].equals("ShootParticlesPrimary")) -// shootParticlesPrimary.add(new ShootParticle( -// split[1], -// Float.parseFloat(split[2]), -// Float.parseFloat(split[3]), -// Float.parseFloat(split[4]))); -// else if (split[0].equals("ShootParticlesSecondary")) -// shootParticlesSecondary.add(new ShootParticle( -// split[1], -// Float.parseFloat(split[2]), -// Float.parseFloat(split[3]), -// Float.parseFloat(split[4]))); -// -// -// if (split[0].equals("SetPlayerInvisible")) -// setPlayerInvisible = Boolean.parseBoolean(split[1].toLowerCase()); -// if (split[0].equals("IT1")) -// IT1 = Boolean.parseBoolean(split[1].toLowerCase()); -// if (split[0].equals("FixedPrimary")) -// fixedPrimaryFire = Boolean.parseBoolean(split[1].toLowerCase()); -// if (split[0].equals("FixedSecondary")) -// fixedSecondaryFire = Boolean.parseBoolean(split[1].toLowerCase()); -// if (split[0].equals("PrimaryAngle")) -// primaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// if (split[0].equals("SecondaryAngle")) -// secondaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// -// //Backwards compatibility stuff -// else if (split[0].equals("AddGun")) { -// DriveablePosition rootPos; -// Vector3f offPos; -// secondary = EnumWeaponType.GUN; -// PilotGun pilotGun; -// if (split.length == 6) { -// rootPos = (PilotGun) getShootPoint(split); -// offPos = new Vector3f(0, 0, 0); -// pilotGun = (PilotGun) getShootPoint(split); -// } else { -// String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; -// rootPos = (PilotGun) getShootPoint(gun); -// pilotGun = (PilotGun) getShootPoint(gun); -// offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); -// } -// ShootPoint sPoint = new ShootPoint(rootPos, offPos); -// shootPointsSecondary.add(sPoint); -// pilotGuns.add(pilotGun); -// driveableRecipe.add(new ItemStack(pilotGun.type.item)); -// } else if (split[0].equals("BombPosition")) { -// primary = EnumWeaponType.BOMB; -// if (split.length == 4) -// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); -// else if (split.length == 7) -// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); -// -// } else if (split[0].equals("BarrelPosition")) { -// primary = EnumWeaponType.SHELL; -// if (split.length == 4) -// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); -// else if (split.length == 7) -// shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); -// } else if (split[0].equals("ShootDelay")) -// shootDelaySecondary = Float.parseFloat(split[1]); -// else if (split[0].equals("ShellDelay") || split[0].equals("BombDelay")) -// shootDelayPrimary = Float.parseFloat(split[1]); -// -// //Recipe -// else if (split[0].equals("AddRecipeParts")) { -// EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); -// ArrayList stacks = new ArrayList<>(); -// for (int i = 0; i < (split.length - 2) / 2; i++) { -// int amount = Integer.parseInt(split[2 * i + 2]); -// boolean damaged = split[2 * i + 3].contains("."); -// String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; -// int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; -// -// // Only add part if it is NOT null. (Seems obvious?) -// ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); -// if (potentialPart != null) { -// stacks.add(potentialPart); -// driveableRecipe.add(potentialPart); -// } -// -// } -// ItemStack[] items = new ItemStack[stacks.size()]; -// items = stacks.toArray(items); -// partwiseRecipe.put(part, items); -// } -// -// //Dyes -// else if (split[0].equals("AddDye")) { -// int amount = Integer.parseInt(split[1]); -// int damage = -1; -// for (int i = 0; i < ItemDye.field_150923_a.length; i++) { -// if (ItemDye.field_150923_a[i].equals(split[2])) -// damage = i; -// } -// if (damage == -1) { -// FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); -// return; -// } -// driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); -// } -// -// -// //Health -// else if (split[0].equals("SetupPart")) { -// EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); -// CollisionBox box; -// if (split.length > 9) { -// box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); -// } else { -// box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); -// } -// health.put(part, box); -// } else if (split[0].equals("PartDeathExplosion")) { -// EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); -// -// BoxExplosion exp; -// if (split.length > 5) { -// exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]), Float.parseFloat(split[6]), Float.parseFloat(split[7])); -// } else { -// exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4])); -// } -// -// partDeathExplosions.put(part, exp); -// //Driver Position -// } else if (split[0].equals("DriverPart")) { + + try { + + //Old Pre-Read stuff + if (config.containsKey("Passengers")) { + numPassengers = Integer.parseInt(config.get("Passengers")); + seats = new Seat[numPassengers + 1]; + } + + //todo, multi + if (config.containsKey("Passenger")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Passenger"); + Seat seat = new Seat(split); + seats[seat.id] = seat; + if (seat.gunType != null) { + seat.gunnerID = numPassengerGunners++; + driveableRecipe.add(new ItemStack(seat.gunType.item)); + } + } + + if (config.containsKey("NumWheels")) { + wheelPositions = new DriveablePosition[Integer.parseInt(config.get("NumWheels"))]; + } + + if (config.containsKey("Driver")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Driver"); + if (split.length > 4) + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), + Float.parseFloat(split[6]), Float.parseFloat(split[7])); + else + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3])); + } + if (config.containsKey("Pilot")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Pilot"); + if (split.length > 4) + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), + Float.parseFloat(split[6]), Float.parseFloat(split[7])); + else + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3])); + } + + + if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) + model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelDriveable.class); + vehicleGunModelScale = ConfigUtils.configFloat(config, "VehicleGunModelScale", vehicleGunModelScale); + reloadSoundTick = ConfigUtils.configInt(config, "VehicleGunReloadTick", reloadSoundTick); + texture = ConfigUtils.configString(config, "Texture", texture); + isExplosionWhenDestroyed = ConfigUtils.configBool(config, "IsExplosionWhenDestroyed", isExplosionWhenDestroyed); + + //Explosion alterations + deathFireRadius = ConfigUtils.configFloat(config, new String[]{"DeathFireRadius", "DeathFire"}, deathFireRadius); + deathExplosionRadius = ConfigUtils.configFloat(config, new String[]{"DeathExplosionRadius", "DeathExplosion"}, deathExplosionRadius); + deathExplosionPower = ConfigUtils.configFloat(config, "DeathExplosionPower", deathExplosionPower); + deathExplosionBreaksBlocks = ConfigUtils.configBool(config, "DeathExplosionBreaksBlocks", deathExplosionBreaksBlocks); + deathExplosionDamageVsLiving = ConfigUtils.configFloat(config, "DeathExplosionDamageVsLiving", deathExplosionDamageVsLiving); + deathExplosionDamageVsPlayer = ConfigUtils.configFloat(config, "DeathExplosionDamageVsPlayer", deathExplosionDamageVsPlayer); + deathExplosionDamageVsPlane = ConfigUtils.configFloat(config, "DeathExplosionDamageVsPlane", deathExplosionDamageVsPlane); + deathExplosionDamageVsVehicle = ConfigUtils.configFloat(config, "DeathExplosionDamageVsVehicle", deathExplosionDamageVsVehicle); + + fallDamageFactor = ConfigUtils.configFloat(config, "FallDamageFactor", fallDamageFactor); + + //Movement Variables + maxThrottle = ConfigUtils.configFloat(config, "MaxThrottle", maxThrottle); + maxNegativeThrottle = ConfigUtils.configFloat(config, "MaxNegativeThrottle", maxNegativeThrottle); + clutchBrake = ConfigUtils.configFloat(config, "ClutchBrake", clutchBrake); + maxThrottleInWater = ConfigUtils.configFloat(config, "MaxThrottleInWater", maxThrottleInWater); + maxDepth = ConfigUtils.configInt(config, "MaxDepth", maxDepth); + drag = ConfigUtils.configFloat(config, "Drag", drag); + + if (config.containsKey("TurretOrigin")) { + String[] split = ConfigUtils.getSplitFromKey(config, "TurretOrigin"); + turretOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); + } + if (config.containsKey("TurretOriginOffset")) { + String[] split = ConfigUtils.getSplitFromKey(config, "TurretOriginOffset"); + turretOriginOffset = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); + } + if (config.containsKey("CollisionPoint")) { + String[] split = ConfigUtils.getSplitFromKey(config, "CollisionPoint"); + collisionPoints.add(new DriveablePosition(split)); + } + if (config.containsKey("AddCollisionPoint")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionPoint"); + collisionPoints.add(new DriveablePosition(split)); + } + + collisionDamageEnable = ConfigUtils.configBool(config, "CollisionDamageEnable", collisionDamageEnable); + collisionDamageThrottle = ConfigUtils.configFloat(config, "CollisionDamageThrottle", collisionDamageThrottle); + collisionDamageTimes = ConfigUtils.configFloat(config, "CollisionDamageTimes", collisionDamageTimes); + canLockOnAngle = ConfigUtils.configInt(config, "CanLockAngle", canLockOnAngle); + lockOnSoundTime = ConfigUtils.configInt(config, "LockOnSoundTime", lockOnSoundTime); + if (config.containsKey("LockOnToDriveables")) + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables").toLowerCase()); + lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); + lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); + lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); + lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); + lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); + lockedOnSoundRange = ConfigUtils.configInt(config, "LockedOnSoundRange", lockedOnSoundRange); + canRoll = ConfigUtils.configBool(config, "CanRoll", canRoll); + + //Flares + hasFlare = ConfigUtils.configBool(config, "HasFlare", hasFlare); + if (config.containsKey("FlareDelay")) { + flareDelay = Integer.parseInt(config.get("FlareDelay")); + if (flareDelay <= 0) + flareDelay = 1; + } + if (config.containsKey("TimeFlareUsing")) { + timeFlareUsing = Integer.parseInt(config.get("TimeFlareUsing")); + if (timeFlareUsing <= 0) + timeFlareUsing = 1; + } + + + //Boats + if (config.containsKey("Boat")) { + placeableOnLand = false; + placeableOnWater = true; + floatOnWater = true; + wheelStepHeight = 0F; + } + placeableOnLand = ConfigUtils.configBool(config, "PlaceableOnLand", placeableOnLand); + placeableOnWater = ConfigUtils.configBool(config, "PlaceableOnWater", placeableOnWater); + worksUnderWater = ConfigUtils.configBool(config, "WorksUnderwater", worksUnderWater); + placeableOnSponge = ConfigUtils.configBool(config, "PlaceableOnSponge", placeableOnSponge); + floatOnWater = ConfigUtils.configBool(config, "FloatOnWater", floatOnWater); + buoyancy = ConfigUtils.configFloat(config, "Buoyancy", buoyancy); + floatOffset = ConfigUtils.configFloat(config, "FloatOffset", floatOffset); + canMountEntity = ConfigUtils.configBool(config, "CanMountEntity", canMountEntity); + + //Wheels + if (config.containsKey("Wheel")) { + String[] split = ConfigUtils.getSplitFromKey(config, "Wheel"); + wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); + } + if (config.containsKey("WheelPosition")) { + String[] split = ConfigUtils.getSplitFromKey(config, "WheelPosition"); + wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); + } + + wheelStepHeight = ConfigUtils.configFloat(config, new String[]{"WheelRadius", "WheelStepHeight"}, wheelStepHeight); + wheelSpringStrength = ConfigUtils.configFloat(config, new String[]{"WheelSpringStrength", "SpringStrength"}, wheelSpringStrength); + animFrames = ConfigUtils.configInt(config, "TrackFrames", animFrames); + + //Harvesting + harvestBlocks = ConfigUtils.configBool(config, "Harvester", harvestBlocks); + collectHarvest = ConfigUtils.configBool(config, "CollectHarvest", collectHarvest); + dropHarvest = ConfigUtils.configBool(config, "DropHarvest", dropHarvest); + if (config.containsKey("HarvestBox")) { + String[] split = ConfigUtils.getSplitFromKey(config, "HarvestBox"); + harvestBoxSize = new Vector3f(split[1], shortName); + harvestBoxPos = new Vector3f(split[2], shortName); + } + if (config.containsKey("HarvestMaterial")) { + materialsHarvested.add(getMaterial(config.get("HarvestMaterial"))); + } + if (config.containsKey("HarvestToolType")) { + switch (config.get("HarvestToolType")) { + case "Axe": + materialsHarvested.add(Material.wood); + materialsHarvested.add(Material.plants); + materialsHarvested.add(Material.vine); + break; + case "Pickaxe": + case "Drill": + materialsHarvested.add(Material.iron); + materialsHarvested.add(Material.anvil); + materialsHarvested.add(Material.rock); + break; + case "Spade": + case "Shovel": + case "Excavator": + materialsHarvested.add(Material.ground); + materialsHarvested.add(Material.grass); + materialsHarvested.add(Material.sand); + materialsHarvested.add(Material.snow); + materialsHarvested.add(Material.clay); + break; + case "Hoe": + case "Combine": + materialsHarvested.add(Material.plants); + materialsHarvested.add(Material.leaves); + materialsHarvested.add(Material.vine); + materialsHarvested.add(Material.cactus); + materialsHarvested.add(Material.gourd); + break; + case "Tank": + materialsHarvested.add(Material.leaves); + materialsHarvested.add(Material.cactus); + materialsHarvested.add(Material.wood); + materialsHarvested.add(Material.plants); + break; + } + } + + //Cargo / Payload + numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); + numCargoSlots = ConfigUtils.configInt(config, new String[]{"BombSlots", "MineSlots"}, numCargoSlots); + numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); + numCargoSlots = ConfigUtils.configInt(config, new String[]{"MissileSlots", "ShellSlots"}, numCargoSlots); + numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); + fuelTankSize = ConfigUtils.configInt(config, "FuelTankSize", fuelTankSize); + engineStartTime = ConfigUtils.configInt(config, "EngineStartTime", engineStartTime); + filterAmmunition = ConfigUtils.configBool(config, "FilterAmmunitionInput", filterAmmunition); + + bulletDetectionRadius = ConfigUtils.configFloat(config, "BulletDetection", bulletDetectionRadius); + + //Ammo limiters + if (config.containsKey("AddAmmo")) + ammo.add(BulletType.getBullet(config.get("AddAmmo"))); + acceptAllAmmo = ConfigUtils.configBool(config, new String[]{"AllowAllAmmo", "AcceptAllAmmo"}, acceptAllAmmo); + + //Weaponry + if (config.containsKey("Primary")) + primary = EnumWeaponType.valueOf(config.get("Primary").toUpperCase()); + if (config.containsKey("Secondary")) + primary = EnumWeaponType.valueOf(config.get("Secondary").toUpperCase()); + shootDelayPrimary = ConfigUtils.configFloat(config, "ShootDelayPrimary", shootDelayPrimary); + shootDelaySecondary = ConfigUtils.configFloat(config, "ShootDelaySecondary", shootDelaySecondary); + damageMultiplierPrimary = ConfigUtils.configFloat(config, "DamageMultiplierPrimary", damageMultiplierPrimary); + damageMultiplierSecondary = ConfigUtils.configFloat(config, "DamageMultiplierSecondary", damageMultiplierSecondary); + if (config.containsKey("RoundsPerMinPrimary")) + shootDelayPrimary = Float.parseFloat(config.get("RoundsPerMinPrimary")) < 1200 ? 1200F / Float.parseFloat(config.get("RoundsPerMinPrimary")) : 1; + if (config.containsKey("RoundsPerMinSecondary")) + shootDelaySecondary = Float.parseFloat(config.get("RoundsPerMinSecondary")) < 1200 ? 1200F / Float.parseFloat(config.get("RoundsPerMinSecondary")) : 1; + placeTimePrimary = ConfigUtils.configInt(config, "PlaceTimePrimary", placeTimePrimary); + placeTimeSecondary = ConfigUtils.configInt(config, "PlaceTimeSecondary", placeTimeSecondary); + reloadTimePrimary = ConfigUtils.configInt(config, "ReloadTimePrimary", reloadTimePrimary); + reloadTimeSecondary = ConfigUtils.configInt(config, "ReloadTimeSecondary", reloadTimeSecondary); + alternatePrimary = ConfigUtils.configBool(config, "AlternatePrimary", alternatePrimary); + alternateSecondary = ConfigUtils.configBool(config, "AlternateSecondary", alternateSecondary); + if (config.containsKey("ModePrimary")) + modePrimary = EnumFireMode.valueOf(config.get("ModePrimary").toUpperCase()); + if (config.containsKey("ModeSecondary")) + modeSecondary = EnumFireMode.valueOf(config.get("ModeSecondary").toUpperCase()); + bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); + bulletSpread = ConfigUtils.configFloat(config, "BulletSpread", bulletSpread); + rangingGun = ConfigUtils.configBool(config, "RangingGun", rangingGun); + gunLength = ConfigUtils.configFloat(config, "GunLength", gunLength); + recoilDist = ConfigUtils.configFloat(config, "RecoilDistance", recoilDist); + recoilTime = ConfigUtils.configFloat(config, "RecoilTime", recoilTime); + if (config.containsKey("ShootPointPrimary")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootPointPrimary"); + DriveablePosition rootPos; + Vector3f offPos; + String[] gun; + if (split.length == 9) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } else if (split.length == 8) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; + offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); + } else { + gun = split; + offPos = new Vector3f(0, 0, 0); + } + rootPos = getShootPoint(gun); + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsPrimary.add(sPoint); + if (rootPos instanceof PilotGun) + pilotGuns.add((PilotGun) sPoint.rootPos); + } + if (config.containsKey("ShootPointSecondary")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootPointSecondary"); + DriveablePosition rootPos; + Vector3f offPos; + String[] gun; + if (split.length == 9) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } else if (split.length == 8) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; + offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); + } else { + gun = split; + offPos = new Vector3f(0, 0, 0); + } + rootPos = getShootPoint(gun); + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsSecondary.add(sPoint); + if (rootPos instanceof PilotGun) + pilotGuns.add((PilotGun) sPoint.rootPos); + } + enableReloadTime = ConfigUtils.configBool(config, "EnableReloadTime", enableReloadTime); + if (config.containsKey("ShootParticlesPrimary")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootParticlesPrimary"); + shootParticlesPrimary.add(new ShootParticle( + split[1], + Float.parseFloat(split[2]), + Float.parseFloat(split[3]), + Float.parseFloat(split[4]))); + } + + if (config.containsKey("ShootParticlesSecondary")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootParticlesSecondary"); + shootParticlesSecondary.add(new ShootParticle( + split[1], + Float.parseFloat(split[2]), + Float.parseFloat(split[3]), + Float.parseFloat(split[4]))); + } + + setPlayerInvisible = ConfigUtils.configBool(config, "SetPlayerInvisible", setPlayerInvisible); + IT1 = ConfigUtils.configBool(config, "IT1", IT1); + fixedPrimaryFire = ConfigUtils.configBool(config, "FixedPrimary", fixedPrimaryFire); + fixedSecondaryFire = ConfigUtils.configBool(config, "FixedSecondary", fixedSecondaryFire); + if (config.containsKey("PrimaryAngle")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PrimaryAngle"); + primaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); + } + if (config.containsKey("SecondaryAngle")) { + String[] split = ConfigUtils.getSplitFromKey(config, "SecondaryAngle"); + secondaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); + } + + + //Backwards compatibility stuff + if (config.containsKey("AddGun")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddGun"); + DriveablePosition rootPos; + Vector3f offPos; + secondary = EnumWeaponType.GUN; + PilotGun pilotGun; + + if (split.length == 6) { + rootPos = (PilotGun) getShootPoint(split); + offPos = new Vector3f(0, 0, 0); + pilotGun = (PilotGun) getShootPoint(split); + } else { + String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + rootPos = (PilotGun) getShootPoint(gun); + pilotGun = (PilotGun) getShootPoint(gun); + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsSecondary.add(sPoint); + pilotGuns.add(pilotGun); + driveableRecipe.add(new ItemStack(pilotGun.type.item)); + } + + if (config.containsKey("BombPosition")) { + String[] split = ConfigUtils.getSplitFromKey(config, "BombPosition"); + primary = EnumWeaponType.BOMB; + if (split.length == 4) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); + else if (split.length == 7) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); + + } + if (config.containsKey("BarrelPosition")) { + String[] split = ConfigUtils.getSplitFromKey(config, "BarrelPosition"); + primary = EnumWeaponType.SHELL; + if (split.length == 4) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); + else if (split.length == 7) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); + } + + shootDelaySecondary = ConfigUtils.configFloat(config, "ShootDelay", shootDelaySecondary); + shootDelayPrimary = ConfigUtils.configFloat(config, "ShellDelay", shootDelayPrimary); + + //Recipe + if (config.containsKey("AddRecipeParts")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddRecipeParts"); + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + ArrayList stacks = new ArrayList<>(); + for (int i = 0; i < (split.length - 2) / 2; i++) { + int amount = Integer.parseInt(split[2 * i + 2]); + boolean damaged = split[2 * i + 3].contains("."); + String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; + int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; + + // Only add part if it is NOT null. (Seems obvious?) + ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); + if (potentialPart != null) { + stacks.add(potentialPart); + driveableRecipe.add(potentialPart); + } + + } + ItemStack[] items = new ItemStack[stacks.size()]; + items = stacks.toArray(items); + partwiseRecipe.put(part, items); + } + + //Dyes + else if (config.containsKey("AddDye")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddDye"); + int amount = Integer.parseInt(split[1]); + int damage = -1; + for (int i = 0; i < ItemDye.field_150923_a.length; i++) { + if (ItemDye.field_150923_a[i].equals(split[2])) + damage = i; + } + if (damage == -1) { + FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); + return; + } + driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); + } + + + //Health + else if (config.containsKey("SetupPart")) { + String[] split = ConfigUtils.getSplitFromKey(config, "SetupPart"); + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + CollisionBox box; + if (split.length > 9) { + box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); + } else { + box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); + } + health.put(part, box); + } + if (config.containsKey("PartDeathExplosion")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PartDeathExplosion"); + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + + BoxExplosion exp; + if (split.length > 5) { + exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]), Float.parseFloat(split[6]), Float.parseFloat(split[7])); + } else { + exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4])); + } + + partDeathExplosions.put(part, exp); + //Driver Position + } +// if (split[0].equals("DriverPart")) { // seats[0].part = EnumDriveablePart.getPart(split[1]); -// } else if (split[0].equals("DriverGun") || split[0].equals("PilotGun")) { +// } +// else if (split[0].equals("DriverGun") || split[0].equals("PilotGun")) { // seats[0].gunName = split[2]; -// } else if (split[0].equals("DriverGunOrigin")) +// } +// else if (split[0].equals("DriverGunOrigin")) // seats[0].gunOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); // // else if (split[0].equals("RotatedDriverOffset")) { // seats[0].rotatedOffset = new Vector3f(Integer.parseInt(split[1]) / 16F, Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F); -// } else if (split[0].equals("RotatedPassengerOffset")) { -// seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); -// } else if (split[0].equals("DriverAimSpeed")) { -// seats[0].aimingSpeed = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// } else if (split[0].equals("PassengerAimSpeed")) { -// seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); -// } else if (split[0].equals("DriverLegacyAiming")) { -// seats[0].legacyAiming = Boolean.parseBoolean(split[1]); -// } else if (split[0].equals("PassengerLegacyAiming")) { -// seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); -// } else if (split[0].equals("DriverYawBeforePitch")) { -// seats[0].yawBeforePitch = Boolean.parseBoolean(split[1]); -// } else if (split[0].equals("PassengerYawBeforePitch")) { -// seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); -// } else if (split[0].equals("DriverLatePitch")) { -// seats[0].latePitch = Boolean.parseBoolean(split[1]); -// } else if (split[0].equals("PassengerLatePitch")) { -// seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); -// } else if (split[0].equals("DriverTraverseSounds")) { -// seats[0].traverseSounds = Boolean.parseBoolean(split[1]); -// } else if (split[0].equals("PassengerTraverseSounds")) { -// seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); -// } -// -// else if (split[0].equals("GunOrigin")) -// seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); -// -// //Y offset for badly built models :P -// else if (split[0].equals("YOffset")) -// yOffset = Float.parseFloat(split[1]); -// //Third person camera distance -// else if (split[0].equals("CameraDistance")) -// cameraDistance = Float.parseFloat(split[1]); -// -// //Sound -// else if (split[0].equals("StartSoundRange")) -// startSoundRange = Integer.parseInt(split[1]); -// else if (split[0].equals("StartSoundLength")) -// startSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("EngineSoundRange")) -// engineSoundRange = Integer.parseInt(split[1]); -// else if (split[0].equals("EngineSoundLength")) -// engineSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("IdleSoundLength")) -// idleSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("ExitSoundLength")) -// exitSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("BackSoundRange")) -// backSoundRange = Integer.parseInt(split[1]); -// else if (split[0].equals("BackSoundLength")) -// backSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("SoundTime")) -// soundTime = Integer.parseInt(split[1]); -// else if (split[0].equals("YawSoundLength")) -// seats[0].yawSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("PitchSoundLength")) -// seats[0].pitchSoundLength = Integer.parseInt(split[1]); -// else if (split[0].equals("PassengerYawSoundLength")) -// seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); -// else if (split[0].equals("PassengerPitchSoundLength")) -// seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); -// else if (split[0].equals("StartSound")) { -// startSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("EngineSound")) { -// engineSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("IdleSound")) { -// idleSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ExitSound")) { -// exitSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("BackSound")) { -// backSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("YawSound")) { -// seats[0].yawSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("PitchSound")) { -// seats[0].pitchSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("PassengerYawSound")) { -// seats[Integer.parseInt(split[1])].yawSound = split[2]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("PassengerPitchSound")) { -// seats[Integer.parseInt(split[1])].pitchSound = split[2]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ShootMainSound") || split[0].equals("ShootSoundPrimary") || split[0].equals("ShellSound") || split[0].equals("BombSound")) { -// shootSoundPrimary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ShootReloadSound")) { -// shootReloadSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ShootSecondarySound") || split[0].equals("ShootSoundSecondary")) { -// shootSoundSecondary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("PlaceSoundPrimary")) { -// placeSoundPrimary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("PlaceSoundSecondary")) { -// placeSoundSecondary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ReloadSoundPrimary")) { -// reloadSoundPrimary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("ReloadSoundSecondary")) { -// reloadSoundSecondary = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("LockedOnSound")) { -// lockedOnSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } else if (split[0].equals("LockOnSound")) { -// lockOnSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "guns", split[1]); -// } else if (split[0].equals("LockingOnSound")) { -// lockingOnSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "guns", split[1]); // } -// if (split[0].equals("FlareSound")) { -// flareSound = split[1]; -// FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); -// } -// -// if (split[0].equals("FancyCollision")) -// fancyCollision = Boolean.parseBoolean(split[1]); -// -// if (split[0].equals("AddCollisionMesh")) { -// CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "core"); -// collisionBox.add(box); -// //colbox = box; -// } -// -// if (split[0].equals("AddCollisionMeshRaw")) { -// Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); -// Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); -// Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); -// Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); -// Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); -// Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); -// Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); -// Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); -// Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); -// CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "core"); -// collisionBox.add(box); -// //colbox = box; +// else if (split[0].equals("RotatedPassengerOffset")) { +// seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); // } -// -// if (split[0].equals("AddTurretCollisionMesh")) { -// CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "turret"); -// collisionBox.add(box); -// //colbox = box; +// else if (split[0].equals("DriverAimSpeed")) { +// seats[0].aimingSpeed = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); // } -// -// if (split[0].equals("AddTurretCollisionMeshRaw")) { -// Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); -// Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); -// Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); -// Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); -// Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); -// Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); -// Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); -// Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); -// Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); -// CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "turret"); -// collisionBox.add(box); -// //colbox = box; +// else if (split[0].equals("PassengerAimSpeed")) { +// seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); // } -// -// -// if (split[0].equals("LeftLinkPoint")) { -// leftTrackPoints.add(new Vector3f(split[1], shortName)); +// else if (split[0].equals("DriverLegacyAiming")) { +// seats[0].legacyAiming = Boolean.parseBoolean(split[1]); // } -// -// if (split[0].equals("RightLinkPoint")) { -// rightTrackPoints.add(new Vector3f(split[1], shortName)); +// else if (split[0].equals("PassengerLegacyAiming")) { +// seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); // } -// -// if (split[0].equals("TrackLinkLength")) { -// trackLinkLength = Float.parseFloat(split[1]); +// seats[0].yawBeforePitch = ConfigUtils.configInt(config, "DriverYawBeforePitch", seats[0].yawBeforePitch); +// else if (split[0].equals("PassengerYawBeforePitch")) { +// seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); // } -// -// // ICBM Mod Radar -// else if (split[0].equals("OnRadar")) -// onRadar = split[1].equals("True"); -// -// else if (split[0].equalsIgnoreCase("AddParticle") || split[0].equalsIgnoreCase("AddEmitter")) { -// ParticleEmitter emitter = new ParticleEmitter(); -// emitter.effectType = split[1]; -// emitter.emitRate = Integer.parseInt(split[2]); -// emitter.origin = new Vector3f(split[3], shortName); -// emitter.extents = new Vector3f(split[4], shortName); -// emitter.velocity = new Vector3f(split[5], shortName); -// emitter.minThrottle = Float.parseFloat(split[6]); -// emitter.maxThrottle = Float.parseFloat(split[7]); -// emitter.minHealth = Float.parseFloat(split[8]); -// emitter.maxHealth = Float.parseFloat(split[9]); -// emitter.part = split[10]; -// //Scale from model coords to world coords -// emitter.origin.scale(1.0f / 16.0f); -// emitter.extents.scale(1.0f / 16.0f); -// emitter.velocity.scale(1.0f / 16.0f); -// emitters.add(emitter); +// seats[0].latePitch = ConfigUtils.configInt(config, "DriverLatePitch", seats[0].latePitch); +// if (split[0].equals("PassengerLatePitch")) { +// seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); // } -// } catch (Exception e) { -// if (split != null) { -// StringBuilder msg = new StringBuilder(" : "); -// for (String s : split) msg.append(" ").append(s); -// FlansMod.log("Errored reading " + file.name + msg); -// } else { -// FlansMod.log("Errored reading " + file.name); +// else if (split[0].equals("DriverTraverseSounds")) { +// seats[0].traverseSounds = Boolean.parseBoolean(split[1]); // } -// if (FlansMod.printStackTrace) { -// e.printStackTrace(); +// else if (split[0].equals("PassengerTraverseSounds")) { +// seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); // } -// } + + if (config.containsKey("GunOrigin")) { + String[] split = ConfigUtils.getSplitFromKey(config, "GunOrigin"); + seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); + } + + //Y offset for badly built models :P + yOffset = ConfigUtils.configFloat(config, "YOffset", yOffset); + //Third person camera distance + cameraDistance = ConfigUtils.configFloat(config, "CameraDistance", cameraDistance); + + //Sound + startSoundRange = ConfigUtils.configInt(config, "StartSoundRange", startSoundRange); + startSoundLength = ConfigUtils.configInt(config, "StartSoundLength", startSoundLength); + engineSoundRange = ConfigUtils.configInt(config, "EngineSoundRange", engineSoundRange); + engineSoundLength = ConfigUtils.configInt(config, "EngineSoundLength", engineSoundLength); + idleSoundLength = ConfigUtils.configInt(config, "IdleSoundLength", idleSoundLength); + exitSoundLength = ConfigUtils.configInt(config, "ExitSoundLength", exitSoundLength); + backSoundRange = ConfigUtils.configInt(config, "BackSoundRange", backSoundRange); + backSoundLength = ConfigUtils.configInt(config, "BackSoundLength", backSoundLength); + soundTime = ConfigUtils.configInt(config, "SoundTime", soundTime); + seats[0].yawSoundLength = ConfigUtils.configInt(config, "YawSoundLength", seats[0].yawSoundLength); + seats[0].pitchSoundLength = ConfigUtils.configInt(config, "PitchSoundLength", seats[0].pitchSoundLength); + + if (config.containsKey("PassengerYawSoundLength")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PassengerYawSoundLength"); + seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); + } + + if (config.containsKey("PassengerPitchSoundLength")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PassengerPitchSoundLength"); + seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); + } + + startSound = ConfigUtils.configDriveableSound(contentPack, config, "StartSound", startSound); + engineSound = ConfigUtils.configDriveableSound(contentPack, config, "EngineSound", engineSound); + idleSound = ConfigUtils.configDriveableSound(contentPack, config, "IdleSound", idleSound); + exitSound = ConfigUtils.configDriveableSound(contentPack, config, "ExitSound", exitSound); + backSound = ConfigUtils.configDriveableSound(contentPack, config, "BackSound", backSound); + seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); + seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); + + if (config.containsKey("PassengerYawSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PassengerYawSound"); + seats[Integer.parseInt(split[1])].yawSound = split[2]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("PassengerPitchSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "PassengerPitchSound"); + seats[Integer.parseInt(split[1])].pitchSound = split[2]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShootMainSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootMainSound"); + shootSoundPrimary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShootSoundPrimary")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootSoundPrimary"); + shootSoundPrimary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShellSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShellSound"); + shootSoundPrimary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("BombSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "BombSound"); + shootSoundPrimary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShootReloadSound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootReloadSound"); + shootReloadSound = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShootSecondarySound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootSecondarySound"); + shootSoundSecondary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + if (config.containsKey("ShootSecondarySound")) { + String[] split = ConfigUtils.getSplitFromKey(config, "ShootSecondarySound"); + shootSoundSecondary = split[1]; + FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); + } + + placeSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundPrimary", placeSoundPrimary); + placeSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundSecondary", placeSoundSecondary); + reloadSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ReloadSoundPrimary", reloadSoundPrimary); + reloadSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "ReloadSoundSecondary", reloadSoundSecondary); + lockedOnSound = ConfigUtils.configDriveableSound(contentPack, config, "LockedOnSound", lockedOnSound); + lockOnSound = ConfigUtils.configGunSound(contentPack, config, "LockOnSound", lockOnSound); + lockingOnSound = ConfigUtils.configGunSound(contentPack, config, "LockingOnSound", lockingOnSound); + flareSound = ConfigUtils.configDriveableSound(contentPack, config, "FlareSound", flareSound); + + fancyCollision = ConfigUtils.configBool(config, "FancyCollision", fancyCollision); + + if (config.containsKey("AddCollisionMesh")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionMesh"); + CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "core"); + collisionBox.add(box); + //colbox = box; + } + + if (config.containsKey("AddCollisionMeshRaw")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionMeshRaw"); + Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); + Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); + Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); + Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); + Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); + Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); + Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); + Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); + Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); + Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); + CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "core"); + collisionBox.add(box); + //colbox = box; + } + + if (config.containsKey("AddTurretCollisionMesh")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddTurretCollisionMesh"); + CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "turret"); + collisionBox.add(box); + //colbox = box; + } + + if (config.containsKey("AddTurretCollisionMeshRaw")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddTurretCollisionMeshRaw"); + Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); + Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); + Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); + Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); + Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); + Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); + Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); + Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); + Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); + Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); + CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "turret"); + collisionBox.add(box); + //colbox = box; + } + + + if (config.containsKey("LeftLinkPoint")) { + leftTrackPoints.add(new Vector3f(config.get("LeftLinkPoint"), shortName)); + } + if (config.containsKey("RightLinkPoint")) { + rightTrackPoints.add(new Vector3f(config.get("RightLinkPoint"), shortName)); + } + + trackLinkLength = ConfigUtils.configFloat(config, "TrackLinkLength", trackLinkLength); + + // ICBM Mod Radar + onRadar = ConfigUtils.configBool(config, "OnRadar", onRadar); + + + if (config.containsKey("AddParticle") || config.containsKey("AddEmitter")) { + String[] split = ConfigUtils.getSplitFromKey(config, new String[]{"AddParticle", "AddEmitter"}); + ParticleEmitter emitter = new ParticleEmitter(); + emitter.effectType = split[1]; + emitter.emitRate = Integer.parseInt(split[2]); + emitter.origin = new Vector3f(split[3], shortName); + emitter.extents = new Vector3f(split[4], shortName); + emitter.velocity = new Vector3f(split[5], shortName); + emitter.minThrottle = Float.parseFloat(split[6]); + emitter.maxThrottle = Float.parseFloat(split[7]); + emitter.minHealth = Float.parseFloat(split[8]); + emitter.maxHealth = Float.parseFloat(split[9]); + emitter.part = split[10]; + //Scale from model coords to world coords + emitter.origin.scale(1.0f / 16.0f); + emitter.extents.scale(1.0f / 16.0f); + emitter.velocity.scale(1.0f / 16.0f); + emitters.add(emitter); + } + } catch (Exception e) { + FlansMod.log("Errored reading " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } + } } private DriveablePosition getShootPoint(String[] split) { diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 1fab1735..7f97201a 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -196,43 +196,43 @@ protected void read(ConfigMap config, TypeFile file) { //Animations //Wings - ConfigUtils.configVector(config, "WingPosition1", wingPos1, shortName); - ConfigUtils.configVector(config, "WingPosition2", wingPos2, shortName); - ConfigUtils.configVector(config, "WingRotation1", wingRot1, shortName); - ConfigUtils.configVector(config, "WingRotation2", wingRot2, shortName); - ConfigUtils.configVector(config, "WingRate", wingRate, shortName); - ConfigUtils.configVector(config, "WingRotRate", wingRotRate, shortName); + wingPos1 = ConfigUtils.configVector(config, "WingPosition1", wingPos1, shortName); + wingPos2 = ConfigUtils.configVector(config, "WingPosition2", wingPos2, shortName); + wingRot1 = ConfigUtils.configVector(config, "WingRotation1", wingRot1, shortName); + wingRot2 = ConfigUtils.configVector(config, "WingRotation2", wingRot2, shortName); + wingRate = ConfigUtils.configVector(config, "WingRate", wingRate, shortName); + wingRotRate = ConfigUtils.configVector(config, "WingRotRate", wingRotRate, shortName); //Wing Wheels - ConfigUtils.configVector(config, "WingWheelPosition1", wingWheelPos1, shortName); - ConfigUtils.configVector(config, "WingWheelPosition2", wingWheelPos2, shortName); - ConfigUtils.configVector(config, "WingWheelRotation1", wingWheelRot1, shortName); - ConfigUtils.configVector(config, "WingWheelRotation2", wingWheelRot2, shortName); - ConfigUtils.configVector(config, "WingWheelRate", wingWheelRate, shortName); - ConfigUtils.configVector(config, "WingWheelRotRate", wingWheelRotRate, shortName); + wingWheelPos1 = ConfigUtils.configVector(config, "WingWheelPosition1", wingWheelPos1, shortName); + wingWheelPos2= ConfigUtils.configVector(config, "WingWheelPosition2", wingWheelPos2, shortName); + wingWheelRot1 = ConfigUtils.configVector(config, "WingWheelRotation1", wingWheelRot1, shortName); + wingWheelRot2 = ConfigUtils.configVector(config, "WingWheelRotation2", wingWheelRot2, shortName); + wingWheelRate = ConfigUtils.configVector(config, "WingWheelRate", wingWheelRate, shortName); + wingWheelRotRate = ConfigUtils.configVector(config, "WingWheelRotRate", wingWheelRotRate, shortName); //Body Wheels - ConfigUtils.configVector(config, "BodyWheelPosition1", bodyWheelPos1, shortName); - ConfigUtils.configVector(config, "BodyWheelPosition2", bodyWheelPos2, shortName); - ConfigUtils.configVector(config, "BodyWheelRotation1", bodyWheelRot1, shortName); - ConfigUtils.configVector(config, "BodyWheelRotation2", bodyWheelRot2, shortName); - ConfigUtils.configVector(config, "BodyWheelRate", bodyWheelRate, shortName); - ConfigUtils.configVector(config, "BodyWheelRotRate", bodyWheelRotRate, shortName); + bodyWheelPos1 = ConfigUtils.configVector(config, "BodyWheelPosition1", bodyWheelPos1, shortName); + bodyWheelPos2 = ConfigUtils.configVector(config, "BodyWheelPosition2", bodyWheelPos2, shortName); + bodyWheelRot1 = ConfigUtils.configVector(config, "BodyWheelRotation1", bodyWheelRot1, shortName); + bodyWheelRot2 = ConfigUtils.configVector(config, "BodyWheelRotation2", bodyWheelRot2, shortName); + bodyWheelRate = ConfigUtils.configVector(config, "BodyWheelRate", bodyWheelRate, shortName); + bodyWheelRotRate = ConfigUtils.configVector(config, "BodyWheelRotRate", bodyWheelRotRate, shortName); //Tail Wheels - ConfigUtils.configVector(config, "TailWheelPosition1", tailWheelPos1, shortName); - ConfigUtils.configVector(config, "TailWheelPosition2", tailWheelPos2, shortName); - ConfigUtils.configVector(config, "TailWheelRotation1", tailWheelRot1, shortName); - ConfigUtils.configVector(config, "TailWheelRotation2", tailWheelRot2, shortName); - ConfigUtils.configVector(config, "TailWheelRate", tailWheelRate, shortName); - ConfigUtils.configVector(config, "TailWheelRotRate", tailWheelRotRate, shortName); + tailWheelPos1 = ConfigUtils.configVector(config, "TailWheelPosition1", tailWheelPos1, shortName); + tailWheelPos2 = ConfigUtils.configVector(config, "TailWheelPosition2", tailWheelPos2, shortName); + tailWheelRot1 = ConfigUtils.configVector(config, "TailWheelRotation1", tailWheelRot1, shortName); + tailWheelRot2 = ConfigUtils.configVector(config, "TailWheelRotation2", tailWheelRot2, shortName); + tailWheelRate = ConfigUtils.configVector(config, "TailWheelRate", tailWheelRate, shortName); + tailWheelRotRate = ConfigUtils.configVector(config, "TailWheelRotRate", tailWheelRotRate, shortName); - ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); - ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); - ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); - ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); - ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); - ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); + doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); + doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); + doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); + doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); + doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); //In-flight inventory invInflight = ConfigUtils.configBool(config, "InflightInventory", invInflight); diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index a5782a82..b61c2c8c 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -130,19 +130,19 @@ protected void read(ConfigMap config, TypeFile file) { flipLinkFix = ConfigUtils.configBool(config,"FlipLinkFix", flipLinkFix); //Animations - ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); - ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); - ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); - ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); - ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); - ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); - - ConfigUtils.configVector(config, "Door2Position1", door2Pos1, shortName); - ConfigUtils.configVector(config, "Door2Position2", door2Pos2, shortName); - ConfigUtils.configVector(config, "Door2Rotation1", door2Rot1, shortName); - ConfigUtils.configVector(config, "Door2Rotation2", door2Rot2, shortName); - ConfigUtils.configVector(config, "Door2Rate", door2Rate, shortName); - ConfigUtils.configVector(config, "Door2RotRate", door2RotRate, shortName); + doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); + doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); + doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); + doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); + doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); + doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + + door2Pos1 = ConfigUtils.configVector(config, "Door2Position1", door2Pos1, shortName); + door2Pos2 = ConfigUtils.configVector(config, "Door2Position2", door2Pos2, shortName); + door2Rot1 = ConfigUtils.configVector(config, "Door2Rotation1", door2Rot1, shortName); + door2Rot2 = ConfigUtils.configVector(config, "Door2Rotation2", door2Rot2, shortName); + door2Rate = ConfigUtils.configVector(config, "Door2Rate", door2Rate, shortName); + door2RotRate = ConfigUtils.configVector(config, "Door2RotRate", door2RotRate, shortName); //Armaments diff --git a/src/main/java/com/flansmod/common/driveables/collisions/RidingEntityPosition.java b/src/main/java/com/flansmod/common/driveables/collisions/RidingEntityPosition.java index 5e2afa05..6c0c758d 100644 --- a/src/main/java/com/flansmod/common/driveables/collisions/RidingEntityPosition.java +++ b/src/main/java/com/flansmod/common/driveables/collisions/RidingEntityPosition.java @@ -11,16 +11,14 @@ public class RidingEntityPosition { public EnumDriveablePart part; - public RidingEntityPosition(float hitX, float hitY, float hitZ, int surface, double length, EnumDriveablePart type) - { + public RidingEntityPosition(float hitX, float hitY, float hitZ, int surface, double length, EnumDriveablePart type) { contactPos = new Vector3f(hitX, hitY, hitZ); contactSurface = surface; distance = (float)length; } - public float length(Vector3f pos1, Vector3f pos2) - { + public float length(Vector3f pos1, Vector3f pos2) { float result = (float)Math.sqrt(((pos1.x - pos2.x)*(pos1.x - pos2.x)) + ((pos1.y - pos2.y)*(pos1.y - pos2.y)) + ((pos1.z - pos2.z)*(pos1.z - pos2.z))); return result; diff --git a/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java b/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java index a52b7ab0..e79699a4 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java @@ -1,5 +1,6 @@ package com.flansmod.common.driveables.mechas; +import java.lang.reflect.Type; import java.util.ArrayList; import com.flansmod.client.debug.EntityDebugVector; @@ -132,8 +133,7 @@ public class EntityMecha extends EntityDriveable - public EntityMecha(World world) - { + public EntityMecha(World world) { super(world); setSize(2F, 3F); stepHeight = 3; @@ -142,8 +142,7 @@ public EntityMecha(World world) isMecha = true; } - public EntityMecha(World world, double x, double y, double z, MechaType type, DriveableData data, NBTTagCompound tags, EntityPlayer p) - { + public EntityMecha(World world, double x, double y, double z, MechaType type, DriveableData data, NBTTagCompound tags, EntityPlayer p) { super(world, type, data, p); legAxes = new RotatedAxes(); setSize(2F, 3F); @@ -154,8 +153,7 @@ public EntityMecha(World world, double x, double y, double z, MechaType type, Dr isMecha = true; } - public EntityMecha(World world, double x, double y, double z, EntityPlayer placer, MechaType type, DriveableData data, NBTTagCompound tags) - { + public EntityMecha(World world, double x, double y, double z, EntityPlayer placer, MechaType type, DriveableData data, NBTTagCompound tags) { this(world, x, y, z, type, data, tags, placer); rotateYaw(placer.rotationYaw + 90F); legAxes.rotateGlobalYaw(placer.rotationYaw + 90F); @@ -164,8 +162,7 @@ public EntityMecha(World world, double x, double y, double z, EntityPlayer place } @Override - protected void initType(DriveableType type, boolean clientSide) - { + protected void initType(DriveableType type, boolean clientSide) { super.initType(type, clientSide); setSize(((MechaType)type).width, ((MechaType)type).height); stepHeight = ((MechaType)type).stepHeight; @@ -173,8 +170,7 @@ protected void initType(DriveableType type, boolean clientSide) } @Override - protected void writeEntityToNBT(NBTTagCompound tag) - { + protected void writeEntityToNBT(NBTTagCompound tag) { super.writeEntityToNBT(tag); tag.setFloat("LegsYaw", legAxes.getYaw()); tag.setTag("Inventory", inventory.writeToNBT(new NBTTagCompound())); @@ -182,8 +178,7 @@ protected void writeEntityToNBT(NBTTagCompound tag) } @Override - protected void readEntityFromNBT(NBTTagCompound tag) - { + protected void readEntityFromNBT(NBTTagCompound tag) { super.readEntityFromNBT(tag); legAxes.setAngles(tag.getFloat("LegsYaw"), 0, 0); inventory.readFromNBT(tag.getCompoundTag("Inventory")); @@ -191,16 +186,14 @@ protected void readEntityFromNBT(NBTTagCompound tag) } @Override - public void writeSpawnData(ByteBuf data) - { + public void writeSpawnData(ByteBuf data) { super.writeSpawnData(data); ByteBufUtils.writeTag(data, inventory.writeToNBT(new NBTTagCompound())); isMecha = true; } @Override - public void readSpawnData(ByteBuf data) - { + public void readSpawnData(ByteBuf data) { super.readSpawnData(data); legAxes.rotateGlobalYaw(axes.getYaw()); prevLegsYaw = legAxes.getYaw(); @@ -210,13 +203,10 @@ public void readSpawnData(ByteBuf data) } @Override - public void onMouseMoved(int deltaX, int deltaY) - { - } + public void onMouseMoved(int deltaX, int deltaY) {} @Override - public boolean interactFirst(EntityPlayer entityplayer) - { + public boolean interactFirst(EntityPlayer entityplayer) { if(isDead) return false; if(worldObj.isRemote) @@ -243,112 +233,83 @@ public MechaType getMechaType() } @Override - public boolean pressKey(int key, EntityPlayer player) - { + public boolean pressKey(int key, EntityPlayer player) { MechaType type = getMechaType(); DriveableData data = getDriveableData(); //send keys which require server side updates to the server - if(worldObj.isRemote && (key == 6 || key == 8 || key == 9)) - { + if(worldObj.isRemote && (key == 6 || key == 8 || key == 9)) { FlansMod.getPacketHandler().sendToServer(new PacketDriveableKey(key)); return true; } - - switch(key) - { - case 0 : //Forwards (these movement cases are redundant, as Mechas need to stop when the key is released) - { - return true; - } - case 1 : //Backwards - { - return true; - } - case 2 : //Left - { - return true; - } - case 3 : //Right - { - return true; - } - case 4 : //Jump - { - boolean canThrustCreatively = seats != null && seats[0] != null && seats[0].riddenByEntity instanceof EntityPlayer && ((EntityPlayer)seats[0].riddenByEntity).capabilities.isCreativeMode; - if(onGround && (jumpDelay == 0) && (canThrustCreatively || data.fuelInTank > data.engine.fuelConsumption) && isPartIntact(EnumDriveablePart.hips)) - { - jumpDelay = 20; - motionY += type.jumpVelocity; - if(!canThrustCreatively) - data.fuelInTank -= data.engine.fuelConsumption; - } - return true; - } - case 5 : //Down : Do nothing - { - return true; - } - case 6 : //Exit : Get out - { - if (seats[0].riddenByEntity != null) { - seats[0].riddenByEntity.setInvisible(false); - seats[0].riddenByEntity.mountEntity(null); - } - - return true; - } - case 7 : //Inventory - { - FlansMod.getPacketHandler().sendToServer(new PacketDriveableGUI(4)); - ((EntityPlayer)seats[0].riddenByEntity).openGui(FlansMod.INSTANCE, 10, worldObj, chunkCoordX, chunkCoordY, chunkCoordZ); - return true; - } - case 8 : //UseR - { - return true; //useItem(false); - } - case 9 : //UseL - { - return true; //useItem(true); - } - case 10 : //Change control mode : Do nothing - { - FlansMod.proxy.changeControlMode((EntityPlayer)seats[0].riddenByEntity); - seats[0].playerLooking = new RotatedAxes(0,0,0); - return true; - } - case 11 : //Roll left : Do nothing - { - return true; - } - case 12 : //Roll right : Do nothing - { - return true; - } - case 13 : //Gear : Do nothing - { + + + switch (key) { + case 0: // Forwards + case 1: // Backwards + case 2: // Left + case 3: // Right return true; - } - case 14 : //Door : Do nothing - { + case 4: // Jump + return handleJump(data, type); + case 5: // Down: Do nothing return true; - } - case 15 : //??? - { + case 6: // Exit: Get out + handleExit(); + break; + case 7: // Inventory + handleInventory(); + break; + case 8: // UseR + case 9: // UseL return true; - } - case 16 : //??? - { - return true; - } - case 17 : //??? - { + case 10: // Change control mode + handleControlModeChange(); + break; + case 11: // Roll left + case 12: // Roll right + case 13: // Gear + case 14: // Door + case 15: + case 16: + case 17: return true; + default: + return false; + } + + return false; + } + + private boolean handleJump(DriveableData data, MechaType type) { + boolean canThrustCreatively = seats != null && seats[0] != null && seats[0].riddenByEntity instanceof EntityPlayer && ((EntityPlayer) seats[0].riddenByEntity).capabilities.isCreativeMode; + if (onGround && (jumpDelay == 0) && (canThrustCreatively || data.fuelInTank > data.engine.fuelConsumption) && isPartIntact(EnumDriveablePart.hips)) { + jumpDelay = 20; + motionY += type.jumpVelocity; + if (!canThrustCreatively) { + data.fuelInTank -= data.engine.fuelConsumption; } - - } + return true; + } return false; } + + private void handleExit() { + if (seats[0].riddenByEntity != null) { + seats[0].riddenByEntity.setInvisible(false); + seats[0].riddenByEntity.mountEntity(null); + } + } + + private void handleInventory() { + FlansMod.getPacketHandler().sendToServer(new PacketDriveableGUI(4)); + ((EntityPlayer) seats[0].riddenByEntity).openGui(FlansMod.INSTANCE, 10, worldObj, chunkCoordX, chunkCoordY, chunkCoordZ); + } + + private void handleControlModeChange() { + FlansMod.proxy.changeControlMode((EntityPlayer) seats[0].riddenByEntity); + seats[0].playerLooking = new RotatedAxes(0, 0, 0); + } + private boolean useItem(boolean left) { @@ -445,12 +406,9 @@ else if(bulletStack.getItem() instanceof ItemBullet) float hammerAngle = gunType.model == null ? 0 : gunType.model.hammerAngle; float althammerAngle = gunType.model == null ? 0 : gunType.model.althammerAngle; - if(left) - { + if(left) { leftAnimations.doShoot(pumpDelay, pumpTime, hammerDelay, hammerAngle, althammerAngle, casingDelay); - } - else - { + } else { rightAnimations.doShoot(pumpDelay, pumpTime, hammerDelay, hammerAngle, althammerAngle, casingDelay); } } @@ -586,9 +544,7 @@ else if( setDead(); } - } - else - { + } else { driveableData.parts.get(EnumDriveablePart.core).attack(i * vulnerability(), damagesource.isFireDamage()); } return true; @@ -800,13 +756,10 @@ else if (node.legPart == (6)){ if(diamondTimer > 0) --diamondTimer; //TODO better implement this - if(isPartIntact(EnumDriveablePart.hips)) - { + if(isPartIntact(EnumDriveablePart.hips)) { setSize(type.width, type.height); yOffset = type.yOffset; - } - else - { + } else { setSize(type.width, type.height - type.chassisHeight); yOffset = type.yOffset - type.chassisHeight; } @@ -819,8 +772,7 @@ else if (node.legPart == (6)){ ticksSinceUsed++; if(!worldObj.isRemote && seats[0].riddenByEntity != null) ticksSinceUsed = 0; - if(!worldObj.isRemote && TeamsManager.mechaLove > 0 && ticksSinceUsed > TeamsManager.mechaLove * 20) - { + if(!worldObj.isRemote && TeamsManager.mechaLove > 0 && ticksSinceUsed > TeamsManager.mechaLove * 20) { setDead(); } @@ -829,11 +781,9 @@ else if (node.legPart == (6)){ toggleTimer--; //Player is not driving this. Update its position from server update packets - if(worldObj.isRemote && !thePlayerIsDrivingThis) - { + if(worldObj.isRemote && !thePlayerIsDrivingThis) { //The driveable is currently moving towards its server position. Continue doing so. - if (serverPositionTransitionTicker > 0) - { + if (serverPositionTransitionTicker > 0) { double x = posX + (serverPosX - posX) / serverPositionTransitionTicker; double y = posY + (serverPosY - posY) / serverPositionTransitionTicker; double z = posZ + (serverPosZ - posZ) / serverPositionTransitionTicker; @@ -853,15 +803,12 @@ else if (node.legPart == (6)){ //Movement - if(seats[0] != null) - { + if(seats[0] != null) { if(seats[0].riddenByEntity instanceof EntityLivingBase && !(seats[0].riddenByEntity instanceof EntityPlayer)) axes.setAngles(((EntityLivingBase)seats[0].riddenByEntity).renderYawOffset + 90F, 0F, 0F); - else - { + else { //Function to limit Head Movement Left/Right - if(type.limitHeadTurn) - { + if(type.limitHeadTurn) { float axesLegs = legAxes.getYaw(); float axesBody = axes.getYaw(); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaItemType.java index fa779888..535cb507 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaItemType.java @@ -4,29 +4,34 @@ public enum EnumMechaItemType { upgrade, tool, armUpgrade, legUpgrade, headUpgrade, shoulderUpgrade, feetUpgrade, hipsUpgrade, nothing; - public static EnumMechaItemType getToolType(String s) - { - for(EnumMechaItemType type : values()) - { + public static EnumMechaItemType getToolType(String s) { + for(EnumMechaItemType type : values()) { if(type.toString().equals(s)) return type; } return nothing; } - public EnumMechaSlotType[] getValidSlots() - { - switch(this) - { - case upgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.u1, EnumMechaSlotType.u2, EnumMechaSlotType.u3, EnumMechaSlotType.u4, EnumMechaSlotType.u5 }; - case tool : return new EnumMechaSlotType[] { EnumMechaSlotType.leftTool, EnumMechaSlotType.rightTool }; - case armUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.leftArm, EnumMechaSlotType.rightArm }; - case legUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.legs }; - case headUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.head }; - case shoulderUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.leftShoulder, EnumMechaSlotType.rightShoulder }; - case feetUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.feet }; - case hipsUpgrade : return new EnumMechaSlotType[] { EnumMechaSlotType.hips }; - default : return new EnumMechaSlotType[] {}; + public EnumMechaSlotType[] getValidSlots() { + switch(this) { + case upgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.u1, EnumMechaSlotType.u2, EnumMechaSlotType.u3, EnumMechaSlotType.u4, EnumMechaSlotType.u5 }; + case tool : + return new EnumMechaSlotType[] { EnumMechaSlotType.leftTool, EnumMechaSlotType.rightTool }; + case armUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.leftArm, EnumMechaSlotType.rightArm }; + case legUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.legs }; + case headUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.head }; + case shoulderUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.leftShoulder, EnumMechaSlotType.rightShoulder }; + case feetUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.feet }; + case hipsUpgrade : + return new EnumMechaSlotType[] { EnumMechaSlotType.hips }; + default : + return new EnumMechaSlotType[] {}; } } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaSlotType.java b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaSlotType.java index 3e0343e7..94225093 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaSlotType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaSlotType.java @@ -4,18 +4,24 @@ public enum EnumMechaSlotType { leftTool, rightTool, leftArm, rightArm, head, leftShoulder, rightShoulder, hips, legs, feet, u1, u2, u3, u4, u5; - public boolean accepts(EnumMechaItemType type) - { - switch(this) - { - case leftTool : case rightTool : return type == EnumMechaItemType.tool; - case leftArm : case rightArm : return type == EnumMechaItemType.armUpgrade; - case head : return type == EnumMechaItemType.headUpgrade; - case leftShoulder : case rightShoulder : return type == EnumMechaItemType.shoulderUpgrade; - case legs : return type == EnumMechaItemType.legUpgrade; - case hips : return type == EnumMechaItemType.hipsUpgrade; - case feet : return type == EnumMechaItemType.feetUpgrade; - case u1 : case u2 : case u3 : case u4 : case u5 : return type == EnumMechaItemType.upgrade; + public boolean accepts(EnumMechaItemType type) { + switch(this) { + case leftTool : case rightTool : + return type == EnumMechaItemType.tool; + case leftArm : case rightArm : + return type == EnumMechaItemType.armUpgrade; + case head : + return type == EnumMechaItemType.headUpgrade; + case leftShoulder : case rightShoulder : + return type == EnumMechaItemType.shoulderUpgrade; + case legs : + return type == EnumMechaItemType.legUpgrade; + case hips : + return type == EnumMechaItemType.hipsUpgrade; + case feet : + return type == EnumMechaItemType.feetUpgrade; + case u1 : case u2 : case u3 : case u4 : case u5 : + return type == EnumMechaItemType.upgrade; } return false; } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaToolType.java b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaToolType.java index 7173ad42..4d06a310 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaToolType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/EnumMechaToolType.java @@ -6,25 +6,26 @@ public enum EnumMechaToolType { pickaxe, axe, shovel, shears, sword; - public static EnumMechaToolType getToolType(String s) - { - for(EnumMechaToolType type : values()) - { + public static EnumMechaToolType getToolType(String s) { + for(EnumMechaToolType type : values()) { if(type.toString().equals(s)) return type; } return sword; } - public boolean effectiveAgainst(Material material) - { - switch(this) - { - case pickaxe : return material == Material.iron || material == Material.anvil || material == Material.rock || material == Material.ice; - case axe : return material == Material.wood || material == Material.plants || material == Material.vine; - case shovel : return material == Material.grass || material == Material.ground || material == Material.sponge || material == Material.sand || material == Material.snow || material == Material.craftedSnow || material == Material.clay; - case shears : return material == Material.leaves || material == Material.vine || material == Material.cloth || material == Material.carpet; - case sword : return material == Material.web; + public boolean effectiveAgainst(Material material) { + switch(this) { + case pickaxe : + return material == Material.iron || material == Material.anvil || material == Material.rock || material == Material.ice; + case axe : + return material == Material.wood || material == Material.plants || material == Material.vine; + case shovel : + return material == Material.grass || material == Material.ground || material == Material.sponge || material == Material.sand || material == Material.snow || material == Material.craftedSnow || material == Material.clay; + case shears : + return material == Material.leaves || material == Material.vine || material == Material.cloth || material == Material.carpet; + case sword : + return material == Material.web; } return false; } diff --git a/src/main/java/com/flansmod/common/guns/EnumAttachmentType.java b/src/main/java/com/flansmod/common/guns/EnumAttachmentType.java index fa12a00f..bf41c56b 100644 --- a/src/main/java/com/flansmod/common/guns/EnumAttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/EnumAttachmentType.java @@ -4,10 +4,8 @@ public enum EnumAttachmentType { barrel, sights, stock, grip, gadget, slide, pump, accessory, generic; - public static EnumAttachmentType get(String s) - { - for(EnumAttachmentType type : values()) - { + public static EnumAttachmentType get(String s) { + for(EnumAttachmentType type : values()) { if(type.toString().equals(s)) return type; } diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 063894ca..655e03ae 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -161,11 +161,9 @@ public void postRead(TypeFile file) { if (readDamageVsPlayer == false) { damageVsPlayer = damageVsLiving; - } - if (readDamageVsEntity == false) { + } if (readDamageVsEntity == false) { damageVsEntity = damageVsVehicles; - } - if (readDamageVsPlanes == false) { + } if (readDamageVsPlanes == false) { damageVsPlanes = damageVsVehicles; } } diff --git a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java index 4a249718..0b5c5958 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java +++ b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java @@ -72,18 +72,18 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { //Block Textures - ConfigUtils.configString(config, "TopTexture", topTexturePath); - ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); - ConfigUtils.configString(config, "SideTexture", sideTexturePath); + topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); + bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); + sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); //GunBox gui customisation - ConfigUtils.configString(config, "GuiTexture", guiTexturePath); - ConfigUtils.configString(config, "GunBoxNameColor", gunBoxTextColor); - ConfigUtils.configString(config, "PageTextColor", pageTextColor); - ConfigUtils.configString(config, "ListTextColor", itemListTextColor); - ConfigUtils.configString(config, "ItemTextColor", itemTextColor); - ConfigUtils.configString(config, "ButtonTextColor", buttonTextColor); - ConfigUtils.configString(config, "ButtonTextHighlight", buttonTextHoverColor); + guiTexturePath = ConfigUtils.configString(config, "GuiTexture", guiTexturePath); + gunBoxTextColor = ConfigUtils.configString(config, "GunBoxNameColor", gunBoxTextColor); + pageTextColor = ConfigUtils.configString(config, "PageTextColor", pageTextColor); + itemListTextColor = ConfigUtils.configString(config, "ListTextColor", itemListTextColor); + itemTextColor = ConfigUtils.configString(config, "ItemTextColor", itemTextColor); + buttonTextColor = ConfigUtils.configString(config, "ButtonTextColor", buttonTextColor); + buttonTextHoverColor = ConfigUtils.configString(config, "ButtonTextHighlight", buttonTextHoverColor); if (config.containsKey("Page") || config.containsKey("SetPage")) { diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index bc0e79f2..5d952a75 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -276,11 +276,9 @@ public static ItemStack getRecipeElement(String s, int amount, int damage) { public static ItemStack getRecipeElement(String s, int amount, int damage, String requester) { if (s.equals("doorIron")) { return new ItemStack(Items.iron_door, amount); - } - if (s.equals("doorWood")) { + } if (s.equals("doorWood")) { return new ItemStack(Items.wooden_door, amount); - } - if (s.equals("clayItem")) { + } if (s.equals("clayItem")) { return new ItemStack(Items.clay_ball, amount); } for (Object object : Item.itemRegistry) { @@ -292,13 +290,12 @@ public static ItemStack getRecipeElement(String s, int amount, int damage, Strin for (InfoType type : infoTypes) { if (type.shortName.equals(s)) return new ItemStack(type.item, amount, damage); - } - if (s.equals("gunpowder")) { + } if (s.equals("gunpowder")) { return new ItemStack(Items.gunpowder, amount); - } - if (s.equals("iron")) { + } if (s.equals("iron")) { return new ItemStack(Items.iron_ingot, amount); } + FlansMod.log("Could not find " + s + " when adding recipe for " + requester); return null; } diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index 5eee3c6d..129311a5 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -147,4 +147,20 @@ public static String[] getSplitFromKey (ConfigMap config, String key) { } return split; } + + public static String[] getSplitFromKey (ConfigMap config, String[] keys) { + for (String key : keys) { + if (config.containsKey(key)) { + String[] dataPieces = config.get(key).split(" "); + String[] split = new String[dataPieces.length + 1]; + split[0] = key; + for (int i = 0; i < dataPieces.length; i++) { + split[i+1] = dataPieces[i]; + } + return split; + } + } + + return null; + } } From f7e4bf788398cd82cc8e2f25403ffabc1050a0f3 Mon Sep 17 00:00:00 2001 From: willy Date: Sun, 29 Jan 2023 12:48:24 -0500 Subject: [PATCH 04/32] broken config fixes --- eclipse/Flan/Modern Weapons Pack/bullets/TRIGAT.txt | 2 +- eclipse/Flan/WW2 Pack/vehicles/Chi-Ha.txt | 2 +- eclipse/Flan/WW2 Pack/vehicles/KV1.txt | 2 +- eclipse/Flan/WW2 Pack/vehicles/Type4HoRo.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eclipse/Flan/Modern Weapons Pack/bullets/TRIGAT.txt b/eclipse/Flan/Modern Weapons Pack/bullets/TRIGAT.txt index 98661144..7fe9f75f 100644 --- a/eclipse/Flan/Modern Weapons Pack/bullets/TRIGAT.txt +++ b/eclipse/Flan/Modern Weapons Pack/bullets/TRIGAT.txt @@ -11,7 +11,7 @@ FallSpeed 1 //The maximum stack size MaxStackSize 24 //The number of rounds each item has. Limited to 32000. -RoundsPerItem 0.5 +RoundsPerItem 1 //The damage multiplier caused by the bullet on hitting an entity DamageVsLiving 20 DamageVsVehicles 600 diff --git a/eclipse/Flan/WW2 Pack/vehicles/Chi-Ha.txt b/eclipse/Flan/WW2 Pack/vehicles/Chi-Ha.txt index 6105a0a1..2147289f 100644 --- a/eclipse/Flan/WW2 Pack/vehicles/Chi-Ha.txt +++ b/eclipse/Flan/WW2 Pack/vehicles/Chi-Ha.txt @@ -36,7 +36,7 @@ ShellSlots 5 //Driver and passenger positions Driver 0 14 0 -360 360 -3 3.5 RotatedDriverOffset 5 0 1 -Passengers 0 +Passengers 1 Passenger 1 10 28 0 turret -360 360 -15 60 type99 Type-99 GunOrigin 1 10 24 0 RotatedPassengerOffset 1 0 0 0 diff --git a/eclipse/Flan/WW2 Pack/vehicles/KV1.txt b/eclipse/Flan/WW2 Pack/vehicles/KV1.txt index 6cdfb54e..586832d6 100644 --- a/eclipse/Flan/WW2 Pack/vehicles/KV1.txt +++ b/eclipse/Flan/WW2 Pack/vehicles/KV1.txt @@ -37,7 +37,7 @@ ShellSlots 5 //Driver and passenger positions Driver 0 28 0 -360 360 -10 20 RotatedDriverOffset -26 0 0 -Passengers 0 +Passengers 1 Passenger 1 0 16 0 turret -360 360 -15 60 dp28 DP28 GunOrigin 1 0 30 0 BarrelPosition 0 34 0 diff --git a/eclipse/Flan/WW2 Pack/vehicles/Type4HoRo.txt b/eclipse/Flan/WW2 Pack/vehicles/Type4HoRo.txt index caf837b7..1958be02 100644 --- a/eclipse/Flan/WW2 Pack/vehicles/Type4HoRo.txt +++ b/eclipse/Flan/WW2 Pack/vehicles/Type4HoRo.txt @@ -36,7 +36,7 @@ ShellSlots 5 //Driver and passenger positions Driver 3 5 15 -1.5 1.5 -2 15 RotatedDriverOffset 13 0 -8 -Passengers 0 +Passengers 1 Passenger 1 10 28 0 turret -360 360 -15 60 type99 Type-99 GunOrigin 1 10 24 0 RotatedPassengerOffset 1 0 0 0 From 2a4413a56edd662d0cea7c58097a2fcee8455659 Mon Sep 17 00:00:00 2001 From: willy Date: Sun, 29 Jan 2023 13:05:00 -0500 Subject: [PATCH 05/32] Various fixes, update gun model config stuff --- .../common/driveables/DriveableType.java | 33 +- .../com/flansmod/common/guns/GunType.java | 424 +++++++----------- .../flansmod/common/teams/ArmourBoxType.java | 4 +- .../com/flansmod/common/types/InfoType.java | 7 +- .../java/com/flansmod/utils/ConfigMap.java | 36 +- .../java/com/flansmod/utils/ConfigUtils.java | 10 + 6 files changed, 222 insertions(+), 292 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 97a5cee9..c1786401 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -396,24 +396,29 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - - //Old Pre-Read stuff + //Old Pre-Read stuff //todo, multi if (config.containsKey("Passengers")) { numPassengers = Integer.parseInt(config.get("Passengers")); seats = new Seat[numPassengers + 1]; - } - //todo, multi - if (config.containsKey("Passenger")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Passenger"); - Seat seat = new Seat(split); - seats[seat.id] = seat; - if (seat.gunType != null) { - seat.gunnerID = numPassengerGunners++; - driveableRecipe.add(new ItemStack(seat.gunType.item)); + if (config.containsKey("Passenger")) { + for (String entry : config.getAll("Passenger")) { + String[] split = ("Passenger " + entry).split(" "); + Seat seat = new Seat(split); + if (seat.id < seats.length) { + seats[seat.id] = seat; + if (seat.gunType != null) { + seat.gunnerID = numPassengerGunners++; + driveableRecipe.add(new ItemStack(seat.gunType.item)); + } + } + } } } + + + if (config.containsKey("NumWheels")) { wheelPositions = new DriveablePosition[Integer.parseInt(config.get("NumWheels"))]; } @@ -871,7 +876,11 @@ else if (config.containsKey("SetupPart")) { if (config.containsKey("GunOrigin")) { String[] split = ConfigUtils.getSplitFromKey(config, "GunOrigin"); - seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + if (seats[Integer.parseInt(split[1])] != null) + seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); } //Y offset for badly built models :P diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 29177af4..d72e13aa 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -720,7 +720,6 @@ protected void read(ConfigMap config, TypeFile file) { //Custom Melee Stuff if (config.containsKey("UseCustomMelee") && Boolean.parseBoolean(config.get("UseCustomMelee"))) { secondaryFunction = EnumSecondaryFunction.CUSTOM_MELEE; - secondaryFunction = EnumSecondaryFunction.get(config.get("SecondaryFunction")); } if (config.containsKey("UseCustomMeleeWhenShoot") && Boolean.parseBoolean(config.get("UseCustomMeleeWhenShoot"))) secondaryFunctionWhenShoot = EnumSecondaryFunction.CUSTOM_MELEE; @@ -777,136 +776,81 @@ protected void read(ConfigMap config, TypeFile file) { shieldDimensions = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); } //TODO fix this call - if (FMLCommonHandler.instance().getSide().isClient()) { - //processAnimationConfigs(split); + if (FMLCommonHandler.instance().getSide().isClient() && model != null) { + processAnimationConfigs(config); } } - public void processAnimationConfigs(String[] split) { - if (split[0].equals("animMinigunBarrelOrigin")) - model.minigunBarrelOrigin = parseVector3f(split); - else if (split[0].equals("animBarrelAttachPoint")) - model.barrelAttachPoint = parseVector3f(split); - else if (split[0].equals("animScopeAttachPoint")) - model.scopeAttachPoint = parseVector3f(split); - else if (split[0].equals("animStockAttachPoint")) - model.stockAttachPoint = parseVector3f(split); - else if (split[0].equals("animGripAttachPoint")) - model.gripAttachPoint = parseVector3f(split); - else if (split[0].equals("animGadgetAttachPoint")) - model.gadgetAttachPoint = parseVector3f(split); - else if (split[0].equals("animSlideAttachPoint")) - model.slideAttachPoint = parseVector3f(split); - else if (split[0].equals("animPumpAttachPoint")) - model.pumpAttachPoint = parseVector3f(split); - else if (split[0].equals("animAccessoryAttachPoint")) - model.accessoryAttachPoint = parseVector3f(split); - - else if (split[0].equals("animDefaultBarrelFlashPoint")) - model.defaultBarrelFlashPoint = parseVector3f(split); - else if (split[0].equals("animMuzzleFlashPoint")) - model.muzzleFlashPoint = parseVector3f(split); - - else if (split[0].equals("animHasFlash")) - model.hasFlash = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animHasArms")) - model.hasArms = Boolean.parseBoolean(split[1]); - else if (split[0].equals("easyArms")) - model.easyArms = Boolean.parseBoolean(split[1]); - else if (split[0].equals("armScale")) - model.armScale = parseVector3f(split); - - - else if (split[0].equals("animLeftArmPos")) - model.leftArmPos = parseVector3f(split); - else if (split[0].equals("animLeftArmRot")) - model.leftArmRot = parseVector3f(split); - else if (split[0].equals("animLeftArmScale")) - model.leftArmScale = parseVector3f(split); - else if (split[0].equals("animRightArmPos")) - model.rightArmPos = parseVector3f(split); - else if (split[0].equals("animRightArmRot")) - model.rightArmRot = parseVector3f(split); - else if (split[0].equals("animRightArmScale")) - model.rightArmScale = parseVector3f(split); - - else if (split[0].equals("animRightArmReloadPos")) - model.rightArmReloadPos = parseVector3f(split); - else if (split[0].equals("animRightArmReloadRot")) - model.rightArmReloadRot = parseVector3f(split); - else if (split[0].equals("animLeftArmReloadPos")) - model.leftArmReloadPos = parseVector3f(split); - else if (split[0].equals("animLeftArmReloadRot")) - model.leftArmReloadRot = parseVector3f(split); - - else if (split[0].equals("animRightArmChargePos")) - model.rightArmChargePos = parseVector3f(split); - else if (split[0].equals("animRightArmChargeRot")) - model.rightArmChargeRot = parseVector3f(split); - else if (split[0].equals("animLeftArmChargePos")) - model.leftArmChargePos = parseVector3f(split); - else if (split[0].equals("animLeftArmChargeRot")) - model.leftArmChargeRot = parseVector3f(split); - - else if (split[0].equals("animStagedRightArmReloadPos")) - model.stagedrightArmReloadPos = parseVector3f(split); - else if (split[0].equals("animStagedRightArmReloadRot")) - model.stagedrightArmReloadRot = parseVector3f(split); - else if (split[0].equals("animStagedLeftArmReloadPos")) - model.stagedleftArmReloadPos = parseVector3f(split); - else if (split[0].equals("animStagedLeftArmReloadRot")) - model.stagedleftArmReloadRot = parseVector3f(split); - - else if (split[0].equals("animRightHandAmmo")) - model.rightHandAmmo = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animLeftHandAmmo")) - model.leftHandAmmo = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animGunSlideDistance")) - model.gunSlideDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animAltGunSlideDistance")) - model.altgunSlideDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animRecoilSlideDistance")) - model.RecoilSlideDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animRotatedSlideDistance")) - model.RotateSlideDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animShakeDistance")) - model.ShakeDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animRecoilAmount")) - model.recoilAmount = Float.parseFloat(split[1]); - - else if (split[0].equals("animCasingAnimDistance")) - model.casingAnimDistance = parseVector3f(split); - else if (split[0].equals("animCasingAnimSpread")) - model.casingAnimSpread = parseVector3f(split); - else if (split[0].equals("animCasingAnimTime")) - model.casingAnimTime = Integer.parseInt(split[1]); - else if (split[0].equals("animCasingRotateVector")) - model.casingRotateVector = parseVector3f(split); - else if (split[0].equals("animCasingAttachPoint")) - model.casingAttachPoint = parseVector3f(split); - else if (split[0].equals("animCasingDelay")) - model.casingDelay = Integer.parseInt(split[1]); - else if (split[0].equals("animCasingScale")) - model.caseScale = Float.parseFloat(split[1]); - else if (split[0].equals("animFlashScale")) - model.flashScale = Float.parseFloat(split[1]); - - else if (split[0].equals("animChargeHandleDistance")) - model.chargeHandleDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animChargeDelay")) - model.chargeDelay = Integer.parseInt(split[1]); - else if (split[0].equals("animChargeDelayAfterReload")) - model.chargeDelayAfterReload = Integer.parseInt(split[1]); - else if (split[0].equals("animChargeTime")) - model.chargeTime = Integer.parseInt(split[1]); - else if (split[0].equals("animCountOnRightHandSide")) - model.countOnRightHandSide = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animIsBulletCounterActive")) - model.isBulletCounterActive = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animIsAdvBulletCounterActive")) - model.isAdvBulletCounterActive = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animAnimationType")) { + public void processAnimationConfigs(ConfigMap config) { + model.minigunBarrelOrigin = ConfigUtils.configVector3f(config, "animMinigunBarrelOrigin", model.minigunBarrelOrigin); + model.barrelAttachPoint = ConfigUtils.configVector3f(config, "animBarrelAttachPoint", model.barrelAttachPoint); + model.scopeAttachPoint = ConfigUtils.configVector3f(config, "animScopeAttachPoint", model.scopeAttachPoint); + model.stockAttachPoint = ConfigUtils.configVector3f(config, "animStockAttachPoint", model.stockAttachPoint); + model.gripAttachPoint = ConfigUtils.configVector3f(config, "animGripAttachPoint", model.gripAttachPoint); + model.gadgetAttachPoint = ConfigUtils.configVector3f(config, "animGadgetAttachPoint", model.gadgetAttachPoint); + model.slideAttachPoint = ConfigUtils.configVector3f(config, "animSlideAttachPoint", model.slideAttachPoint); + model.pumpAttachPoint = ConfigUtils.configVector3f(config, "animPumpAttachPoint", model.pumpAttachPoint); + model.accessoryAttachPoint = ConfigUtils.configVector3f(config, "animAccessoryAttachPoint", model.accessoryAttachPoint); + + model.defaultBarrelFlashPoint = ConfigUtils.configVector3f(config, "animDefaultBarrelFlashPoint", model.defaultBarrelFlashPoint); + model.muzzleFlashPoint = ConfigUtils.configVector3f(config, "animMuzzleFlashPoint", model.muzzleFlashPoint); + + model.hasFlash = ConfigUtils.configBool(config, "animHasFlash", model.hasFlash); + model.hasArms = ConfigUtils.configBool(config, "animHasArms", model.hasArms); + model.easyArms = ConfigUtils.configBool(config, "easyArms", model.easyArms); + model.armScale = ConfigUtils.configVector3f(config, "armScale", model.armScale); + + model.leftArmPos = ConfigUtils.configVector3f(config, "animLeftArmPos", model.leftArmPos); + model.leftArmRot = ConfigUtils.configVector3f(config, "animLeftArmRot", model.leftArmRot); + model.leftArmScale = ConfigUtils.configVector3f(config, "animLeftArmScale", model.leftArmScale); + model.rightArmPos = ConfigUtils.configVector3f(config, "animRightArmPos", model.rightArmPos); + model.rightArmRot = ConfigUtils.configVector3f(config, "animRightArmRot", model.rightArmRot); + model.rightArmScale = ConfigUtils.configVector3f(config, "animRightArmScale", model.rightArmScale); + + model.rightArmReloadPos = ConfigUtils.configVector3f(config, "animRightArmReloadPos", model.rightArmReloadPos); + model.rightArmReloadRot = ConfigUtils.configVector3f(config, "animRightArmReloadRot", model.rightArmReloadRot); + model.leftArmReloadPos = ConfigUtils.configVector3f(config, "animLeftArmReloadPos", model.leftArmReloadPos); + model.leftArmReloadRot = ConfigUtils.configVector3f(config, "animLeftArmReloadRot", model.leftArmReloadRot); + + model.rightArmChargePos = ConfigUtils.configVector3f(config, "animRightArmChargePos", model.rightArmChargePos); + model.rightArmChargeRot = ConfigUtils.configVector3f(config, "animRightArmChargeRot", model.rightArmChargeRot); + model.leftArmChargePos = ConfigUtils.configVector3f(config, "animLeftArmChargePos", model.leftArmChargePos); + model.leftArmChargeRot = ConfigUtils.configVector3f(config, "animLeftArmChargeRot", model.leftArmChargeRot); + + model.stagedrightArmReloadPos = ConfigUtils.configVector3f(config, "animStagedRightArmReloadPos", model.stagedrightArmReloadPos); + model.stagedrightArmReloadRot = ConfigUtils.configVector3f(config, "animStagedRightArmReloadRot", model.stagedrightArmReloadRot); + model.stagedleftArmReloadPos = ConfigUtils.configVector3f(config, "animStagedLeftArmReloadPos", model.stagedleftArmReloadPos); + model.stagedleftArmReloadRot = ConfigUtils.configVector3f(config, "animStagedLeftArmReloadRot", model.stagedleftArmReloadRot); + + model.rightHandAmmo = ConfigUtils.configBool(config, "animRightHandAmmo", model.rightHandAmmo); + model.leftHandAmmo = ConfigUtils.configBool(config, "animLeftHandAmmo", model.leftHandAmmo); + + model.gunSlideDistance = ConfigUtils.configFloat(config, "animGunSlideDistance", model.gunSlideDistance); + model.altgunSlideDistance = ConfigUtils.configFloat(config, "animAltGunSlideDistance", model.altgunSlideDistance); + model.RecoilSlideDistance = ConfigUtils.configFloat(config, "animRecoilSlideDistance", model.RecoilSlideDistance); + model.RotateSlideDistance = ConfigUtils.configFloat(config, "animRotatedSlideDistance", model.RotateSlideDistance); + model.ShakeDistance = ConfigUtils.configFloat(config, "animShakeDistance", model.ShakeDistance); + model.recoilAmount = ConfigUtils.configFloat(config, "animRecoilAmount", model.recoilAmount); + + model.casingAnimDistance = ConfigUtils.configVector3f(config, "animCasingAnimDistance", model.casingAnimDistance); + model.casingAnimSpread = ConfigUtils.configVector3f(config, "animCasingAnimSpread", model.casingAnimSpread); + model.casingAnimTime = ConfigUtils.configInt(config, "animCasingAnimTime", model.casingAnimTime); + model.casingRotateVector = ConfigUtils.configVector3f(config, "animCasingRotateVector", model.casingRotateVector); + model.casingAttachPoint = ConfigUtils.configVector3f(config, "animCasingAttachPoint", model.casingAttachPoint); + model.casingDelay = ConfigUtils.configInt(config, "animCasingDelay", model.casingDelay); + model.caseScale = ConfigUtils.configFloat(config, "animCasingScale", model.caseScale); + model.flashScale = ConfigUtils.configFloat(config, "animFlashScale", model.flashScale); + + model.chargeHandleDistance = ConfigUtils.configFloat(config, "animChargeHandleDistance", model.chargeHandleDistance); + model.chargeDelay = ConfigUtils.configInt(config, "animChargeDelay", model.chargeDelay); + model.chargeDelayAfterReload = ConfigUtils.configInt(config, "animChargeDelayAfterReload", model.chargeDelayAfterReload); + model.chargeTime = ConfigUtils.configInt(config, "animChargeTime", model.chargeTime); + model.countOnRightHandSide = ConfigUtils.configBool(config, "animCountOnRightHandSide", model.countOnRightHandSide); + model.isBulletCounterActive = ConfigUtils.configBool(config, "animIsBulletCounterActive", model.isBulletCounterActive); + model.isAdvBulletCounterActive = ConfigUtils.configBool(config, "animIsAdvBulletCounterActive", model.isAdvBulletCounterActive); + + if (configMap.containsKey("animAnimationType")) { + String[] split = ConfigUtils.getSplitFromKey(config, "animAnimationType"); if (split[1].equals("NONE")) model.animationType = EnumAnimationType.NONE; else if (split[1].equals("BOTTOM_CLIP")) @@ -979,7 +923,9 @@ else if (split[1].equals("CUSTOMBREAK_ACTION")) model.animationType = EnumAnimationType.CUSTOMBREAK_ACTION; else if (split[1].equals("CUSTOM")) model.animationType = EnumAnimationType.CUSTOM; - } else if (split[0].equals("animMeleeAnimation")) { + } + if (configMap.containsKey("animMeleeAnimation")) { + String[] split = ConfigUtils.getSplitFromKey(config, "animMeleeAnimation"); if (split[1].equals("DEFAULT")) model.meleeAnimation = EnumMeleeAnimation.DEFAULT; else if (split[1].equals("NONE")) @@ -992,145 +938,83 @@ else if (split[1].equals("STAB_UNDERARM")) model.meleeAnimation = EnumMeleeAnimation.STAB_UNDERARM; else if (split[1].equals("STAB_OVERARM")) model.meleeAnimation = EnumMeleeAnimation.STAB_OVERARM; - } else if (split[0].equals("animTiltGunTime")) - model.tiltGunTime = Float.parseFloat(split[1]); - else if (split[0].equals("animUnloadClipTime")) - model.unloadClipTime = Float.parseFloat(split[1]); - else if (split[0].equals("animLoadClipTime")) - model.loadClipTime = Float.parseFloat(split[1]); - - else if (split[0].equals("animScopeIsOnSlide")) - model.scopeIsOnSlide = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animScopeIsOnBreakAction")) - model.scopeIsOnBreakAction = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animNumBulletsInReloadAnimation")) - model.numBulletsInReloadAnimation = Float.parseFloat(split[1]); - - else if (split[0].equals("animPumpDelay")) - model.pumpDelay = Integer.parseInt(split[1]); - else if (split[0].equals("animPumpDelayAfterReload")) - model.pumpDelayAfterReload = Integer.parseInt(split[1]); - else if (split[0].equals("animPumpTime")) - model.pumpTime = Integer.parseInt(split[1]); - else if (split[0].equals("animHammerDelay")) - model.hammerDelay = Integer.parseInt(split[1]); - - else if (split[0].equals("animPumpHandleDistance")) - model.pumpHandleDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animEndLoadedAmmoDistance")) - model.endLoadedAmmoDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animBreakActionAmmoDistance")) - model.breakActionAmmoDistance = Float.parseFloat(split[1]); - else if (split[0].equals("animScopeIsOnBreakAction")) - model.scopeIsOnBreakAction = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animGripIsOnPump")) - model.gripIsOnPump = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animGadgetsOnPump")) - model.gripIsOnPump = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animBarrelBreakPoint")) - model.barrelBreakPoint = parseVector3f(split); - else if (split[0].equals("animAltBarrelBreakPoint")) - model.altbarrelBreakPoint = parseVector3f(split); - - else if (split[0].equals("animRevolverFlipAngle")) - model.revolverFlipAngle = Float.parseFloat(split[1]); - else if (split[0].equals("animRevolver2FlipAngle")) - model.revolver2FlipAngle = Float.parseFloat(split[1]); - - else if (split[0].equals("animRevolverFlipPoint")) - model.revolverFlipPoint = parseVector3f(split); - else if (split[0].equals("animRevolver2FlipPoint")) - model.revolver2FlipPoint = parseVector3f(split); - - else if (split[0].equals("animBreakAngle")) - model.breakAngle = Float.parseFloat(split[1]); - else if (split[0].equals("animAltBreakAngle")) - model.altbreakAngle = Float.parseFloat(split[1]); - - else if (split[0].equals("animSpinningCocking")) - model.spinningCocking = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animSpinPoint")) - model.spinPoint = parseVector3f(split); - else if (split[0].equals("animHammerSpinPoint")) - model.hammerSpinPoint = parseVector3f(split); - else if (split[0].equals("animAltHammerSpinPoint")) - model.althammerSpinPoint = parseVector3f(split); - else if (split[0].equals("animHammerAngle")) - model.hammerAngle = Float.parseFloat(split[1]); - else if (split[0].equals("animAltHammerAngle")) - model.althammerAngle = Float.parseFloat(split[1]); - - else if (split[0].equals("animIsSingleAction")) - model.isSingleAction = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animSlideLockOnEmpty")) - model.slideLockOnEmpty = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animLeftHandPump")) - model.lefthandPump = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animRightHandPump")) - model.righthandPump = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animLeftHandCharge")) - model.leftHandCharge = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animRightHandCharge")) - model.rightHandCharge = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animLeftHandBolt")) - model.leftHandBolt = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animRightHandBolt")) - model.rightHandBolt = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animPumpModifier")) - model.pumpModifier = Float.parseFloat(split[1]); - else if (split[0].equals("animChargeModifier")) - model.chargeModifier = parseVector3f(split); - else if (split[0].equals("animGunOffset")) - model.gunOffset = Float.parseFloat(split[1]); - else if (split[0].equals("animCrouchZoom")) - model.crouchZoom = Float.parseFloat(split[1]); - else if (split[0].equals("animFancyStance")) - model.fancyStance = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animStanceTranslate")) - model.stanceTranslate = parseVector3f(split); - else if (split[0].equals("animStanceRotate")) - model.stanceRotate = parseVector3f(split); - - else if (split[0].equals("animRotateGunVertical")) - model.rotateGunVertical = Float.parseFloat(split[1]); - else if (split[0].equals("animRotateGunHorizontal")) - model.rotateGunHorizontal = Float.parseFloat(split[1]); - else if (split[0].equals("animTiltGun")) - model.tiltGun = Float.parseFloat(split[1]); - else if (split[0].equals("animTranslateGun")) - model.translateGun = parseVector3f(split); - else if (split[0].equals("animRotateClipVertical")) - model.rotateClipVertical = Float.parseFloat(split[1]); - else if (split[0].equals("animStagedRotateClipVertical")) - model.stagedrotateClipVertical = Float.parseFloat(split[1]); - else if (split[0].equals("animRotateClipHorizontal")) - model.rotateClipVertical = Float.parseFloat(split[1]); - else if (split[0].equals("animStagedRotateClipHorizontal")) - model.stagedrotateClipVertical = Float.parseFloat(split[1]); - else if (split[0].equals("animTiltClip")) - model.tiltClip = Float.parseFloat(split[1]); - else if (split[0].equals("animStagedTiltClip")) - model.stagedtiltClip = Float.parseFloat(split[1]); - else if (split[0].equals("animTranslateClip")) - model.translateClip = parseVector3f(split); - else if (split[0].equals("animStagedTranslateClip")) - model.stagedtranslateClip = parseVector3f(split); - else if (split[0].equals("animStagedReload")) - model.stagedReload = Boolean.parseBoolean(split[1]); - - else if (split[0].equals("animThirdPersonOffset")) - model.thirdPersonOffset = parseVector3f(split); - else if (split[0].equals("animItemFrameOffset")) - model.itemFrameOffset = parseVector3f(split); - else if (split[0].equals("animStillRenderGunWhenScopedOverlay")) - model.stillRenderGunWhenScopedOverlay = Boolean.parseBoolean(split[1]); - else if (split[0].equals("animAdsEffectMultiplier")) - model.adsEffectMultiplier = Float.parseFloat(split[1]); + } + model.tiltGunTime = ConfigUtils.configFloat(config, "animTiltGunTime", model.tiltGunTime); + model.unloadClipTime = ConfigUtils.configFloat(config, "animUnloadClipTime", model.unloadClipTime); + model.loadClipTime = ConfigUtils.configFloat(config, "animLoadClipTime", model.loadClipTime); + + model.scopeIsOnSlide = ConfigUtils.configBool(config, "animScopeIsOnSlide", model.scopeIsOnSlide); + model.scopeIsOnBreakAction = ConfigUtils.configBool(config, "animScopeIsOnBreakAction", model.scopeIsOnBreakAction); + + model.numBulletsInReloadAnimation = ConfigUtils.configFloat(config, "animNumBulletsInReloadAnimation", model.numBulletsInReloadAnimation); + model.pumpDelay = ConfigUtils.configInt(config, "animPumpDelay", model.pumpDelay); + model.pumpDelayAfterReload = ConfigUtils.configInt(config, "animPumpDelayAfterReload", model.pumpDelayAfterReload); + model.pumpTime = ConfigUtils.configInt(config, "animPumpTime", model.pumpTime); + model.hammerDelay = ConfigUtils.configInt(config, "animHammerDelay", model.hammerDelay); + + model.pumpHandleDistance = ConfigUtils.configFloat(config, "animPumpHandleDistance", model.pumpHandleDistance); + model.endLoadedAmmoDistance = ConfigUtils.configFloat(config, "animEndLoadedAmmoDistance", model.endLoadedAmmoDistance); + model.breakActionAmmoDistance = ConfigUtils.configFloat(config, "animBreakActionAmmoDistance", model.breakActionAmmoDistance); + model.scopeIsOnBreakAction = ConfigUtils.configBool(config, "animScopeIsOnBreakAction", model.scopeIsOnBreakAction); + + model.gripIsOnPump = ConfigUtils.configBool(config, "animGripIsOnPump", model.gripIsOnPump); + model.gripIsOnPump = ConfigUtils.configBool(config, "animGadgetsOnPump", model.gripIsOnPump); + + model.barrelBreakPoint = ConfigUtils.configVector3f(config, "animBarrelBreakPoint", model.barrelBreakPoint); + model.altbarrelBreakPoint = ConfigUtils.configVector3f(config, "animAltBarrelBreakPoint", model.altbarrelBreakPoint); + + model.revolverFlipAngle = ConfigUtils.configFloat(config, "animRevolverFlipAngle", model.revolverFlipAngle); + model.revolver2FlipAngle = ConfigUtils.configFloat(config, "animRevolver2FlipAngle", model.revolver2FlipAngle); + + model.revolverFlipPoint = ConfigUtils.configVector3f(config, "animRevolverFlipPoint", model.revolverFlipPoint); + model.revolver2FlipPoint = ConfigUtils.configVector3f(config, "animRevolver2FlipPoint", model.revolver2FlipPoint); + + model.breakAngle = ConfigUtils.configFloat(config, "animBreakAngle", model.breakAngle); + model.altbreakAngle = ConfigUtils.configFloat(config, "animAltBreakAngle", model.altbreakAngle); + + model.spinningCocking = ConfigUtils.configBool(config, "animSpinningCocking", model.spinningCocking); + + model.spinPoint = ConfigUtils.configVector3f(config, "animSpinPoint", model.spinPoint); + model.hammerSpinPoint = ConfigUtils.configVector3f(config, "animHammerSpinPoint", model.hammerSpinPoint); + model.althammerSpinPoint = ConfigUtils.configVector3f(config, "animAltHammerSpinPoint", model.althammerSpinPoint); + model.hammerAngle = ConfigUtils.configFloat(config, "animHammerAngle", model.hammerAngle); + model.althammerAngle = ConfigUtils.configFloat(config, "animAltHammerAngle", model.althammerAngle); + + model.isSingleAction = ConfigUtils.configBool(config, "animIsSingleAction", model.isSingleAction); + model.slideLockOnEmpty = ConfigUtils.configBool(config, "animSlideLockOnEmpty", model.slideLockOnEmpty); + model.lefthandPump = ConfigUtils.configBool(config, "animLeftHandPump", model.lefthandPump); + model.righthandPump = ConfigUtils.configBool(config, "animRightHandPump", model.righthandPump); + model.leftHandCharge = ConfigUtils.configBool(config, "animLeftHandCharge", model.leftHandCharge); + model.rightHandCharge = ConfigUtils.configBool(config, "animRightHandCharge", model.rightHandCharge); + model.leftHandBolt = ConfigUtils.configBool(config, "animLeftHandBolt", model.leftHandBolt); + model.rightHandBolt = ConfigUtils.configBool(config, "animRightHandBolt", model.rightHandBolt); + + model.pumpModifier = ConfigUtils.configFloat(config, "animPumpModifier", model.pumpModifier); + model.chargeModifier = ConfigUtils.configVector3f(config, "animChargeModifier", model.chargeModifier); + model.gunOffset = ConfigUtils.configFloat(config, "animGunOffset", model.gunOffset); + model.crouchZoom = ConfigUtils.configFloat(config, "animCrouchZoom", model.crouchZoom); + model.fancyStance = ConfigUtils.configBool(config, "animFancyStance", model.fancyStance); + model.stanceTranslate = ConfigUtils.configVector3f(config, "animTranslateClip", model.stanceTranslate); + model.stanceRotate = ConfigUtils.configVector3f(config, "animStanceRotate", model.stanceRotate); + + model.rotateGunVertical = ConfigUtils.configFloat(config, "animRotateGunVertical", model.rotateGunVertical); + model.rotateGunHorizontal = ConfigUtils.configFloat(config, "animRotateGunHorizontal", model.rotateGunHorizontal); + model.tiltGun = ConfigUtils.configFloat(config, "animTiltGun", model.tiltGun); + model.translateGun = ConfigUtils.configVector3f(config, "animTranslateGun", model.translateGun); + model.rotateClipVertical = ConfigUtils.configFloat(config, "animRotateClipVertical", model.rotateClipVertical); + model.stagedrotateClipVertical = ConfigUtils.configFloat(config, "animStagedRotateClipVertical", model.stagedrotateClipVertical); + model.rotateClipVertical = ConfigUtils.configFloat(config, "animRotateClipHorizontal", model.rotateClipVertical); + model.stagedrotateClipVertical = ConfigUtils.configFloat(config, "animStagedRotateClipHorizontal", model.stagedrotateClipVertical); + model.tiltClip = ConfigUtils.configFloat(config, "animTiltClip", model.tiltClip); + model.stagedtiltClip = ConfigUtils.configFloat(config, "animStagedTiltClip", model.stagedtiltClip); + model.translateClip = ConfigUtils.configVector3f(config, "animTranslateClip", model.translateClip); + model.stagedtranslateClip = ConfigUtils.configVector3f(config, "animStagedTranslateClip", model.stagedtranslateClip); + model.stagedReload = ConfigUtils.configBool(config, "animStagedReload", model.stagedReload); + + model.thirdPersonOffset = ConfigUtils.configVector3f(config, "animThirdPersonOffset", model.thirdPersonOffset); + model.itemFrameOffset = ConfigUtils.configVector3f(config, "animItemFrameOffset", model.itemFrameOffset); + model.stillRenderGunWhenScopedOverlay = ConfigUtils.configBool(config, "animStillRenderGunWhenScopedOverlay", model.stillRenderGunWhenScopedOverlay); + model.adsEffectMultiplier = ConfigUtils.configFloat(config, "animAdsEffectMultiplier", model.adsEffectMultiplier); } /** @@ -1167,10 +1051,6 @@ public boolean getOneHanded() { return !FlansMod.masterDualWieldDisable && oneHanded; } - public Vector3f parseVector3f(String[] inp) { - return new Vector3f(Float.parseFloat(inp[1]), Float.parseFloat(inp[2]), Float.parseFloat(inp[3])); - } - public boolean isAmmo(ItemStack stack) { if (stack == null) return false; diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 148859ce..1d90bde3 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -60,8 +60,10 @@ protected void read(ConfigMap config, TypeFile file) String key = "addarmour"; if (config.containsKey("addarmor")) key = "addarmor"; - String[] split = config.get(key).split(" "); + + String[] split = ConfigUtils.getSplitFromKey(config, key); String name = split[2]; + for(int i = 3; i < split.length; i++) name = name + " " + split[i]; ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name); diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index 5d952a75..14e949d1 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -148,7 +148,12 @@ protected void read(ConfigMap config, TypeFile file) { colour = (Integer.parseInt(rgb[0]) << 16) + ((Integer.parseInt(rgb[1])) << 8) + ((Integer.parseInt(rgb[2]))); } - iconPath = (config.get("Icon") == null || config.get("Icon").isEmpty()) ? "Missing-Icon-" + shortName : config.get("Icon"); + if (config.get("Icon") == null || config.get("Icon").isEmpty()) { + iconPath = "Missing-Icon-" + shortName; + } else { + iconPath = ConfigUtils.configString(config, "Icon", iconPath); + } + if (config.containsKey("RecipeOutput")) recipeOutput = ConfigUtils.configInt(config, "RecipeOutput", recipeOutput); if (config.containsKey("Recipe")) { diff --git a/src/main/java/com/flansmod/utils/ConfigMap.java b/src/main/java/com/flansmod/utils/ConfigMap.java index 3a638ecc..36b27529 100644 --- a/src/main/java/com/flansmod/utils/ConfigMap.java +++ b/src/main/java/com/flansmod/utils/ConfigMap.java @@ -2,8 +2,8 @@ import java.util.*; -public final class ConfigMap extends HashMap { - private final HashMap defaultMap = new HashMap<>(); +public final class ConfigMap extends HashMap> { + private final HashMap> defaultMap = new HashMap<>(); public ArrayList ammos = new ArrayList<>(); public ArrayList items = new ArrayList<>(); public boolean containsKey(String key) { @@ -11,22 +11,46 @@ public boolean containsKey(String key) { } public String get(String key) { + if (defaultMap.get(key.toLowerCase()) != null) { + return defaultMap.get(key.toLowerCase()).get(0); + } + + return null; + } + + public ArrayList getAll(String key) { return defaultMap.get(key.toLowerCase()); } - public String put(String key, String value) { - return defaultMap.put(key.toLowerCase(), value); + public ArrayList put(String key, String value) { + return putValues(key, Collections.singletonList(value)); + } + + public ArrayList put(String key, ArrayList inValues) { + return putValues(key, inValues); + } + + private ArrayList putValues(String key, List valuesToAdd) { + key = key.toLowerCase(); + ArrayList values; + if (defaultMap.containsKey(key)) { + values = defaultMap.get(key); + } else { + values = new ArrayList<>(); + } + values.addAll(valuesToAdd); + return defaultMap.put(key, values); } public int size() { return defaultMap.size(); } - public Set> entrySet() { + public Set>> entrySet() { return defaultMap.entrySet(); } - public Collection values() { + public Collection> values() { return defaultMap.values(); } diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index 129311a5..a6494770 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -163,4 +163,14 @@ public static String[] getSplitFromKey (ConfigMap config, String[] keys) { return null; } + + public static Vector3f configVector3f(ConfigMap config, String key, Vector3f original) { + + if (config.containsKey(key)) { + String[] inp = getSplitFromKey(config, key); + return new Vector3f(Float.parseFloat(inp[1]), Float.parseFloat(inp[2]), Float.parseFloat(inp[3])); + } + + return original; + } } From c85aa67157855a1310093da5130076e46cf17292 Mon Sep 17 00:00:00 2001 From: willy Date: Sun, 29 Jan 2023 15:56:42 -0500 Subject: [PATCH 06/32] Cleanup years old TODOs, more fixes --- .../com/flansmod/client/gui/GuiArmourBox.java | 1 - .../flansmod/client/gui/GuiTeamScores.java | 2 - .../flansmod/client/gui/GuiTeamSelect.java | 1 - .../com/flansmod/client/model/RenderGun.java | 6 +- .../flansmod/client/model/RenderPlane.java | 1 - .../common/driveables/DriveableType.java | 24 +----- .../common/driveables/FlightController.java | 1 - .../common/driveables/mechas/EntityMecha.java | 4 +- .../com/flansmod/common/guns/GrenadeType.java | 2 +- .../com/flansmod/common/guns/GunType.java | 27 +++---- .../com/flansmod/common/guns/ItemGrenade.java | 2 - .../common/guns/boxes/BlockGunBox.java | 1 - .../common/paintjob/PaintableType.java | 76 ++++++++----------- .../flansmod/common/teams/BlockSpawner.java | 5 +- .../common/teams/EntityConnectingLine.java | 2 +- .../com/flansmod/common/teams/EntityFlag.java | 2 +- .../flansmod/common/teams/EntityFlagpole.java | 2 +- .../flansmod/common/teams/GameTypeCTF.java | 3 +- .../flansmod/common/teams/PlayerClass.java | 11 ++- .../flansmod/common/teams/TeamsManager.java | 2 +- 20 files changed, 56 insertions(+), 119 deletions(-) diff --git a/src/main/java/com/flansmod/client/gui/GuiArmourBox.java b/src/main/java/com/flansmod/client/gui/GuiArmourBox.java index 40b9789e..e13f8afb 100644 --- a/src/main/java/com/flansmod/client/gui/GuiArmourBox.java +++ b/src/main/java/com/flansmod/client/gui/GuiArmourBox.java @@ -62,7 +62,6 @@ public void drawScreen(int i, int j, float f) //No idea why this works, but it makes the text bind its texture correctly //mc.renderEngine.bindTexture("/terrain.png"); - //TODO : Investigate drawCenteredString(fontRendererObj, type.name, k / 2, n + 5, 0xffffff); mc.renderEngine.bindTexture(texture); diff --git a/src/main/java/com/flansmod/client/gui/GuiTeamScores.java b/src/main/java/com/flansmod/client/gui/GuiTeamScores.java index 38c13847..2aacefb5 100644 --- a/src/main/java/com/flansmod/client/gui/GuiTeamScores.java +++ b/src/main/java/com/flansmod/client/gui/GuiTeamScores.java @@ -66,7 +66,6 @@ public void renderTwoTeamGUI(PacketTeamInfo teamInfo) //No idea why this works, but it makes the text bind its texture correctly //mc.renderEngine.bindTexture("/terrain.png"); - //TODO : Investiagate this drawString(fontRendererObj, teamInfo.map, m + 6, n + 6, 0xffffff); drawString(fontRendererObj, teamInfo.gametype, m + 312 - 6 - fontRendererObj.getStringWidth(teamInfo.gametype), n + 6, 0xffffff); @@ -169,7 +168,6 @@ public void renderDMGUI(PacketTeamInfo teamInfo) //No idea why this works, but it makes the text bind its texture correctly //mc.renderEngine.bindTexture("/terrain.png"); - //TODO : Investiagate this drawCenteredString(fontRendererObj, teamInfo.gametype, k / 2, n + 4, 0xffffff); drawString(fontRendererObj, "Name", m + 8, n + 14, 0xffffff); diff --git a/src/main/java/com/flansmod/client/gui/GuiTeamSelect.java b/src/main/java/com/flansmod/client/gui/GuiTeamSelect.java index bd3000af..3909ee9d 100644 --- a/src/main/java/com/flansmod/client/gui/GuiTeamSelect.java +++ b/src/main/java/com/flansmod/client/gui/GuiTeamSelect.java @@ -94,7 +94,6 @@ public void initGui() @Override public void drawScreen(int i, int j, float f) { - //TODO : Draw the inventory BG and slots for the class menu GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.renderEngine.bindTexture(texture); drawTexturedModalRect(width / 2 - 128, height / 2 - guiHeight / 2, 0, 0, 256, 22); diff --git a/src/main/java/com/flansmod/client/model/RenderGun.java b/src/main/java/com/flansmod/client/model/RenderGun.java index 10663335..34cdc4ab 100644 --- a/src/main/java/com/flansmod/client/model/RenderGun.java +++ b/src/main/java/com/flansmod/client/model/RenderGun.java @@ -938,7 +938,6 @@ else if (!empty && !animations.reloading) break; } - //TODO case SHOTGUN: case STRIKER: case CUSTOMSHOTGUN: case CUSTOMSTRIKER: { float maxBullets = getNumBulletsInReload(animations, gripAttachment, type, item); @@ -1226,8 +1225,8 @@ private void renderAttachmentAmmo(float f, AttachmentType grip, ModelGun model, // { // // } - - // TODO: Part of arms cleanup to rewrite into one method + + // Part of arms cleanup to rewrite into one method private void renderArms(EntityPlayer player, ModelGun model, GunType type, GunAnimations anim) { @@ -1369,7 +1368,6 @@ private float getEndLoadedDistance(AttachmentType grip, GunType gun, ItemStack g * Get the number of bullets to reload in animation, based on ammo type to * reload */ - //TODO private float getNumBulletsInReload(GunAnimations animations, AttachmentType grip, GunType gun, ItemStack gunStack) { // If this is a singles reload, we want to know the number of bullets already in the gun diff --git a/src/main/java/com/flansmod/client/model/RenderPlane.java b/src/main/java/com/flansmod/client/model/RenderPlane.java index 141a076b..5bda7d59 100644 --- a/src/main/java/com/flansmod/client/model/RenderPlane.java +++ b/src/main/java/com/flansmod/client/model/RenderPlane.java @@ -349,7 +349,6 @@ public Vector3f Interpolate(Vector3f current, Vector3f prev, float f1) } //Broken method to try and rotate playermodel, will fix later. - //TODO: Make this work /** @SubscribeEvent public void preRenderLiving(RenderPlayerEvent.Pre event) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index c1786401..26876af7 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -352,28 +352,6 @@ public DriveableType(TypeFile file) { public void preRead(TypeFile file) { super.preRead(file); - //todo -// int counter = 0; -// for (String line : file.lines) { - - -// // Passengers / Gunner Seats -// if (split[0].equals("Passenger")) { -// Seat seat = new Seat(split); -// seats[seat.id] = seat; -// if (seat.gunType != null) { -// seat.gunnerID = numPassengerGunners++; -// driveableRecipe.add(new ItemStack(seat.gunType.item)); -// } -// counter++; -// } - -// if (counter == seats.length) { -// break; -// } -// } - - types.add(this); } @@ -396,7 +374,7 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - //Old Pre-Read stuff //todo, multi + //Old Pre-Read stuff if (config.containsKey("Passengers")) { numPassengers = Integer.parseInt(config.get("Passengers")); seats = new Seat[numPassengers + 1]; diff --git a/src/main/java/com/flansmod/common/driveables/FlightController.java b/src/main/java/com/flansmod/common/driveables/FlightController.java index 2d57b148..fd791e28 100644 --- a/src/main/java/com/flansmod/common/driveables/FlightController.java +++ b/src/main/java/com/flansmod/common/driveables/FlightController.java @@ -76,7 +76,6 @@ public void fly(EntityPlane plane) break; } - // TODO: Look into other flight controllers case SIXDOF: break; case VTOL: diff --git a/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java b/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java index e79699a4..c75488ba 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/EntityMecha.java @@ -396,7 +396,6 @@ else if(bulletStack.getItem() instanceof ItemBullet) shoot(heldStack, gunType, bulletStack, creative, left); //Apply animations to 3D modelled guns - //TODO : Move to client side and sync if(worldObj.isRemote) { int pumpDelay = gunType.model == null ? 0 : gunType.model.pumpDelay; @@ -754,8 +753,7 @@ else if (node.legPart == (6)){ } } if(diamondTimer > 0) --diamondTimer; - - //TODO better implement this + if(isPartIntact(EnumDriveablePart.hips)) { setSize(type.width, type.height); yOffset = type.yOffset; diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index 006fbea0..931a5a13 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -116,7 +116,7 @@ public class GrenadeType extends ShootableType * When they right click with a gun, they will get this number of clips for that gun. * They get the first ammo type, as listed in the gun type file * The number of clips they get is multiplied by numBulletsInGun too - * TODO : Give guns a "can get ammo from bag" variable. Stops miniguns and such getting ammo */ + */ public int numClips = 0; public GrenadeType(TypeFile file) { diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index d72e13aa..a7ebcdee 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -626,7 +626,6 @@ protected void read(ConfigMap config, TypeFile file) { hasVariableZoom = ConfigUtils.configBool(config, "HasVariableZoom", hasVariableZoom); minZoom = ConfigUtils.configFloat(config, "MinZoom", minZoom); maxZoom = ConfigUtils.configFloat(config, "MaxZoom", maxZoom); - //TODO IS THIS REQUIRED? SAME CODE ON zoomLevel if(maxZoom>1F) secondaryFunction=EnumSecondaryFunction.ZOOM; zoomAugment = ConfigUtils.configFloat(config, "ZoomAugment", zoomAugment); @@ -647,8 +646,8 @@ protected void read(ConfigMap config, TypeFile file) { } allowNightVision = ConfigUtils.configBool(config, "AllowNightVision", allowNightVision); zoomLevel = ConfigUtils.configFloat(config, "ZoomLevel", zoomLevel); - if (zoomLevel > 1F) - secondaryFunction = EnumSecondaryFunction.ZOOM; + if (zoomLevel > 1F) + secondaryFunction = EnumSecondaryFunction.ZOOM; FOVFactor = ConfigUtils.configFloat(config, "FOVZoomLevel", FOVFactor); if (FOVFactor > 1F) @@ -683,7 +682,6 @@ protected void read(ConfigMap config, TypeFile file) { if (showMuzzleFlashParticles) useMuzzleFlashDefaults = false; showMuzzleFlashParticlesFirstPerson = ConfigUtils.configBool(config, "ShowMuzzleFlashParticleFirstPerson", showMuzzleFlashParticlesFirstPerson); - //todo double check muzzleFlashParticlesShoulderOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleShoulderOffset", muzzleFlashParticlesShoulderOffset); muzzleFlashParticlesHandOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleHandOffset", muzzleFlashParticlesHandOffset); modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); @@ -694,19 +692,14 @@ protected void read(ConfigMap config, TypeFile file) { bottomViewLimit = ConfigUtils.configFloat(config, "BottomViewLimit", modelScale); sideViewLimit = ConfigUtils.configFloat(config, "SideViewLimit", modelScale); pivotHeight = ConfigUtils.configFloat(config, "PivotHeight", modelScale); - //todo, fix, will only work for 1 -// if (config.containsKey("Ammo")) { -// String[] munitions = config.get("Ammo").split(" "); -// for (String munition : munitions) { -// ShootableType type = ShootableType.getShootableType(munition); -// if (type != null) -// ammo.add(type); -// } -// } - for (String ammoType : config.ammos) { - ShootableType type = ShootableType.getShootableType(ammoType); - ammo.add(type); + + if (config.containsKey("Ammo")) { + for (String ammoOption : config.getAll("Ammo")) { + ShootableType type = ShootableType.getShootableType(ammoOption); + ammo.add(type); + } } + numPrimaryAmmoItems = ConfigUtils.configInt(config, new String[]{"NumAmmoSlots", "NumAmmoItemsInGun", "LoadIntoGun"}, numPrimaryAmmoItems); bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); canShootUnderwater = ConfigUtils.configBool(config, "CanShootUnderwater", canShootUnderwater); @@ -775,7 +768,7 @@ protected void read(ConfigMap config, TypeFile file) { shieldOrigin = new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F); shieldDimensions = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); } - //TODO fix this call + if (FMLCommonHandler.instance().getSide().isClient() && model != null) { processAnimationConfigs(config); } diff --git a/src/main/java/com/flansmod/common/guns/ItemGrenade.java b/src/main/java/com/flansmod/common/guns/ItemGrenade.java index 2613d5ba..758d3280 100644 --- a/src/main/java/com/flansmod/common/guns/ItemGrenade.java +++ b/src/main/java/com/flansmod/common/guns/ItemGrenade.java @@ -114,7 +114,6 @@ public EntityShootable getEntity(World worldObj, Vec3 origin, float yaw, float pitch, double motionX, double motionY, double motionZ, EntityLivingBase shooter, float gunDamage, int itemDamage, InfoType shotFrom) { - // TODO Auto-generated method stub return null; } @@ -130,7 +129,6 @@ public EntityShootable getEntity(World worldObj, Vector3f origin, public EntityShootable getEntity(World worldObj, Vec3 origin, float yaw, float pitch, EntityLivingBase shooter, float spread, float damage, float speed, int itemDamage, InfoType shotFrom) { - // TODO Auto-generated method stub return null; } diff --git a/src/main/java/com/flansmod/common/guns/boxes/BlockGunBox.java b/src/main/java/com/flansmod/common/guns/boxes/BlockGunBox.java index 41e86021..f8e6f8c2 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/BlockGunBox.java +++ b/src/main/java/com/flansmod/common/guns/boxes/BlockGunBox.java @@ -88,7 +88,6 @@ public void buyGun(InfoType item, InventoryPlayer inventory, GunBoxType type) { inventory.player.dropPlayerItemWithRandomChoice(gunStack, false); } else { // Cant buy - // TODO : Add flashing red squares around the items you lack } } } diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index 15c01fae..29ba4d1f 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -8,6 +8,7 @@ import com.flansmod.common.types.TypeFile; import com.flansmod.utils.ConfigMap; +import com.flansmod.utils.ConfigUtils; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -77,52 +78,35 @@ protected void read(ConfigMap config, TypeFile file) } } - //todo adv paintjobs -// try -// { -// //Paintjobs -// if(split[0].toLowerCase().equals("advpaintjob")) -// { -// ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; -// for(int i = 0; i < (split.length - 4) / 2; i++) -// dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); -// paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); -// } -// } -// catch (Exception e) -// { -// FlansMod.log("Reading file failed : " + shortName); -// e.printStackTrace(); -// } -// -// try -// { -// // Other configs.. -// if (split[0].equalsIgnoreCase("AddPaintableToTables")) -// { -// if (split.length == 2) -// { -// addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); -// } -// else if (split.length == 3) -// { -// String paintjobId = split[1]; -// -// for (Paintjob paintjob : paintjobs) -// { -// if (paintjob.textureName.equals(paintjobId)) -// { -// paintjob.addToTables = Boolean.parseBoolean(split[2]); -// } -// } -// } -// } -// } -// catch (Exception e) -// { -// FlansMod.log("Reading file failed : " + shortName); -// e.printStackTrace(); -// } + //TODO, MULTIPLES? + try { + //Paintjobs + if(config.containsKey("advpaintjob")) { + String[] split = ConfigUtils.getSplitFromKey(config, "advpaintjob"); + ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; + for(int i = 0; i < (split.length - 4) / 2; i++) + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); + paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); + } + // Other configs.. + if (config.containsKey("AddPaintableToTables")) { + String[] split = ConfigUtils.getSplitFromKey(config, "AddPaintableToTables"); + if (split.length == 2) { + addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); + } else if (split.length == 3) { + String paintjobId = split[1]; + + for (Paintjob paintjob : paintjobs) { + if (paintjob.textureName.equals(paintjobId)) { + paintjob.addToTables = Boolean.parseBoolean(split[2]); + } + } + } + } + } catch (Exception e) { + FlansMod.log("Reading file failed : " + shortName); + e.printStackTrace(); + } } public Paintjob getPaintjob(int i) diff --git a/src/main/java/com/flansmod/common/teams/BlockSpawner.java b/src/main/java/com/flansmod/common/teams/BlockSpawner.java index 94424433..8af44eb0 100644 --- a/src/main/java/com/flansmod/common/teams/BlockSpawner.java +++ b/src/main/java/com/flansmod/common/teams/BlockSpawner.java @@ -161,10 +161,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p { if(world.isRemote) return true; - /* TODO : Check the generalised code in TeamsManager works - if(TeamsManager.getInstance().currentGametype != null) - TeamsManager.getInstance().currentGametype.objectClickedByPlayer((TileEntitySpawner)world.getTileEntity(x, y, z), (EntityPlayerMP)player); - */ + if(MinecraftServer.getServer().getConfigurationManager().func_152596_g(player.getGameProfile())) { TileEntitySpawner spawner = (TileEntitySpawner)world.getTileEntity(x, y, z); diff --git a/src/main/java/com/flansmod/common/teams/EntityConnectingLine.java b/src/main/java/com/flansmod/common/teams/EntityConnectingLine.java index 7660f5cb..e3fa1ec5 100644 --- a/src/main/java/com/flansmod/common/teams/EntityConnectingLine.java +++ b/src/main/java/com/flansmod/common/teams/EntityConnectingLine.java @@ -17,7 +17,7 @@ public EntityConnectingLine(World world) public EntityConnectingLine(World world, EntityPlayer player, ITeamBase base) { super(world); - field_146043_c = this; //TODO : Double check that this is the correct field + field_146043_c = this; ignoreFrustumCheck = true; field_146042_b = player; field_146042_b.fishEntity = this; diff --git a/src/main/java/com/flansmod/common/teams/EntityFlag.java b/src/main/java/com/flansmod/common/teams/EntityFlag.java index 4fe3efac..404df968 100644 --- a/src/main/java/com/flansmod/common/teams/EntityFlag.java +++ b/src/main/java/com/flansmod/common/teams/EntityFlag.java @@ -206,7 +206,7 @@ public boolean isSpawnPoint() @Override public boolean interactFirst(EntityPlayer player) //interact { - /* TODO : Check the generalised code in TeamsManager works + /* if(player instanceof EntityPlayerMP && TeamsManager.getInstance().currentGametype != null) TeamsManager.getInstance().currentGametype.objectClickedByPlayer(this, (EntityPlayerMP)player); */ diff --git a/src/main/java/com/flansmod/common/teams/EntityFlagpole.java b/src/main/java/com/flansmod/common/teams/EntityFlagpole.java index 114eae92..febf57d5 100644 --- a/src/main/java/com/flansmod/common/teams/EntityFlagpole.java +++ b/src/main/java/com/flansmod/common/teams/EntityFlagpole.java @@ -260,7 +260,7 @@ public boolean interactFirst(EntityPlayer player) //interact if(!worldObj.isRemote && data.team == null && TeamsManager.getInstance().playerIsOp(player) && (player.getCurrentEquippedItem() == null || !(player.getCurrentEquippedItem().getItem() instanceof ItemOpStick))) ItemOpStick.openBaseEditGUI(this, (EntityPlayerMP)player); - /* TODO : Check the generalised code in TeamsManager works + /* if(player instanceof EntityPlayerMP && TeamsManager.getInstance().currentGametype != null) TeamsManager.getInstance().currentGametype.baseClickedByPlayer(this, (EntityPlayerMP)player); */ diff --git a/src/main/java/com/flansmod/common/teams/GameTypeCTF.java b/src/main/java/com/flansmod/common/teams/GameTypeCTF.java index 0b53ca0d..695c0ee1 100644 --- a/src/main/java/com/flansmod/common/teams/GameTypeCTF.java +++ b/src/main/java/com/flansmod/common/teams/GameTypeCTF.java @@ -255,8 +255,7 @@ public void objectClickedByPlayer(ITeamObject object, EntityPlayerMP player) getPlayerInfo(player).savePlayerStats(); TeamsManager.messageAll("\u00a7f" + player.getCommandSenderName() + " returned the \u00a7" + flagTeam.textColour + flagTeam.name + "\u00a7f flag"); } - - //TODO : Move to be a proximity thing? + //They have another flag in hand else if(player.riddenByEntity instanceof EntityFlag) { diff --git a/src/main/java/com/flansmod/common/teams/PlayerClass.java b/src/main/java/com/flansmod/common/teams/PlayerClass.java index e42cd5dc..20bdb7eb 100644 --- a/src/main/java/com/flansmod/common/teams/PlayerClass.java +++ b/src/main/java/com/flansmod/common/teams/PlayerClass.java @@ -41,13 +41,13 @@ public PlayerClass(TypeFile file) { @Override protected void read(ConfigMap config, TypeFile file) { super.read(config, file); - //todo setup for multiple AddItem + if (config.containsKey("AddItem")) { - startingItemStrings.add(ConfigUtils.getSplitFromKey(config, "AddItem")); - } - for (String item : config.items) { - startingItemStrings.add(item.split(" ")); + for (String item : config.getAll("AddItem")) { + startingItemStrings.add(("AddItem " + item).split(" ")); + } } + lvl = ConfigUtils.configInt(config, "UnlockLevel", lvl); texture = ConfigUtils.configString(config, "SkinOverride", texture); @@ -194,7 +194,6 @@ public void onWorldLoad(World world) { case generic: tagName = "generic_" + genericID++; break; - // TODO: Implement new attachments to classes case accessory: break; case gadget: diff --git a/src/main/java/com/flansmod/common/teams/TeamsManager.java b/src/main/java/com/flansmod/common/teams/TeamsManager.java index 596e1e00..c2f3c92b 100644 --- a/src/main/java/com/flansmod/common/teams/TeamsManager.java +++ b/src/main/java/com/flansmod/common/teams/TeamsManager.java @@ -157,7 +157,7 @@ public TeamsManager() { currentMap = null; - //Testing stuff. TODO : Replace with automatic Gametype loader + //Testing stuff new GameTypeTDM(); new GameTypeZombies(); // new GameTypeConquest(); From 51d0425addb597186d6d98dc5b2c8e06c1b850ef Mon Sep 17 00:00:00 2001 From: willy Date: Sun, 29 Jan 2023 17:38:39 -0500 Subject: [PATCH 07/32] Fix workswith, other cleanup --- .../common/driveables/DriveableType.java | 40 +++++++++++++++---- .../common/driveables/EntityDriveable.java | 3 ++ .../com/flansmod/common/parts/PartType.java | 6 ++- .../com/flansmod/common/types/InfoType.java | 9 ----- .../java/com/flansmod/utils/ConfigMap.java | 3 +- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 26876af7..efb67fbf 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -395,8 +395,6 @@ protected void read(ConfigMap config, TypeFile file) { } - - if (config.containsKey("NumWheels")) { wheelPositions = new DriveablePosition[Integer.parseInt(config.get("NumWheels"))]; } @@ -512,14 +510,42 @@ protected void read(ConfigMap config, TypeFile file) { floatOffset = ConfigUtils.configFloat(config, "FloatOffset", floatOffset); canMountEntity = ConfigUtils.configBool(config, "CanMountEntity", canMountEntity); - //Wheels + //Wheels if (config.containsKey("Wheel")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Wheel"); - wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); + for (String wheelPos : config.getAll("Wheel")) { + String[] split = ("Wheel " + wheelPos).split(" "); + int wheelIndex = Integer.parseInt(split[1]); + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + + EnumDriveablePart part = EnumDriveablePart.coreWheel; + if (split.length > 5) { + part = EnumDriveablePart.getPart(split[5]); + } + + DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); + wheelPositions[wheelIndex] = wheelPosition; + } } + + //Wheels if (config.containsKey("WheelPosition")) { - String[] split = ConfigUtils.getSplitFromKey(config, "WheelPosition"); - wheelPositions[Integer.parseInt(split[1])] = new DriveablePosition(new Vector3f(Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F, Float.parseFloat(split[4]) / 16F), split.length > 5 ? EnumDriveablePart.getPart(split[5]) : EnumDriveablePart.coreWheel); + for (String wheelPos : config.getAll("WheelPosition")) { + String[] split = ("WheelPosition " + wheelPos).split(" "); + int wheelIndex = Integer.parseInt(split[1]); + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + + EnumDriveablePart part = EnumDriveablePart.coreWheel; + if (split.length > 5) { + part = EnumDriveablePart.getPart(split[5]); + } + + DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); + wheelPositions[wheelIndex] = wheelPosition; + } } wheelStepHeight = ConfigUtils.configFloat(config, new String[]{"WheelRadius", "WheelStepHeight"}, wheelStepHeight); diff --git a/src/main/java/com/flansmod/common/driveables/EntityDriveable.java b/src/main/java/com/flansmod/common/driveables/EntityDriveable.java index af932886..3385b30f 100644 --- a/src/main/java/com/flansmod/common/driveables/EntityDriveable.java +++ b/src/main/java/com/flansmod/common/driveables/EntityDriveable.java @@ -1839,6 +1839,9 @@ public ItemStack getPickedResult(MovingObjectPosition target) { public boolean hasEnoughFuel() { //if (seats == null || seats[0] == null || seats[0].riddenByEntity == null) //return false; + System.out.println(driverIsCreative()); + System.out.println(driveableData.fuelInTank > Math.abs(driveableData.engine.fuelConsumption * throttle)); + System.out.println(getDriveableType().fuelTankSize < 0); return driverIsCreative() || driveableData.fuelInTank > Math.abs(driveableData.engine.fuelConsumption * throttle) || getDriveableType().fuelTankSize < 0; } diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index a24d1372..77e5e906 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -88,7 +88,9 @@ public void postRead(TypeFile file) { PartType possiblyInferiorEngine = defaultEngines.get(type); if (isInferiorEngine(possiblyInferiorEngine)) defaultEngines.put(type, this); - } else defaultEngines.put(type, this); + } else { + defaultEngines.put(type, this); + } } } } @@ -123,7 +125,7 @@ protected void read(ConfigMap config, TypeFile file) { } partBoxRecipe.addAll(Arrays.asList(stacks)); } else if (config.containsKey("WorksWith")) { - String[] split = config.get("WorksWith").split(" "); + String[] split = ConfigUtils.getSplitFromKey(config, "WorksWith"); worksWith = new ArrayList(); for (int i = 0; i < split.length - 1; i++) { worksWith.add(EnumType.get(split[i + 1])); diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index 14e949d1..2422e0bc 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -93,15 +93,6 @@ else if (line.length() == 1) continue; String[] split = line.split(" "); - //If its ammo, add it to the ammo list - if (split[0].equalsIgnoreCase("ammo")) { - configMap.ammos.add(split[1]); - continue; - } else if (split[0].equalsIgnoreCase("additem")) { - configMap.items.add(line); - continue; - } - if (split.length > 2) { String data = ""; for (int i = 1; i < split.length; i++) { diff --git a/src/main/java/com/flansmod/utils/ConfigMap.java b/src/main/java/com/flansmod/utils/ConfigMap.java index 36b27529..7029be6f 100644 --- a/src/main/java/com/flansmod/utils/ConfigMap.java +++ b/src/main/java/com/flansmod/utils/ConfigMap.java @@ -4,8 +4,7 @@ public final class ConfigMap extends HashMap> { private final HashMap> defaultMap = new HashMap<>(); - public ArrayList ammos = new ArrayList<>(); - public ArrayList items = new ArrayList<>(); + public boolean containsKey(String key) { return defaultMap.containsKey(key.toLowerCase()); } From 85cc625c9e53737ed0e7361b5699e4b10577f4a0 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 31 Jan 2023 18:49:07 +0000 Subject: [PATCH 08/32] Misc config refactoring --- .../common/driveables/DriveableType.java | 18 +-- .../flansmod/common/driveables/PlaneType.java | 60 ++++---- .../common/driveables/VehicleType.java | 28 ++-- .../com/flansmod/common/guns/GunType.java | 110 +++++++-------- .../com/flansmod/common/teams/ArmourType.java | 4 +- .../com/flansmod/common/vector/Vector3f.java | 2 +- .../java/com/flansmod/utils/ConfigUtils.java | 131 ++++++++---------- 7 files changed, 166 insertions(+), 187 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index efb67fbf..c1d72a67 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -558,8 +558,8 @@ protected void read(ConfigMap config, TypeFile file) { dropHarvest = ConfigUtils.configBool(config, "DropHarvest", dropHarvest); if (config.containsKey("HarvestBox")) { String[] split = ConfigUtils.getSplitFromKey(config, "HarvestBox"); - harvestBoxSize = new Vector3f(split[1], shortName); - harvestBoxPos = new Vector3f(split[2], shortName); + harvestBoxSize = new Vector3f(split[1]); + harvestBoxPos = new Vector3f(split[2]); } if (config.containsKey("HarvestMaterial")) { materialsHarvested.add(getMaterial(config.get("HarvestMaterial"))); @@ -982,7 +982,7 @@ else if (config.containsKey("SetupPart")) { if (config.containsKey("AddCollisionMesh")) { String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionMesh"); - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "core"); + CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), new Vector3f(split[9]), new Vector3f(split[10]), "core"); collisionBox.add(box); //colbox = box; } @@ -1006,7 +1006,7 @@ else if (config.containsKey("SetupPart")) { if (config.containsKey("AddTurretCollisionMesh")) { String[] split = ConfigUtils.getSplitFromKey(config, "AddTurretCollisionMesh"); - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1], shortName), new Vector3f(split[2], shortName), new Vector3f(split[3], shortName), new Vector3f(split[4], shortName), new Vector3f(split[5], shortName), new Vector3f(split[6], shortName), new Vector3f(split[7], shortName), new Vector3f(split[8], shortName), new Vector3f(split[9], shortName), new Vector3f(split[10], shortName), "turret"); + CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), new Vector3f(split[9]), new Vector3f(split[10]), "turret"); collisionBox.add(box); //colbox = box; } @@ -1030,10 +1030,10 @@ else if (config.containsKey("SetupPart")) { if (config.containsKey("LeftLinkPoint")) { - leftTrackPoints.add(new Vector3f(config.get("LeftLinkPoint"), shortName)); + leftTrackPoints.add(new Vector3f(config.get("LeftLinkPoint"))); } if (config.containsKey("RightLinkPoint")) { - rightTrackPoints.add(new Vector3f(config.get("RightLinkPoint"), shortName)); + rightTrackPoints.add(new Vector3f(config.get("RightLinkPoint"))); } trackLinkLength = ConfigUtils.configFloat(config, "TrackLinkLength", trackLinkLength); @@ -1047,9 +1047,9 @@ else if (config.containsKey("SetupPart")) { ParticleEmitter emitter = new ParticleEmitter(); emitter.effectType = split[1]; emitter.emitRate = Integer.parseInt(split[2]); - emitter.origin = new Vector3f(split[3], shortName); - emitter.extents = new Vector3f(split[4], shortName); - emitter.velocity = new Vector3f(split[5], shortName); + emitter.origin = new Vector3f(split[3]); + emitter.extents = new Vector3f(split[4]); + emitter.velocity = new Vector3f(split[5]); emitter.minThrottle = Float.parseFloat(split[6]); emitter.maxThrottle = Float.parseFloat(split[7]); emitter.minHealth = Float.parseFloat(split[8]); diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 7f97201a..a5b04a1a 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -196,43 +196,43 @@ protected void read(ConfigMap config, TypeFile file) { //Animations //Wings - wingPos1 = ConfigUtils.configVector(config, "WingPosition1", wingPos1, shortName); - wingPos2 = ConfigUtils.configVector(config, "WingPosition2", wingPos2, shortName); - wingRot1 = ConfigUtils.configVector(config, "WingRotation1", wingRot1, shortName); - wingRot2 = ConfigUtils.configVector(config, "WingRotation2", wingRot2, shortName); - wingRate = ConfigUtils.configVector(config, "WingRate", wingRate, shortName); - wingRotRate = ConfigUtils.configVector(config, "WingRotRate", wingRotRate, shortName); + wingPos1 = ConfigUtils.configVector(config, "WingPosition1", wingPos1); + wingPos2 = ConfigUtils.configVector(config, "WingPosition2", wingPos2); + wingRot1 = ConfigUtils.configVector(config, "WingRotation1", wingRot1); + wingRot2 = ConfigUtils.configVector(config, "WingRotation2", wingRot2); + wingRate = ConfigUtils.configVector(config, "WingRate", wingRate); + wingRotRate = ConfigUtils.configVector(config, "WingRotRate", wingRotRate); //Wing Wheels - wingWheelPos1 = ConfigUtils.configVector(config, "WingWheelPosition1", wingWheelPos1, shortName); - wingWheelPos2= ConfigUtils.configVector(config, "WingWheelPosition2", wingWheelPos2, shortName); - wingWheelRot1 = ConfigUtils.configVector(config, "WingWheelRotation1", wingWheelRot1, shortName); - wingWheelRot2 = ConfigUtils.configVector(config, "WingWheelRotation2", wingWheelRot2, shortName); - wingWheelRate = ConfigUtils.configVector(config, "WingWheelRate", wingWheelRate, shortName); - wingWheelRotRate = ConfigUtils.configVector(config, "WingWheelRotRate", wingWheelRotRate, shortName); + wingWheelPos1 = ConfigUtils.configVector(config, "WingWheelPosition1", wingWheelPos1); + wingWheelPos2= ConfigUtils.configVector(config, "WingWheelPosition2", wingWheelPos2); + wingWheelRot1 = ConfigUtils.configVector(config, "WingWheelRotation1", wingWheelRot1); + wingWheelRot2 = ConfigUtils.configVector(config, "WingWheelRotation2", wingWheelRot2); + wingWheelRate = ConfigUtils.configVector(config, "WingWheelRate", wingWheelRate); + wingWheelRotRate = ConfigUtils.configVector(config, "WingWheelRotRate", wingWheelRotRate); //Body Wheels - bodyWheelPos1 = ConfigUtils.configVector(config, "BodyWheelPosition1", bodyWheelPos1, shortName); - bodyWheelPos2 = ConfigUtils.configVector(config, "BodyWheelPosition2", bodyWheelPos2, shortName); - bodyWheelRot1 = ConfigUtils.configVector(config, "BodyWheelRotation1", bodyWheelRot1, shortName); - bodyWheelRot2 = ConfigUtils.configVector(config, "BodyWheelRotation2", bodyWheelRot2, shortName); - bodyWheelRate = ConfigUtils.configVector(config, "BodyWheelRate", bodyWheelRate, shortName); - bodyWheelRotRate = ConfigUtils.configVector(config, "BodyWheelRotRate", bodyWheelRotRate, shortName); + bodyWheelPos1 = ConfigUtils.configVector(config, "BodyWheelPosition1", bodyWheelPos1); + bodyWheelPos2 = ConfigUtils.configVector(config, "BodyWheelPosition2", bodyWheelPos2); + bodyWheelRot1 = ConfigUtils.configVector(config, "BodyWheelRotation1", bodyWheelRot1); + bodyWheelRot2 = ConfigUtils.configVector(config, "BodyWheelRotation2", bodyWheelRot2); + bodyWheelRate = ConfigUtils.configVector(config, "BodyWheelRate", bodyWheelRate); + bodyWheelRotRate = ConfigUtils.configVector(config, "BodyWheelRotRate", bodyWheelRotRate); //Tail Wheels - tailWheelPos1 = ConfigUtils.configVector(config, "TailWheelPosition1", tailWheelPos1, shortName); - tailWheelPos2 = ConfigUtils.configVector(config, "TailWheelPosition2", tailWheelPos2, shortName); - tailWheelRot1 = ConfigUtils.configVector(config, "TailWheelRotation1", tailWheelRot1, shortName); - tailWheelRot2 = ConfigUtils.configVector(config, "TailWheelRotation2", tailWheelRot2, shortName); - tailWheelRate = ConfigUtils.configVector(config, "TailWheelRate", tailWheelRate, shortName); - tailWheelRotRate = ConfigUtils.configVector(config, "TailWheelRotRate", tailWheelRotRate, shortName); + tailWheelPos1 = ConfigUtils.configVector(config, "TailWheelPosition1", tailWheelPos1); + tailWheelPos2 = ConfigUtils.configVector(config, "TailWheelPosition2", tailWheelPos2); + tailWheelRot1 = ConfigUtils.configVector(config, "TailWheelRotation1", tailWheelRot1); + tailWheelRot2 = ConfigUtils.configVector(config, "TailWheelRotation2", tailWheelRot2); + tailWheelRate = ConfigUtils.configVector(config, "TailWheelRate", tailWheelRate); + tailWheelRotRate = ConfigUtils.configVector(config, "TailWheelRotRate", tailWheelRotRate); - doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); - doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); - doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); - doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); - doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); - doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1); + doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2); + doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1); + doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2); + doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate); + doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate); //In-flight inventory invInflight = ConfigUtils.configBool(config, "InflightInventory", invInflight); diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index b61c2c8c..3688a371 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -130,19 +130,19 @@ protected void read(ConfigMap config, TypeFile file) { flipLinkFix = ConfigUtils.configBool(config,"FlipLinkFix", flipLinkFix); //Animations - doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1, shortName); - doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2, shortName); - doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1, shortName); - doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2, shortName); - doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate, shortName); - doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate, shortName); + doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1); + doorPos2 = ConfigUtils.configVector(config, "DoorPosition2", doorPos2); + doorRot1 = ConfigUtils.configVector(config, "DoorRotation1", doorRot1); + doorRot2 = ConfigUtils.configVector(config, "DoorRotation2", doorRot2); + doorRate = ConfigUtils.configVector(config, "DoorRate", doorRate); + doorRotRate = ConfigUtils.configVector(config, "DoorRotRate", doorRotRate); - door2Pos1 = ConfigUtils.configVector(config, "Door2Position1", door2Pos1, shortName); - door2Pos2 = ConfigUtils.configVector(config, "Door2Position2", door2Pos2, shortName); - door2Rot1 = ConfigUtils.configVector(config, "Door2Rotation1", door2Rot1, shortName); - door2Rot2 = ConfigUtils.configVector(config, "Door2Rotation2", door2Rot2, shortName); - door2Rate = ConfigUtils.configVector(config, "Door2Rate", door2Rate, shortName); - door2RotRate = ConfigUtils.configVector(config, "Door2RotRate", door2RotRate, shortName); + door2Pos1 = ConfigUtils.configVector(config, "Door2Position1", door2Pos1); + door2Pos2 = ConfigUtils.configVector(config, "Door2Position2", door2Pos2); + door2Rot1 = ConfigUtils.configVector(config, "Door2Rotation1", door2Rot1); + door2Rot2 = ConfigUtils.configVector(config, "Door2Rotation2", door2Rot2); + door2Rate = ConfigUtils.configVector(config, "Door2Rate", door2Rate); + door2RotRate = ConfigUtils.configVector(config, "Door2RotRate", door2RotRate); //Armaments @@ -160,8 +160,8 @@ protected void read(ConfigMap config, TypeFile file) { key = "AddSmokeDispenser"; String[] split = ConfigUtils.getSplitFromKey(config, key); SmokePoint smoke = new SmokePoint(); - smoke.position = new Vector3f(split[1], shortName); - smoke.direction = new Vector3f(split[2], shortName); + smoke.position = new Vector3f(split[1]); + smoke.direction = new Vector3f(split[2]); smoke.detTime = Integer.parseInt(split[3]); smoke.part = split[4]; smokers.add(smoke); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index a7ebcdee..0e5169b2 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -612,7 +612,7 @@ protected void read(ConfigMap config, TypeFile file) { useLoopingSounds = true; FlansMod.proxy.loadSound(contentPack, "guns", config.get(key)); } - loopedSound = ConfigUtils.configSound(contentPack, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); + loopedSound = ConfigUtils.configGunSound(contentPack, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); if (loopedSound != null && !loopedSound.isEmpty()) useLoopingSounds = true; loopedSoundLength = ConfigUtils.configInt(config, new String[]{"LoopedSoundLength", "SpinSoundLength"}, loopedSoundLength); @@ -775,45 +775,45 @@ protected void read(ConfigMap config, TypeFile file) { } public void processAnimationConfigs(ConfigMap config) { - model.minigunBarrelOrigin = ConfigUtils.configVector3f(config, "animMinigunBarrelOrigin", model.minigunBarrelOrigin); - model.barrelAttachPoint = ConfigUtils.configVector3f(config, "animBarrelAttachPoint", model.barrelAttachPoint); - model.scopeAttachPoint = ConfigUtils.configVector3f(config, "animScopeAttachPoint", model.scopeAttachPoint); - model.stockAttachPoint = ConfigUtils.configVector3f(config, "animStockAttachPoint", model.stockAttachPoint); - model.gripAttachPoint = ConfigUtils.configVector3f(config, "animGripAttachPoint", model.gripAttachPoint); - model.gadgetAttachPoint = ConfigUtils.configVector3f(config, "animGadgetAttachPoint", model.gadgetAttachPoint); - model.slideAttachPoint = ConfigUtils.configVector3f(config, "animSlideAttachPoint", model.slideAttachPoint); - model.pumpAttachPoint = ConfigUtils.configVector3f(config, "animPumpAttachPoint", model.pumpAttachPoint); - model.accessoryAttachPoint = ConfigUtils.configVector3f(config, "animAccessoryAttachPoint", model.accessoryAttachPoint); - - model.defaultBarrelFlashPoint = ConfigUtils.configVector3f(config, "animDefaultBarrelFlashPoint", model.defaultBarrelFlashPoint); - model.muzzleFlashPoint = ConfigUtils.configVector3f(config, "animMuzzleFlashPoint", model.muzzleFlashPoint); + model.minigunBarrelOrigin = ConfigUtils.configVector(config, "animMinigunBarrelOrigin", model.minigunBarrelOrigin); + model.barrelAttachPoint = ConfigUtils.configVector(config, "animBarrelAttachPoint", model.barrelAttachPoint); + model.scopeAttachPoint = ConfigUtils.configVector(config, "animScopeAttachPoint", model.scopeAttachPoint); + model.stockAttachPoint = ConfigUtils.configVector(config, "animStockAttachPoint", model.stockAttachPoint); + model.gripAttachPoint = ConfigUtils.configVector(config, "animGripAttachPoint", model.gripAttachPoint); + model.gadgetAttachPoint = ConfigUtils.configVector(config, "animGadgetAttachPoint", model.gadgetAttachPoint); + model.slideAttachPoint = ConfigUtils.configVector(config, "animSlideAttachPoint", model.slideAttachPoint); + model.pumpAttachPoint = ConfigUtils.configVector(config, "animPumpAttachPoint", model.pumpAttachPoint); + model.accessoryAttachPoint = ConfigUtils.configVector(config, "animAccessoryAttachPoint", model.accessoryAttachPoint); + + model.defaultBarrelFlashPoint = ConfigUtils.configVector(config, "animDefaultBarrelFlashPoint", model.defaultBarrelFlashPoint); + model.muzzleFlashPoint = ConfigUtils.configVector(config, "animMuzzleFlashPoint", model.muzzleFlashPoint); model.hasFlash = ConfigUtils.configBool(config, "animHasFlash", model.hasFlash); model.hasArms = ConfigUtils.configBool(config, "animHasArms", model.hasArms); model.easyArms = ConfigUtils.configBool(config, "easyArms", model.easyArms); - model.armScale = ConfigUtils.configVector3f(config, "armScale", model.armScale); - - model.leftArmPos = ConfigUtils.configVector3f(config, "animLeftArmPos", model.leftArmPos); - model.leftArmRot = ConfigUtils.configVector3f(config, "animLeftArmRot", model.leftArmRot); - model.leftArmScale = ConfigUtils.configVector3f(config, "animLeftArmScale", model.leftArmScale); - model.rightArmPos = ConfigUtils.configVector3f(config, "animRightArmPos", model.rightArmPos); - model.rightArmRot = ConfigUtils.configVector3f(config, "animRightArmRot", model.rightArmRot); - model.rightArmScale = ConfigUtils.configVector3f(config, "animRightArmScale", model.rightArmScale); - - model.rightArmReloadPos = ConfigUtils.configVector3f(config, "animRightArmReloadPos", model.rightArmReloadPos); - model.rightArmReloadRot = ConfigUtils.configVector3f(config, "animRightArmReloadRot", model.rightArmReloadRot); - model.leftArmReloadPos = ConfigUtils.configVector3f(config, "animLeftArmReloadPos", model.leftArmReloadPos); - model.leftArmReloadRot = ConfigUtils.configVector3f(config, "animLeftArmReloadRot", model.leftArmReloadRot); - - model.rightArmChargePos = ConfigUtils.configVector3f(config, "animRightArmChargePos", model.rightArmChargePos); - model.rightArmChargeRot = ConfigUtils.configVector3f(config, "animRightArmChargeRot", model.rightArmChargeRot); - model.leftArmChargePos = ConfigUtils.configVector3f(config, "animLeftArmChargePos", model.leftArmChargePos); - model.leftArmChargeRot = ConfigUtils.configVector3f(config, "animLeftArmChargeRot", model.leftArmChargeRot); - - model.stagedrightArmReloadPos = ConfigUtils.configVector3f(config, "animStagedRightArmReloadPos", model.stagedrightArmReloadPos); - model.stagedrightArmReloadRot = ConfigUtils.configVector3f(config, "animStagedRightArmReloadRot", model.stagedrightArmReloadRot); - model.stagedleftArmReloadPos = ConfigUtils.configVector3f(config, "animStagedLeftArmReloadPos", model.stagedleftArmReloadPos); - model.stagedleftArmReloadRot = ConfigUtils.configVector3f(config, "animStagedLeftArmReloadRot", model.stagedleftArmReloadRot); + model.armScale = ConfigUtils.configVector(config, "armScale", model.armScale); + + model.leftArmPos = ConfigUtils.configVector(config, "animLeftArmPos", model.leftArmPos); + model.leftArmRot = ConfigUtils.configVector(config, "animLeftArmRot", model.leftArmRot); + model.leftArmScale = ConfigUtils.configVector(config, "animLeftArmScale", model.leftArmScale); + model.rightArmPos = ConfigUtils.configVector(config, "animRightArmPos", model.rightArmPos); + model.rightArmRot = ConfigUtils.configVector(config, "animRightArmRot", model.rightArmRot); + model.rightArmScale = ConfigUtils.configVector(config, "animRightArmScale", model.rightArmScale); + + model.rightArmReloadPos = ConfigUtils.configVector(config, "animRightArmReloadPos", model.rightArmReloadPos); + model.rightArmReloadRot = ConfigUtils.configVector(config, "animRightArmReloadRot", model.rightArmReloadRot); + model.leftArmReloadPos = ConfigUtils.configVector(config, "animLeftArmReloadPos", model.leftArmReloadPos); + model.leftArmReloadRot = ConfigUtils.configVector(config, "animLeftArmReloadRot", model.leftArmReloadRot); + + model.rightArmChargePos = ConfigUtils.configVector(config, "animRightArmChargePos", model.rightArmChargePos); + model.rightArmChargeRot = ConfigUtils.configVector(config, "animRightArmChargeRot", model.rightArmChargeRot); + model.leftArmChargePos = ConfigUtils.configVector(config, "animLeftArmChargePos", model.leftArmChargePos); + model.leftArmChargeRot = ConfigUtils.configVector(config, "animLeftArmChargeRot", model.leftArmChargeRot); + + model.stagedrightArmReloadPos = ConfigUtils.configVector(config, "animStagedRightArmReloadPos", model.stagedrightArmReloadPos); + model.stagedrightArmReloadRot = ConfigUtils.configVector(config, "animStagedRightArmReloadRot", model.stagedrightArmReloadRot); + model.stagedleftArmReloadPos = ConfigUtils.configVector(config, "animStagedLeftArmReloadPos", model.stagedleftArmReloadPos); + model.stagedleftArmReloadRot = ConfigUtils.configVector(config, "animStagedLeftArmReloadRot", model.stagedleftArmReloadRot); model.rightHandAmmo = ConfigUtils.configBool(config, "animRightHandAmmo", model.rightHandAmmo); model.leftHandAmmo = ConfigUtils.configBool(config, "animLeftHandAmmo", model.leftHandAmmo); @@ -825,11 +825,11 @@ public void processAnimationConfigs(ConfigMap config) { model.ShakeDistance = ConfigUtils.configFloat(config, "animShakeDistance", model.ShakeDistance); model.recoilAmount = ConfigUtils.configFloat(config, "animRecoilAmount", model.recoilAmount); - model.casingAnimDistance = ConfigUtils.configVector3f(config, "animCasingAnimDistance", model.casingAnimDistance); - model.casingAnimSpread = ConfigUtils.configVector3f(config, "animCasingAnimSpread", model.casingAnimSpread); + model.casingAnimDistance = ConfigUtils.configVector(config, "animCasingAnimDistance", model.casingAnimDistance); + model.casingAnimSpread = ConfigUtils.configVector(config, "animCasingAnimSpread", model.casingAnimSpread); model.casingAnimTime = ConfigUtils.configInt(config, "animCasingAnimTime", model.casingAnimTime); - model.casingRotateVector = ConfigUtils.configVector3f(config, "animCasingRotateVector", model.casingRotateVector); - model.casingAttachPoint = ConfigUtils.configVector3f(config, "animCasingAttachPoint", model.casingAttachPoint); + model.casingRotateVector = ConfigUtils.configVector(config, "animCasingRotateVector", model.casingRotateVector); + model.casingAttachPoint = ConfigUtils.configVector(config, "animCasingAttachPoint", model.casingAttachPoint); model.casingDelay = ConfigUtils.configInt(config, "animCasingDelay", model.casingDelay); model.caseScale = ConfigUtils.configFloat(config, "animCasingScale", model.caseScale); model.flashScale = ConfigUtils.configFloat(config, "animFlashScale", model.flashScale); @@ -953,23 +953,23 @@ else if (split[1].equals("STAB_OVERARM")) model.gripIsOnPump = ConfigUtils.configBool(config, "animGripIsOnPump", model.gripIsOnPump); model.gripIsOnPump = ConfigUtils.configBool(config, "animGadgetsOnPump", model.gripIsOnPump); - model.barrelBreakPoint = ConfigUtils.configVector3f(config, "animBarrelBreakPoint", model.barrelBreakPoint); - model.altbarrelBreakPoint = ConfigUtils.configVector3f(config, "animAltBarrelBreakPoint", model.altbarrelBreakPoint); + model.barrelBreakPoint = ConfigUtils.configVector(config, "animBarrelBreakPoint", model.barrelBreakPoint); + model.altbarrelBreakPoint = ConfigUtils.configVector(config, "animAltBarrelBreakPoint", model.altbarrelBreakPoint); model.revolverFlipAngle = ConfigUtils.configFloat(config, "animRevolverFlipAngle", model.revolverFlipAngle); model.revolver2FlipAngle = ConfigUtils.configFloat(config, "animRevolver2FlipAngle", model.revolver2FlipAngle); - model.revolverFlipPoint = ConfigUtils.configVector3f(config, "animRevolverFlipPoint", model.revolverFlipPoint); - model.revolver2FlipPoint = ConfigUtils.configVector3f(config, "animRevolver2FlipPoint", model.revolver2FlipPoint); + model.revolverFlipPoint = ConfigUtils.configVector(config, "animRevolverFlipPoint", model.revolverFlipPoint); + model.revolver2FlipPoint = ConfigUtils.configVector(config, "animRevolver2FlipPoint", model.revolver2FlipPoint); model.breakAngle = ConfigUtils.configFloat(config, "animBreakAngle", model.breakAngle); model.altbreakAngle = ConfigUtils.configFloat(config, "animAltBreakAngle", model.altbreakAngle); model.spinningCocking = ConfigUtils.configBool(config, "animSpinningCocking", model.spinningCocking); - model.spinPoint = ConfigUtils.configVector3f(config, "animSpinPoint", model.spinPoint); - model.hammerSpinPoint = ConfigUtils.configVector3f(config, "animHammerSpinPoint", model.hammerSpinPoint); - model.althammerSpinPoint = ConfigUtils.configVector3f(config, "animAltHammerSpinPoint", model.althammerSpinPoint); + model.spinPoint = ConfigUtils.configVector(config, "animSpinPoint", model.spinPoint); + model.hammerSpinPoint = ConfigUtils.configVector(config, "animHammerSpinPoint", model.hammerSpinPoint); + model.althammerSpinPoint = ConfigUtils.configVector(config, "animAltHammerSpinPoint", model.althammerSpinPoint); model.hammerAngle = ConfigUtils.configFloat(config, "animHammerAngle", model.hammerAngle); model.althammerAngle = ConfigUtils.configFloat(config, "animAltHammerAngle", model.althammerAngle); @@ -983,29 +983,29 @@ else if (split[1].equals("STAB_OVERARM")) model.rightHandBolt = ConfigUtils.configBool(config, "animRightHandBolt", model.rightHandBolt); model.pumpModifier = ConfigUtils.configFloat(config, "animPumpModifier", model.pumpModifier); - model.chargeModifier = ConfigUtils.configVector3f(config, "animChargeModifier", model.chargeModifier); + model.chargeModifier = ConfigUtils.configVector(config, "animChargeModifier", model.chargeModifier); model.gunOffset = ConfigUtils.configFloat(config, "animGunOffset", model.gunOffset); model.crouchZoom = ConfigUtils.configFloat(config, "animCrouchZoom", model.crouchZoom); model.fancyStance = ConfigUtils.configBool(config, "animFancyStance", model.fancyStance); - model.stanceTranslate = ConfigUtils.configVector3f(config, "animTranslateClip", model.stanceTranslate); - model.stanceRotate = ConfigUtils.configVector3f(config, "animStanceRotate", model.stanceRotate); + model.stanceTranslate = ConfigUtils.configVector(config, "animTranslateClip", model.stanceTranslate); + model.stanceRotate = ConfigUtils.configVector(config, "animStanceRotate", model.stanceRotate); model.rotateGunVertical = ConfigUtils.configFloat(config, "animRotateGunVertical", model.rotateGunVertical); model.rotateGunHorizontal = ConfigUtils.configFloat(config, "animRotateGunHorizontal", model.rotateGunHorizontal); model.tiltGun = ConfigUtils.configFloat(config, "animTiltGun", model.tiltGun); - model.translateGun = ConfigUtils.configVector3f(config, "animTranslateGun", model.translateGun); + model.translateGun = ConfigUtils.configVector(config, "animTranslateGun", model.translateGun); model.rotateClipVertical = ConfigUtils.configFloat(config, "animRotateClipVertical", model.rotateClipVertical); model.stagedrotateClipVertical = ConfigUtils.configFloat(config, "animStagedRotateClipVertical", model.stagedrotateClipVertical); model.rotateClipVertical = ConfigUtils.configFloat(config, "animRotateClipHorizontal", model.rotateClipVertical); model.stagedrotateClipVertical = ConfigUtils.configFloat(config, "animStagedRotateClipHorizontal", model.stagedrotateClipVertical); model.tiltClip = ConfigUtils.configFloat(config, "animTiltClip", model.tiltClip); model.stagedtiltClip = ConfigUtils.configFloat(config, "animStagedTiltClip", model.stagedtiltClip); - model.translateClip = ConfigUtils.configVector3f(config, "animTranslateClip", model.translateClip); - model.stagedtranslateClip = ConfigUtils.configVector3f(config, "animStagedTranslateClip", model.stagedtranslateClip); + model.translateClip = ConfigUtils.configVector(config, "animTranslateClip", model.translateClip); + model.stagedtranslateClip = ConfigUtils.configVector(config, "animStagedTranslateClip", model.stagedtranslateClip); model.stagedReload = ConfigUtils.configBool(config, "animStagedReload", model.stagedReload); - model.thirdPersonOffset = ConfigUtils.configVector3f(config, "animThirdPersonOffset", model.thirdPersonOffset); - model.itemFrameOffset = ConfigUtils.configVector3f(config, "animItemFrameOffset", model.itemFrameOffset); + model.thirdPersonOffset = ConfigUtils.configVector(config, "animThirdPersonOffset", model.thirdPersonOffset); + model.itemFrameOffset = ConfigUtils.configVector(config, "animItemFrameOffset", model.itemFrameOffset); model.stillRenderGunWhenScopedOverlay = ConfigUtils.configBool(config, "animStillRenderGunWhenScopedOverlay", model.stillRenderGunWhenScopedOverlay); model.adsEffectMultiplier = ConfigUtils.configFloat(config, "animAdsEffectMultiplier", model.adsEffectMultiplier); } diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index 47105cd8..e8cda903 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -127,8 +127,8 @@ protected void read(ConfigMap config, TypeFile file) { defence = Double.parseDouble(config.get(key)); bulletDefence = defence; } - bulletDefence = ConfigUtils.configDouble(config, "BulletDefence", bulletDefence); - defence = ConfigUtils.configDouble(config, "OtherDefence", defence); + bulletDefence = ConfigUtils.configFloat(config, "BulletDefence", (float)bulletDefence); + defence = ConfigUtils.configFloat(config, "OtherDefence", (float)defence); moveSpeedModifier = ConfigUtils.configFloat(config, new String[]{"MoveSpeedModifier", "Slowness"}, moveSpeedModifier); jumpModifier = ConfigUtils.configFloat(config, "JumpModifier", jumpModifier); knockbackModifier = ConfigUtils.configFloat(config, new String[]{"KnockbackReduction", "KnockbackModifier"}, knockbackModifier); diff --git a/src/main/java/com/flansmod/common/vector/Vector3f.java b/src/main/java/com/flansmod/common/vector/Vector3f.java index adbe3324..729e4212 100644 --- a/src/main/java/com/flansmod/common/vector/Vector3f.java +++ b/src/main/java/com/flansmod/common/vector/Vector3f.java @@ -58,7 +58,7 @@ public Vector3f() { super(); } - public Vector3f(String input, String typeName) + public Vector3f(String input) { //Input should be of the form [float,float,float] String noBrackets = input.substring(1, input.length() - 1); diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index a6494770..e145c744 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -6,15 +6,17 @@ public class ConfigUtils { public static String configString(ConfigMap config, String settingName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return config.get(settingName.toLowerCase()); + String val = config.get(settingName.toLowerCase()); + if(val != null) + return val; return defaultValue; } public static String configString(ConfigMap config, String[] settingNames, String defaultValue) { for (String name : settingNames) { - if(config.containsKey(name.toLowerCase())) { - return config.get(name.toLowerCase()); + String val = config.get(name.toLowerCase()); + if(val != null) { + return val; } } @@ -22,15 +24,19 @@ public static String configString(ConfigMap config, String[] settingNames, Strin } public static int configInt(ConfigMap config, String settingName, int defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Integer.parseInt(config.get(settingName.toLowerCase())); + String val = config.get(settingName.toLowerCase()); + if (val != null) { + return Integer.parseInt(val); + } + return defaultValue; } public static int configInt(ConfigMap config, String[] settingNames, int defaultValue) { for (String name : settingNames) { - if(config.containsKey(name.toLowerCase())) { - return Integer.parseInt(config.get(name.toLowerCase())); + String val = config.get(name.toLowerCase()); + if(val != null) { + return Integer.parseInt(val); } } @@ -38,21 +44,17 @@ public static int configInt(ConfigMap config, String[] settingNames, int default } public static float configFloat(ConfigMap config, String settingName, float defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Float.parseFloat(config.get(settingName.toLowerCase())); - return defaultValue; - } - - public static double configDouble(ConfigMap config, String settingName, double defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Float.parseFloat(config.get(settingName.toLowerCase())); + String val = config.get(settingName.toLowerCase()); + if(val != null) + return Float.parseFloat(val); return defaultValue; } public static float configFloat(ConfigMap config, String[] settingNames, float defaultValue) { for (String name : settingNames) { - if(config.containsKey(name.toLowerCase())) { - return Float.parseFloat(config.get(name.toLowerCase())); + String val = config.get(name.toLowerCase()); + if(val != null) { + return Float.parseFloat(val); } } @@ -60,79 +62,70 @@ public static float configFloat(ConfigMap config, String[] settingNames, float d } public static boolean configBool(ConfigMap config, String settingName, boolean defaultValue) { - if(config.containsKey(settingName.toLowerCase())) - return Boolean.parseBoolean(config.get(settingName.toLowerCase())); + String val = config.get(settingName.toLowerCase()); + if(val != null) + return Boolean.parseBoolean(val); return defaultValue; } public static boolean configBool(ConfigMap config, String[] settingNames, boolean defaultValue) { for (String name : settingNames) { - if(config.containsKey(name.toLowerCase())) { - return Boolean.parseBoolean(config.get(name.toLowerCase())); + String val = config.get(name.toLowerCase()); + if(val != null) { + return Boolean.parseBoolean(val); } } return defaultValue; } - public static String configSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "sound", config.get(settingName.toLowerCase())); - return config.get(settingName.toLowerCase()); + public static String configSound(String contentPack, ConfigMap config, String settingName, String defaultValue, String type) { + String val = config.get(settingName.toLowerCase()); + if(val != null) { + FlansMod.proxy.loadSound(contentPack, type, val); + return val; } return defaultValue; } - public static String configGunSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "guns", config.get(settingName.toLowerCase())); - return config.get(settingName.toLowerCase()); + public static String configSound(String contentPack, ConfigMap config, String[] settingNames, String defaultValue, String type) { + for (String name : settingNames) { + String val = config.get(name.toLowerCase()); + if(val != null) { + FlansMod.proxy.loadSound(contentPack, type, val); + return val; + } } return defaultValue; } - public static String configAASound(String contentPack, ConfigMap config, String settingName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "aaguns", config.get(settingName.toLowerCase())); - return config.get(settingName.toLowerCase()); - } - - return defaultValue; + public static String configSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + return configSound(contentPack, config, settingName, defaultValue, "sound"); } - public static String configDriveableSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "driveables", config.get(settingName.toLowerCase())); - return config.get(settingName.toLowerCase()); - } + public static String configGunSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + return configSound(contentPack, config, settingName, defaultValue, "guns"); + } - return defaultValue; + public static String configGunSound(String contentPack, ConfigMap config, String[] settingNames, String defaultValue) { + return configSound(contentPack, config, settingNames, defaultValue, "guns"); } - public static String configSound(String contentPack, ConfigMap config, String[] settingNames, String defaultValue) { - for (String name : settingNames) { - if(config.containsKey(name.toLowerCase())) { - FlansMod.proxy.loadSound(contentPack, "guns", config.get(name.toLowerCase())); - return config.get(name.toLowerCase()); - } - } - return defaultValue; + public static String configAASound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + return configSound(contentPack, config, settingName, defaultValue,"aaguns"); } - public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue) { - if(config.containsKey(settingName.toLowerCase())) { - return new Vector3f(config.get(settingName.toLowerCase()), null); - } - - return defaultValue; + public static String configDriveableSound(String contentPack, ConfigMap config, String settingName, String defaultValue) { + return configSound(contentPack, config, settingName, defaultValue, "driveables"); } - public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue, String shortName) { - if(config.containsKey(settingName.toLowerCase())) { - return new Vector3f(config.get(settingName.toLowerCase()), shortName); + public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue) { + String val = config.get(settingName); + if(val != null) { + return new Vector3f(val); } return defaultValue; @@ -142,9 +135,7 @@ public static String[] getSplitFromKey (ConfigMap config, String key) { String[] dataPieces = config.get(key).split(" "); String[] split = new String[dataPieces.length + 1]; split[0] = key; - for (int i = 0; i < dataPieces.length; i++) { - split[i+1] = dataPieces[i]; - } + System.arraycopy(dataPieces, 0, split, 1, dataPieces.length); return split; } @@ -154,23 +145,11 @@ public static String[] getSplitFromKey (ConfigMap config, String[] keys) { String[] dataPieces = config.get(key).split(" "); String[] split = new String[dataPieces.length + 1]; split[0] = key; - for (int i = 0; i < dataPieces.length; i++) { - split[i+1] = dataPieces[i]; - } + System.arraycopy(dataPieces, 0, split, 1, dataPieces.length); return split; } } return null; } - - public static Vector3f configVector3f(ConfigMap config, String key, Vector3f original) { - - if (config.containsKey(key)) { - String[] inp = getSplitFromKey(config, key); - return new Vector3f(Float.parseFloat(inp[1]), Float.parseFloat(inp[2]), Float.parseFloat(inp[3])); - } - - return original; - } } From 3293887b042c8af11d6e9f23308829029298822a Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 1 Feb 2023 00:11:34 +0000 Subject: [PATCH 09/32] Misc config refactoring (2) --- .../common/paintjob/PaintableType.java | 2 +- .../com/flansmod/common/parts/PartType.java | 98 ++++++++++--------- .../flansmod/common/teams/ArmourBoxType.java | 13 +-- .../com/flansmod/common/teams/ArmourType.java | 57 ++++++----- .../com/flansmod/common/tools/ToolType.java | 10 +- .../com/flansmod/common/types/InfoType.java | 81 +++++++-------- 6 files changed, 131 insertions(+), 130 deletions(-) diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index 29ba4d1f..c0c893b3 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -57,7 +57,7 @@ protected void read(ConfigMap config, TypeFile file) //iconName textureName [dyeName dyeAmount (dyeDamage)] if (config.containsKey("PaintJob")) { try { - String[] split = config.get("PaintJob").split(" "); + String[] split = ConfigUtils.getSplitFromKey(config, "PaintJob"); int numDyes = (split.length - 2) / 2; ItemStack[] dyeStacks = new ItemStack[numDyes]; for(int i = 0; i < numDyes; i++) diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index 77e5e906..b4aaaf7a 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -10,6 +10,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; import net.minecraft.item.ItemStack; +import org.classpath.icedtea.Config; import java.util.ArrayList; import java.util.Arrays; @@ -20,11 +21,11 @@ public class PartType extends InfoType { /** * Category (TODO : Replace with Enum) */ - public int category; + public int category = 0; /** * Max stack size of item */ - public int stackSize; + public int stackSize = 0; /** * (Engine) Multiplier applied to the thrust of the driveable */ @@ -99,22 +100,32 @@ public void postRead(TypeFile file) { protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - if (config.containsKey("Category")) - category = getCategory(config.get("Category")); - if (config.containsKey("StackSize")) - stackSize = Integer.parseInt(config.get("StackSize")); - if (config.containsKey("EngineSpeed")) - engineSpeed = Float.parseFloat(config.get("EngineSpeed")); - if (config.containsKey("FuelConsumption")) - fuelConsumption = Float.parseFloat(config.get("FuelConsumption")); - if (config.containsKey("EnginePower")) - enginePower = Float.parseFloat(config.get("EnginePowewr")); - if (config.containsKey("Fuel")) - fuel = Integer.parseInt(config.get("Fuel")); + // Generic + category = getCategory(ConfigUtils.configString(config, "Category", "Cockpit")); + stackSize = ConfigUtils.configInt(config, "StackSize", stackSize); + + // Engine + fuelConsumption = ConfigUtils.configFloat(config, "FuelConsumption", engineSpeed); + engineSpeed = ConfigUtils.configFloat(config, "EngineSpeed", engineSpeed); + enginePower = ConfigUtils.configFloat(config, "EnginePower", enginePower); + //RedstoneFlux, for engines + useRFPower = ConfigUtils.configBool(config, new String[]{"UseRF", "UseRFPower"}, useRFPower); + RFDrawRate = ConfigUtils.configInt(config, "RFDrawRate", RFDrawRate); + // Engine compatibility + if (config.containsKey("WorksWith")) { + String[] split = ConfigUtils.getSplitFromKey(config, "WorksWith"); + worksWith = new ArrayList(); + for (int i = 0; i < split.length - 1; i++) { + worksWith.add(EnumType.get(split[i + 1])); + } + } + + // Fuel cans + fuel = ConfigUtils.configInt(config, "Fuel", fuel); //Recipe if (config.containsKey("PartBoxRecipe")) { - String[] split = config.get("PartBoxRecipe").split(" "); + String[] split = ConfigUtils.getSplitFromKey(config, "PartBoxRecipe"); ItemStack[] stacks = new ItemStack[(split.length - 2) / 2]; for (int i = 0; i < (split.length - 2) / 2; i++) { int amount = Integer.parseInt(split[2 * i + 2]); @@ -124,17 +135,7 @@ protected void read(ConfigMap config, TypeFile file) { stacks[i] = getRecipeElement(itemName, amount, damage, shortName); } partBoxRecipe.addAll(Arrays.asList(stacks)); - } else if (config.containsKey("WorksWith")) { - String[] split = ConfigUtils.getSplitFromKey(config, "WorksWith"); - worksWith = new ArrayList(); - for (int i = 0; i < split.length - 1; i++) { - worksWith.add(EnumType.get(split[i + 1])); - } } - - //RedstoneFlux - useRFPower = ConfigUtils.configBool(config, new String[]{"UseRF", "UseRFPower"}, useRFPower); - RFDrawRate = ConfigUtils.configInt(config, "RFDrawRate", RFDrawRate); } catch (Exception e) { FlansMod.log("Reading part file failed."); e.printStackTrace(); @@ -154,29 +155,30 @@ public static PartType getPart(String s) { } private int getCategory(String s) { - if (s.equals("Cockpit")) - return 0; - if (s.equals("Wing")) - return 1; - if (s.equals("Engine")) - return 2; - if (s.equals("Propeller")) - return 3; - if (s.equals("Bay")) - return 4; - if (s.equals("Tail")) - return 5; - if (s.equals("Wheel")) - return 6; - if (s.equals("Chassis")) - return 7; - if (s.equals("Turret")) - return 8; - if (s.equals("Fuel")) - return 9; - if (s.equals("Misc")) - return 10; - return 10; + switch (s) { + case "Cockpit": + return 0; + case "Wing": + return 1; + case "Engine": + return 2; + case "Propeller": + return 3; + case "Bay": + return 4; + case "Tail": + return 5; + case "Wheel": + return 6; + case "Chassis": + return 7; + case "Turret": + return 8; + case "Fuel": + return 9; + default: // "Misc" + return 10; + } } @Override diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 1d90bde3..cef5e068 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -57,16 +57,13 @@ protected void read(ConfigMap config, TypeFile file) sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); if (config.containsKey("addarmour") || config.containsKey("addarmor")) { - String key = "addarmour"; - if (config.containsKey("addarmor")) - key = "addarmor"; + String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "AddArmour", "AddArmor"}); - String[] split = ConfigUtils.getSplitFromKey(config, key); - String name = split[2]; + StringBuilder name = new StringBuilder(split[2]); for(int i = 3; i < split.length; i++) - name = name + " " + split[i]; - ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name); + name.append(" ").append(split[i]); + ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name.toString()); //Read the next 4 lines for each armour piece for (int i = 0; i < 4; i++) { @@ -92,7 +89,7 @@ protected void read(ConfigMap config, TypeFile file) if(stack != null) { entry.requiredStacks[i].add(stack); } else { - if (FlansMod.printDebugLog) { FlansMod.log("Could not add part %s to %s in armourbox %s", lineSplit[j * 2 + 1], name, shortName); } + if (FlansMod.printDebugLog) { FlansMod.log("Could not add part %s to %s in armourbox %s", lineSplit[j * 2 + 1], name.toString(), shortName); } } } } diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index e8cda903..6f3ef03e 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -1,7 +1,6 @@ package com.flansmod.common.teams; import java.util.ArrayList; -import java.util.HashMap; import com.flansmod.client.model.ModelCustomArmour; import com.flansmod.common.FlansMod; @@ -10,7 +9,6 @@ import com.flansmod.utils.ConfigMap; import com.flansmod.utils.ConfigUtils; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; @@ -105,30 +103,37 @@ protected void postRead(TypeFile file) { protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) { - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelCustomArmour.class); + String modelName = ConfigUtils.configString(config, "Model", null); + if (modelName != null) { + model = FlansMod.proxy.loadModel(modelName, shortName, ModelCustomArmour.class); model.type = this; } - if (config.containsKey("Type")) { - if (config.get("Type").equals("Hat") || config.get("Type").equals("Helmet")) - type = 0; - if (config.get("Type").equals("Chest") || config.get("Type").equals("Body")) - type = 1; - if (config.get("Type").equals("Legs") || config.get("Type").equals("Pants")) - type = 2; - if (config.get("Type").equals("Shoes") || config.get("Type").equals("Boots")) - type = 3; - } - if (config.containsKey("DamageReduction") || config.containsKey("Defence")) { - String key = "DamageReduction"; - if (config.containsKey("Defence")) - key = "Defence"; - defence = Double.parseDouble(config.get(key)); - bulletDefence = defence; + String typeName = ConfigUtils.configString(config, "Type", null); + if (typeName == null) { + type = 0; + FlansMod.log("Armour %s in pack %s with unknown type detected. Assuming Helmet.", shortName, packName); + } else { + switch (typeName) { + case "Hat": case "Helmet": + type=0; break; + + case "Chest": case "Body": + type=1; break; + + case "Legs": case "Pants": + type=2; break; + + case "Shoes": case "Boots": + type=3; break; + } } - bulletDefence = ConfigUtils.configFloat(config, "BulletDefence", (float)bulletDefence); - defence = ConfigUtils.configFloat(config, "OtherDefence", (float)defence); + + // If bulletDefence is set, we allow the normal defence to be overriden + defence = ConfigUtils.configFloat(config, new String[] {"OtherDefence", "Defence", "DamageReduction"}, (float)defence); + bulletDefence = ConfigUtils.configFloat(config, "BulletDefence", (float)defence); + + moveSpeedModifier = ConfigUtils.configFloat(config, new String[]{"MoveSpeedModifier", "Slowness"}, moveSpeedModifier); jumpModifier = ConfigUtils.configFloat(config, "JumpModifier", jumpModifier); knockbackModifier = ConfigUtils.configFloat(config, new String[]{"KnockbackReduction", "KnockbackModifier"}, knockbackModifier); @@ -141,10 +146,10 @@ protected void read(ConfigMap config, TypeFile file) { overlay = ConfigUtils.configString(config, "Overlay", overlay); smokeProtection = ConfigUtils.configBool(config, "SmokeProtection", smokeProtection); onWaterWalking = ConfigUtils.configBool(config, "OnWaterWalking", onWaterWalking); - if (config.containsKey("Durability")) { - durability = Integer.parseInt(config.get("Durability")); - hasDurability = durability > 0; - } + + durability = ConfigUtils.configInt(config, "Durability", durability); + hasDurability = durability > 0; + armourTextureName = ConfigUtils.configString(config, new String[]{"ArmourTexture", "ArmorTexture"}, armourTextureName); } catch (Exception e) { FlansMod.log("Reading armour file failed."); diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index f2c9488d..e87bc84f 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -16,6 +16,7 @@ import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; import com.flansmod.utils.ConfigUtils; +import org.classpath.icedtea.Config; public class ToolType extends InfoType { @@ -64,9 +65,11 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); - if(FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelBase.class); - texture = config.get("Texture"); + // The model load can be done on server too, proxy will just skip it. + String modelName = ConfigUtils.configString(config, "Model", null); + model = FlansMod.proxy.loadModel(modelName, shortName, ModelBase.class); + texture = ConfigUtils.configString(config, "Texture", texture); + parachute = ConfigUtils.configBool(config, "Parachute", parachute); remote = ConfigUtils.configBool(config, "ExplosiveRemote", remote); key = ConfigUtils.configBool(config, "Key", key); @@ -75,6 +78,7 @@ protected void read(ConfigMap config, TypeFile file) healAmount = ConfigUtils.configInt(config, new String[]{"HealAmount", "RepairAmount"}, toolLife); toolLife = ConfigUtils.configInt(config, new String[]{"ToolLife", "ToolUes"}, toolLife); EUPerCharge = ConfigUtils.configInt(config, "EUPerCharge", EUPerCharge); + if(config.containsKey("RechargeRecipe")) { String[] split = ConfigUtils.getSplitFromKey(config, "RechargeRecipe"); for(int i = 0; i < (split.length - 1) / 2; i++) diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index 2422e0bc..dba1850d 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -86,33 +86,33 @@ else if (line.length() == 1) continue; } - //Ignore the line in these cases - if (line == null) - break; - if (line.startsWith("//")) - continue; - String[] split = line.split(" "); - - if (split.length > 2) { - String data = ""; - for (int i = 1; i < split.length; i++) { - data += split[i] + " "; - } - configMap.put(split[0].toLowerCase(), data.trim()); - if (split[0].equalsIgnoreCase("recipe")) { - readRecipe = true; - } - } else if (split.length == 2){ - configMap.put(split[0].toLowerCase(), split[1]); - } else { - continue; + //Ignore the line in these cases + if (line == null) + break; + if (line.startsWith("//") || line.trim().isEmpty()) + continue; + + if (!line.contains(" ")) { + configMap.put(line.trim(), ""); + } else { + int firstSpace = line.indexOf(" "); + + String key = line.substring(0, firstSpace).trim(); + String data = line.substring(firstSpace).trim(); + + configMap.put(key, data); + + if (key.equalsIgnoreCase("Recipe")) { + readRecipe = true; } + } } shortName = ConfigUtils.configString(configMap, "ShortName", shortName); if (shortName == null ) { infoTypes.remove(this); + FlansMod.log("Config without shortname removed %s in pack %s", file.name, file.pack); } else { read(configMap, file); postRead(file); @@ -123,44 +123,37 @@ else if (line.length() == 1) * Pack reader */ protected void read(ConfigMap config, TypeFile file) { - + // Model stuff modelString = ConfigUtils.configString(configMap, "Model", modelString); - if (config.containsKey("ModelScale")) - modelScale = Float.parseFloat(config.get("ModelScale")); + modelScale = ConfigUtils.configFloat(configMap, "ModelScale", modelScale); + + // Text stuff name = ConfigUtils.configString(configMap, "Name", name); description = ConfigUtils.configString(configMap, "Description", description); - shortName = ConfigUtils.configString(configMap, "ShortName", shortName); - if (config.containsKey("Color")) { - String[] rgb = config.get("Color").split(" "); - colour = (Integer.parseInt(rgb[0]) << 16) + ((Integer.parseInt(rgb[1])) << 8) + ((Integer.parseInt(rgb[2]))); - } else if (config.containsKey("Colour")) { - String[] rgb = config.get("Colour").split(" "); - colour = (Integer.parseInt(rgb[0]) << 16) + ((Integer.parseInt(rgb[1])) << 8) + ((Integer.parseInt(rgb[2]))); - } - if (config.get("Icon") == null || config.get("Icon").isEmpty()) { - iconPath = "Missing-Icon-" + shortName; - } else { - iconPath = ConfigUtils.configString(config, "Icon", iconPath); + String[] val = ConfigUtils.getSplitFromKey(configMap, new String[]{ "Color", "Colour" }); + if (val != null) { + colour = (Integer.parseInt(val[1]) << 16) + ((Integer.parseInt(val[2])) << 8) + ((Integer.parseInt(val[3]))); } - if (config.containsKey("RecipeOutput")) - recipeOutput = ConfigUtils.configInt(config, "RecipeOutput", recipeOutput); + iconPath = ConfigUtils.configString(configMap, "Icon", "Missing-Icon-"+shortName); + if (iconPath.isEmpty()) { iconPath = "Missing-Icon-" + shortName; } // Extra validation + + recipeOutput = ConfigUtils.configInt(config, "RecipeOutput", recipeOutput); + if (config.containsKey("Recipe")) { - recipeLine = ("Recipe " + config.get("Recipe")).split(" "); String[] split = ConfigUtils.getSplitFromKey(config, "Recipe"); recipe = new Object[split.length + 2]; - recipe[0] = config.get("recipe0"); - recipe[1] = config.get("recipe1"); - recipe[2] = config.get("recipe2"); + recipe[0] = ConfigUtils.configString(config, "recipe0", ""); + recipe[1] = ConfigUtils.configString(config, "recipe1", ""); + recipe[2] = ConfigUtils.configString(config, "recipe2", ""); } else if (config.containsKey("ShapelessRecipe")) { - recipeLine = ("Recipe " + config.get("Recipe")).split(" "); + recipeLine = ConfigUtils.getSplitFromKey(config, "Recipe"); shapeless = true; } smeltableFrom = ConfigUtils.configString(configMap, "SmeltableFrom", smeltableFrom); - if (config.containsKey("CanDrop")) - canDrop = Boolean.parseBoolean(config.get("CanDrop")); + canDrop = ConfigUtils.configBool(config, "CanDrop", canDrop); } public void addRecipe() { From a4d0a5d66b6512ac0dfedc5cdcbede17d5f482d2 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 23 Feb 2023 00:28:10 +0000 Subject: [PATCH 10/32] Config rewrite tidyup --- .../flansmod/common/teams/ArmourBoxType.java | 107 +++++++++--------- .../java/com/flansmod/common/teams/Team.java | 96 +++++++--------- .../java/com/flansmod/utils/ConfigUtils.java | 34 ++++-- 3 files changed, 117 insertions(+), 120 deletions(-) diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index cef5e068..8fcb6f24 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -16,7 +16,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class ArmourBoxType extends InfoType +public class ArmourBoxType extends InfoType { //Textures public String topTexturePath; @@ -25,28 +25,28 @@ public class ArmourBoxType extends InfoType public IIcon top; public IIcon side; public IIcon bottom; - + public BlockArmourBox block; - public ArrayList pages = new ArrayList(); - + public ArrayList pages = new ArrayList<>(); + /** The static box map. Indexed by shortName for server ~ client syncing */ - public static HashMap boxes = new HashMap(); - - public ArmourBoxType(TypeFile file) + public static HashMap boxes = new HashMap<>(); + + public ArmourBoxType(TypeFile file) { super(file); } - + @Override public void preRead(TypeFile file) { } - + @Override public void postRead(TypeFile file) { boxes.put(shortName, this); } - + @Override protected void read(ConfigMap config, TypeFile file) { @@ -56,47 +56,48 @@ protected void read(ConfigMap config, TypeFile file) bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); - if (config.containsKey("addarmour") || config.containsKey("addarmor")) { - String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "AddArmour", "AddArmor"}); - - StringBuilder name = new StringBuilder(split[2]); - - for(int i = 3; i < split.length; i++) - name.append(" ").append(split[i]); - ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name.toString()); - //Read the next 4 lines for each armour piece - for (int i = 0; i < 4; i++) - { - String line = null; - line = file.readLine(); - if(line == null) - continue; - if(line.startsWith("//")) - { - i--; - continue; - } - String[] lineSplit = line.split(" "); - entry.armours[i] = ArmourType.getArmourType(lineSplit[0]); - for(int j = 0; j < (lineSplit.length - 1) / 2; j++) + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddArmour", "AddArmor"}); + + for (String[] split : splits) { + if (split != null) { + StringBuilder name = new StringBuilder(split[2]); + + for(int i = 3; i < split.length; i++) + name.append(" ").append(split[i]); + ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name.toString()); + //Read the next 4 lines for each armour piece + for (int i = 0; i < 4; i++) { - ItemStack stack = null; - if(lineSplit[j * 2 + 1].contains(".")) - stack = getRecipeElement(lineSplit[j * 2 + 1].split("\\.")[0], Integer.valueOf(lineSplit[j * 2 + 2]), Integer.valueOf(lineSplit[j * 2 + 1].split("\\.")[1]), shortName); - else - stack = getRecipeElement(lineSplit[j * 2 + 1], Integer.valueOf(lineSplit[j * 2 + 2]), 0, shortName); - - if(stack != null) { - entry.requiredStacks[i].add(stack); - } else { - if (FlansMod.printDebugLog) { FlansMod.log("Could not add part %s to %s in armourbox %s", lineSplit[j * 2 + 1], name.toString(), shortName); } + String line; + line = file.readLine(); + if(line == null) + continue; + if(line.startsWith("//")) + { + i--; + continue; + } + String[] lineSplit = line.split(" "); + entry.armours[i] = ArmourType.getArmourType(lineSplit[0]); + for(int j = 0; j < (lineSplit.length - 1) / 2; j++) + { + ItemStack stack; + if(lineSplit[j * 2 + 1].contains(".")) + stack = getRecipeElement(lineSplit[j * 2 + 1].split("\\.")[0], Integer.parseInt(lineSplit[j * 2 + 2]), Integer.parseInt(lineSplit[j * 2 + 1].split("\\.")[1]), shortName); + else + stack = getRecipeElement(lineSplit[j * 2 + 1], Integer.parseInt(lineSplit[j * 2 + 2]), 0, shortName); + + if(stack != null) { + entry.requiredStacks[i].add(stack); + } else { + if (FlansMod.printDebugLog) { FlansMod.log("Could not add part %s to %s in armourbox %s", lineSplit[j * 2 + 1], name.toString(), shortName); } + } } } - } - pages.add(entry); + pages.add(entry); + } } - } catch (Exception e) { FlansMod.log("Reading armour box file failed : " + shortName); if (FlansMod.printStackTrace) @@ -108,37 +109,37 @@ protected void read(ConfigMap config, TypeFile file) public class ArmourBoxEntry { public String shortName; - public String name = ""; + public String name; public ArmourType[] armours; public ArrayList[] requiredStacks; - + public ArmourBoxEntry(String s, String s1) { shortName = s; name = s1; - + //Prep arrays and lists armours = new ArmourType[4]; requiredStacks = new ArrayList[4]; for(int i = 0; i < 4; i++) - requiredStacks[i] = new ArrayList(); + requiredStacks[i] = new ArrayList<>(); } } - public static ArmourBoxType getBox(String boxShortName) + public static ArmourBoxType getBox(String boxShortName) { return boxes.get(boxShortName); } @Override - public float GetRecommendedScale() + public float GetRecommendedScale() { return 50.0f; } @Override @SideOnly(Side.CLIENT) - public ModelBase GetModel() + public ModelBase GetModel() { return null; } diff --git a/src/main/java/com/flansmod/common/teams/Team.java b/src/main/java/com/flansmod/common/teams/Team.java index 771d62b1..bfc0cd24 100644 --- a/src/main/java/com/flansmod/common/teams/Team.java +++ b/src/main/java/com/flansmod/common/teams/Team.java @@ -21,10 +21,10 @@ public class Team extends InfoType { - public static List teams = new ArrayList(); - public List members = new ArrayList(); + public static List teams = new ArrayList<>(); + public List members = new ArrayList<>(); //public List bases = new ArrayList(); - public List classes = new ArrayList(); + public List classes = new ArrayList<>(); public static Team spectators; @@ -67,70 +67,55 @@ protected void read(ConfigMap config, TypeFile file) String[] split = ConfigUtils.getSplitFromKey(config, "TeamColour"); teamColour = (Integer.parseInt(split[1]) << 16) + ((Integer.parseInt(split[2])) << 8) + ((Integer.parseInt(split[3]))); } - if (config.containsKey("TextColour")) { - getColourCode(config, config.get("TextColour")); - } - if(config.containsKey("Hat") || config.containsKey("Helmet")) { - String key = "Hat"; - if (config.containsKey("Helmet")) - key = "Helmet"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + textColour = getColourCode(ConfigUtils.configString(config, "TextColour", "Black")); + + String hatShortName = ConfigUtils.configString(config, new String[] { "Hat", "Helmet" }, null); + if(hatShortName != null && !hatShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(hatShortName)) hat = new ItemStack(item); } } - if(config.containsKey("Chest") || config.containsKey("Top")) { - String key = "Chest"; - if (config.containsKey("Top")) - key = "Top"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + String chestShortName = ConfigUtils.configString(config, new String[] { "Chest", "Top" }, null); + if(chestShortName != null && !chestShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(chestShortName)) chest = new ItemStack(item); } } - if(config.containsKey("Legs") || config.containsKey("Bottom")) { - String key = "Legs"; - if (config.containsKey("Bottom")) - key = "Bottom"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + String legsShortName = ConfigUtils.configString(config, new String[] { "Legs", "Bottom" }, null); + if(legsShortName != null && !legsShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(legsShortName)) legs = new ItemStack(item); } } - if(config.containsKey("Shoes") || config.containsKey("Boots")) { - String key = "Shoes"; - if (config.containsKey("Boots")) - key = "Boots"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + String shoesShortName = ConfigUtils.configString(config, new String[] { "Shoes", "Boots" }, null); + if(shoesShortName != null && !shoesShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(shoesShortName)) shoes = new ItemStack(item); } } - if(config.containsKey("AddDefaultClass") || config.containsKey("AddClass")) { - String key = "AddDefaultClass"; - if (config.containsKey("AddClass")) - key = "AddClass"; - classes.add(PlayerClass.getClass(config.get(key))); - } - if(config.containsKey("allowedForRoundsGenerator")){ - this.allowedForRoundsGenerator = Boolean.parseBoolean(config.get("allowedForRoundsGenerator")); + + String defaultClass = ConfigUtils.configString(config, new String [] { "AddDefaultClass", "AddClass"}, null); + if(defaultClass != null) { + classes.add(PlayerClass.getClass(defaultClass)); } + + allowedForRoundsGenerator = ConfigUtils.configBool(config, "AllowedForRoundsGenerator", allowedForRoundsGenerator); } catch (Exception e) { FlansMod.log("Reading team file failed."); @@ -148,12 +133,9 @@ public static Team getTeam(String s) return null; } - private static char getColourCode(ConfigMap config, String colour) { + private static char getColourCode(String colour) { char textCode; - switch(config.get("TextColour")) { - case "Black": - textCode = '0'; - break; + switch(colour) { case "Blue": textCode = '1'; break; @@ -196,7 +178,7 @@ private static char getColourCode(ConfigMap config, String colour) { case "White": textCode = 'f'; break; - default: + default: // Black textCode = '0'; break; } @@ -234,7 +216,7 @@ public EntityPlayer addPlayer(EntityPlayer player) { } public String addPlayer(String username) { - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.add(username); for(Team team : teams) { diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index e145c744..b2e62d67 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -3,6 +3,8 @@ import com.flansmod.common.FlansMod; import com.flansmod.common.vector.Vector3f; +import java.util.ArrayList; + public class ConfigUtils { public static String configString(ConfigMap config, String settingName, String defaultValue) { @@ -132,24 +134,36 @@ public static Vector3f configVector(ConfigMap config, String settingName, Vector } public static String[] getSplitFromKey (ConfigMap config, String key) { - String[] dataPieces = config.get(key).split(" "); - String[] split = new String[dataPieces.length + 1]; - split[0] = key; - System.arraycopy(dataPieces, 0, split, 1, dataPieces.length); - return split; + return getSplitFromKey(config, new String[] {key}); } public static String[] getSplitFromKey (ConfigMap config, String[] keys) { for (String key : keys) { if (config.containsKey(key)) { - String[] dataPieces = config.get(key).split(" "); - String[] split = new String[dataPieces.length + 1]; - split[0] = key; - System.arraycopy(dataPieces, 0, split, 1, dataPieces.length); - return split; + return createSplit(key, config.get(key)); } } return null; } + + public static ArrayList getSplitsFromKey (ConfigMap config, String[] keys) { + ArrayList splits = new ArrayList<>(); + + for (String key : keys) { + for (String line : config.getAll(key)) { + splits.add(createSplit(key, line)); + } + } + + return splits; + } + + private static String[] createSplit(String key, String line) { + String[] dataPieces = line.split(" "); + String[] split = new String[dataPieces.length + 1]; + split[0] = key; + System.arraycopy(dataPieces, 0, split, 1, dataPieces.length); + return split; + } } From 83b3b9f334d5749e7eda8cd6a02f635eef5ba0fb Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:56:41 +0000 Subject: [PATCH 11/32] Config rewrite, what day is it? --- .../com/flansmod/common/guns/BulletType.java | 47 +++++++++------ .../common/paintjob/PaintableType.java | 34 ++++++++--- .../flansmod/common/teams/PlayerClass.java | 60 ++++++++----------- 3 files changed, 78 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 3ca68819..c38e8e80 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -150,25 +150,28 @@ protected void read(ConfigMap config, TypeFile file) { } penetratingPower = ConfigUtils.configFloat(config, new String[]{"Penetration", "PenetratingPower"}, penetratingPower); penetrationDecay = ConfigUtils.configFloat(config, "PenetrationDecay", penetrationDecay); + dragInAir = ConfigUtils.configFloat(config, "DragInAir", dragInAir); - dragInAir = dragInAir<0? 0: dragInAir>1? 1: dragInAir; + dragInAir = Math.max(0, Math.min(1, dragInAir)); // Clamp to [0, 1] + dragInWater = ConfigUtils.configFloat(config, "DragInWater", dragInWater); - dragInWater = dragInWater<0? 0: dragInWater>1? 1: dragInWater; + dragInWater = Math.max(0, Math.min(1, dragInWater)); // Clamp to [0, 1] + numBullets = ConfigUtils.configInt(config, "NumBullets", numBullets); bulletSpread = ConfigUtils.configFloat(config, new String[]{"Accuracy", "Spread"}, bulletSpread); livingProximityTrigger = ConfigUtils.configFloat(config, "LivingProximityTrigger", livingProximityTrigger); driveableProximityTrigger = ConfigUtils.configFloat(config, "VehicleProximityTrigger", driveableProximityTrigger); damageToTriggerer = ConfigUtils.configFloat(config, "DamageToTriggerer", damageToTriggerer); - primeDelay = ConfigUtils.configInt(config, new String[]{"PrimeDelay", "TriggerDelay"}, primeDelay); + primeDelay = ConfigUtils.configInt(config, new String[]{ "PrimeDelay", "TriggerDelay" }, primeDelay); explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); explodeParticleType = ConfigUtils.configString(config, "ExplodeParticles", explodeParticleType); smokeTime = ConfigUtils.configInt(config, "SmokeTime", smokeTime); smokeParticleType = ConfigUtils.configString(config, "SmokeParticles", smokeParticleType); - //todo this is prob broken - if (config.containsKey("SmokeEffect")) - smokeEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "SmokeEffect"))); -// else if(split[0].equals("SmokeEffect")) -// smokeEffects.add(getPotionEffect(split)); + + ArrayList lines = ConfigUtils.getSplitsFromKey(config, new String[] { "SmokeEffect" }); + for (String[] split : lines) { + smokeEffects.add(getPotionEffect(split)); + } smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); VLS = ConfigUtils.configBool(config, new String[]{"VLS", "HasDeadZone"}, VLS); @@ -179,21 +182,29 @@ protected void read(ConfigMap config, TypeFile file) { trackPhaseTurn = ConfigUtils.configFloat(config, "GuidedPhaseTurnSpeed", trackPhaseTurn); boostPhaseParticle = ConfigUtils.configString(config, "BoostParticle", boostPhaseParticle); torpedo = ConfigUtils.configBool(config, "Torpedo", torpedo); + if (config.containsKey("Bomb")) weaponType = EnumWeaponType.BOMB; - if (config.containsKey("Shell")) + else if (config.containsKey("Shell")) weaponType = EnumWeaponType.SHELL; - if (config.containsKey("Missile")) + else if (config.containsKey("Missile")) weaponType = EnumWeaponType.MISSILE; - if (config.containsKey("WeaponType")) - weaponType = EnumWeaponType.valueOf(config.get("WeaponType").toUpperCase()); + else if (config.containsKey("WeaponType")) { + String line = ConfigUtils.configString(config, "WeaponType", "Bomb"); + if (line != null) { + weaponType = EnumWeaponType.valueOf(line.toUpperCase()); + } + } + if (config.containsKey("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables").toLowerCase()); + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = ConfigUtils.configBool(config, "LockOnToDriveables", lockOnToVehicles); + lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); + maxLockOnAngle = ConfigUtils.configFloat(config, "MaxLockOnAngle", maxLockOnAngle); lockOnForce = ConfigUtils.configFloat(config, new String[]{"LockOnForce", "TurningForce"}, lockOnForce); maxDegreeOfMissile = ConfigUtils.configInt(config, "MaxDegreeOfLockOnMissile", maxDegreeOfMissile); @@ -206,11 +217,11 @@ protected void read(ConfigMap config, TypeFile file) { shootForSettingPosHeight = ConfigUtils.configInt(config, "ShootForSettingPosHeight", shootForSettingPosHeight); isDoTopAttack = ConfigUtils.configBool(config, "IsDoTopAttack", isDoTopAttack); knockbackModifier = ConfigUtils.configFloat(config, "KnockbackModifier", knockbackModifier); - if (config.containsKey("PotionEffect")) - hitEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "PotionEffect"))); - //todo verify -// else if(split[0].equals("PotionEffect")) -// hitEffects.add(getPotionEffect(split)); + + lines = ConfigUtils.getSplitsFromKey(config, new String[] { "PotionEffect" }); + for (String[] split : lines) { + hitEffects.add(getPotionEffect(split)); + } manualGuidance = ConfigUtils.configBool(config, "ManualGuidance", manualGuidance); laserGuidance = ConfigUtils.configBool(config, "LaserGuidance", laserGuidance); diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index c0c893b3..a1229a8e 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -55,9 +55,10 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); //iconName textureName [dyeName dyeAmount (dyeDamage)] - if (config.containsKey("PaintJob")) { + + ArrayList lines = ConfigUtils.getSplitsFromKey(config, new String[] { "PaintJob"} ); + for (String[] split : lines) { try { - String[] split = ConfigUtils.getSplitFromKey(config, "PaintJob"); int numDyes = (split.length - 2) / 2; ItemStack[] dyeStacks = new ItemStack[numDyes]; for(int i = 0; i < numDyes; i++) @@ -71,24 +72,39 @@ protected void read(ConfigMap config, TypeFile file) } paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], dyeStacks, true)); } catch (Exception e) { - FlansMod.log("Reading paintable file failed : " + shortName); + StringBuilder fullLine = new StringBuilder(); + for (String entry : split) { + fullLine.append(entry); + } + + FlansMod.log("Reading paintable line failed for %s: %s", shortName, fullLine.toString()); if (FlansMod.printStackTrace) { e.printStackTrace(); } } } - //TODO, MULTIPLES? - try { - //Paintjobs - if(config.containsKey("advpaintjob")) { - String[] split = ConfigUtils.getSplitFromKey(config, "advpaintjob"); + lines = ConfigUtils.getSplitsFromKey(config, new String[] { "AdvPaintJob"} ); + for (String[] split : lines) { + try { ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; for(int i = 0; i < (split.length - 4) / 2; i++) dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); + } catch (Exception e) { + StringBuilder fullLine = new StringBuilder(); + for (String entry : split) { + fullLine.append(entry); + } + + FlansMod.log("Reading advanced paintable line failed for %s: %s", shortName, fullLine.toString()); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } - // Other configs.. + } + + try { if (config.containsKey("AddPaintableToTables")) { String[] split = ConfigUtils.getSplitFromKey(config, "AddPaintableToTables"); if (split.length == 2) { diff --git a/src/main/java/com/flansmod/common/teams/PlayerClass.java b/src/main/java/com/flansmod/common/teams/PlayerClass.java index 20bdb7eb..8d9bbf1f 100644 --- a/src/main/java/com/flansmod/common/teams/PlayerClass.java +++ b/src/main/java/com/flansmod/common/teams/PlayerClass.java @@ -51,54 +51,42 @@ protected void read(ConfigMap config, TypeFile file) { lvl = ConfigUtils.configInt(config, "UnlockLevel", lvl); texture = ConfigUtils.configString(config, "SkinOverride", texture); - if(config.containsKey("Hat") || config.containsKey("Helmet")) { - String key = "Hat"; - if (config.containsKey("Helmet")) - key = "Helmet"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + String hatShortName = ConfigUtils.configString(config, new String[] { "Hat", "Helmet" }, null); + if(hatShortName != null && !hatShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(hatShortName)) hat = new ItemStack(item); } } - if (config.containsKey("Chest") || config.containsKey("Top")) { - String key = "Chest"; - if (config.containsKey("Top")) - key = "Top"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + String chestShortName = ConfigUtils.configString(config, new String[] { "Chest", "Top" }, null); + if(chestShortName != null && !chestShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(chestShortName)) chest = new ItemStack(item); } } - if (config.containsKey("Legs") || config.containsKey("Bottom")) { - String key = "Legs"; - if (config.containsKey("Bottom")) - key = "Bottom"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for(Item item : FlansMod.armourItems) + + String legsShortName = ConfigUtils.configString(config, new String[] { "Legs", "Bottom" }, null); + if(legsShortName != null && !legsShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(legsShortName)) legs = new ItemStack(item); } } - if (config.containsKey("Shoes") || config.containsKey("Boots")) { - String key = "Shoes"; - if (config.containsKey("Boots")) - key = "Boots"; - if(config.get(key).equalsIgnoreCase("None")) - return; - for (Item item : FlansMod.armourItems) { - ArmourType armour = ((ItemTeamArmour)item).type; - if(armour != null && armour.shortName.equals(config.get(key))) + + String shoesShortName = ConfigUtils.configString(config, new String[] { "Shoes", "Boots" }, null); + if(shoesShortName != null && !shoesShortName.equalsIgnoreCase("None")) { + for(ItemTeamArmour item : FlansMod.armourItems) + { + ArmourType armour = item.type; + if(armour != null && armour.shortName.equals(shoesShortName)) shoes = new ItemStack(item); } } From 6d0d9162976f7be9aae820287668836562c37ff0 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 16 Mar 2023 23:33:18 +0000 Subject: [PATCH 12/32] Config rewrite shenanigans --- .../common/driveables/DriveableType.java | 36 ++++-- .../driveables/mechas/MechaItemType.java | 36 +++--- .../common/driveables/mechas/MechaType.java | 122 +++++++++++------- 3 files changed, 120 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index c1d72a67..0252a75a 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -374,14 +374,18 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - //Old Pre-Read stuff - if (config.containsKey("Passengers")) { - numPassengers = Integer.parseInt(config.get("Passengers")); - seats = new Seat[numPassengers + 1]; - - if (config.containsKey("Passenger")) { - for (String entry : config.getAll("Passenger")) { - String[] split = ("Passenger " + entry).split(" "); + // Order matters here, + numPassengers = ConfigUtils.configInt(config, "Passengers", numPassengers); + seats = new Seat[numPassengers + 1]; + + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Passenger" }); + if (splits.size() != numPassengers) { + FlansMod.log("NumPassengers and Passenger definition mismatch in %s. This needs to be addressed.", file.name); + throw new Exception("Invalid Passenger Definitions"); + // this should be a "disable item" situation + } else { + try { + for (String[] split : splits) { Seat seat = new Seat(split); if (seat.id < seats.length) { seats[seat.id] = seat; @@ -391,12 +395,22 @@ protected void read(ConfigMap config, TypeFile file) { } } } + } catch (Exception e) { + FlansMod.log("Errored while reading Passenger in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); + } + throw new Exception("Invalid Passenger Definitions"); + // this should be a "disable item" situation } } - - if (config.containsKey("NumWheels")) { - wheelPositions = new DriveablePosition[Integer.parseInt(config.get("NumWheels"))]; + int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); + if (numWheels < 2 || numWheels > 4) { + FlansMod.log("Invalid number of wheels registered in " + file.name); + throw new Exception("Invalid Wheel Configuration"); + } else { + wheelPositions = new DriveablePosition[numWheels]; } if (config.containsKey("Driver")) { diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java index edb92d0d..1ca60c4e 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java @@ -76,13 +76,21 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - if(FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelMechaTool.class); + + String modelString = ConfigUtils.configString(config, "Model", ""); + if(FMLCommonHandler.instance().getSide().isClient() && !modelString.isEmpty()) + model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); + texture = ConfigUtils.configString(config, "Texture", texture); - if(config.containsKey("Type")) - type = EnumMechaItemType.getToolType(config.get("Type")); - if(config.containsKey("ToolType")) - function = EnumMechaToolType.getToolType(config.get("ToolType")); + + String typeString = ConfigUtils.configString(config, "Type", "nothing"); + if (!typeString.isEmpty()) + type = EnumMechaItemType.getToolType(typeString); + + String toolTypeString = ConfigUtils.configString(config, "ToolType", "nothing"); + if(!toolTypeString.isEmpty()) + function = EnumMechaToolType.getToolType(toolTypeString); + speed = ConfigUtils.configFloat(config, "Speed", speed); toolHardness = ConfigUtils.configFloat(config, "ToolHardness", toolHardness); reach = ConfigUtils.configFloat(config, "Reach", reach); @@ -115,20 +123,14 @@ protected void read(ConfigMap config, TypeFile file) { speedMultiplier = ConfigUtils.configFloat(config, "SpeedMultiplier", speedMultiplier); stopMechaFallDamage = ConfigUtils.configBool(config, "StopMechaFallDamage", stopMechaFallDamage); wasteCompact = ConfigUtils.configBool(config, "WasteCompact", wasteCompact); - - } catch (Exception ignored) { - + } catch (Exception e) { + FlansMod.log("Errored reading " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } } - public static MechaItemType getTool(String find) { - for(MechaItemType type : types) { - if(type.shortName.equals(find)) - return type; - } - return null; - } - public void reloadModel() { if(modelString != null) model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java index 258e05a0..4830912f 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java @@ -107,33 +107,41 @@ protected void read(ConfigMap config, TypeFile file) { moveSpeed = ConfigUtils.configFloat(config, "MoveSpeed", moveSpeed); squashMobs = ConfigUtils.configBool(config, "SquashMobs", squashMobs); stepHeight = ConfigUtils.configInt(config, "StepHeight", stepHeight); - if(config.containsKey("JumpHeight")) { - jumpHeight = Float.parseFloat(config.get("JumpHeight")); - jumpVelocity = (float) Math.sqrt(Math.abs(9.81F * (jumpHeight + 0.2F) / 200F)); - } + + jumpHeight = ConfigUtils.configFloat(config, "JumpHeight", -99F); + jumpVelocity = (jumpHeight == -99F) ? 1F : (float) Math.sqrt(Math.abs(9.81F * (jumpHeight + 0.2F) / 200F)); + rotateSpeed = ConfigUtils.configFloat(config, "RotateSpeed", rotateSpeed); stompSound = ConfigUtils.configDriveableSound(contentPack, config, "StompSound", stompSound); stompSoundLength = ConfigUtils.configInt(config, "StompSoundLength", stompSoundLength); stompRangeLower = ConfigUtils.configFloat(config, "StompRangeLower", stompRangeLower); stompRangeUpper = ConfigUtils.configFloat(config, "StompRangeUpper", stompRangeUpper); - if(config.containsKey("LeftArmOrigin")) { - String[] split = ConfigUtils.getSplitFromKey(config, "LeftArmOrigin"); - leftArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); + try { + String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "LeftArmOrigin" }); + if(split != null) { + leftArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); + } + + split = ConfigUtils.getSplitFromKey(config, new String[] { "RightArmOrigin" }); + if(split != null) { + rightArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); + } + } catch (Exception e) { + FlansMod.log("Adding mecha arm origins failed in " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } - if(config.containsKey("RightArmOrigin")) { - String[] split = ConfigUtils.getSplitFromKey(config, "RightArmOrigin"); - rightArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - } armLength = ConfigUtils.configFloat(config, "ArmLength", armLength) / 16F; legLength = ConfigUtils.configFloat(config, "LegLength", legLength) / 16F; heldItemScale = ConfigUtils.configFloat(config, "HeldItemScale", heldItemScale); height = ConfigUtils.configFloat(config, "Height", height); width = ConfigUtils.configFloat(config, "Width", width); - if(config.containsKey("ChassisHeight")) - chassisHeight = (Integer.parseInt(config.get("ChassisHeight")))/16F; + + chassisHeight = (float)Math.floor(ConfigUtils.configFloat(config, "ChassisHeight", chassisHeight*16F))/16F; fallDamageMultiplier = ConfigUtils.configFloat(config, "FallDamageMultiplier", fallDamageMultiplier); blockDamageFromFalling = ConfigUtils.configFloat(config, "BlockDamageFromFalling", blockDamageFromFalling); @@ -142,43 +150,73 @@ protected void read(ConfigMap config, TypeFile file) { damageBlocksFromFalling = ConfigUtils.configBool(config, "DamageBlocksFromFalling", damageBlocksFromFalling); legSwingLimit = ConfigUtils.configFloat(config, "LegSwingLimit", legSwingLimit); - if(config.containsKey("LimitHeadTurn")) { - String[] split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); - limitHeadTurn = Boolean.parseBoolean(split[1].toLowerCase()); - limitHeadTurnValue = Float.parseFloat(split[2]); + try { + String[] split = ConfigUtils.getSplitFromKey(config, "LimitHeadTurn"); + if(split != null) { + limitHeadTurn = Boolean.parseBoolean(split[1].toLowerCase()); + limitHeadTurnValue = Float.parseFloat(split[2]); + } + } catch (Exception e) { + FlansMod.log("Setting LimitHeadTurn failed in " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } + legSwingTime = ConfigUtils.configFloat(config, "LegSwingTime", legSwingTime); upperArmLimit = ConfigUtils.configFloat(config, "UpperArmLimit", upperArmLimit); lowerArmLimit = ConfigUtils.configFloat(config, "LowerArmLimit", lowerArmLimit); - if(config.containsKey("LeftHandModifier")) { + + try { String[] split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); - leftHandModifierX = Float.parseFloat(split[1])/16F; - leftHandModifierY = Float.parseFloat(split[2])/16F; - leftHandModifierZ = Float.parseFloat(split[3])/16F; - } - if(config.containsKey("RightHandModifier")) { - String[] split = ConfigUtils.getSplitFromKey(config, "RightHandModifier"); - rightHandModifierX = Float.parseFloat(split[1])/16F; - rightHandModifierY = Float.parseFloat(split[2])/16F; - rightHandModifierZ = Float.parseFloat(split[3])/16F; + if(split != null) { + + leftHandModifierX = Float.parseFloat(split[1])/16F; + leftHandModifierY = Float.parseFloat(split[2])/16F; + leftHandModifierZ = Float.parseFloat(split[3])/16F; + } + + split = ConfigUtils.getSplitFromKey(config, "RightHandModifier"); + if(split != null) { + rightHandModifierX = Float.parseFloat(split[1])/16F; + rightHandModifierY = Float.parseFloat(split[2])/16F; + rightHandModifierZ = Float.parseFloat(split[3])/16F; + } + } catch (Exception e) { + FlansMod.log("Setting HandModifiers failed in " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } - if(config.containsKey("LegNode")){ - String[] split = ConfigUtils.getSplitFromKey(config, "LegNode"); - LegNode node = new LegNode(); - node.rotation = Integer.parseInt(split[1]); - node.lowerBound = Float.parseFloat(split[2]); - node.upperBound = Float.parseFloat(split[3]); - node.speed = Integer.parseInt(split[4]); - node.legPart = Integer.parseInt(split[5]); - legNodes.add(node); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LegNode"} ); + for (String [] split : splits) { + LegNode node = new LegNode(); + node.rotation = Integer.parseInt(split[1]); + node.lowerBound = Float.parseFloat(split[2]); + node.upperBound = Float.parseFloat(split[3]); + node.speed = Integer.parseInt(split[4]); + node.legPart = Integer.parseInt(split[5]); + legNodes.add(node); + } + + } catch (Exception e) { + FlansMod.log("Setting HandModifiers failed in " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } + legAnimSpeed = ConfigUtils.configFloat(config, "LegAnimSpeed", legAnimSpeed); restrictInventoryInput = ConfigUtils.configBool(config, "RestrictInventoryInput", restrictInventoryInput); allowMechaToolsInRestrictedInv = ConfigUtils.configBool(config, "AllowMechaToolsInRestrictedInv", allowMechaToolsInRestrictedInv); - } catch (Exception ignored) { - + } catch (Exception e) { + FlansMod.log("Failed while reading MechaType in " + file.name); + if (FlansMod.printStackTrace) { + e.printStackTrace(); + } } } @@ -187,14 +225,6 @@ public void reloadModel() { model = FlansMod.proxy.loadModel(modelString, shortName, ModelMecha.class); } - - private DriveablePosition getShootPoint(String[] split) { - //No need to look for a specific gun. - if(split.length == 5) { - return new DriveablePosition(split); - } - return new DriveablePosition(new Vector3f(), EnumDriveablePart.core); - } public static MechaType getMecha(String find) { for(MechaType type : types) { From ccf8b7772a605c8c8bbfc403c767c9ec0d020cf3 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:16:25 +0000 Subject: [PATCH 13/32] More config rewrite, on DriveableType --- .../common/driveables/DriveableType.java | 125 +++++++++--------- .../java/com/flansmod/utils/ConfigUtils.java | 6 +- 2 files changed, 68 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 0252a75a..4d64b4c2 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -378,13 +378,15 @@ protected void read(ConfigMap config, TypeFile file) { numPassengers = ConfigUtils.configInt(config, "Passengers", numPassengers); seats = new Seat[numPassengers + 1]; - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Passenger" }); - if (splits.size() != numPassengers) { - FlansMod.log("NumPassengers and Passenger definition mismatch in %s. This needs to be addressed.", file.name); - throw new Exception("Invalid Passenger Definitions"); - // this should be a "disable item" situation - } else { - try { + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"Passenger"}); + if (splits.size() != numPassengers) { + FlansMod.log("NumPassengers and Passenger definition mismatch in %s. This needs to be addressed.", file.name); + throw new Exception("Invalid Passenger Definitions"); + // this should be a "disable item" situation + } else { + for (String[] split : splits) { Seat seat = new Seat(split); if (seat.id < seats.length) { @@ -395,14 +397,14 @@ protected void read(ConfigMap config, TypeFile file) { } } } - } catch (Exception e) { - FlansMod.log("Errored while reading Passenger in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); - } - throw new Exception("Invalid Passenger Definitions"); - // this should be a "disable item" situation } + } catch(Exception e){ + FlansMod.log("Errored while reading Passenger in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); + } + throw new Exception("Invalid Passenger Definitions"); + // this should be a "disable item" situation } int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); @@ -413,30 +415,36 @@ protected void read(ConfigMap config, TypeFile file) { wheelPositions = new DriveablePosition[numWheels]; } - if (config.containsKey("Driver")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Driver"); - if (split.length > 4) - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), - Float.parseFloat(split[6]), Float.parseFloat(split[7])); - else - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3])); - } - if (config.containsKey("Pilot")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Pilot"); - if (split.length > 4) - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), - Float.parseFloat(split[6]), Float.parseFloat(split[7])); - else - seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), - Integer.parseInt(split[3])); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Driver", "Pilot" }); + if (splits.size() == 0) { + FlansMod.log("No Driver or Pilot configured in " + file.name); + throw new Exception("No Driver/Pilot Configured!"); + } else if (splits.size() > 1) { + FlansMod.log("Multiple Drivers or Pilots configured in " + file.name); + } else { + String[] split = splits.get(0); + + if (split.length > 4) + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]), + Float.parseFloat(split[6]), Float.parseFloat(split[7])); + else + seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), + Integer.parseInt(split[3])); + } + } catch (Exception e) { + FlansMod.log("Errored while reading Driver/Pilot in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); + } + throw new Exception("Invalid Driver/Pilot Definitions"); + // this should be a "disable item" situation } + if (FMLCommonHandler.instance().getSide().isClient()) + model = FlansMod.proxy.loadModel(ConfigUtils.configString(config, "Model", null), shortName, ModelDriveable.class); - if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelDriveable.class); vehicleGunModelScale = ConfigUtils.configFloat(config, "VehicleGunModelScale", vehicleGunModelScale); reloadSoundTick = ConfigUtils.configInt(config, "VehicleGunReloadTick", reloadSoundTick); texture = ConfigUtils.configString(config, "Texture", texture); @@ -462,51 +470,43 @@ protected void read(ConfigMap config, TypeFile file) { maxDepth = ConfigUtils.configInt(config, "MaxDepth", maxDepth); drag = ConfigUtils.configFloat(config, "Drag", drag); - if (config.containsKey("TurretOrigin")) { - String[] split = ConfigUtils.getSplitFromKey(config, "TurretOrigin"); - turretOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - } - if (config.containsKey("TurretOriginOffset")) { - String[] split = ConfigUtils.getSplitFromKey(config, "TurretOriginOffset"); - turretOriginOffset = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); - } - if (config.containsKey("CollisionPoint")) { - String[] split = ConfigUtils.getSplitFromKey(config, "CollisionPoint"); - collisionPoints.add(new DriveablePosition(split)); - } - if (config.containsKey("AddCollisionPoint")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionPoint"); - collisionPoints.add(new DriveablePosition(split)); + turretOrigin = ConfigUtils.configVector(config, "TurretOrigin", turretOrigin, 1F/16F); + turretOriginOffset = ConfigUtils.configVector(config, "TurretOrigin", turretOriginOffset, 1F/16F); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "CollisionPoint", "AddCollisionPoint" }); + for (String[] split : splits) { + collisionPoints.add(new DriveablePosition(split)); + } + } catch (Exception e) { + FlansMod.log("Errored while reading Collision Points in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); + } } + collisionDamageEnable = ConfigUtils.configBool(config, "CollisionDamageEnable", collisionDamageEnable); collisionDamageThrottle = ConfigUtils.configFloat(config, "CollisionDamageThrottle", collisionDamageThrottle); collisionDamageTimes = ConfigUtils.configFloat(config, "CollisionDamageTimes", collisionDamageTimes); canLockOnAngle = ConfigUtils.configInt(config, "CanLockAngle", canLockOnAngle); lockOnSoundTime = ConfigUtils.configInt(config, "LockOnSoundTime", lockOnSoundTime); - if (config.containsKey("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables").toLowerCase()); + + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = ConfigUtils.configBool(config, "LockOnToDriveables", false); lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); lockOnToPlayers = ConfigUtils.configBool(config, "LockOnToPlayers", lockOnToPlayers); lockOnToLivings = ConfigUtils.configBool(config, "LockOnToLivings", lockOnToLivings); + lockedOnSoundRange = ConfigUtils.configInt(config, "LockedOnSoundRange", lockedOnSoundRange); canRoll = ConfigUtils.configBool(config, "CanRoll", canRoll); //Flares hasFlare = ConfigUtils.configBool(config, "HasFlare", hasFlare); - if (config.containsKey("FlareDelay")) { - flareDelay = Integer.parseInt(config.get("FlareDelay")); - if (flareDelay <= 0) - flareDelay = 1; - } - if (config.containsKey("TimeFlareUsing")) { - timeFlareUsing = Integer.parseInt(config.get("TimeFlareUsing")); - if (timeFlareUsing <= 0) - timeFlareUsing = 1; - } + flareDelay = Math.min(1, ConfigUtils.configInt(config, "FlareDelay", flareDelay)); + timeFlareUsing = Math.min(1, ConfigUtils.configInt(config, "TimeFlareUsing", timeFlareUsing)); //Boats if (config.containsKey("Boat")) { @@ -515,6 +515,7 @@ protected void read(ConfigMap config, TypeFile file) { floatOnWater = true; wheelStepHeight = 0F; } + placeableOnLand = ConfigUtils.configBool(config, "PlaceableOnLand", placeableOnLand); placeableOnWater = ConfigUtils.configBool(config, "PlaceableOnWater", placeableOnWater); worksUnderWater = ConfigUtils.configBool(config, "WorksUnderwater", worksUnderWater); diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index b2e62d67..e52a4a68 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -125,9 +125,13 @@ public static String configDriveableSound(String contentPack, ConfigMap config, } public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue) { + return configVector(config, settingName, defaultValue, 1F); + } + + public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue, float scale) { String val = config.get(settingName); if(val != null) { - return new Vector3f(val); + return (Vector3f) new Vector3f(val).scale(scale); } return defaultValue; From 2c4a6700485dd666b61cf5bf7e61694e65189762 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 23 Mar 2023 23:45:53 +0000 Subject: [PATCH 14/32] More config rewrite driveables shenanigans --- .../common/driveables/DriveableType.java | 183 +++++++++++------- 1 file changed, 116 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 4d64b4c2..ab225bde 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -25,6 +25,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import org.classpath.icedtea.Config; public class DriveableType extends PaintableType { /** The plane model */ @@ -526,28 +527,14 @@ protected void read(ConfigMap config, TypeFile file) { canMountEntity = ConfigUtils.configBool(config, "CanMountEntity", canMountEntity); //Wheels - if (config.containsKey("Wheel")) { - for (String wheelPos : config.getAll("Wheel")) { - String[] split = ("Wheel " + wheelPos).split(" "); - int wheelIndex = Integer.parseInt(split[1]); - float x = Float.parseFloat(split[2]) / 16F; - float y = Float.parseFloat(split[3]) / 16F; - float z = Float.parseFloat(split[4]) / 16F; - - EnumDriveablePart part = EnumDriveablePart.coreWheel; - if (split.length > 5) { - part = EnumDriveablePart.getPart(split[5]); - } + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); - DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); - wheelPositions[wheelIndex] = wheelPosition; + if (splits.size() != wheelPositions.length) { + throw new Exception("Invalid number of wheels specified!"); } - } - //Wheels - if (config.containsKey("WheelPosition")) { - for (String wheelPos : config.getAll("WheelPosition")) { - String[] split = ("WheelPosition " + wheelPos).split(" "); + for (String[] split : splits) { int wheelIndex = Integer.parseInt(split[1]); float x = Float.parseFloat(split[2]) / 16F; float y = Float.parseFloat(split[3]) / 16F; @@ -561,6 +548,13 @@ protected void read(ConfigMap config, TypeFile file) { DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); wheelPositions[wheelIndex] = wheelPosition; } + } catch (Exception ex) { + FlansMod.log("Errored while reading Wheels in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + throw new Exception("Invalid Driver/Pilot Definitions"); + // this should be a "disable item" situation } wheelStepHeight = ConfigUtils.configFloat(config, new String[]{"WheelRadius", "WheelStepHeight"}, wheelStepHeight); @@ -571,59 +565,92 @@ protected void read(ConfigMap config, TypeFile file) { harvestBlocks = ConfigUtils.configBool(config, "Harvester", harvestBlocks); collectHarvest = ConfigUtils.configBool(config, "CollectHarvest", collectHarvest); dropHarvest = ConfigUtils.configBool(config, "DropHarvest", dropHarvest); - if (config.containsKey("HarvestBox")) { + + try { String[] split = ConfigUtils.getSplitFromKey(config, "HarvestBox"); - harvestBoxSize = new Vector3f(split[1]); - harvestBoxPos = new Vector3f(split[2]); + if (split != null) { + harvestBoxSize = new Vector3f(split[1]); + harvestBoxPos = new Vector3f(split[2]); + } + + } catch (Exception ex) { + FlansMod.log("Errored while reading HarvestBox in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("HarvestMaterial")) { - materialsHarvested.add(getMaterial(config.get("HarvestMaterial"))); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestMaterial" }); + for (String[] split : splits) { // This currently doesn't work, see todo + Material m = getMaterial(split[1]); + if (m != null) { + materialsHarvested.add(m); + } else { + FlansMod.log("Material " + split[1] + " couldn't be found for HarvestMaterial in " + file.name); + } + } + } catch (Exception ex) { + FlansMod.log("Errored while reading HarvestMaterial in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("HarvestToolType")) { - switch (config.get("HarvestToolType")) { - case "Axe": - materialsHarvested.add(Material.wood); - materialsHarvested.add(Material.plants); - materialsHarvested.add(Material.vine); - break; - case "Pickaxe": - case "Drill": - materialsHarvested.add(Material.iron); - materialsHarvested.add(Material.anvil); - materialsHarvested.add(Material.rock); - break; - case "Spade": - case "Shovel": - case "Excavator": - materialsHarvested.add(Material.ground); - materialsHarvested.add(Material.grass); - materialsHarvested.add(Material.sand); - materialsHarvested.add(Material.snow); - materialsHarvested.add(Material.clay); - break; - case "Hoe": - case "Combine": - materialsHarvested.add(Material.plants); - materialsHarvested.add(Material.leaves); - materialsHarvested.add(Material.vine); - materialsHarvested.add(Material.cactus); - materialsHarvested.add(Material.gourd); - break; - case "Tank": - materialsHarvested.add(Material.leaves); - materialsHarvested.add(Material.cactus); - materialsHarvested.add(Material.wood); - materialsHarvested.add(Material.plants); - break; + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestToolType" }); + + for (String[] split : splits) { + switch (split[1]) { + case "Axe": + materialsHarvested.add(Material.wood); + materialsHarvested.add(Material.plants); + materialsHarvested.add(Material.vine); + break; + case "Pickaxe": + case "Drill": + materialsHarvested.add(Material.iron); + materialsHarvested.add(Material.anvil); + materialsHarvested.add(Material.rock); + break; + case "Spade": + case "Shovel": + case "Excavator": + materialsHarvested.add(Material.ground); + materialsHarvested.add(Material.grass); + materialsHarvested.add(Material.sand); + materialsHarvested.add(Material.snow); + materialsHarvested.add(Material.clay); + break; + case "Hoe": + case "Combine": + materialsHarvested.add(Material.plants); + materialsHarvested.add(Material.leaves); + materialsHarvested.add(Material.vine); + materialsHarvested.add(Material.cactus); + materialsHarvested.add(Material.gourd); + break; + case "Tank": + materialsHarvested.add(Material.leaves); + materialsHarvested.add(Material.cactus); + materialsHarvested.add(Material.wood); + materialsHarvested.add(Material.plants); + break; + } + } + } catch (Exception ex) { + FlansMod.log("Errored while adding HarvestToolType in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } } + //Cargo / Payload numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); - numCargoSlots = ConfigUtils.configInt(config, new String[]{"BombSlots", "MineSlots"}, numCargoSlots); - numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); - numCargoSlots = ConfigUtils.configInt(config, new String[]{"MissileSlots", "ShellSlots"}, numCargoSlots); - numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); + numBombSlots = ConfigUtils.configInt(config, new String[]{ "BombSlots", "MineSlots" }, numBombSlots); + numMissileSlots = ConfigUtils.configInt(config, new String[]{ "MissileSlots", "ShellSlots" }, numMissileSlots); + fuelTankSize = ConfigUtils.configInt(config, "FuelTankSize", fuelTankSize); engineStartTime = ConfigUtils.configInt(config, "EngineStartTime", engineStartTime); filterAmmunition = ConfigUtils.configBool(config, "FilterAmmunitionInput", filterAmmunition); @@ -631,9 +658,31 @@ protected void read(ConfigMap config, TypeFile file) { bulletDetectionRadius = ConfigUtils.configFloat(config, "BulletDetection", bulletDetectionRadius); //Ammo limiters - if (config.containsKey("AddAmmo")) - ammo.add(BulletType.getBullet(config.get("AddAmmo"))); - acceptAllAmmo = ConfigUtils.configBool(config, new String[]{"AllowAllAmmo", "AcceptAllAmmo"}, acceptAllAmmo); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddAmmo" }); + + for (String[] split : splits) { + if (split.length == 2) { + BulletType bullet = BulletType.getBullet(split[1]); + if (bullet != null) { + ammo.add(bullet); + } else { + FlansMod.log("Could not find bullet " + split[1] + " for " + file.name); + } + } else { + FlansMod.log("Incorrect ammo line given in " + file.name); + } + + } + } catch (Exception ex) { + FlansMod.log("Adding ammo failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + + acceptAllAmmo = ConfigUtils.configBool(config, new String[]{ "AllowAllAmmo", "AcceptAllAmmo" }, acceptAllAmmo); //Weaponry if (config.containsKey("Primary")) From b32be935d2cefbc320bff026f7862d3e882bd530 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 28 Mar 2023 23:31:17 +0100 Subject: [PATCH 15/32] More config rewrite... --- .../common/driveables/DriveableType.java | 296 +++++++++++------- 1 file changed, 189 insertions(+), 107 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index ab225bde..798ec5bc 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -689,149 +689,231 @@ protected void read(ConfigMap config, TypeFile file) { primary = EnumWeaponType.valueOf(config.get("Primary").toUpperCase()); if (config.containsKey("Secondary")) primary = EnumWeaponType.valueOf(config.get("Secondary").toUpperCase()); - shootDelayPrimary = ConfigUtils.configFloat(config, "ShootDelayPrimary", shootDelayPrimary); - shootDelaySecondary = ConfigUtils.configFloat(config, "ShootDelaySecondary", shootDelaySecondary); + damageMultiplierPrimary = ConfigUtils.configFloat(config, "DamageMultiplierPrimary", damageMultiplierPrimary); damageMultiplierSecondary = ConfigUtils.configFloat(config, "DamageMultiplierSecondary", damageMultiplierSecondary); - if (config.containsKey("RoundsPerMinPrimary")) - shootDelayPrimary = Float.parseFloat(config.get("RoundsPerMinPrimary")) < 1200 ? 1200F / Float.parseFloat(config.get("RoundsPerMinPrimary")) : 1; - if (config.containsKey("RoundsPerMinSecondary")) - shootDelaySecondary = Float.parseFloat(config.get("RoundsPerMinSecondary")) < 1200 ? 1200F / Float.parseFloat(config.get("RoundsPerMinSecondary")) : 1; + + shootDelayPrimary = ConfigUtils.configFloat(config, new String[] { "ShootDelayPrimary", "ShellDelay" }, shootDelayPrimary); + shootDelaySecondary = ConfigUtils.configFloat(config, new String[] { "ShootDelaySecondary", "ShootDelay" } , shootDelaySecondary); + + + try { + shootDelayPrimary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinPrimary", shootDelayPrimary*1200F), 1); + shootDelaySecondary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinSecondary", shootDelaySecondary*1200F), 1); + } catch (Exception ex) { + FlansMod.log("Invalid RoundsPerMin set in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + + placeTimePrimary = ConfigUtils.configInt(config, "PlaceTimePrimary", placeTimePrimary); placeTimeSecondary = ConfigUtils.configInt(config, "PlaceTimeSecondary", placeTimeSecondary); reloadTimePrimary = ConfigUtils.configInt(config, "ReloadTimePrimary", reloadTimePrimary); reloadTimeSecondary = ConfigUtils.configInt(config, "ReloadTimeSecondary", reloadTimeSecondary); alternatePrimary = ConfigUtils.configBool(config, "AlternatePrimary", alternatePrimary); alternateSecondary = ConfigUtils.configBool(config, "AlternateSecondary", alternateSecondary); - if (config.containsKey("ModePrimary")) - modePrimary = EnumFireMode.valueOf(config.get("ModePrimary").toUpperCase()); - if (config.containsKey("ModeSecondary")) - modeSecondary = EnumFireMode.valueOf(config.get("ModeSecondary").toUpperCase()); + + modePrimary = EnumFireMode.valueOf(ConfigUtils.configString(config, "ModePrimary", EnumFireMode.FULLAUTO.name())); + modeSecondary = EnumFireMode.valueOf(ConfigUtils.configString(config, "ModeSecondary", EnumFireMode.FULLAUTO.name())); + bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); + bulletSpread = ConfigUtils.configFloat(config, "BulletSpread", bulletSpread); rangingGun = ConfigUtils.configBool(config, "RangingGun", rangingGun); gunLength = ConfigUtils.configFloat(config, "GunLength", gunLength); recoilDist = ConfigUtils.configFloat(config, "RecoilDistance", recoilDist); recoilTime = ConfigUtils.configFloat(config, "RecoilTime", recoilTime); - if (config.containsKey("ShootPointPrimary")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootPointPrimary"); - DriveablePosition rootPos; - Vector3f offPos; - String[] gun; - if (split.length == 9) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); - } else if (split.length == 8) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; - offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); - } else { - gun = split; - offPos = new Vector3f(0, 0, 0); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootPointPrimary" }); + + for (String[] split : splits) { + // TODO: Refactor this + + DriveablePosition rootPos; + Vector3f offPos; + String[] gun; + if (split.length == 9) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } else if (split.length == 8) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; + offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); + } else { + gun = split; + offPos = new Vector3f(0, 0, 0); + } + rootPos = getShootPoint(gun); + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsPrimary.add(sPoint); + if (rootPos instanceof PilotGun) + pilotGuns.add((PilotGun) sPoint.rootPos); + } + + } catch (Exception ex) { + FlansMod.log("Invalid ShootPointPrimary config in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - rootPos = getShootPoint(gun); - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsPrimary.add(sPoint); - if (rootPos instanceof PilotGun) - pilotGuns.add((PilotGun) sPoint.rootPos); } - if (config.containsKey("ShootPointSecondary")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootPointSecondary"); - DriveablePosition rootPos; - Vector3f offPos; - String[] gun; - if (split.length == 9) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); - } else if (split.length == 8) { - gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; - offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); - } else { - gun = split; - offPos = new Vector3f(0, 0, 0); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"ShootPointSecondary"}); + + for (String[] split : splits) { + // TODO: Refactor this + + DriveablePosition rootPos; + Vector3f offPos; + String[] gun; + if (split.length == 9) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } else if (split.length == 8) { + gun = new String[]{split[0], split[1], split[2], split[3], split[4]}; + offPos = new Vector3f(Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F); + } else { + gun = split; + offPos = new Vector3f(0, 0, 0); + } + rootPos = getShootPoint(gun); + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsSecondary.add(sPoint); + if (rootPos instanceof PilotGun) + pilotGuns.add((PilotGun) sPoint.rootPos); + } + } catch (Exception ex) { + FlansMod.log("Invalid ShootPointSecondary config in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - rootPos = getShootPoint(gun); - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsSecondary.add(sPoint); - if (rootPos instanceof PilotGun) - pilotGuns.add((PilotGun) sPoint.rootPos); } + + enableReloadTime = ConfigUtils.configBool(config, "EnableReloadTime", enableReloadTime); - if (config.containsKey("ShootParticlesPrimary")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootParticlesPrimary"); - shootParticlesPrimary.add(new ShootParticle( - split[1], - Float.parseFloat(split[2]), - Float.parseFloat(split[3]), - Float.parseFloat(split[4]))); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesPrimary" }); + + for (String[] split : splits) { + if (split.length == 5) { //TODO validate the particle exists + shootParticlesPrimary.add( + new ShootParticle(split[1], Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])) + ); + } else { + FlansMod.log("ShootParticlesPrimary config is of incorrect format in " + file.name); + } + } + } catch (Exception ex) { + FlansMod.log("Invalid ShootParticlesPrimary config in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("ShootParticlesSecondary")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootParticlesSecondary"); - shootParticlesSecondary.add(new ShootParticle( - split[1], - Float.parseFloat(split[2]), - Float.parseFloat(split[3]), - Float.parseFloat(split[4]))); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesSecondary" }); + + for (String[] split : splits) { + if (split.length == 5) { //TODO validate the particle exists + shootParticlesSecondary.add( + new ShootParticle(split[1], Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])) + ); + } else { + FlansMod.log("ShootParticlesSecondary config is of incorrect format in " + file.name); + } + } + } catch (Exception ex) { + FlansMod.log("Invalid ShootParticlesSecondary config in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } + setPlayerInvisible = ConfigUtils.configBool(config, "SetPlayerInvisible", setPlayerInvisible); IT1 = ConfigUtils.configBool(config, "IT1", IT1); fixedPrimaryFire = ConfigUtils.configBool(config, "FixedPrimary", fixedPrimaryFire); fixedSecondaryFire = ConfigUtils.configBool(config, "FixedSecondary", fixedSecondaryFire); - if (config.containsKey("PrimaryAngle")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PrimaryAngle"); - primaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - } - if (config.containsKey("SecondaryAngle")) { - String[] split = ConfigUtils.getSplitFromKey(config, "SecondaryAngle"); - secondaryFireAngle = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - } - //Backwards compatibility stuff - if (config.containsKey("AddGun")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddGun"); - DriveablePosition rootPos; - Vector3f offPos; - secondary = EnumWeaponType.GUN; - PilotGun pilotGun; + primaryFireAngle = ConfigUtils.configVector(config, "PrimaryAngle", primaryFireAngle); + secondaryFireAngle = ConfigUtils.configVector(config, "SecondaryAngle", secondaryFireAngle); - if (split.length == 6) { - rootPos = (PilotGun) getShootPoint(split); - offPos = new Vector3f(0, 0, 0); - pilotGun = (PilotGun) getShootPoint(split); - } else { - String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - rootPos = (PilotGun) getShootPoint(gun); - pilotGun = (PilotGun) getShootPoint(gun); - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddGun" }); + + for (String[] split : splits) { + DriveablePosition rootPos; + Vector3f offPos; + secondary = EnumWeaponType.GUN; + PilotGun pilotGun; + + if (split.length == 6) { // TODO: Refactor this.. + rootPos = (PilotGun) getShootPoint(split); + offPos = new Vector3f(0, 0, 0); + pilotGun = (PilotGun) getShootPoint(split); + } else { + String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; + rootPos = (PilotGun) getShootPoint(gun); + pilotGun = (PilotGun) getShootPoint(gun); + offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + } + ShootPoint sPoint = new ShootPoint(rootPos, offPos); + shootPointsSecondary.add(sPoint); + pilotGuns.add(pilotGun); + driveableRecipe.add(new ItemStack(pilotGun.type.item)); + } + } catch (Exception ex) { + FlansMod.log("Adding PilotGun via AddGun failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsSecondary.add(sPoint); - pilotGuns.add(pilotGun); - driveableRecipe.add(new ItemStack(pilotGun.type.item)); } - if (config.containsKey("BombPosition")) { - String[] split = ConfigUtils.getSplitFromKey(config, "BombPosition"); - primary = EnumWeaponType.BOMB; - if (split.length == 4) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); - else if (split.length == 7) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "BombPosition" }); + + if (splits.size() > 1) { + primary = EnumWeaponType.BOMB; + } + + for (String[] split : splits) { + if (split.length == 4) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); + else if (split.length == 7) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); + } + } catch (Exception ex) { + FlansMod.log("Adding BombPosition failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("BarrelPosition")) { - String[] split = ConfigUtils.getSplitFromKey(config, "BarrelPosition"); - primary = EnumWeaponType.SHELL; - if (split.length == 4) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); - else if (split.length == 7) - shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); - } - shootDelaySecondary = ConfigUtils.configFloat(config, "ShootDelay", shootDelaySecondary); - shootDelayPrimary = ConfigUtils.configFloat(config, "ShellDelay", shootDelayPrimary); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"BarrelPosition"}); + + if (splits.size() > 1) { + primary = EnumWeaponType.SHELL; + } + + for (String[] split : splits) { + if (split.length == 4) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); + else if (split.length == 7) + shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); + } + } catch (Exception ex) { + FlansMod.log("Adding BarrelPosition failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } //Recipe if (config.containsKey("AddRecipeParts")) { From 97cfb7740f38cb818f7418f7fc10ca7fae463348 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:03:27 +0100 Subject: [PATCH 16/32] More config rewrite... --- .../common/driveables/DriveableType.java | 334 ++++++++++++------ 1 file changed, 219 insertions(+), 115 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 798ec5bc..e8b98f40 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -915,124 +915,235 @@ else if (split.length == 7) } } - //Recipe - if (config.containsKey("AddRecipeParts")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddRecipeParts"); - EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); - ArrayList stacks = new ArrayList<>(); - for (int i = 0; i < (split.length - 2) / 2; i++) { - int amount = Integer.parseInt(split[2 * i + 2]); - boolean damaged = split[2 * i + 3].contains("."); - String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; - int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; - - // Only add part if it is NOT null. (Seems obvious?) - ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); - if (potentialPart != null) { - stacks.add(potentialPart); - driveableRecipe.add(potentialPart); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddRecipeParts" }); + + for (String[] split : splits) { + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + ArrayList stacks = new ArrayList<>(); + for (int i = 0; i < (split.length - 2) / 2; i++) { + int amount = Integer.parseInt(split[2 * i + 2]); + boolean damaged = split[2 * i + 3].contains("."); + String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; + int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; + + // Only add part if it is NOT null. (Seems obvious?) + ItemStack potentialPart = getRecipeElement(itemName, amount, damage, shortName); + if (potentialPart != null) { + stacks.add(potentialPart); + driveableRecipe.add(potentialPart); + } + } + ItemStack[] items = new ItemStack[stacks.size()]; + items = stacks.toArray(items); + partwiseRecipe.put(part, items); + } + } catch (Exception e) { + FlansMod.log("Adding RecipeParts failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); + } + } + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddDye" }); + + for (String[] split : splits) { + int amount = Integer.parseInt(split[1]); + int damage = -1; + for (int i = 0; i < ItemDye.field_150923_a.length; i++) { + if (ItemDye.field_150923_a[i].equals(split[2])) + damage = i; + } + if (damage == -1) { + FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); + return; + } + driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); + } + } catch (Exception e) { + FlansMod.log("Adding Dye to recipe failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(e); } - ItemStack[] items = new ItemStack[stacks.size()]; - items = stacks.toArray(items); - partwiseRecipe.put(part, items); } - //Dyes - else if (config.containsKey("AddDye")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddDye"); - int amount = Integer.parseInt(split[1]); - int damage = -1; - for (int i = 0; i < ItemDye.field_150923_a.length; i++) { - if (ItemDye.field_150923_a[i].equals(split[2])) - damage = i; + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "SetupPart" }); + + for (String[] split : splits) { + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + CollisionBox box; + if (split.length > 9) { + box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); + } else { + box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); + } + health.put(part, box); } - if (damage == -1) { - FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); - return; + } catch (Exception ex) { + FlansMod.log("SetupPart failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); } + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PartDeathExplosion" }); - //Health - else if (config.containsKey("SetupPart")) { - String[] split = ConfigUtils.getSplitFromKey(config, "SetupPart"); - EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); - CollisionBox box; - if (split.length > 9) { - box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]), Float.parseFloat(split[9])); - } else { - box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); + for (String[] split : splits) { + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); + + BoxExplosion exp; + if (split.length > 5) { + exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]), Float.parseFloat(split[6]), Float.parseFloat(split[7])); + } else { + exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4])); + } + + partDeathExplosions.put(part, exp); + } + + } catch (Exception ex) { + FlansMod.log("Adding PartDeathExplosion failed in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - health.put(part, box); } - if (config.containsKey("PartDeathExplosion")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PartDeathExplosion"); - EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); - BoxExplosion exp; - if (split.length > 5) { - exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]), Float.parseFloat(split[6]), Float.parseFloat(split[7])); - } else { - exp = new BoxExplosion(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Boolean.parseBoolean(split[4])); + + if (seats.length == 0 || seats[0] != null) { + seats[0].part = EnumDriveablePart.getPart(ConfigUtils.configString(config, "DriverPart", "core")); + + seats[0].gunName = ConfigUtils.configString(config, new String[] { "DriverGun", "PilotGun" }, seats[0].gunName); + seats[0].gunOrigin = ConfigUtils.configVector(config, "DriverGunOrigin", seats[0].gunOrigin, 1F/16); + seats[0].rotatedOffset = ConfigUtils.configVector(config, "RotatedDriverOffset", seats[0].rotatedOffset, 1F/16); + seats[0].aimingSpeed = ConfigUtils.configVector(config, "DriverAimSpeed", seats[0].aimingSpeed); + seats[0].legacyAiming = ConfigUtils.configBool(config, "DriverLegacyAiming", seats[0].legacyAiming); + seats[0].yawBeforePitch = ConfigUtils.configBool(config, "DriverYawBeforePitch", seats[0].yawBeforePitch); + seats[0].latePitch = ConfigUtils.configBool(config, "DriverLatePitch", seats[0].latePitch); + seats[0].traverseSounds = ConfigUtils.configBool(config, "DriverTraverseSounds", seats[0].traverseSounds); + } else { + FlansMod.log("Driver is not defined!"); + + throw new Exception("Driver is not defined! Cannot proceed further."); + } + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RotatedPassengerOffset" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); + } catch (Exception ex) { + FlansMod.log("Could not set RotatedPassengerOffset in " + file.name); + } } - partDeathExplosions.put(part, exp); - //Driver Position + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerAimSpeed" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerAimSpeed in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLegacyAiming" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerLegacyAiming in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawBeforePitch" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerYawBeforePitch in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLatePitch" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerLatePitch in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerTraverseSounds" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerTraverseSounds in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSoundLength" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerYawSoundLength in " + file.name); + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSoundLength" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); + } catch (Exception ex) { + FlansMod.log("Could not set PassengerPitchSoundLength in " + file.name); + } + } + + + } catch (Exception ex) { + FlansMod.log("Setting passenger specific settings failed in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } -// if (split[0].equals("DriverPart")) { -// seats[0].part = EnumDriveablePart.getPart(split[1]); -// } -// else if (split[0].equals("DriverGun") || split[0].equals("PilotGun")) { -// seats[0].gunName = split[2]; -// } -// else if (split[0].equals("DriverGunOrigin")) -// seats[0].gunOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); -// -// else if (split[0].equals("RotatedDriverOffset")) { -// seats[0].rotatedOffset = new Vector3f(Integer.parseInt(split[1]) / 16F, Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F); -// } -// else if (split[0].equals("RotatedPassengerOffset")) { -// seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); -// } -// else if (split[0].equals("DriverAimSpeed")) { -// seats[0].aimingSpeed = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); -// } -// else if (split[0].equals("PassengerAimSpeed")) { -// seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); -// } -// else if (split[0].equals("DriverLegacyAiming")) { -// seats[0].legacyAiming = Boolean.parseBoolean(split[1]); -// } -// else if (split[0].equals("PassengerLegacyAiming")) { -// seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); -// } -// seats[0].yawBeforePitch = ConfigUtils.configInt(config, "DriverYawBeforePitch", seats[0].yawBeforePitch); -// else if (split[0].equals("PassengerYawBeforePitch")) { -// seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); -// } -// seats[0].latePitch = ConfigUtils.configInt(config, "DriverLatePitch", seats[0].latePitch); -// if (split[0].equals("PassengerLatePitch")) { -// seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); -// } -// else if (split[0].equals("DriverTraverseSounds")) { -// seats[0].traverseSounds = Boolean.parseBoolean(split[1]); -// } -// else if (split[0].equals("PassengerTraverseSounds")) { -// seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); -// } - - if (config.containsKey("GunOrigin")) { - String[] split = ConfigUtils.getSplitFromKey(config, "GunOrigin"); - float x = Float.parseFloat(split[2]) / 16F; - float y = Float.parseFloat(split[3]) / 16F; - float z = Float.parseFloat(split[4]) / 16F; - if (seats[Integer.parseInt(split[1])] != null) - seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); + + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "GunOrigin" }); + + for (String[] split : splits) { + try { + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + if (seats[Integer.parseInt(split[1])] != null) + seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); + } catch (Exception ex) { + FlansMod.log("Setting GunOrigin failed in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + } + + + } catch (Exception ex) { + FlansMod.log("Setting GunOrigins failed in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } + //Y offset for badly built models :P yOffset = ConfigUtils.configFloat(config, "YOffset", yOffset); //Third person camera distance @@ -1048,26 +1159,19 @@ else if (config.containsKey("SetupPart")) { backSoundRange = ConfigUtils.configInt(config, "BackSoundRange", backSoundRange); backSoundLength = ConfigUtils.configInt(config, "BackSoundLength", backSoundLength); soundTime = ConfigUtils.configInt(config, "SoundTime", soundTime); + seats[0].yawSoundLength = ConfigUtils.configInt(config, "YawSoundLength", seats[0].yawSoundLength); seats[0].pitchSoundLength = ConfigUtils.configInt(config, "PitchSoundLength", seats[0].pitchSoundLength); - if (config.containsKey("PassengerYawSoundLength")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PassengerYawSoundLength"); - seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); - } - if (config.containsKey("PassengerPitchSoundLength")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PassengerPitchSoundLength"); - seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); - } - startSound = ConfigUtils.configDriveableSound(contentPack, config, "StartSound", startSound); - engineSound = ConfigUtils.configDriveableSound(contentPack, config, "EngineSound", engineSound); - idleSound = ConfigUtils.configDriveableSound(contentPack, config, "IdleSound", idleSound); - exitSound = ConfigUtils.configDriveableSound(contentPack, config, "ExitSound", exitSound); - backSound = ConfigUtils.configDriveableSound(contentPack, config, "BackSound", backSound); - seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); - seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); + startSound = ConfigUtils.configDriveableSound(contentPack, config, "StartSound", startSound); + engineSound = ConfigUtils.configDriveableSound(contentPack, config, "EngineSound", engineSound); + idleSound = ConfigUtils.configDriveableSound(contentPack, config, "IdleSound", idleSound); + exitSound = ConfigUtils.configDriveableSound(contentPack, config, "ExitSound", exitSound); + backSound = ConfigUtils.configDriveableSound(contentPack, config, "BackSound", backSound); + seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); + seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); if (config.containsKey("PassengerYawSound")) { String[] split = ConfigUtils.getSplitFromKey(config, "PassengerYawSound"); From ae7dbdd343d5235dda2d32a1864632ae1ee6f979 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 11 Apr 2023 22:57:06 +0100 Subject: [PATCH 17/32] More config rewrite... Finished DriveableType, but not yet tested. --- .../common/driveables/DriveableType.java | 225 +++++++++--------- .../java/com/flansmod/utils/ConfigUtils.java | 4 + 2 files changed, 115 insertions(+), 114 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index e8b98f40..8b425e26 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -25,7 +25,6 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import org.classpath.icedtea.Config; public class DriveableType extends PaintableType { /** The plane model */ @@ -1105,7 +1104,23 @@ else if (split.length == 7) } } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSound" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawSound = split[2]; + } catch (Exception ex) { + FlansMod.log("Could not set PassengerYawSound in " + file.name); + } + } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSound" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].pitchSound = split[2]; + } catch (Exception ex) { + FlansMod.log("Could not set PassengerPitchSound in " + file.name); + } + } } catch (Exception ex) { FlansMod.log("Setting passenger specific settings failed in " + file.name); @@ -1160,9 +1175,13 @@ else if (split.length == 7) backSoundLength = ConfigUtils.configInt(config, "BackSoundLength", backSoundLength); soundTime = ConfigUtils.configInt(config, "SoundTime", soundTime); + + + // By here we assume that driver is known seats[0].yawSoundLength = ConfigUtils.configInt(config, "YawSoundLength", seats[0].yawSoundLength); seats[0].pitchSoundLength = ConfigUtils.configInt(config, "PitchSoundLength", seats[0].pitchSoundLength); - + seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); + seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); startSound = ConfigUtils.configDriveableSound(contentPack, config, "StartSound", startSound); @@ -1170,54 +1189,14 @@ else if (split.length == 7) idleSound = ConfigUtils.configDriveableSound(contentPack, config, "IdleSound", idleSound); exitSound = ConfigUtils.configDriveableSound(contentPack, config, "ExitSound", exitSound); backSound = ConfigUtils.configDriveableSound(contentPack, config, "BackSound", backSound); - seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); - seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); - if (config.containsKey("PassengerYawSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PassengerYawSound"); - seats[Integer.parseInt(split[1])].yawSound = split[2]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("PassengerPitchSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "PassengerPitchSound"); - seats[Integer.parseInt(split[1])].pitchSound = split[2]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShootMainSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootMainSound"); - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShootSoundPrimary")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootSoundPrimary"); - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShellSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShellSound"); - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("BombSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "BombSound"); - shootSoundPrimary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShootReloadSound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootReloadSound"); - shootReloadSound = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShootSecondarySound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootSecondarySound"); - shootSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } - if (config.containsKey("ShootSecondarySound")) { - String[] split = ConfigUtils.getSplitFromKey(config, "ShootSecondarySound"); - shootSoundSecondary = split[1]; - FlansMod.proxy.loadSound(contentPack, "driveables", split[1]); - } + + + + shootSoundPrimary = ConfigUtils.configDriveableSound(packName, config, new String[] { "ShootMainSound", "BombSound", "ShootSoundPrimary", "ShellSound" }, shootSoundPrimary); + shootReloadSound = ConfigUtils.configDriveableSound(packName, config, "ShootReloadSound", shootReloadSound); + shootSoundSecondary = ConfigUtils.configDriveableSound(packName, config, new String[] { "ShootSecondarySound", "ShootSoundSecondary" }, shootSoundSecondary); + placeSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundPrimary", placeSoundPrimary); placeSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundSecondary", placeSoundSecondary); @@ -1230,86 +1209,104 @@ else if (split.length == 7) fancyCollision = ConfigUtils.configBool(config, "FancyCollision", fancyCollision); - if (config.containsKey("AddCollisionMesh")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionMesh"); - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), new Vector3f(split[9]), new Vector3f(split[10]), "core"); - collisionBox.add(box); - //colbox = box; - } + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMesh", "AddTurretCollisionMesh" }); - if (config.containsKey("AddCollisionMeshRaw")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddCollisionMeshRaw"); - Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); - Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); - Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); - Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); - Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); - Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); - Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); - Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); - Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); - CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "core"); - collisionBox.add(box); - //colbox = box; - } + for (String[] split : splits) { + CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), + new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), + new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), + new Vector3f(split[9]), new Vector3f(split[10]), split[0].contains("Turret") ? "turret" : "core"); + collisionBox.add(box); + } + } catch (Exception ex) { + FlansMod.log("Adding collision mesh failed in " + file.name); - if (config.containsKey("AddTurretCollisionMesh")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddTurretCollisionMesh"); - CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), new Vector3f(split[9]), new Vector3f(split[10]), "turret"); - collisionBox.add(box); - //colbox = box; + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("AddTurretCollisionMeshRaw")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddTurretCollisionMeshRaw"); - Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); - Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); - Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); - Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); - Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); - Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); - Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); - Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); - Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); - Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); - CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, "turret"); - collisionBox.add(box); - //colbox = box; - } + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMeshRaw", "AddTurretCollisionMeshRaw" }); + for (String[] split : splits) { + Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); + Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); + Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); + Vector3f p2 = new Vector3f(Float.parseFloat(split[11]), Float.parseFloat(split[12]), Float.parseFloat(split[13])); + Vector3f p3 = new Vector3f(Float.parseFloat(split[14]), Float.parseFloat(split[15]), Float.parseFloat(split[16])); + Vector3f p4 = new Vector3f(Float.parseFloat(split[17]), Float.parseFloat(split[18]), Float.parseFloat(split[19])); + Vector3f p5 = new Vector3f(Float.parseFloat(split[20]), Float.parseFloat(split[21]), Float.parseFloat(split[22])); + Vector3f p6 = new Vector3f(Float.parseFloat(split[23]), Float.parseFloat(split[24]), Float.parseFloat(split[25])); + Vector3f p7 = new Vector3f(Float.parseFloat(split[26]), Float.parseFloat(split[27]), Float.parseFloat(split[28])); + Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); + CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, split[0].contains("Turret") ? "turret" : "core"); + collisionBox.add(box); + } + } catch (Exception ex) { + FlansMod.log("Adding raw collision mesh failed in " + file.name); - if (config.containsKey("LeftLinkPoint")) { - leftTrackPoints.add(new Vector3f(config.get("LeftLinkPoint"))); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } - if (config.containsKey("RightLinkPoint")) { - rightTrackPoints.add(new Vector3f(config.get("RightLinkPoint"))); + + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LeftLinkPoint" }); + + for (String[] split : splits) { + leftTrackPoints.add(new Vector3f(split[1])); + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RightLinkPoint" }); + + for (String[] split : splits) { + rightTrackPoints.add(new Vector3f(split[1])); + } + } catch (Exception ex) { + FlansMod.log("Adding track link points failed in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } + trackLinkLength = ConfigUtils.configFloat(config, "TrackLinkLength", trackLinkLength); // ICBM Mod Radar onRadar = ConfigUtils.configBool(config, "OnRadar", onRadar); - if (config.containsKey("AddParticle") || config.containsKey("AddEmitter")) { - String[] split = ConfigUtils.getSplitFromKey(config, new String[]{"AddParticle", "AddEmitter"}); - ParticleEmitter emitter = new ParticleEmitter(); - emitter.effectType = split[1]; - emitter.emitRate = Integer.parseInt(split[2]); - emitter.origin = new Vector3f(split[3]); - emitter.extents = new Vector3f(split[4]); - emitter.velocity = new Vector3f(split[5]); - emitter.minThrottle = Float.parseFloat(split[6]); - emitter.maxThrottle = Float.parseFloat(split[7]); - emitter.minHealth = Float.parseFloat(split[8]); - emitter.maxHealth = Float.parseFloat(split[9]); - emitter.part = split[10]; - //Scale from model coords to world coords - emitter.origin.scale(1.0f / 16.0f); - emitter.extents.scale(1.0f / 16.0f); - emitter.velocity.scale(1.0f / 16.0f); - emitters.add(emitter); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddParticle", "AddEmitter" }); + + for (String[] split : splits) { + ParticleEmitter emitter = new ParticleEmitter(); + emitter.effectType = split[1]; + emitter.emitRate = Integer.parseInt(split[2]); + emitter.origin = new Vector3f(split[3]); + emitter.extents = new Vector3f(split[4]); + emitter.velocity = new Vector3f(split[5]); + emitter.minThrottle = Float.parseFloat(split[6]); + emitter.maxThrottle = Float.parseFloat(split[7]); + emitter.minHealth = Float.parseFloat(split[8]); + emitter.maxHealth = Float.parseFloat(split[9]); + emitter.part = split[10]; + //Scale from model coords to world coords + emitter.origin.scale(1.0f / 16.0f); + emitter.extents.scale(1.0f / 16.0f); + emitter.velocity.scale(1.0f / 16.0f); + emitters.add(emitter); + } + } catch (Exception ex) { + FlansMod.log("Adding emitter failed in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } } catch (Exception e) { FlansMod.log("Errored reading " + file.name); diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index e52a4a68..6f7eb631 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -124,6 +124,10 @@ public static String configDriveableSound(String contentPack, ConfigMap config, return configSound(contentPack, config, settingName, defaultValue, "driveables"); } + public static String configDriveableSound(String contentPack, ConfigMap config, String[] settingNames, String defaultValue) { + return configSound(contentPack, config, settingNames, defaultValue, "driveables"); + } + public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue) { return configVector(config, settingName, defaultValue, 1F); } From 00e04222728b992996b935499d177e435d4473cf Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 13 Apr 2023 22:56:05 +0100 Subject: [PATCH 18/32] Finishing up config rewrite.... Next step, testing. --- .../flansmod/common/driveables/PlaneType.java | 73 +++++++++------ .../common/driveables/VehicleType.java | 88 ++++++++++++------- 2 files changed, 100 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index a5b04a1a..c3518e3f 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -114,21 +114,23 @@ public void preRead(TypeFile file) protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - //Plane Mode - if(config.containsKey("Mode")) - mode = EnumPlaneMode.getMode(config.get("Mode")); - //Better flight model? + mode = EnumPlaneMode.getMode(ConfigUtils.configString(config, "Mode", "Plane")); + newFlightControl = ConfigUtils.configBool(config, "NewFlightControl", newFlightControl); + //Yaw modifiers turnLeftModifier = ConfigUtils.configFloat(config, "TurnLeftSpeed", turnLeftModifier); turnRightModifier = ConfigUtils.configFloat(config, "TurnRightSpeed", turnRightModifier); + //Pitch modifiers lookUpModifier = ConfigUtils.configFloat(config, "LookUpSpeed", lookUpModifier); lookDownModifier = ConfigUtils.configFloat(config, "LookDownSpeed", lookDownModifier); + //Roll modifiers rollLeftModifier = ConfigUtils.configFloat(config, "RollLeftSpeed", rollLeftModifier); rollRightModifier = ConfigUtils.configFloat(config, "RollRightSpeed", rollRightModifier); + // Below are only used when NewFlightControl set. //Lift lift = ConfigUtils.configFloat(config, "Lift", lift); //Flight variables @@ -148,26 +150,38 @@ protected void read(ConfigMap config, TypeFile file) { planeShootDelay = ConfigUtils.configInt(config, "ShootDelay", planeShootDelay); planeBombDelay = ConfigUtils.configInt(config, "BombDelay", planeBombDelay); - //Propellers - if(config.containsKey("Propeller")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Propeller"); - Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); - propellers.add(propeller); - driveableRecipe.add(new ItemStack(propeller.itemType.item)); - } - if(config.containsKey("HeliPropeller")) { - String[] split = ConfigUtils.getSplitFromKey(config, "HeliPropeller"); - Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); - heliPropellers.add(propeller); - driveableRecipe.add(new ItemStack(propeller.itemType.item)); - } - if(config.containsKey("HeliTailPropeller")) { - String[] split = ConfigUtils.getSplitFromKey(config, "HeliTailPropeller"); - Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); - heliTailPropellers.add(propeller); - driveableRecipe.add(new ItemStack(propeller.itemType.item)); + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HeliPropeller", "Propeller", "HeliTailPropeller" }); + + for (String[] split : splits) { + try { + Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); + + if (split[0].contains("HeliTailPropeller")) { + heliTailPropellers.add(propeller); + } else if (split[0].contains("HeliPropeller")) { + heliPropellers.add(propeller); + } else { + propellers.add(propeller); + } + + driveableRecipe.add(new ItemStack(propeller.itemType.item)); + } catch (Exception ex) { + FlansMod.log("Failed to add new propeller in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + } + } catch (Exception ex) { + // This is a failable condition + FlansMod.log("Failed to setup propellers in " + file.name); + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } + hasFlare = ConfigUtils.configBool(config, "HasFlare", hasFlare); flareDelay = ConfigUtils.configInt(config, "FlareDelay", flareDelay); flareDelay = flareDelay <= 0 ? 1 : flareDelay; @@ -237,8 +251,13 @@ protected void read(ConfigMap config, TypeFile file) { //In-flight inventory invInflight = ConfigUtils.configBool(config, "InflightInventory", invInflight); } - catch (Exception ignored) + catch (Exception ex) { + FlansMod.log("Error thrown parsing " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } } } @@ -247,10 +266,10 @@ public int numEngines() { switch(mode) { - case VTOL : return Math.max(propellers.size(), heliPropellers.size()); - case PLANE : return propellers.size(); - case HELI : return heliPropellers.size(); - default : return 1; + case VTOL: return Math.max(propellers.size(), heliPropellers.size()); + case PLANE: return propellers.size(); + case HELI: return heliPropellers.size(); + default: return 1; } } diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 3688a371..3fea3342 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -76,10 +76,10 @@ public class VehicleType extends DriveableType { public boolean shootWithOpenDoor = false; public int trackLinkFix = 5; - public boolean flipLinkFix = false; +/* public boolean flipLinkFix = false; public String driftSound = ""; - public int driftSoundLength; + public int driftSoundLength;*/ public ArrayList smokers = new ArrayList(); public static ArrayList types = new ArrayList(); @@ -110,24 +110,24 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { //Movement modifiers - turnLeftModifier = ConfigUtils.configFloat(config,"TurnLeftSpeed", turnLeftModifier); - turnRightModifier = ConfigUtils.configFloat(config,"TurnRightSpeed", turnRightModifier); - squashMobs = ConfigUtils.configBool(config,"SquashMobs", squashMobs); - fourWheelDrive = ConfigUtils.configBool(config,"FourWheelDrive", fourWheelDrive); - tank = ConfigUtils.configBool(config,new String[]{"Tank", "TankMode"}, tank); - throttleDecay = ConfigUtils.configFloat(config,"ThrottleDecay", throttleDecay); - mass = ConfigUtils.configFloat(config,"Mass", mass); - useRealisticAcceleration = ConfigUtils.configBool(config,"UseRealisticAcceleration", useRealisticAcceleration); - gravity = ConfigUtils.configFloat(config,"Gravity", gravity); - maxFallSpeed = ConfigUtils.configFloat(config,"MaxFallSpeed", maxFallSpeed); - brakingModifier = ConfigUtils.configFloat(config,"BrakingModifier", brakingModifier); + turnLeftModifier = ConfigUtils.configFloat(config, "TurnLeftSpeed", turnLeftModifier); + turnRightModifier = ConfigUtils.configFloat(config, "TurnRightSpeed", turnRightModifier); + squashMobs = ConfigUtils.configBool(config, "SquashMobs", squashMobs); + fourWheelDrive = ConfigUtils.configBool(config, "FourWheelDrive", fourWheelDrive); + tank = ConfigUtils.configBool(config, new String[]{"Tank", "TankMode"}, tank); + throttleDecay = ConfigUtils.configFloat(config, "ThrottleDecay", throttleDecay); + mass = ConfigUtils.configFloat(config, "Mass", mass); + useRealisticAcceleration = ConfigUtils.configBool(config, "UseRealisticAcceleration", useRealisticAcceleration); + gravity = ConfigUtils.configFloat(config, "Gravity", gravity); + maxFallSpeed = ConfigUtils.configFloat(config, "MaxFallSpeed", maxFallSpeed); + brakingModifier = ConfigUtils.configFloat(config, "BrakingModifier", brakingModifier); //Visuals - hasDoor = ConfigUtils.configBool(config,"HasDoor", hasDoor); - shootWithOpenDoor = ConfigUtils.configBool(config,"ShootWithOpenDoor", shootWithOpenDoor); - rotateWheels = ConfigUtils.configBool(config,"RotateWheels", rotateWheels); - trackLinkFix = ConfigUtils.configInt(config,"FixTrackLink", trackLinkFix); - flipLinkFix = ConfigUtils.configBool(config,"FlipLinkFix", flipLinkFix); + hasDoor = ConfigUtils.configBool(config, "HasDoor", hasDoor); + shootWithOpenDoor = ConfigUtils.configBool(config, "ShootWithOpenDoor", shootWithOpenDoor); + rotateWheels = ConfigUtils.configBool(config, "RotateWheels", rotateWheels); + trackLinkFix = ConfigUtils.configInt(config, "FixTrackLink", trackLinkFix); + //flipLinkFix = ConfigUtils.configBool(config,"FlipLinkFix", flipLinkFix); //Animations doorPos1 = ConfigUtils.configVector(config, "DoorPosition1", doorPos1); @@ -146,27 +146,47 @@ protected void read(ConfigMap config, TypeFile file) { //Armaments - vehicleShootDelay = ConfigUtils.configInt(config,"ShootDelay", vehicleShootDelay); - vehicleShellDelay = ConfigUtils.configInt(config,"ShellDelay", vehicleShellDelay); + vehicleShootDelay = ConfigUtils.configInt(config, "ShootDelay", vehicleShootDelay); + vehicleShellDelay = ConfigUtils.configInt(config, "ShellDelay", vehicleShellDelay); //Sound shootSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ShootSound", shootSoundPrimary); shootSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "ShellSound", shootSoundSecondary); - driftSoundLength = ConfigUtils.configInt(config,"DriftSoundLength", driftSoundLength); - driftSound = ConfigUtils.configDriveableSound(contentPack, config, "DriftSound", driftSound); - if (config.containsKey("AddSmokePoint") || config.containsKey("AddSmokeDispenser")) { - String key = "AddSmokePoint"; - if (config.containsKey("AddSmokeDispenser")) - key = "AddSmokeDispenser"; - String[] split = ConfigUtils.getSplitFromKey(config, key); - SmokePoint smoke = new SmokePoint(); - smoke.position = new Vector3f(split[1]); - smoke.direction = new Vector3f(split[2]); - smoke.detTime = Integer.parseInt(split[3]); - smoke.part = split[4]; - smokers.add(smoke); + //driftSoundLength = ConfigUtils.configInt(config,"DriftSoundLength", driftSoundLength); + //driftSound = ConfigUtils.configDriveableSound(contentPack, config, "DriftSound", driftSound); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddSmokePoint", "AddSmokeDispenser" }); + + for (String[] split : splits) { + try { + SmokePoint smoke = new SmokePoint(); + smoke.position = new Vector3f(split[1]); + smoke.direction = new Vector3f(split[2]); + smoke.detTime = Integer.parseInt(split[3]); + smoke.part = split[4]; + smokers.add(smoke); + } catch (Exception ex) { + FlansMod.log("Error thrown adding smoke point in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + } + } catch (Exception ex) { + FlansMod.log("Error thrown adding smoke points in " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); + } + } + } catch (Exception ex) { + FlansMod.log("Error thrown parsing " + file.name); + + if (FlansMod.printStackTrace) { + FlansMod.log(ex); } - } catch (Exception ignored) { } } From 8fb90765d90e9ff2cd3f9e235ceda3393d683e1d Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Sun, 16 Apr 2023 23:11:12 +0100 Subject: [PATCH 19/32] Start testing config rewrite changes, improve logging for pack issues. --- .../java/com/flansmod/common/FlansMod.java | 26 +++++++++ .../common/driveables/DriveableType.java | 30 +++++----- .../flansmod/common/driveables/PlaneType.java | 6 +- .../common/driveables/VehicleType.java | 4 +- .../common/driveables/mechas/MechaType.java | 2 +- .../com/flansmod/common/guns/AAGunType.java | 4 +- .../flansmod/common/guns/AttachmentType.java | 15 ++--- .../com/flansmod/common/guns/BulletType.java | 6 +- .../com/flansmod/common/guns/GrenadeType.java | 6 +- .../com/flansmod/common/guns/GunType.java | 34 +++++------ .../com/flansmod/common/types/InfoType.java | 8 +-- .../java/com/flansmod/utils/ConfigMap.java | 14 ++++- .../java/com/flansmod/utils/ConfigUtils.java | 56 ++++++++++++++++--- 13 files changed, 141 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/flansmod/common/FlansMod.java b/src/main/java/com/flansmod/common/FlansMod.java index 4bd55f88..02f8772a 100644 --- a/src/main/java/com/flansmod/common/FlansMod.java +++ b/src/main/java/com/flansmod/common/FlansMod.java @@ -838,6 +838,32 @@ public static void log(Object obj) { } } + public static void logException(String message, Exception ex) { + if (printStackTrace) { + logger.info(message, ex); + } + } + + // To display validation, parsing errors e.t.c. + public static void logPackError(String fileName, String pack, String shortname, String message, String[] split, Exception ex) { + FlansMod.log("Error caused by file: %s pack: %s shortname: %s", fileName, pack, shortname); + FlansMod.log("\t%s", message); + + if (split != null) { + StringBuilder b = new StringBuilder(); + + for (String sp : split) { + b.append(sp); + b.append(" "); + } + FlansMod.log("\tCaused by line %s", b.toString()); + } + + if (ex != null && FlansMod.printStackTrace) { + logException("\tRelated Exception: ", ex); + } + } + public static void log(String format, Object... args) { log(String.format(format, args)); } diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 8b425e26..dbf704bf 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -1180,15 +1180,15 @@ else if (split.length == 7) // By here we assume that driver is known seats[0].yawSoundLength = ConfigUtils.configInt(config, "YawSoundLength", seats[0].yawSoundLength); seats[0].pitchSoundLength = ConfigUtils.configInt(config, "PitchSoundLength", seats[0].pitchSoundLength); - seats[0].yawSound = ConfigUtils.configDriveableSound(contentPack, config, "YawSound", seats[0].yawSound); - seats[0].pitchSound = ConfigUtils.configDriveableSound(contentPack, config, "PitchSound", seats[0].pitchSound); + seats[0].yawSound = ConfigUtils.configDriveableSound(packName, config, "YawSound", seats[0].yawSound); + seats[0].pitchSound = ConfigUtils.configDriveableSound(packName, config, "PitchSound", seats[0].pitchSound); - startSound = ConfigUtils.configDriveableSound(contentPack, config, "StartSound", startSound); - engineSound = ConfigUtils.configDriveableSound(contentPack, config, "EngineSound", engineSound); - idleSound = ConfigUtils.configDriveableSound(contentPack, config, "IdleSound", idleSound); - exitSound = ConfigUtils.configDriveableSound(contentPack, config, "ExitSound", exitSound); - backSound = ConfigUtils.configDriveableSound(contentPack, config, "BackSound", backSound); + startSound = ConfigUtils.configDriveableSound(packName, config, "StartSound", startSound); + engineSound = ConfigUtils.configDriveableSound(packName, config, "EngineSound", engineSound); + idleSound = ConfigUtils.configDriveableSound(packName, config, "IdleSound", idleSound); + exitSound = ConfigUtils.configDriveableSound(packName, config, "ExitSound", exitSound); + backSound = ConfigUtils.configDriveableSound(packName, config, "BackSound", backSound); @@ -1198,14 +1198,14 @@ else if (split.length == 7) shootSoundSecondary = ConfigUtils.configDriveableSound(packName, config, new String[] { "ShootSecondarySound", "ShootSoundSecondary" }, shootSoundSecondary); - placeSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundPrimary", placeSoundPrimary); - placeSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "PlaceSoundSecondary", placeSoundSecondary); - reloadSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ReloadSoundPrimary", reloadSoundPrimary); - reloadSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "ReloadSoundSecondary", reloadSoundSecondary); - lockedOnSound = ConfigUtils.configDriveableSound(contentPack, config, "LockedOnSound", lockedOnSound); - lockOnSound = ConfigUtils.configGunSound(contentPack, config, "LockOnSound", lockOnSound); - lockingOnSound = ConfigUtils.configGunSound(contentPack, config, "LockingOnSound", lockingOnSound); - flareSound = ConfigUtils.configDriveableSound(contentPack, config, "FlareSound", flareSound); + placeSoundPrimary = ConfigUtils.configDriveableSound(packName, config, "PlaceSoundPrimary", placeSoundPrimary); + placeSoundSecondary = ConfigUtils.configDriveableSound(packName, config, "PlaceSoundSecondary", placeSoundSecondary); + reloadSoundPrimary = ConfigUtils.configDriveableSound(packName, config, "ReloadSoundPrimary", reloadSoundPrimary); + reloadSoundSecondary = ConfigUtils.configDriveableSound(packName, config, "ReloadSoundSecondary", reloadSoundSecondary); + lockedOnSound = ConfigUtils.configDriveableSound(packName, config, "LockedOnSound", lockedOnSound); + lockOnSound = ConfigUtils.configGunSound(packName, config, "LockOnSound", lockOnSound); + lockingOnSound = ConfigUtils.configGunSound(packName, config, "LockingOnSound", lockingOnSound); + flareSound = ConfigUtils.configDriveableSound(packName, config, "FlareSound", flareSound); fancyCollision = ConfigUtils.configBool(config, "FancyCollision", fancyCollision); diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index c3518e3f..21cbe3ab 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -191,9 +191,9 @@ protected void read(ConfigMap config, TypeFile file) { //Sound engineSoundLength = ConfigUtils.configInt(config, "PropSoundLength", engineSoundLength); - engineSound = ConfigUtils.configDriveableSound(contentPack, config, "PropSound", engineSound); - shootSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ShootSound", shootSoundPrimary); - shootSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "BombSound", shootSoundSecondary); + engineSound = ConfigUtils.configDriveableSound(packName, config, "PropSound", engineSound); + shootSoundPrimary = ConfigUtils.configDriveableSound(packName, config, "ShootSound", shootSoundPrimary); + shootSoundSecondary = ConfigUtils.configDriveableSound(packName, config, "BombSound", shootSoundSecondary); //Aesthetics diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 3fea3342..8c594321 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -150,8 +150,8 @@ protected void read(ConfigMap config, TypeFile file) { vehicleShellDelay = ConfigUtils.configInt(config, "ShellDelay", vehicleShellDelay); //Sound - shootSoundPrimary = ConfigUtils.configDriveableSound(contentPack, config, "ShootSound", shootSoundPrimary); - shootSoundSecondary = ConfigUtils.configDriveableSound(contentPack, config, "ShellSound", shootSoundSecondary); + shootSoundPrimary = ConfigUtils.configDriveableSound(packName, config, "ShootSound", shootSoundPrimary); + shootSoundSecondary = ConfigUtils.configDriveableSound(packName, config, "ShellSound", shootSoundSecondary); //driftSoundLength = ConfigUtils.configInt(config,"DriftSoundLength", driftSoundLength); //driftSound = ConfigUtils.configDriveableSound(contentPack, config, "DriftSound", driftSound); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java index 4830912f..011c115d 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java @@ -112,7 +112,7 @@ protected void read(ConfigMap config, TypeFile file) { jumpVelocity = (jumpHeight == -99F) ? 1F : (float) Math.sqrt(Math.abs(9.81F * (jumpHeight + 0.2F) / 200F)); rotateSpeed = ConfigUtils.configFloat(config, "RotateSpeed", rotateSpeed); - stompSound = ConfigUtils.configDriveableSound(contentPack, config, "StompSound", stompSound); + stompSound = ConfigUtils.configDriveableSound(packName, config, "StompSound", stompSound); stompSoundLength = ConfigUtils.configInt(config, "StompSoundLength", stompSoundLength); stompRangeLower = ConfigUtils.configFloat(config, "StompRangeLower", stompRangeLower); stompRangeUpper = ConfigUtils.configFloat(config, "StompRangeUpper", stompRangeUpper); diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index 88b4b41f..7fe60430 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -73,8 +73,8 @@ protected void read(ConfigMap config, TypeFile file) { recoil = ConfigUtils.configInt(config, "Recoil", recoil); accuracy = ConfigUtils.configInt(config, "Accuracy", accuracy); shootDelay = ConfigUtils.configInt(config, "ShootDelay", shootDelay); - shootSound = ConfigUtils.configAASound(contentPack, config, "ShootSound", shootSound); - reloadSound = ConfigUtils.configAASound(contentPack, config, "ReloadSound", reloadSound); + shootSound = ConfigUtils.configAASound(packName, config, "ShootSound", shootSound); + reloadSound = ConfigUtils.configAASound(packName, config, "ReloadSound", reloadSound); fireAlternately = ConfigUtils.configBool(config, "FireAlternately", fireAlternately); if (config.containsKey("NumBarrels")) { String[] split = config.get("NumBarrels").split(" "); diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index e1237068..f3587a73 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -137,7 +137,8 @@ protected void read(ConfigMap config, TypeFile file) { if(FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("Model"))) model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAttachment.class); - modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); + // This is read in InfoType + //modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); texture = ConfigUtils.configString(config, "Texture", texture); silencer = ConfigUtils.configBool(config, "Silencer", silencer); disableMuzzleFlash = ConfigUtils.configBool(config, new String[]{"DisableMuzzleFlash", "DisableFlash"}, disableMuzzleFlash); @@ -167,9 +168,9 @@ protected void read(ConfigMap config, TypeFile file) { numSecAmmoItems = ConfigUtils.configInt(config, "LoadSecondaryIntoGun", numSecAmmoItems); if (config.containsKey("SecondaryFireMode")) secondaryFireMode = EnumFireMode.getFireMode(config.get("SecondaryFireMode")); - secondaryShootSound = ConfigUtils.configGunSound(contentPack, config, "SecondaryShootSound", secondaryShootSound); - secondaryReloadSound = ConfigUtils.configGunSound(contentPack, config, "SecondaryReloadSound", secondaryReloadSound); - toggleSound = ConfigUtils.configGunSound(contentPack, config, "ModeSwitchSound", toggleSound); + secondaryShootSound = ConfigUtils.configGunSound(packName, config, "SecondaryShootSound", secondaryShootSound); + secondaryReloadSound = ConfigUtils.configGunSound(packName, config, "SecondaryReloadSound", secondaryReloadSound); + toggleSound = ConfigUtils.configGunSound(packName, config, "ModeSwitchSound", toggleSound); //Multipliers meleeDamageMultiplier = ConfigUtils.configFloat(config, "MeleeDamageMultiplier", meleeDamageMultiplier); @@ -198,11 +199,7 @@ protected void read(ConfigMap config, TypeFile file) { hasNightVision = ConfigUtils.configBool(config, "HasNightVision", hasNightVision); } catch (Exception e) { - FlansMod.log("Reading attachment file failed."); - if(FlansMod.printStackTrace) - { - e.printStackTrace(); - } + FlansMod.logPackError(file.name, packName, shortName, "Fatal error reading attachment config", null, e); } } diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index c38e8e80..460c4338 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -141,7 +141,7 @@ protected void read(ConfigMap config, TypeFile file) { setEntitiesOnFire = ConfigUtils.configBool(config, "SetEntitiesOnFire", setEntitiesOnFire); hitSoundEnable = ConfigUtils.configBool(config, "HitSoundEnable", hitSoundEnable); entityHitSoundEnable = ConfigUtils.configBool(config, "EntityHitSoundEnable", entityHitSoundEnable); - hitSound = ConfigUtils.configSound(contentPack, config, "HitSound", hitSound); + hitSound = ConfigUtils.configSound(packName, config, "HitSound", hitSound); hitSoundRange = ConfigUtils.configFloat(config, "HitSoundRange", hitSoundRange); //Dont know why its like this if (config.containsKey("Penetrates")) { @@ -231,9 +231,7 @@ else if (config.containsKey("WeaponType")) { speedMultiplier = ConfigUtils.configFloat(config, "BulletSpeedMultiplier", speedMultiplier); } catch (Exception e) { - FlansMod.log("Reading bullet file failed."); - if(FlansMod.printStackTrace) - e.printStackTrace(); + FlansMod.logPackError(file.name, packName, shortName, "Fatal error reading bullet config", null, e); } } diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index 931a5a13..a12076e3 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -160,7 +160,7 @@ protected void read(ConfigMap config, TypeFile file) { stickToEntityAfter = ConfigUtils.configBool(config, "StickToEntityAfter", stickToEntityAfter); allowStickSound = ConfigUtils.configBool(config, "AllowStickSound", allowStickSound); stickSoundRange = ConfigUtils.configInt(config, "StickSoundRange", stickSoundRange); - stickSound = ConfigUtils.configSound(contentPack, config, "StickSound", stickSound); + stickSound = ConfigUtils.configSound(packName, config, "StickSound", stickSound); explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); explodeParticleType = ConfigUtils.configString(config, "ExplodeParticles", explodeParticleType); @@ -178,7 +178,7 @@ protected void read(ConfigMap config, TypeFile file) { flashRange = ConfigUtils.configInt(config, "FlashRange", flashRange); flashSoundEnable = ConfigUtils.configBool(config, "FlashSoundEnable", flashSoundEnable); flashSoundRange = ConfigUtils.configInt(config, "FlashSoundRange", flashSoundRange); - flashSound = ConfigUtils.configSound(contentPack, config, "FlashSound", flashSound); + flashSound = ConfigUtils.configSound(packName, config, "FlashSound", flashSound); flashDamageEnable = ConfigUtils.configBool(config, "FlashDamageEnable", flashDamageEnable); flashDamage = ConfigUtils.configFloat(config, "FlashDamage", flashDamage); flashEffects = ConfigUtils.configBool(config, "FlashEffects", flashEffects); @@ -190,7 +190,7 @@ protected void read(ConfigMap config, TypeFile file) { motionSensor = ConfigUtils.configBool(config, "MotionSensor", motionSensor); motionSensorRange = ConfigUtils.configFloat(config, "MotionSensorRange", motionSensorRange); motionSoundRange = ConfigUtils.configFloat(config, "MotionSoundRange", motionSoundRange); - motionSound = ConfigUtils.configSound(contentPack, config, "MotionSound", motionSound); + motionSound = ConfigUtils.configSound(packName, config, "MotionSound", motionSound); motionTime = ConfigUtils.configInt(config, "MotionTime", motionTime); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 0e5169b2..44008a98 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -588,21 +588,21 @@ protected void read(ConfigMap config, TypeFile file) { meleeSoundRange = ConfigUtils.configInt(config, "MeleeSoundRange", meleeSoundRange); reloadSoundRange = ConfigUtils.configInt(config, "ReloadSoundRange", reloadSoundRange); gunSoundRange = ConfigUtils.configInt(config, "GunSoundRange", gunSoundRange); - shootSound = ConfigUtils.configGunSound(contentPack, config, "ShootSound", shootSound); - bulletInsert = ConfigUtils.configGunSound(contentPack, config, "BulletInsertSound", bulletInsert); - actionSound = ConfigUtils.configGunSound(contentPack, config, "ActionSound", actionSound); - lastShootSound = ConfigUtils.configGunSound(contentPack, config, "LastShootSound", lastShootSound); - suppressedShootSound = ConfigUtils.configGunSound(contentPack, config, "SuppressedShootSound", suppressedShootSound); - reloadSound = ConfigUtils.configGunSound(contentPack, config, "ReloadSound", reloadSound); - reloadSoundOnEmpty = ConfigUtils.configGunSound(contentPack, config, "EmptyReloadSound", reloadSoundOnEmpty); - clickSoundOnEmpty = ConfigUtils.configGunSound(contentPack, config, "EmptyClickSound", clickSoundOnEmpty); - clickSoundOnEmptyRepeated = ConfigUtils.configGunSound(contentPack, config, "EmptyClickSoundRepeated", clickSoundOnEmptyRepeated); - idleSound = ConfigUtils.configGunSound(contentPack, config, "IdleSound", idleSound); + shootSound = ConfigUtils.configGunSound(packName, config, "ShootSound", shootSound); + bulletInsert = ConfigUtils.configGunSound(packName, config, "BulletInsertSound", bulletInsert); + actionSound = ConfigUtils.configGunSound(packName, config, "ActionSound", actionSound); + lastShootSound = ConfigUtils.configGunSound(packName, config, "LastShootSound", lastShootSound); + suppressedShootSound = ConfigUtils.configGunSound(packName, config, "SuppressedShootSound", suppressedShootSound); + reloadSound = ConfigUtils.configGunSound(packName, config, "ReloadSound", reloadSound); + reloadSoundOnEmpty = ConfigUtils.configGunSound(packName, config, "EmptyReloadSound", reloadSoundOnEmpty); + clickSoundOnEmpty = ConfigUtils.configGunSound(packName, config, "EmptyClickSound", clickSoundOnEmpty); + clickSoundOnEmptyRepeated = ConfigUtils.configGunSound(packName, config, "EmptyClickSoundRepeated", clickSoundOnEmptyRepeated); + idleSound = ConfigUtils.configGunSound(packName, config, "IdleSound", idleSound); idleSoundLength = ConfigUtils.configInt(config, "IdleSoundLength", idleSoundLength); - meleeSound = ConfigUtils.configGunSound(contentPack, config, "MeleeSound", meleeSound); + meleeSound = ConfigUtils.configGunSound(packName, config, "MeleeSound", meleeSound); //Looping sounds - warmupSound = ConfigUtils.configGunSound(contentPack, config, "WarmupSound", warmupSound); + warmupSound = ConfigUtils.configGunSound(packName, config, "WarmupSound", warmupSound); warmupSoundLength = ConfigUtils.configInt(config, "WarmupSoundLength", warmupSoundLength); if (config.containsKey("LoopedSound") || config.containsKey("SpinSound")) { String key = "LoopedSound"; @@ -610,15 +610,15 @@ protected void read(ConfigMap config, TypeFile file) { key = "SpinSound"; loopedSound = config.get(key); useLoopingSounds = true; - FlansMod.proxy.loadSound(contentPack, "guns", config.get(key)); + FlansMod.proxy.loadSound(packName, "guns", config.get(key)); } - loopedSound = ConfigUtils.configGunSound(contentPack, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); + loopedSound = ConfigUtils.configGunSound(packName, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); if (loopedSound != null && !loopedSound.isEmpty()) useLoopingSounds = true; loopedSoundLength = ConfigUtils.configInt(config, new String[]{"LoopedSoundLength", "SpinSoundLength"}, loopedSoundLength); - cooldownSound = ConfigUtils.configGunSound(contentPack, config, "CooldownSound", cooldownSound); - lockOnSound = ConfigUtils.configGunSound(contentPack, config, "LockOnSound", lockOnSound); - distantShootSound = ConfigUtils.configGunSound(contentPack, config, "DistantSound", distantShootSound); + cooldownSound = ConfigUtils.configGunSound(packName, config, "CooldownSound", cooldownSound); + lockOnSound = ConfigUtils.configGunSound(packName, config, "LockOnSound", lockOnSound); + distantShootSound = ConfigUtils.configGunSound(packName, config, "DistantSound", distantShootSound); distantSoundRange = ConfigUtils.configInt(config, "DistantSoundRange", distantSoundRange); diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index dba1850d..1149c883 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -26,7 +26,6 @@ public abstract class InfoType implements IInfoType { */ public static List infoTypes = new ArrayList<>(); - public String contentPack; public Item item; public int colour = 0xffffff; public String iconPath; @@ -49,9 +48,10 @@ public abstract class InfoType implements IInfoType { public final String packName; public InfoType(TypeFile file) { - contentPack = file.name; packName = file.pack; infoTypes.add(this); + + configMap.setIdentifiers(file.name, file.pack); } /** @@ -299,7 +299,7 @@ protected int getDyeDamageValue(String dyeName) { damage = i; } if (damage == -1) - FlansMod.log("Failed to find dye colour : " + dyeName + " while adding " + contentPack); + FlansMod.log("Failed to find dye colour : " + dyeName + " while adding " + packName); return damage; } @@ -351,7 +351,7 @@ public static Material getMaterial(String material) { @Override public String getContentPack() { - return contentPack; + return packName; } @Override diff --git a/src/main/java/com/flansmod/utils/ConfigMap.java b/src/main/java/com/flansmod/utils/ConfigMap.java index 7029be6f..fccf31a7 100644 --- a/src/main/java/com/flansmod/utils/ConfigMap.java +++ b/src/main/java/com/flansmod/utils/ConfigMap.java @@ -5,6 +5,14 @@ public final class ConfigMap extends HashMap> { private final HashMap> defaultMap = new HashMap<>(); + public String packName = ""; + public String fileName = ""; + + public void setIdentifiers(String pack, String file) { + packName = pack; + fileName = file; + } + public boolean containsKey(String key) { return defaultMap.containsKey(key.toLowerCase()); } @@ -18,7 +26,11 @@ public String get(String key) { } public ArrayList getAll(String key) { - return defaultMap.get(key.toLowerCase()); + if (defaultMap.containsKey(key.toLowerCase())) { + return defaultMap.get(key.toLowerCase()); + } + + return new ArrayList(); } public ArrayList put(String key, String value) { diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index 6f7eb631..84337dd8 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -28,7 +28,12 @@ public static String configString(ConfigMap config, String[] settingNames, Strin public static int configInt(ConfigMap config, String settingName, int defaultValue) { String val = config.get(settingName.toLowerCase()); if (val != null) { - return Integer.parseInt(val); + try { + return Integer.parseInt(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to integer failed", new String[] { settingName, val }, ex); + } } return defaultValue; @@ -38,7 +43,12 @@ public static int configInt(ConfigMap config, String[] settingNames, int default for (String name : settingNames) { String val = config.get(name.toLowerCase()); if(val != null) { - return Integer.parseInt(val); + try { + return Integer.parseInt(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to integer failed", new String[] { name, val }, ex); + } } } @@ -47,8 +57,15 @@ public static int configInt(ConfigMap config, String[] settingNames, int default public static float configFloat(ConfigMap config, String settingName, float defaultValue) { String val = config.get(settingName.toLowerCase()); - if(val != null) - return Float.parseFloat(val); + if(val != null) { + try { + return Float.parseFloat(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to float failed", new String[] { settingName, val }, ex); + } + } + return defaultValue; } @@ -56,7 +73,12 @@ public static float configFloat(ConfigMap config, String[] settingNames, float d for (String name : settingNames) { String val = config.get(name.toLowerCase()); if(val != null) { - return Float.parseFloat(val); + try { + return Float.parseFloat(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to float failed", new String[] { name, val }, ex); + } } } @@ -65,8 +87,14 @@ public static float configFloat(ConfigMap config, String[] settingNames, float d public static boolean configBool(ConfigMap config, String settingName, boolean defaultValue) { String val = config.get(settingName.toLowerCase()); - if(val != null) - return Boolean.parseBoolean(val); + if(val != null) { + try { + return Boolean.parseBoolean(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to boolean failed", new String[] { settingName, val }, ex); + } + } return defaultValue; } @@ -74,7 +102,12 @@ public static boolean configBool(ConfigMap config, String[] settingNames, boolea for (String name : settingNames) { String val = config.get(name.toLowerCase()); if(val != null) { - return Boolean.parseBoolean(val); + try { + return Boolean.parseBoolean(val); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to boolean failed", new String[] { name, val }, ex); + } } } @@ -135,7 +168,12 @@ public static Vector3f configVector(ConfigMap config, String settingName, Vector public static Vector3f configVector(ConfigMap config, String settingName, Vector3f defaultValue, float scale) { String val = config.get(settingName); if(val != null) { - return (Vector3f) new Vector3f(val).scale(scale); + try { + return (Vector3f) new Vector3f(val).scale(scale); + } catch (Exception ex) { + FlansMod.logPackError(config.fileName, config.packName, config.fileName, + "Parsing argument to vector failed", new String[] { settingName, val }, ex); + } } return defaultValue; From 59c7072acfe8a53e0880a67b22e9d61ac3faacd2 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 18 Apr 2023 22:57:19 +0100 Subject: [PATCH 20/32] Improved logging, realised I'd missed some, testing on official packs --- .../java/com/flansmod/client/ClientProxy.java | 2 +- .../java/com/flansmod/common/FlansMod.java | 2 +- .../com/flansmod/common/guns/AAGunType.java | 78 ++++++++++----- .../common/paintjob/PaintableType.java | 94 ++++++++----------- .../flansmod/common/teams/ArmourBoxType.java | 11 +-- .../com/flansmod/common/types/InfoType.java | 4 +- 6 files changed, 108 insertions(+), 83 deletions(-) diff --git a/src/main/java/com/flansmod/client/ClientProxy.java b/src/main/java/com/flansmod/client/ClientProxy.java index 773d7583..3e484aeb 100644 --- a/src/main/java/com/flansmod/client/ClientProxy.java +++ b/src/main/java/com/flansmod/client/ClientProxy.java @@ -331,7 +331,7 @@ public T loadModel(String s, String shortName, Class typeClass) { try { return typeClass.cast(Class.forName(getModelName(s)).getConstructor().newInstance()); } catch (Exception e) { - FlansMod.logger.error("Failed to load model : " + shortName + " (" + s + ")", e); + FlansMod.logPackError("?", "?", shortName, "Failed to load model", null, e); } return null; } diff --git a/src/main/java/com/flansmod/common/FlansMod.java b/src/main/java/com/flansmod/common/FlansMod.java index 02f8772a..7fc037ac 100644 --- a/src/main/java/com/flansmod/common/FlansMod.java +++ b/src/main/java/com/flansmod/common/FlansMod.java @@ -856,7 +856,7 @@ public static void logPackError(String fileName, String pack, String shortname, b.append(sp); b.append(" "); } - FlansMod.log("\tCaused by line %s", b.toString()); + FlansMod.log("\tCaused by line: %s", b.toString()); } if (ex != null && FlansMod.printStackTrace) { diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index 7fe60430..e2be9f5d 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -67,6 +67,7 @@ protected void read(ConfigMap config, TypeFile file) { try { if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAAGun.class); + texture = ConfigUtils.configString(config, "Texture", texture); damage = ConfigUtils.configInt(config, "Damage", damage); reloadTime = ConfigUtils.configInt(config, "ReloadTime", reloadTime); @@ -76,50 +77,85 @@ protected void read(ConfigMap config, TypeFile file) { shootSound = ConfigUtils.configAASound(packName, config, "ShootSound", shootSound); reloadSound = ConfigUtils.configAASound(packName, config, "ReloadSound", reloadSound); fireAlternately = ConfigUtils.configBool(config, "FireAlternately", fireAlternately); - if (config.containsKey("NumBarrels")) { - String[] split = config.get("NumBarrels").split(" "); - numBarrels = Integer.parseInt(split[1]); - barrelX = new int[numBarrels]; - barrelY = new int[numBarrels]; - barrelZ = new int[numBarrels]; - } - if(config.containsKey("Barrel")) { - String[] split = config.get("Barrel").split(" "); - int id = Integer.parseInt(split[1]); - barrelX[id] = Integer.parseInt(split[2]); - barrelY[id] = Integer.parseInt(split[3]); - barrelZ[id] = Integer.parseInt(split[4]); + + numBarrels = ConfigUtils.configInt(config, "NumBarrels", numBarrels); + barrelX = new int[numBarrels]; + barrelY = new int[numBarrels]; + barrelZ = new int[numBarrels]; + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Barrel"} ); + + if (splits.size() != numBarrels) { + FlansMod.logPackError(file.name, packName, shortName, "Unexpected number of Barrel positions given", null, null); + } + + for (String[] split : splits) { + try { + int id = Integer.parseInt(split[1]); + barrelX[id] = Integer.parseInt(split[2]); + barrelY[id] = Integer.parseInt(split[3]); + barrelZ[id] = Integer.parseInt(split[4]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Reading barrel failed", split, ex); + } + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Configuring barrels failed", null, ex); } + health = ConfigUtils.configInt(config, "Health", health); topViewLimit = ConfigUtils.configFloat(config, "TopViewLimit", topViewLimit); bottomViewLimit = ConfigUtils.configFloat(config, "BottomViewLimit", bottomViewLimit); - if (config.containsKey("Ammo")) { - BulletType type = BulletType.getBullet(config.get("Ammo")); - if (type != null) { - ammo.add(type); + + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Ammo" }); + + for (String[] split : splits) { + if (split.length == 2 && split[1] != null) { + BulletType type = BulletType.getBullet(split[1]); + + if (type != null) { + ammo.add(type); + } else { + FlansMod.logPackError(file.name, packName, shortName, "Unrecognised ammo type", split, null); + } + } else { + FlansMod.logPackError(file.name, packName, shortName, "Invalid Ammo line", split, null); + } } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding ammunition failed", null, ex); } - if (config.containsKey("GunnerPos")) { - String[] split = config.get("GunnerPos").split(" "); + + try { + String[] split = ConfigUtils.getSplitFromKey(config, "GunnerPos"); + gunnerX = Integer.parseInt(split[1]); gunnerY = Integer.parseInt(split[2]); gunnerZ = Integer.parseInt(split[3]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Setting gunner position failed", null, ex); } + + // Sentry stuff targetMobs = ConfigUtils.configBool(config, "TargetMobs", targetMobs); targetPlayers = ConfigUtils.configBool(config, "TargetPlayers", targetPlayers); targetVehicles = ConfigUtils.configBool(config, "TargetVehicles", targetVehicles); targetPlanes = ConfigUtils.configBool(config, "TargetPlanes", targetPlanes); targetMechas = ConfigUtils.configBool(config, "TargetMechas", targetMechas); + if(config.containsKey("TargetDriveables")) targetMechas = targetPlanes = targetVehicles = Boolean.parseBoolean(config.get("TargetDriveables")); + shareAmmo = ConfigUtils.configBool(config, "ShareAmmo", shareAmmo); targetRange = ConfigUtils.configFloat(config, "TargetRange", targetRange); canShootHomingMissile = ConfigUtils.configBool(config, "CanShootHomingMissile", canShootHomingMissile); countExplodeAfterShoot = ConfigUtils.configInt(config, "CountExplodeAfterShoot", countExplodeAfterShoot); isDropThis = ConfigUtils.configBool(config, "IsDropThis", isDropThis); - } catch (Exception e) { - FlansMod.log("Failed to read AA Gun file " + e); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred when reading AAGun", null, ex); } } diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index a1229a8e..a15633ce 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -56,72 +56,60 @@ protected void read(ConfigMap config, TypeFile file) super.read(config, file); //iconName textureName [dyeName dyeAmount (dyeDamage)] - ArrayList lines = ConfigUtils.getSplitsFromKey(config, new String[] { "PaintJob"} ); - for (String[] split : lines) { - try { - int numDyes = (split.length - 2) / 2; - ItemStack[] dyeStacks = new ItemStack[numDyes]; - for(int i = 0; i < numDyes; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 3]), getDyeDamageValue(split[i * 2 + 2])); - - if(split[1].contains("_")) - { - String[] splat = split[1].split("_"); - if(splat[0].equals(iconPath)) - split[1] = splat[1]; - } - paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], dyeStacks, true)); - } catch (Exception e) { - StringBuilder fullLine = new StringBuilder(); - for (String entry : split) { - fullLine.append(entry); - } + try { + ArrayList lines = ConfigUtils.getSplitsFromKey(config, new String[] { "PaintJob"} ); + for (String[] split : lines) { + try { + int numDyes = (split.length - 2) / 2; + ItemStack[] dyeStacks = new ItemStack[numDyes]; + for(int i = 0; i < numDyes; i++) + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 4]), getDyeDamageValue(split[i * 2 + 3])); - FlansMod.log("Reading paintable line failed for %s: %s", shortName, fullLine.toString()); - if (FlansMod.printStackTrace) { - e.printStackTrace(); + if(split[1].contains("_")) + { + String[] splat = split[1].split("_"); + if(splat[0].equals(iconPath)) + split[1] = splat[1]; + } + paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], dyeStacks, true)); + } catch (Exception e) { + FlansMod.logPackError(file.name, packName, shortName, "Reading paintjob line failed", split, e); } } - } - lines = ConfigUtils.getSplitsFromKey(config, new String[] { "AdvPaintJob"} ); - for (String[] split : lines) { - try { - ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; - for(int i = 0; i < (split.length - 4) / 2; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); - paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); - } catch (Exception e) { - StringBuilder fullLine = new StringBuilder(); - for (String entry : split) { - fullLine.append(entry); - } - - FlansMod.log("Reading advanced paintable line failed for %s: %s", shortName, fullLine.toString()); - if (FlansMod.printStackTrace) { - e.printStackTrace(); + lines = ConfigUtils.getSplitsFromKey(config, new String[] { "AdvPaintJob"} ); + for (String[] split : lines) { + try { + ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; + for(int i = 0; i < (split.length - 4) / 2; i++) + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); + paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); + } catch (Exception e) { + FlansMod.logPackError(file.name, packName, shortName, "Reading advanced paintjob line failed", split, e); } } - } - try { - if (config.containsKey("AddPaintableToTables")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddPaintableToTables"); - if (split.length == 2) { - addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); - } else if (split.length == 3) { - String paintjobId = split[1]; + lines = ConfigUtils.getSplitsFromKey(config, new String[] { "AddPaintableToTables" }); + + for (String[] split : lines) { + try { + if (split.length == 2) { + addAnyPaintjobToTables = Boolean.parseBoolean(split[1]); + } else if (split.length == 3) { + String paintjobId = split[1]; - for (Paintjob paintjob : paintjobs) { - if (paintjob.textureName.equals(paintjobId)) { - paintjob.addToTables = Boolean.parseBoolean(split[2]); + for (Paintjob paintjob : paintjobs) { + if (paintjob.textureName.equals(paintjobId)) { + paintjob.addToTables = Boolean.parseBoolean(split[2]); + } } } + } catch (Exception e) { + FlansMod.logPackError(file.name, packName, shortName, "Paintable table configuration failed", split, e); } } } catch (Exception e) { - FlansMod.log("Reading file failed : " + shortName); - e.printStackTrace(); + FlansMod.logPackError(file.name, packName, shortName, "Reading paintjob failed", null, e); } } diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 8fcb6f24..0fd47d5e 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -57,9 +57,8 @@ protected void read(ConfigMap config, TypeFile file) sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddArmour", "AddArmor"}); - for (String[] split : splits) { - if (split != null) { + try { StringBuilder name = new StringBuilder(split[2]); for(int i = 3; i < split.length; i++) @@ -96,12 +95,12 @@ protected void read(ConfigMap config, TypeFile file) } pages.add(entry); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding armour to box failed", split, ex); } } - } catch (Exception e) { - FlansMod.log("Reading armour box file failed : " + shortName); - if (FlansMod.printStackTrace) - e.printStackTrace(); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading armour box", null, ex); } } diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index 1149c883..dbba9496 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -148,7 +148,9 @@ protected void read(ConfigMap config, TypeFile file) { recipe[0] = ConfigUtils.configString(config, "recipe0", ""); recipe[1] = ConfigUtils.configString(config, "recipe1", ""); recipe[2] = ConfigUtils.configString(config, "recipe2", ""); - } else if (config.containsKey("ShapelessRecipe")) { + } + + if (config.containsKey("ShapelessRecipe")) { recipeLine = ConfigUtils.getSplitFromKey(config, "Recipe"); shapeless = true; } From b7f6fe817412d53dd5fc139215b32a631116786e Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 19 Apr 2023 23:48:56 +0100 Subject: [PATCH 21/32] More logging/error catching.. --- .../common/driveables/DriveableType.java | 103 ++++++++---------- .../driveables/mechas/MechaItemType.java | 12 +- .../common/driveables/mechas/MechaType.java | 60 ++++------ .../common/paintjob/PaintableType.java | 2 +- .../com/flansmod/common/teams/ArmourType.java | 7 +- .../com/flansmod/common/tools/ToolType.java | 51 +++++---- 6 files changed, 107 insertions(+), 128 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index dbf704bf..3ba9e90b 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -106,14 +106,10 @@ public class DriveableType extends PaintableType { * Pilot guns also have their own seperate array so ammo handling can be done */ public ArrayList pilotGuns = new ArrayList<>(); - public int reloadTimePrimary = 0, - reloadTimeSecondary = 0; - public String reloadSoundPrimary = "", - reloadSoundSecondary = ""; - public int placeTimePrimary = 5, - placeTimeSecondary = 5; - public String placeSoundPrimary = "", - placeSoundSecondary = ""; + public int reloadTimePrimary = 0, reloadTimeSecondary = 0; + public String reloadSoundPrimary = "", reloadSoundSecondary = ""; + public int placeTimePrimary = 5, placeTimeSecondary = 5; + public String placeSoundPrimary = "", placeSoundSecondary = ""; //Passengers /** * The number of passengers, not including the pilot @@ -263,11 +259,11 @@ public ShootParticle(String s, float x1, float y1, float z1) { public int backSoundLength; public boolean collisionDamageEnable = false; - public boolean pushOnCollision = true; public float collisionDamageThrottle = 0; public float collisionDamageTimes = 0; - public boolean enableReloadTime = false; + // Appears to be unused + //public boolean enableReloadTime = false; public boolean canMountEntity = false; @@ -306,7 +302,8 @@ public ShootParticle(String s, float x1, float y1, float z1) { /** * Barrel Recoil stuff */ - public float recoilDist = 5F; + // Appears to be unused + //public float recoilDist = 5F; public float recoilTime = 5F; /** @@ -320,7 +317,8 @@ public ShootParticle(String s, float x1, float y1, float z1) { /** * backwards compatibility attempt */ - public float gunLength = 0; + // Appears to be unused + //public float gunLength = 0; public boolean setPlayerInvisible = false; @@ -342,8 +340,6 @@ public ShootParticle(String s, float x1, float y1, float z1) { public ArrayList collisionBox = new ArrayList<>(); public boolean fancyCollision = false; - public CollisionShapeBox colbox; - public DriveableType(TypeFile file) { super(file); } @@ -373,8 +369,8 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); + // Must be read first. try { - // Order matters here, numPassengers = ConfigUtils.configInt(config, "Passengers", numPassengers); seats = new Seat[numPassengers + 1]; @@ -382,11 +378,10 @@ protected void read(ConfigMap config, TypeFile file) { try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"Passenger"}); if (splits.size() != numPassengers) { - FlansMod.log("NumPassengers and Passenger definition mismatch in %s. This needs to be addressed.", file.name); + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumPassengers and number of Passengers don't match", null, null); throw new Exception("Invalid Passenger Definitions"); // this should be a "disable item" situation } else { - for (String[] split : splits) { Seat seat = new Seat(split); if (seat.id < seats.length) { @@ -398,23 +393,50 @@ protected void read(ConfigMap config, TypeFile file) { } } } - } catch(Exception e){ - FlansMod.log("Errored while reading Passenger in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); - } + } catch(Exception ex){ + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: error parsing Passenger definitions", null, ex); + throw new Exception("Invalid Passenger Definitions"); // this should be a "disable item" situation } int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); if (numWheels < 2 || numWheels > 4) { - FlansMod.log("Invalid number of wheels registered in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumWheels should be either 3 or 4", null, null); throw new Exception("Invalid Wheel Configuration"); } else { wheelPositions = new DriveablePosition[numWheels]; } + //Wheels + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); + + if (splits.size() != wheelPositions.length) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumWheels differs from number of wheels configured", null, null); + throw new Exception("Invalid Wheel Configuration"); + } + + for (String[] split : splits) { + int wheelIndex = Integer.parseInt(split[1]); + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + + EnumDriveablePart part = EnumDriveablePart.coreWheel; + if (split.length > 5) { + part = EnumDriveablePart.getPart(split[5]); + } + + DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); + wheelPositions[wheelIndex] = wheelPosition; + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error thrown while parsing wheels", null, ex); + + throw new Exception("Invalid Wheel Configuration"); + } + try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Driver", "Pilot" }); if (splits.size() == 0) { @@ -525,36 +547,7 @@ protected void read(ConfigMap config, TypeFile file) { floatOffset = ConfigUtils.configFloat(config, "FloatOffset", floatOffset); canMountEntity = ConfigUtils.configBool(config, "CanMountEntity", canMountEntity); - //Wheels - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); - - if (splits.size() != wheelPositions.length) { - throw new Exception("Invalid number of wheels specified!"); - } - for (String[] split : splits) { - int wheelIndex = Integer.parseInt(split[1]); - float x = Float.parseFloat(split[2]) / 16F; - float y = Float.parseFloat(split[3]) / 16F; - float z = Float.parseFloat(split[4]) / 16F; - - EnumDriveablePart part = EnumDriveablePart.coreWheel; - if (split.length > 5) { - part = EnumDriveablePart.getPart(split[5]); - } - - DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); - wheelPositions[wheelIndex] = wheelPosition; - } - } catch (Exception ex) { - FlansMod.log("Errored while reading Wheels in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } - throw new Exception("Invalid Driver/Pilot Definitions"); - // this should be a "disable item" situation - } wheelStepHeight = ConfigUtils.configFloat(config, new String[]{"WheelRadius", "WheelStepHeight"}, wheelStepHeight); wheelSpringStrength = ConfigUtils.configFloat(config, new String[]{"WheelSpringStrength", "SpringStrength"}, wheelSpringStrength); @@ -721,8 +714,8 @@ protected void read(ConfigMap config, TypeFile file) { bulletSpread = ConfigUtils.configFloat(config, "BulletSpread", bulletSpread); rangingGun = ConfigUtils.configBool(config, "RangingGun", rangingGun); - gunLength = ConfigUtils.configFloat(config, "GunLength", gunLength); - recoilDist = ConfigUtils.configFloat(config, "RecoilDistance", recoilDist); + //gunLength = ConfigUtils.configFloat(config, "GunLength", gunLength); + //recoilDist = ConfigUtils.configFloat(config, "RecoilDistance", recoilDist); recoilTime = ConfigUtils.configFloat(config, "RecoilTime", recoilTime); try { @@ -791,7 +784,7 @@ protected void read(ConfigMap config, TypeFile file) { } - enableReloadTime = ConfigUtils.configBool(config, "EnableReloadTime", enableReloadTime); + //enableReloadTime = ConfigUtils.configBool(config, "EnableReloadTime", enableReloadTime); try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesPrimary" }); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java index 1ca60c4e..4c6dd4d3 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java @@ -76,10 +76,9 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - String modelString = ConfigUtils.configString(config, "Model", ""); - if(FMLCommonHandler.instance().getSide().isClient() && !modelString.isEmpty()) - model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); + + model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); texture = ConfigUtils.configString(config, "Texture", texture); @@ -123,11 +122,8 @@ protected void read(ConfigMap config, TypeFile file) { speedMultiplier = ConfigUtils.configFloat(config, "SpeedMultiplier", speedMultiplier); stopMechaFallDamage = ConfigUtils.configBool(config, "StopMechaFallDamage", stopMechaFallDamage); wasteCompact = ConfigUtils.configBool(config, "WasteCompact", wasteCompact); - } catch (Exception e) { - FlansMod.log("Errored reading " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading Mecha Item file", null, ex); } } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java index 011c115d..73a450e8 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java @@ -117,8 +117,9 @@ protected void read(ConfigMap config, TypeFile file) { stompRangeLower = ConfigUtils.configFloat(config, "StompRangeLower", stompRangeLower); stompRangeUpper = ConfigUtils.configFloat(config, "StompRangeUpper", stompRangeUpper); + String[] split = null; try { - String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "LeftArmOrigin" }); + split = ConfigUtils.getSplitFromKey(config, new String[] { "LeftArmOrigin" }); if(split != null) { leftArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); } @@ -127,11 +128,8 @@ protected void read(ConfigMap config, TypeFile file) { if(split != null) { rightArmOrigin = new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F); } - } catch (Exception e) { - FlansMod.log("Adding mecha arm origins failed in " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding arm origin failed", split, ex); } @@ -151,16 +149,14 @@ protected void read(ConfigMap config, TypeFile file) { legSwingLimit = ConfigUtils.configFloat(config, "LegSwingLimit", legSwingLimit); try { - String[] split = ConfigUtils.getSplitFromKey(config, "LimitHeadTurn"); + split = ConfigUtils.getSplitFromKey(config, "LimitHeadTurn"); if(split != null) { limitHeadTurn = Boolean.parseBoolean(split[1].toLowerCase()); limitHeadTurnValue = Float.parseFloat(split[2]); } - } catch (Exception e) { - FlansMod.log("Setting LimitHeadTurn failed in " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Setting head turn limit failed", split, ex); + } legSwingTime = ConfigUtils.configFloat(config, "LegSwingTime", legSwingTime); @@ -168,7 +164,7 @@ protected void read(ConfigMap config, TypeFile file) { lowerArmLimit = ConfigUtils.configFloat(config, "LowerArmLimit", lowerArmLimit); try { - String[] split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); + split = ConfigUtils.getSplitFromKey(config, "LeftHandModifier"); if(split != null) { leftHandModifierX = Float.parseFloat(split[1])/16F; @@ -182,29 +178,22 @@ protected void read(ConfigMap config, TypeFile file) { rightHandModifierY = Float.parseFloat(split[2])/16F; rightHandModifierZ = Float.parseFloat(split[3])/16F; } - } catch (Exception e) { - FlansMod.log("Setting HandModifiers failed in " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Setting Hand Modifiers failed", split, ex); } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LegNode"} ); - for (String [] split : splits) { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LegNode"} ); + for (String[] ssplit : splits) { + try { LegNode node = new LegNode(); - node.rotation = Integer.parseInt(split[1]); - node.lowerBound = Float.parseFloat(split[2]); - node.upperBound = Float.parseFloat(split[3]); - node.speed = Integer.parseInt(split[4]); - node.legPart = Integer.parseInt(split[5]); + node.rotation = Integer.parseInt(ssplit[1]); + node.lowerBound = Float.parseFloat(ssplit[2]); + node.upperBound = Float.parseFloat(ssplit[3]); + node.speed = Integer.parseInt(ssplit[4]); + node.legPart = Integer.parseInt(ssplit[5]); legNodes.add(node); - } - - } catch (Exception e) { - FlansMod.log("Setting HandModifiers failed in " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding LegNode failed", ssplit, ex); } } @@ -212,11 +201,8 @@ protected void read(ConfigMap config, TypeFile file) { restrictInventoryInput = ConfigUtils.configBool(config, "RestrictInventoryInput", restrictInventoryInput); allowMechaToolsInRestrictedInv = ConfigUtils.configBool(config, "AllowMechaToolsInRestrictedInv", allowMechaToolsInRestrictedInv); - } catch (Exception e) { - FlansMod.log("Failed while reading MechaType in " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading Mecha Type", null, ex); } } diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index a15633ce..e134b14e 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -109,7 +109,7 @@ protected void read(ConfigMap config, TypeFile file) } } } catch (Exception e) { - FlansMod.logPackError(file.name, packName, shortName, "Reading paintjob failed", null, e); + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading paintjob", null, e); } } diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index 6f3ef03e..4f06b6af 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -151,11 +151,8 @@ protected void read(ConfigMap config, TypeFile file) { hasDurability = durability > 0; armourTextureName = ConfigUtils.configString(config, new String[]{"ArmourTexture", "ArmorTexture"}, armourTextureName); - } catch (Exception e) { - FlansMod.log("Reading armour file failed."); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading armour file", null, ex); } } diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index e87bc84f..2cac2edf 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -65,33 +65,40 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); - // The model load can be done on server too, proxy will just skip it. - String modelName = ConfigUtils.configString(config, "Model", null); - model = FlansMod.proxy.loadModel(modelName, shortName, ModelBase.class); - texture = ConfigUtils.configString(config, "Texture", texture); + try { + // The model load can be done on server too, proxy will just skip it. + String modelName = ConfigUtils.configString(config, "Model", null); + model = FlansMod.proxy.loadModel(modelName, shortName, ModelBase.class); + texture = ConfigUtils.configString(config, "Texture", texture); - parachute = ConfigUtils.configBool(config, "Parachute", parachute); - remote = ConfigUtils.configBool(config, "ExplosiveRemote", remote); - key = ConfigUtils.configBool(config, "Key", key); - healPlayers = ConfigUtils.configBool(config, new String[]{"Heal", "HealPlayers"}, healPlayers); - healDriveables = ConfigUtils.configBool(config, new String[]{"Repair", "RepairVehicles"}, healDriveables); - healAmount = ConfigUtils.configInt(config, new String[]{"HealAmount", "RepairAmount"}, toolLife); - toolLife = ConfigUtils.configInt(config, new String[]{"ToolLife", "ToolUes"}, toolLife); - EUPerCharge = ConfigUtils.configInt(config, "EUPerCharge", EUPerCharge); + parachute = ConfigUtils.configBool(config, "Parachute", parachute); + remote = ConfigUtils.configBool(config, "ExplosiveRemote", remote); + key = ConfigUtils.configBool(config, "Key", key); + healPlayers = ConfigUtils.configBool(config, new String[]{"Heal", "HealPlayers"}, healPlayers); + healDriveables = ConfigUtils.configBool(config, new String[]{"Repair", "RepairVehicles"}, healDriveables); + healAmount = ConfigUtils.configInt(config, new String[]{"HealAmount", "RepairAmount"}, toolLife); + toolLife = ConfigUtils.configInt(config, new String[]{"ToolLife", "ToolUes"}, toolLife); + EUPerCharge = ConfigUtils.configInt(config, "EUPerCharge", EUPerCharge); - if(config.containsKey("RechargeRecipe")) { String[] split = ConfigUtils.getSplitFromKey(config, "RechargeRecipe"); - for(int i = 0; i < (split.length - 1) / 2; i++) - { - int amount = Integer.parseInt(split[2 * i + 1]); - boolean damaged = split[2 * i + 2].contains("."); - String itemName = damaged ? split[2 * i + 2].split("\\.")[0] : split[2 * i + 2]; - int damage = damaged ? Integer.parseInt(split[2 * i + 2].split("\\.")[1]) : 0; - rechargeRecipe.add(getRecipeElement(itemName, amount, damage, shortName)); + try { + for(int i = 0; i < (split.length - 1) / 2; i++) + { + int amount = Integer.parseInt(split[2 * i + 1]); + boolean damaged = split[2 * i + 2].contains("."); + String itemName = damaged ? split[2 * i + 2].split("\\.")[0] : split[2 * i + 2]; + int damage = damaged ? Integer.parseInt(split[2 * i + 2].split("\\.")[1]) : 0; + rechargeRecipe.add(getRecipeElement(itemName, amount, damage, shortName)); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't add recharge recipe", split, ex); } + + destroyOnEmpty = ConfigUtils.configBool(config, "DestroyOnEmpty", destroyOnEmpty); + foodness = ConfigUtils.configInt(config, new String[]{"Food", "Foodness"}, foodness); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading tool file", null, ex); } - destroyOnEmpty = ConfigUtils.configBool(config, "DestroyOnEmpty", destroyOnEmpty); - foodness = ConfigUtils.configInt(config, new String[]{"Food", "Foodness"}, foodness); } @Override From 5542657b45facb4431a4745081a7d9669388f235 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 26 Apr 2023 23:22:24 +0100 Subject: [PATCH 22/32] Improved logging, better error handling --- .../common/driveables/DriveableType.java | 535 +++++++----------- .../flansmod/common/driveables/PlaneType.java | 28 +- .../common/driveables/VehicleType.java | 43 +- 3 files changed, 239 insertions(+), 367 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 3ba9e90b..aab4d9ca 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -440,10 +440,10 @@ protected void read(ConfigMap config, TypeFile file) { try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Driver", "Pilot" }); if (splits.size() == 0) { - FlansMod.log("No Driver or Pilot configured in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "No Driver or Pilot configured", null, null); throw new Exception("No Driver/Pilot Configured!"); } else if (splits.size() > 1) { - FlansMod.log("Multiple Drivers or Pilots configured in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Multiple Drivers or Pilots configured", null, null); } else { String[] split = splits.get(0); @@ -455,11 +455,8 @@ protected void read(ConfigMap config, TypeFile file) { seats[0] = new Seat(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3])); } - } catch (Exception e) { - FlansMod.log("Errored while reading Driver/Pilot in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Erorred while reading Driver/Pilot", null, ex); throw new Exception("Invalid Driver/Pilot Definitions"); // this should be a "disable item" situation } @@ -495,15 +492,12 @@ protected void read(ConfigMap config, TypeFile file) { turretOrigin = ConfigUtils.configVector(config, "TurretOrigin", turretOrigin, 1F/16F); turretOriginOffset = ConfigUtils.configVector(config, "TurretOrigin", turretOriginOffset, 1F/16F); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "CollisionPoint", "AddCollisionPoint" }); - for (String[] split : splits) { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "CollisionPoint", "AddCollisionPoint" }); + for (String[] split : splits) { + try { collisionPoints.add(new DriveablePosition(split)); - } - } catch (Exception e) { - FlansMod.log("Errored while reading Collision Points in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding collision point", split, ex); } } @@ -558,41 +552,33 @@ protected void read(ConfigMap config, TypeFile file) { collectHarvest = ConfigUtils.configBool(config, "CollectHarvest", collectHarvest); dropHarvest = ConfigUtils.configBool(config, "DropHarvest", dropHarvest); - try { - String[] split = ConfigUtils.getSplitFromKey(config, "HarvestBox"); - if (split != null) { - harvestBoxSize = new Vector3f(split[1]); - harvestBoxPos = new Vector3f(split[2]); - } - - } catch (Exception ex) { - FlansMod.log("Errored while reading HarvestBox in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + String[] asplit = ConfigUtils.getSplitFromKey(config, "HarvestBox"); + if (asplit != null) { + try { + harvestBoxSize = new Vector3f(asplit[1]); + harvestBoxPos = new Vector3f(asplit[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding harvester", asplit, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestMaterial" }); - for (String[] split : splits) { // This currently doesn't work, see todo + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestMaterial" }); + for (String[] split : splits) { // This currently doesn't work, see todo + try { Material m = getMaterial(split[1]); if (m != null) { materialsHarvested.add(m); } else { - FlansMod.log("Material " + split[1] + " couldn't be found for HarvestMaterial in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Couldn't find material for HarvestMaterial", split, null); } - } - } catch (Exception ex) { - FlansMod.log("Errored while reading HarvestMaterial in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding HarvestMaterial", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestToolType" }); - - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HarvestToolType" }); + for (String[] split : splits) { + try { switch (split[1]) { case "Axe": materialsHarvested.add(Material.wood); @@ -629,15 +615,11 @@ protected void read(ConfigMap config, TypeFile file) { materialsHarvested.add(Material.plants); break; } - } - } catch (Exception ex) { - FlansMod.log("Errored while adding HarvestToolType in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Setting HarvestToolType failed", split, ex); } } - //Cargo / Payload numCargoSlots = ConfigUtils.configInt(config, "CargoSlots", numCargoSlots); numBombSlots = ConfigUtils.configInt(config, new String[]{ "BombSlots", "MineSlots" }, numBombSlots); @@ -649,38 +631,30 @@ protected void read(ConfigMap config, TypeFile file) { bulletDetectionRadius = ConfigUtils.configFloat(config, "BulletDetection", bulletDetectionRadius); - //Ammo limiters - - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddAmmo" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddAmmo" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { if (split.length == 2) { BulletType bullet = BulletType.getBullet(split[1]); if (bullet != null) { ammo.add(bullet); } else { - FlansMod.log("Could not find bullet " + split[1] + " for " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Could not find bullet for AddAmmo", split, null); } } else { - FlansMod.log("Incorrect ammo line given in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Incorrect format supplied to AddAmmo", split, null); } - - } - } catch (Exception ex) { - FlansMod.log("Adding ammo failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown from AddAmmo", split, ex); } } + acceptAllAmmo = ConfigUtils.configBool(config, new String[]{ "AllowAllAmmo", "AcceptAllAmmo" }, acceptAllAmmo); - //Weaponry - if (config.containsKey("Primary")) - primary = EnumWeaponType.valueOf(config.get("Primary").toUpperCase()); - if (config.containsKey("Secondary")) - primary = EnumWeaponType.valueOf(config.get("Secondary").toUpperCase()); + primary = EnumWeaponType.valueOf(ConfigUtils.configString(config, "Primary", primary.name())); + secondary = EnumWeaponType.valueOf(ConfigUtils.configString(config, "Secondary", secondary.name())); damageMultiplierPrimary = ConfigUtils.configFloat(config, "DamageMultiplierPrimary", damageMultiplierPrimary); damageMultiplierSecondary = ConfigUtils.configFloat(config, "DamageMultiplierSecondary", damageMultiplierSecondary); @@ -693,13 +667,9 @@ protected void read(ConfigMap config, TypeFile file) { shootDelayPrimary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinPrimary", shootDelayPrimary*1200F), 1); shootDelaySecondary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinSecondary", shootDelaySecondary*1200F), 1); } catch (Exception ex) { - FlansMod.log("Invalid RoundsPerMin set in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } + FlansMod.logPackError(file.name, packName, shortName, "Error thrown setting RoundsPerMin", null, ex); } - placeTimePrimary = ConfigUtils.configInt(config, "PlaceTimePrimary", placeTimePrimary); placeTimeSecondary = ConfigUtils.configInt(config, "PlaceTimeSecondary", placeTimeSecondary); reloadTimePrimary = ConfigUtils.configInt(config, "ReloadTimePrimary", reloadTimePrimary); @@ -718,10 +688,10 @@ protected void read(ConfigMap config, TypeFile file) { //recoilDist = ConfigUtils.configFloat(config, "RecoilDistance", recoilDist); recoilTime = ConfigUtils.configFloat(config, "RecoilTime", recoilTime); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootPointPrimary" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootPointPrimary" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { // TODO: Refactor this DriveablePosition rootPos; @@ -742,19 +712,16 @@ protected void read(ConfigMap config, TypeFile file) { shootPointsPrimary.add(sPoint); if (rootPos instanceof PilotGun) pilotGuns.add((PilotGun) sPoint.rootPos); - } - - } catch (Exception ex) { - FlansMod.log("Invalid ShootPointPrimary config in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding ShootPointPrimary", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"ShootPointSecondary"}); - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[]{"ShootPointSecondary"}); + + for (String[] split : splits) { + try { // TODO: Refactor this DriveablePosition rootPos; @@ -775,56 +742,46 @@ protected void read(ConfigMap config, TypeFile file) { shootPointsSecondary.add(sPoint); if (rootPos instanceof PilotGun) pilotGuns.add((PilotGun) sPoint.rootPos); - } - } catch (Exception ex) { - FlansMod.log("Invalid ShootPointSecondary config in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding ShootPointSecondary", split, ex); } } - //enableReloadTime = ConfigUtils.configBool(config, "EnableReloadTime", enableReloadTime); - - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesPrimary" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesPrimary" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { if (split.length == 5) { //TODO validate the particle exists shootParticlesPrimary.add( new ShootParticle(split[1], Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])) ); } else { - FlansMod.log("ShootParticlesPrimary config is of incorrect format in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "ShootParticlesPrimary has invalid format", split, null); } - } - } catch (Exception ex) { - FlansMod.log("Invalid ShootParticlesPrimary config in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding ShootParticlesPrimary", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesSecondary" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "ShootParticlesSecondary" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { if (split.length == 5) { //TODO validate the particle exists shootParticlesSecondary.add( new ShootParticle(split[1], Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])) ); } else { - FlansMod.log("ShootParticlesSecondary config is of incorrect format in " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "ShootParticlesSecondary has invalid format", split, null); } - } - } catch (Exception ex) { - FlansMod.log("Invalid ShootParticlesSecondary config in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding ShootParticlesSecondary", split, ex); } } + setPlayerInvisible = ConfigUtils.configBool(config, "SetPlayerInvisible", setPlayerInvisible); IT1 = ConfigUtils.configBool(config, "IT1", IT1); fixedPrimaryFire = ConfigUtils.configBool(config, "FixedPrimary", fixedPrimaryFire); @@ -835,10 +792,10 @@ protected void read(ConfigMap config, TypeFile file) { secondaryFireAngle = ConfigUtils.configVector(config, "SecondaryAngle", secondaryFireAngle); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddGun" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddGun" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { DriveablePosition rootPos; Vector3f offPos; secondary = EnumWeaponType.GUN; @@ -858,60 +815,52 @@ protected void read(ConfigMap config, TypeFile file) { shootPointsSecondary.add(sPoint); pilotGuns.add(pilotGun); driveableRecipe.add(new ItemStack(pilotGun.type.item)); - } - } catch (Exception ex) { - FlansMod.log("Adding PilotGun via AddGun failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding pilot gun with AddGun", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "BombPosition" }); - if (splits.size() > 1) { - primary = EnumWeaponType.BOMB; - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "BombPosition" }); + if (splits.size() > 1) { + primary = EnumWeaponType.BOMB; + } - for (String[] split : splits) { + for (String[] split : splits) { + try { if (split.length == 4) shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(0, 0, 0))); else if (split.length == 7) shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.core), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); - } - } catch (Exception ex) { - FlansMod.log("Adding BombPosition failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch(Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while setting BombPosition", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"BarrelPosition"}); - if (splits.size() > 1) { - primary = EnumWeaponType.SHELL; - } + splits = ConfigUtils.getSplitsFromKey(config, new String[]{"BarrelPosition"}); - for (String[] split : splits) { + if (splits.size() > 1) { + primary = EnumWeaponType.SHELL; + } + + for (String[] split : splits) { + try { if (split.length == 4) shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(0, 0, 0))); else if (split.length == 7) shootPointsPrimary.add(new ShootPoint(new DriveablePosition(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F), EnumDriveablePart.turret), new Vector3f(Float.parseFloat(split[4]) / 16F, Float.parseFloat(split[5]) / 16F, Float.parseFloat(split[6]) / 16F))); - } - } catch (Exception ex) { - FlansMod.log("Adding BarrelPosition failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while setting BarrelPosition", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddRecipeParts" }); - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddRecipeParts" }); + for (String[] split : splits) { + try { EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); ArrayList stacks = new ArrayList<>(); for (int i = 0; i < (split.length - 2) / 2; i++) { @@ -931,19 +880,15 @@ else if (split.length == 7) ItemStack[] items = new ItemStack[stacks.size()]; items = stacks.toArray(items); partwiseRecipe.put(part, items); - } - } catch (Exception e) { - FlansMod.log("Adding RecipeParts failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "AddRecipeParts threw an error", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddDye" }); - - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddDye" }); + for (String[] split : splits) { + try { int amount = Integer.parseInt(split[1]); int damage = -1; for (int i = 0; i < ItemDye.field_150923_a.length; i++) { @@ -951,22 +896,19 @@ else if (split.length == 7) damage = i; } if (damage == -1) { - FlansMod.log("Failed to find dye colour : " + split[2] + " while adding " + file.name); + FlansMod.logPackError(file.name, packName, shortName, "Failed to find dye colour in AddDye", split, null); return; } driveableRecipe.add(new ItemStack(Items.dye, amount, damage)); - } - } catch (Exception e) { - FlansMod.log("Adding Dye to recipe failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(e); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "AddDye threw an error", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "SetupPart" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "SetupPart" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); CollisionBox box; if (split.length > 9) { @@ -975,18 +917,16 @@ else if (split.length == 7) box = new CollisionBox(Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8])); } health.put(part, box); - } - } catch (Exception ex) { - FlansMod.log("SetupPart failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "SetupPart threw an error", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PartDeathExplosion" }); - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PartDeathExplosion" }); + for (String[] split : splits) { + try { + EnumDriveablePart part = EnumDriveablePart.getPart(split[1]); BoxExplosion exp; @@ -997,16 +937,13 @@ else if (split.length == 7) } partDeathExplosions.put(part, exp); - } - - } catch (Exception ex) { - FlansMod.log("Adding PartDeathExplosion failed in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "PartDeathExplosion threw an error", split, ex); } } + if (seats.length == 0 || seats[0] != null) { seats[0].part = EnumDriveablePart.getPart(ConfigUtils.configString(config, "DriverPart", "core")); @@ -1019,139 +956,119 @@ else if (split.length == 7) seats[0].latePitch = ConfigUtils.configBool(config, "DriverLatePitch", seats[0].latePitch); seats[0].traverseSounds = ConfigUtils.configBool(config, "DriverTraverseSounds", seats[0].traverseSounds); } else { - FlansMod.log("Driver is not defined!"); + FlansMod.logPackError(file.name, packName, shortName, "Driver is not defined!", null, null); throw new Exception("Driver is not defined! Cannot proceed further."); } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RotatedPassengerOffset" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); - } catch (Exception ex) { - FlansMod.log("Could not set RotatedPassengerOffset in " + file.name); - } - } - - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerAimSpeed" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerAimSpeed in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RotatedPassengerOffset" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].rotatedOffset = new Vector3f(Integer.parseInt(split[2]) / 16F, Integer.parseInt(split[3]) / 16F, Integer.parseInt(split[4]) / 16F); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set RotatedPassengerOffset", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLegacyAiming" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerLegacyAiming in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerAimSpeed" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].aimingSpeed = new Vector3f(Float.parseFloat(split[2]), Float.parseFloat(split[3]), Float.parseFloat(split[4])); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerAimSpeed", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawBeforePitch" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerYawBeforePitch in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLegacyAiming" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].legacyAiming = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerLegacyAiming", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLatePitch" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerLatePitch in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawBeforePitch" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawBeforePitch = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerYawBeforePitch", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerTraverseSounds" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerTraverseSounds in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerLatePitch" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].latePitch = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerLatePitch", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSoundLength" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerYawSoundLength in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerTraverseSounds" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].traverseSounds = Boolean.parseBoolean(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerTraverseSounds", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSoundLength" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); - } catch (Exception ex) { - FlansMod.log("Could not set PassengerPitchSoundLength in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSoundLength" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawSoundLength = Integer.parseInt(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerYawSoundLength", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSound" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].yawSound = split[2]; - } catch (Exception ex) { - FlansMod.log("Could not set PassengerYawSound in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSoundLength" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].pitchSoundLength = Integer.parseInt(split[2]); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerPitchSoundLength", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSound" }); - for (String[] split : splits) { - try { - seats[Integer.parseInt(split[1])].pitchSound = split[2]; - } catch (Exception ex) { - FlansMod.log("Could not set PassengerPitchSound in " + file.name); - } + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerYawSound" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].yawSound = split[2]; + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerYawSound", split, ex); } - } catch (Exception ex) { - FlansMod.log("Setting passenger specific settings failed in " + file.name); + } - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "PassengerPitchSound" }); + for (String[] split : splits) { + try { + seats[Integer.parseInt(split[1])].pitchSound = split[2]; + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set PassengerPitchSound", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "GunOrigin" }); - for (String[] split : splits) { - try { - float x = Float.parseFloat(split[2]) / 16F; - float y = Float.parseFloat(split[3]) / 16F; - float z = Float.parseFloat(split[4]) / 16F; - if (seats[Integer.parseInt(split[1])] != null) - seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); - } catch (Exception ex) { - FlansMod.log("Setting GunOrigin failed in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } - } - } - - - } catch (Exception ex) { - FlansMod.log("Setting GunOrigins failed in " + file.name); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "GunOrigin" }); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + for (String[] split : splits) { + try { + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; + if (seats[Integer.parseInt(split[1])] != null) + seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName,"Could not set GunOrigin", split, ex); } } + //Y offset for badly built models :P yOffset = ConfigUtils.configFloat(config, "YOffset", yOffset); //Third person camera distance @@ -1202,28 +1119,25 @@ else if (split.length == 7) fancyCollision = ConfigUtils.configBool(config, "FancyCollision", fancyCollision); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMesh", "AddTurretCollisionMesh" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMesh", "AddTurretCollisionMesh" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { CollisionShapeBox box = new CollisionShapeBox(new Vector3f(split[1]), new Vector3f(split[2]), new Vector3f(split[3]), new Vector3f(split[4]), new Vector3f(split[5]), new Vector3f(split[6]), new Vector3f(split[7]), new Vector3f(split[8]), new Vector3f(split[9]), new Vector3f(split[10]), split[0].contains("Turret") ? "turret" : "core"); collisionBox.add(box); - } - } catch (Exception ex) { - FlansMod.log("Adding collision mesh failed in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding collision mesh failed", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMeshRaw", "AddTurretCollisionMeshRaw" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddCollisionMeshRaw", "AddTurretCollisionMeshRaw" }); + + for (String[] split : splits) { + try { - for (String[] split : splits) { Vector3f pos = new Vector3f(Float.parseFloat(split[1]), Float.parseFloat(split[2]), Float.parseFloat(split[3])); Vector3f size = new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6])); Vector3f p1 = new Vector3f(Float.parseFloat(split[8]), Float.parseFloat(split[9]), Float.parseFloat(split[10])); @@ -1236,47 +1150,42 @@ else if (split.length == 7) Vector3f p8 = new Vector3f(Float.parseFloat(split[29]), Float.parseFloat(split[30]), Float.parseFloat(split[31])); CollisionShapeBox box = new CollisionShapeBox(pos, size, p1, p2, p3, p4, p5, p6, p7, p8, split[0].contains("Turret") ? "turret" : "core"); collisionBox.add(box); - } - } catch (Exception ex) { - FlansMod.log("Adding raw collision mesh failed in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding collision mesh failed", split, ex); } } - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LeftLinkPoint" }); - - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "LeftLinkPoint" }); + for (String[] split : splits) { + try { leftTrackPoints.add(new Vector3f(split[1])); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding LeftLinkPoint failed", split, ex); } + } - splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RightLinkPoint" }); - - for (String[] split : splits) { + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "RightLinkPoint" }); + for (String[] split : splits) { + try { rightTrackPoints.add(new Vector3f(split[1])); - } - } catch (Exception ex) { - FlansMod.log("Adding track link points failed in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding RightLinkPoint failed", split, ex); } } + trackLinkLength = ConfigUtils.configFloat(config, "TrackLinkLength", trackLinkLength); // ICBM Mod Radar onRadar = ConfigUtils.configBool(config, "OnRadar", onRadar); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddParticle", "AddEmitter" }); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddParticle", "AddEmitter" }); - for (String[] split : splits) { + for (String[] split : splits) { + try { ParticleEmitter emitter = new ParticleEmitter(); emitter.effectType = split[1]; emitter.emitRate = Integer.parseInt(split[2]); @@ -1293,19 +1202,13 @@ else if (split.length == 7) emitter.extents.scale(1.0f / 16.0f); emitter.velocity.scale(1.0f / 16.0f); emitters.add(emitter); - } - } catch (Exception ex) { - FlansMod.log("Adding emitter failed in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding particle failed", split, ex); } } - } catch (Exception e) { - FlansMod.log("Errored reading " + file.name); - if (FlansMod.printStackTrace) { - e.printStackTrace(); - } + + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal Error! Reading DriveableType failed", null, ex); } } diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 21cbe3ab..4bab3de6 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -150,11 +150,9 @@ protected void read(ConfigMap config, TypeFile file) { planeShootDelay = ConfigUtils.configInt(config, "ShootDelay", planeShootDelay); planeBombDelay = ConfigUtils.configInt(config, "BombDelay", planeBombDelay); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HeliPropeller", "Propeller", "HeliTailPropeller" }); - - for (String[] split : splits) { - try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "HeliPropeller", "Propeller", "HeliTailPropeller" }); + for (String[] split : splits) { + try { Propeller propeller = new Propeller(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]), EnumDriveablePart.getPart(split[5]), PartType.getPart(split[6])); if (split[0].contains("HeliTailPropeller")) { @@ -166,18 +164,8 @@ protected void read(ConfigMap config, TypeFile file) { } driveableRecipe.add(new ItemStack(propeller.itemType.item)); - } catch (Exception ex) { - FlansMod.log("Failed to add new propeller in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } - } - } - } catch (Exception ex) { - // This is a failable condition - FlansMod.log("Failed to setup propellers in " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding propeller failed", split, ex); } } @@ -253,11 +241,7 @@ protected void read(ConfigMap config, TypeFile file) { } catch (Exception ex) { - FlansMod.log("Error thrown parsing " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } + FlansMod.logPackError(file.name, packName, shortName, "Fatal Error! Reading PlaneType failed", null, ex); } } diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 8c594321..14edc67f 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -155,38 +155,23 @@ protected void read(ConfigMap config, TypeFile file) { //driftSoundLength = ConfigUtils.configInt(config,"DriftSoundLength", driftSoundLength); //driftSound = ConfigUtils.configDriveableSound(contentPack, config, "DriftSound", driftSound); - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddSmokePoint", "AddSmokeDispenser" }); - - for (String[] split : splits) { - try { - SmokePoint smoke = new SmokePoint(); - smoke.position = new Vector3f(split[1]); - smoke.direction = new Vector3f(split[2]); - smoke.detTime = Integer.parseInt(split[3]); - smoke.part = split[4]; - smokers.add(smoke); - } catch (Exception ex) { - FlansMod.log("Error thrown adding smoke point in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } - } - } - } catch (Exception ex) { - FlansMod.log("Error thrown adding smoke points in " + file.name); - - if (FlansMod.printStackTrace) { - FlansMod.log(ex); + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddSmokePoint", "AddSmokeDispenser" }); + + for (String[] split : splits) { + try { + SmokePoint smoke = new SmokePoint(); + smoke.position = new Vector3f(split[1]); + smoke.direction = new Vector3f(split[2]); + smoke.detTime = Integer.parseInt(split[3]); + smoke.part = split[4]; + smokers.add(smoke); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding SmokePoint failed", split, ex); } } - } catch (Exception ex) { - FlansMod.log("Error thrown parsing " + file.name); - if (FlansMod.printStackTrace) { - FlansMod.log(ex); - } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal Error! Reading VehicleType filed", null, ex); } } From 7c431dfd9192fae3013199f5b6187d0a5f8be762 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:24:35 +0100 Subject: [PATCH 23/32] Improved logging, better error handling --- src/main/java/com/flansmod/client/ClientProxy.java | 4 ++-- src/main/java/com/flansmod/client/FlansModClient.java | 2 +- src/main/java/com/flansmod/client/TickHandlerClient.java | 2 +- .../java/com/flansmod/common/driveables/DriveableType.java | 2 +- src/main/java/com/flansmod/common/driveables/PlaneType.java | 4 ++-- src/main/java/com/flansmod/common/guns/GrenadeType.java | 5 ++--- src/main/java/com/flansmod/common/guns/GunType.java | 5 ++--- src/main/java/com/flansmod/common/guns/ShootableType.java | 2 +- 8 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/flansmod/client/ClientProxy.java b/src/main/java/com/flansmod/client/ClientProxy.java index 3e484aeb..1492e95b 100644 --- a/src/main/java/com/flansmod/client/ClientProxy.java +++ b/src/main/java/com/flansmod/client/ClientProxy.java @@ -122,11 +122,11 @@ public List getContentList(Method method, ClassLoader classloader) { FMLClientHandler.instance().addModAsResource(container); } catch (Exception e) { - FlansMod.log("Failed to load images for content pack : " + file.getName()); + FlansMod.log("Failed to register content pack : " + file.getName()); e.printStackTrace(); } // Add the directory to the content pack list - FlansMod.log("Loaded content pack : " + file.getName()); + FlansMod.log("Loaded content pack: " + file.getName()); contentPacks.add(file); } } diff --git a/src/main/java/com/flansmod/client/FlansModClient.java b/src/main/java/com/flansmod/client/FlansModClient.java index 57a42662..0a09edd3 100644 --- a/src/main/java/com/flansmod/client/FlansModClient.java +++ b/src/main/java/com/flansmod/client/FlansModClient.java @@ -385,7 +385,7 @@ public static void tick() { } else { stanceProgress = 1F - (1F - stanceProgress) * 0.66F; } - //FlansMod.log(zoomProgress); + if (minecraft.thePlayer.ridingEntity instanceof IControllable) { inPlane = true; try { diff --git a/src/main/java/com/flansmod/client/TickHandlerClient.java b/src/main/java/com/flansmod/client/TickHandlerClient.java index e753e554..bfb983bb 100644 --- a/src/main/java/com/flansmod/client/TickHandlerClient.java +++ b/src/main/java/com/flansmod/client/TickHandlerClient.java @@ -729,7 +729,7 @@ public void renderTickEnd(Minecraft mc) { GL11.glEnable(2929 /* GL_DEPTH_TEST */); GL11.glEnable(3008 /* GL_ALPHA_TEST */); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - //FlansMod.log(mc.gameSettings.hideGUI); + tickCountFlash++; } else { isInFlash = false; diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index aab4d9ca..3dd8ad04 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -1269,7 +1269,7 @@ public ArrayList getItemsRequired(DriveablePart part, PartType engine if (stack != null) { stacks.add(stack.copy()); } else { - FlansMod.log("Failed to drop item on death of part [%s] on vehicle [%s]", part.type.getShortName(), name); + FlansMod.logPackError("", packName, shortName, "Failed to drop item on death of part " + part.type.getShortName(), null, null); } } } diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 4bab3de6..86c19991 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -272,13 +272,13 @@ public ArrayList getItemsRequired(DriveablePart part, PartType engine stacks.add(new ItemStack(propeller.itemType.item)); } else { - FlansMod.log("Couldn't drop propeller!"); + FlansMod.logPackError("", packName, shortName, "Couldn't drop propeller! Check it is a valid item", null, null); } if (engine.item != null) { stacks.add(new ItemStack(engine.item)); } else { - FlansMod.log("Couldn't drop engine!"); + FlansMod.logPackError("", packName, shortName, "Couldn't drop engine on plane death!", null, null); } } } diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index a12076e3..1243f610 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -207,9 +207,8 @@ protected void read(ConfigMap config, TypeFile file) { } numClips = ConfigUtils.configInt(config, "NumClips", numClips); - } catch (Exception e) { - FlansMod.log("Reading grenade file failed."); - e.printStackTrace(); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error ocurred while reading grenade file", null, ex); } } diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 44008a98..3795bb58 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -533,10 +533,9 @@ protected void read(ConfigMap config, TypeFile file) { recoil.read(split); useFancyRecoil = true; } - } catch (Exception e) { + } catch (Exception ex) { useFancyRecoil = false; - FlansMod.log("Failed to read fancy recoil for " + shortName); - e.printStackTrace(); + FlansMod.logPackError(file.name, packName, shortName, "Failed to read fancy recoil", split, ex); } } recoilYaw = ConfigUtils.configFloat(config, "RecoilYaw", recoilYaw) / 10; diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 655e03ae..d0be926f 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -154,7 +154,7 @@ protected void preRead(TypeFile file) { @Override public void postRead(TypeFile file) { if (shootables.containsKey(shortName)) { - FlansMod.log("Error : " + shortName + " reduplicated"); + FlansMod.logPackError(file.name, packName, shortName, "Shootable with shortname already exists!", null, null); } shootables.put(shortName, this); From 83b70a49c517706407a6ad72045ea128a5690449 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Thu, 11 May 2023 23:22:40 +0100 Subject: [PATCH 24/32] Better model logging, gun box loading might work properly. Still lots to test .-. --- .../java/com/flansmod/client/ClientProxy.java | 9 +- .../java/com/flansmod/common/FlansMod.java | 4 +- .../common/guns/boxes/GunBoxType.java | 142 ++++++++++-------- .../com/flansmod/common/types/InfoType.java | 7 + 4 files changed, 96 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/flansmod/client/ClientProxy.java b/src/main/java/com/flansmod/client/ClientProxy.java index 1492e95b..823d8200 100644 --- a/src/main/java/com/flansmod/client/ClientProxy.java +++ b/src/main/java/com/flansmod/client/ClientProxy.java @@ -41,6 +41,7 @@ import org.lwjgl.input.Mouse; import java.io.File; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; @@ -330,8 +331,12 @@ public T loadModel(String s, String shortName, Class typeClass) { return null; try { return typeClass.cast(Class.forName(getModelName(s)).getConstructor().newInstance()); - } catch (Exception e) { - FlansMod.logPackError("?", "?", shortName, "Failed to load model", null, e); + } catch (InvocationTargetException ex) { + FlansMod.logPackError("?", "?", shortName, "Model is incompatible, or you are in a dev environment", null, ex.getCause()); + } catch (ClassNotFoundException ex) { + FlansMod.logPackError("?", "?", shortName, "Model (probably) not found", null, ex); + } catch (Exception ex) { + FlansMod.logPackError("?", "?", shortName, "Failed to load model (unknown cause)", null, ex); } return null; } diff --git a/src/main/java/com/flansmod/common/FlansMod.java b/src/main/java/com/flansmod/common/FlansMod.java index 7fc037ac..930e1b58 100644 --- a/src/main/java/com/flansmod/common/FlansMod.java +++ b/src/main/java/com/flansmod/common/FlansMod.java @@ -838,14 +838,14 @@ public static void log(Object obj) { } } - public static void logException(String message, Exception ex) { + public static void logException(String message, Throwable ex) { if (printStackTrace) { logger.info(message, ex); } } // To display validation, parsing errors e.t.c. - public static void logPackError(String fileName, String pack, String shortname, String message, String[] split, Exception ex) { + public static void logPackError(String fileName, String pack, String shortname, String message, String[] split, Throwable ex) { FlansMod.log("Error caused by file: %s pack: %s shortname: %s", fileName, pack, shortname); FlansMod.log("\t%s", message); diff --git a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java index 0b5c5958..8d15b021 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java +++ b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; +import com.flansmod.common.guns.GunType; import com.flansmod.utils.ConfigMap; import com.flansmod.utils.ConfigUtils; import net.minecraft.block.Block; @@ -68,87 +69,104 @@ public void postRead(TypeFile file) { } @Override - protected void read(ConfigMap config, TypeFile file) { - super.read(config, file); - try { - //Block Textures - topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); - bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); - sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); - - //GunBox gui customisation - guiTexturePath = ConfigUtils.configString(config, "GuiTexture", guiTexturePath); - gunBoxTextColor = ConfigUtils.configString(config, "GunBoxNameColor", gunBoxTextColor); - pageTextColor = ConfigUtils.configString(config, "PageTextColor", pageTextColor); - itemListTextColor = ConfigUtils.configString(config, "ListTextColor", itemListTextColor); - itemTextColor = ConfigUtils.configString(config, "ItemTextColor", itemTextColor); - buttonTextColor = ConfigUtils.configString(config, "ButtonTextColor", buttonTextColor); - buttonTextHoverColor = ConfigUtils.configString(config, "ButtonTextHighlight", buttonTextHoverColor); - + protected void readLine(String[] split, TypeFile file) { + if (split.length < 1) { + return; + } - if (config.containsKey("Page") || config.containsKey("SetPage")) { - String key = "Page"; - if (config.containsKey("SetPage")) - key = "SetPage"; + String kword = split[0]; - String[] split = ConfigUtils.getSplitFromKey(config, key); + if (kword.equalsIgnoreCase("Page") || kword.equalsIgnoreCase("SetPage")) { + try { //If empty, rename the page. If not, add the current page to list and start next one. - String[] pageNameArray = Arrays.copyOfRange(split, 1, split.length); StringBuilder pageName = new StringBuilder(); - for(int i = 0; i < pageNameArray.length; i++) { - pageName.append(pageNameArray[i]); - if((i + 1) < pageNameArray.length) - { - pageName.append(" "); - } + for(int i = 1; i < split.length; i++) + { + pageName.append(split[i]); + if((i + 1) < split.length) + { + pageName.append(" "); + } } - if(gunEntries[0] != null) { + + if(gunEntries[0] != null) + { currentPage.addGunList(Arrays.copyOf(gunEntries, nextGun + 1)); iteratePage(pageName.toString()); - } else { + } + else + { currentPage.setPageName(pageName.toString()); } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Setting Page name failed", split, ex); } + } - if (config.containsKey("AddGun")) - { - try { - List parts = getRecipe(ConfigUtils.getSplitFromKey(config, "AddGun")); - nextGun++; - if(nextGun > gunEntries.length - 1) - { - currentPage.addGunList(Arrays.copyOf(gunEntries, nextGun)); - iteratePage("Default " + (gunPages.size() + 2)); - nextGun++; - } - gunEntries[nextGun] = new GunBoxEntry(InfoType.getType(config.get("AddGun")), parts); - } catch(Exception e) { - if (FlansMod.printDebugLog) { - FlansMod.log("Failed to add gun %s to box %s", config.get("AddGun"), shortName); - } + if (kword.equalsIgnoreCase("AddGun")) + { + try { + InfoType type = InfoType.getType(split[1]); + + if (type == null) { + FlansMod.logPackError(file.name, packName, shortName, "Unable to find item for gunbox, skipping entry", split, null); + return; } + List parts = getRecipe(split); + nextGun++; + if(nextGun > gunEntries.length - 1) + { + currentPage.addGunList(Arrays.copyOf(gunEntries, nextGun)); + iteratePage("Default " + (gunPages.size() + 2)); + nextGun++; + } + gunEntries[nextGun] = new GunBoxEntry(type, parts); + } catch(Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding gun to GunBox failed", split, ex); } - if (config.containsKey("AddAmmo") || config.containsKey("AddAltAmmo")) { - String key = "AddAmmo"; - if (config.containsKey("AddAltAmmo")) - key = "AddAltAmmo"; - try { - if (InfoType.getType(config.get("key")) != null && InfoType.getType(config.get("key")).item != null) { - gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(InfoType.getType(config.get("key")), getRecipe(ConfigUtils.getSplitFromKey(config, key)))); - } - } catch(Exception e) { - FlansMod.log("Failed to add ammo (%s) to box (%s)", config.get("key"), shortName); + } + + + if (kword.equalsIgnoreCase("AddAmmo") || kword.equalsIgnoreCase("AddAltAmmo") || kword.equalsIgnoreCase("AddAlternateAmmo")) { + try { + InfoType ammoType = InfoType.getType(split[1]); + if (ammoType == null || ammoType.item == null) { + FlansMod.logPackError(file.name, packName, shortName, "Ammo item not found for gunbox, skipping", split, null); + return; } + + gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(InfoType.getType(split[1]), getRecipe(split))); + + } catch(Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding ammo to GunBox failed", split, ex); } + } + } + + @Override + protected void read(ConfigMap config, TypeFile file) { + super.read(config, file); + try { + //Block Textures + topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); + bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); + sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); + //GunBox gui customisation + guiTexturePath = ConfigUtils.configString(config, "GuiTexture", guiTexturePath); + gunBoxTextColor = ConfigUtils.configString(config, "GunBoxNameColor", gunBoxTextColor); + pageTextColor = ConfigUtils.configString(config, "PageTextColor", pageTextColor); + itemListTextColor = ConfigUtils.configString(config, "ListTextColor", itemListTextColor); + itemTextColor = ConfigUtils.configString(config, "ItemTextColor", itemTextColor); + buttonTextColor = ConfigUtils.configString(config, "ButtonTextColor", buttonTextColor); + buttonTextHoverColor = ConfigUtils.configString(config, "ButtonTextHighlight", buttonTextHoverColor); + + // Entry loading MUST happen in order, so cannot be done using the config map. } - catch (Exception e) { - FlansMod.log("Reading gun box file failed : " + shortName); - if (FlansMod.printStackTrace) { - FlansMod.log(e.toString()); - } + catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error thrown while loading GunBox", null, ex); } } diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index dbba9496..74d3c17e 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -119,6 +119,13 @@ else if (line.length() == 1) } } + /** + * This should only be used to read a line at a time, where order matters. + */ + protected void readLine(String[] split, TypeFile file) { + // do nothing + } + /** * Pack reader */ From 14df3a9c790158be5b49e3ad6af8d1c0b309a837 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Sun, 14 May 2023 00:26:27 +0100 Subject: [PATCH 25/32] Better logging, after some testing. Fix a couple parsing issues/improved behaviour and validation. --- .../common/driveables/DriveableType.java | 92 ++++++++++++++----- .../com/flansmod/common/guns/BulletType.java | 8 +- .../flansmod/common/guns/EntityBullet.java | 9 +- .../flansmod/common/guns/EntityGrenade.java | 5 +- .../com/flansmod/common/guns/GunType.java | 12 ++- .../com/flansmod/common/guns/ItemGrenade.java | 4 +- .../com/flansmod/common/guns/ItemGun.java | 5 +- .../common/guns/boxes/GunBoxType.java | 46 ++++++++-- .../common/paintjob/PaintableType.java | 26 +++++- .../com/flansmod/common/parts/PartType.java | 9 +- .../flansmod/common/teams/ArmourBoxType.java | 12 +-- .../com/flansmod/common/tools/ToolType.java | 9 +- .../com/flansmod/common/types/InfoType.java | 35 +++++-- 13 files changed, 212 insertions(+), 60 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 3dd8ad04..c67546bc 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -372,24 +372,26 @@ protected void read(ConfigMap config, TypeFile file) { // Must be read first. try { numPassengers = ConfigUtils.configInt(config, "Passengers", numPassengers); - seats = new Seat[numPassengers + 1]; - try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"Passenger"}); - if (splits.size() != numPassengers) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumPassengers and number of Passengers don't match", null, null); - throw new Exception("Invalid Passenger Definitions"); - // this should be a "disable item" situation - } else { - for (String[] split : splits) { - Seat seat = new Seat(split); - if (seat.id < seats.length) { - seats[seat.id] = seat; - if (seat.gunType != null) { - seat.gunnerID = numPassengerGunners++; - driveableRecipe.add(new ItemStack(seat.gunType.item)); - } + if (splits.size() < numPassengers) { + FlansMod.logPackError(file.name, packName, shortName, "Fewer passenger definitions than NumPassengers. You should check this.", null, null); + numPassengers = splits.size(); + } else if (splits.size() > numPassengers) { + FlansMod.logPackError(file.name, packName, shortName, "More passenger definitions than NumPassengers. You should check this.", null, null); + numPassengers = splits.size(); + } + + seats = new Seat[numPassengers + 1]; + + for (String[] split : splits) { + Seat seat = new Seat(split); + if (seat.id < seats.length) { + seats[seat.id] = seat; + if (seat.gunType != null) { + seat.gunnerID = numPassengerGunners++; + driveableRecipe.add(new ItemStack(seat.gunType.item)); } } } @@ -401,6 +403,12 @@ protected void read(ConfigMap config, TypeFile file) { } int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); + + if (numWheels == 0) { + numWheels = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }).size(); + FlansMod.logPackError(file.name, packName, shortName, "Please specify NumWheels, defaulting to counting wheels", null, null); + } + if (numWheels < 2 || numWheels > 4) { FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumWheels should be either 3 or 4", null, null); throw new Exception("Invalid Wheel Configuration"); @@ -442,9 +450,11 @@ protected void read(ConfigMap config, TypeFile file) { if (splits.size() == 0) { FlansMod.logPackError(file.name, packName, shortName, "No Driver or Pilot configured", null, null); throw new Exception("No Driver/Pilot Configured!"); - } else if (splits.size() > 1) { - FlansMod.logPackError(file.name, packName, shortName, "Multiple Drivers or Pilots configured", null, null); } else { + if (splits.size() > 1) { + FlansMod.logPackError(file.name, packName, shortName, "Multiple Drivers or Pilots configured. Using first.", null, null); + } + String[] split = splits.get(0); if (split.length > 4) @@ -653,8 +663,23 @@ protected void read(ConfigMap config, TypeFile file) { acceptAllAmmo = ConfigUtils.configBool(config, new String[]{ "AllowAllAmmo", "AcceptAllAmmo" }, acceptAllAmmo); - primary = EnumWeaponType.valueOf(ConfigUtils.configString(config, "Primary", primary.name())); - secondary = EnumWeaponType.valueOf(ConfigUtils.configString(config, "Secondary", secondary.name())); + String line = ConfigUtils.configString(config, "Primary", null); + try { + if (line != null) { + primary = EnumWeaponType.valueOf(line.toUpperCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Primary weapon type not known", new String[] { "Primary", line }, ex); + } + + line = ConfigUtils.configString(config, "Secondary", null); + try { + if (line != null) { + secondary = EnumWeaponType.valueOf(line.toUpperCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Secondary weapon type not known", new String[] { "Secondary", line }, ex); + } damageMultiplierPrimary = ConfigUtils.configFloat(config, "DamageMultiplierPrimary", damageMultiplierPrimary); damageMultiplierSecondary = ConfigUtils.configFloat(config, "DamageMultiplierSecondary", damageMultiplierSecondary); @@ -677,8 +702,24 @@ protected void read(ConfigMap config, TypeFile file) { alternatePrimary = ConfigUtils.configBool(config, "AlternatePrimary", alternatePrimary); alternateSecondary = ConfigUtils.configBool(config, "AlternateSecondary", alternateSecondary); - modePrimary = EnumFireMode.valueOf(ConfigUtils.configString(config, "ModePrimary", EnumFireMode.FULLAUTO.name())); - modeSecondary = EnumFireMode.valueOf(ConfigUtils.configString(config, "ModeSecondary", EnumFireMode.FULLAUTO.name())); + line = ConfigUtils.configString(config, "ModePrimary", null); + try { + if (line != null) { + modePrimary = EnumFireMode.valueOf(line.toUpperCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Primary weapon fire mode not known", new String[] { "PrimaryMode", line }, ex); + } + + + line = ConfigUtils.configString(config, "ModeSecondary", null); + try { + if (line != null) { + modeSecondary = EnumFireMode.valueOf(line.toUpperCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Secondary weapon fire mode not known", new String[] { "SecondaryMode", line }, ex); + } bulletSpeed = ConfigUtils.configFloat(config, "BulletSpeed", bulletSpeed); @@ -874,6 +915,8 @@ else if (split.length == 7) if (potentialPart != null) { stacks.add(potentialPart); driveableRecipe.add(potentialPart); + } else { + FlansMod.logPackError(file.name, packName, shortName, "Item not found for AddRecipeParts", split, null); } } @@ -1057,11 +1100,16 @@ else if (split.length == 7) for (String[] split : splits) { try { + int seatId = Integer.parseInt(split[1]); + float x = Float.parseFloat(split[2]) / 16F; float y = Float.parseFloat(split[3]) / 16F; float z = Float.parseFloat(split[4]) / 16F; - if (seats[Integer.parseInt(split[1])] != null) + if (seatId < seats.length && seats[seatId] != null) { seats[Integer.parseInt(split[1])].gunOrigin = new Vector3f(x, y, z); + } else { + FlansMod.logPackError(file.name, packName, shortName, "Passenger seat not found for GunOrigin", split, null); + } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName,"Could not set GunOrigin", split, ex); } diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 460c4338..6a85981b 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -191,8 +191,12 @@ else if (config.containsKey("Missile")) weaponType = EnumWeaponType.MISSILE; else if (config.containsKey("WeaponType")) { String line = ConfigUtils.configString(config, "WeaponType", "Bomb"); - if (line != null) { - weaponType = EnumWeaponType.valueOf(line.toUpperCase()); + try { + if (line != null) { + weaponType = EnumWeaponType.valueOf(line.toUpperCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "WeaponType not known in BulletType", new String[] { "WeaponType", line}, ex); } } diff --git a/src/main/java/com/flansmod/common/guns/EntityBullet.java b/src/main/java/com/flansmod/common/guns/EntityBullet.java index 0eb285ce..fe46b8a5 100644 --- a/src/main/java/com/flansmod/common/guns/EntityBullet.java +++ b/src/main/java/com/flansmod/common/guns/EntityBullet.java @@ -1253,7 +1253,9 @@ public void setDead() { itemName = itemName.split("\\.")[0]; } ItemStack dropStack = InfoType.getRecipeElement(itemName, damage); - entityDropItem(dropStack, 1.0F); + if (dropStack != null) { + entityDropItem(dropStack, 1.0F); + } } } catch (Exception e) { // FlansMod.log("EntityBullet.setDead() Error ("+this+")"); @@ -1355,7 +1357,10 @@ public void detonate() { itemName = itemName.split("\\.")[0]; } ItemStack dropStack = InfoType.getRecipeElement(itemName, damage); - entityDropItem(dropStack, 1.0F); + + if (dropStack != null) { + entityDropItem(dropStack, 1.0F); + } } } diff --git a/src/main/java/com/flansmod/common/guns/EntityGrenade.java b/src/main/java/com/flansmod/common/guns/EntityGrenade.java index 06e9fc08..1f2f40a9 100644 --- a/src/main/java/com/flansmod/common/guns/EntityGrenade.java +++ b/src/main/java/com/flansmod/common/guns/EntityGrenade.java @@ -567,7 +567,10 @@ public void detonate() itemName = itemName.split("\\.")[0]; } ItemStack dropStack = InfoType.getRecipeElement(itemName, damage); - entityDropItem(dropStack, 1.0F); + + if (dropStack != null) { + entityDropItem(dropStack, 1.0F); + } } //Start smoke counter diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 3795bb58..544ec069 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -572,9 +572,17 @@ protected void read(ConfigMap config, TypeFile file) { dropItemOnShoot = config.get("DropItemOnShoot"); numBurstRounds = ConfigUtils.configInt(config, "NumBurstRounds", numBurstRounds); minigunStartSpeed = ConfigUtils.configFloat(config, "MinigunStartSpeed", minigunStartSpeed); - if (config.containsKey("ItemUseAction")) { - itemUseAction = EnumAction.valueOf(config.get("ItemUseAction").toLowerCase()); + + String line = ConfigUtils.configString(config, "ItemUseAction", null); + try { + if (line != null) { + itemUseAction = EnumAction.valueOf(line.toLowerCase()); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "ItemUseAction not recognised in gun", new String[] { "ItemUseAction", line }, ex); } + + // This is needed, because the presence of the value overrides the default value of zero. if (config.containsKey("HipFireWhileSprinting")) hipFireWhileSprinting = Boolean.parseBoolean(config.get("HipFireWhileSprinting").toLowerCase()) ? 1 : 2; diff --git a/src/main/java/com/flansmod/common/guns/ItemGrenade.java b/src/main/java/com/flansmod/common/guns/ItemGrenade.java index 758d3280..8af2217f 100644 --- a/src/main/java/com/flansmod/common/guns/ItemGrenade.java +++ b/src/main/java/com/flansmod/common/guns/ItemGrenade.java @@ -83,7 +83,9 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla itemName = itemName.split("\\.")[0]; } ItemStack dropStack = InfoType.getRecipeElement(itemName, damage); - world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, dropStack)); + if (dropStack != null) { + world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, dropStack)); + } } } return stack; diff --git a/src/main/java/com/flansmod/common/guns/ItemGun.java b/src/main/java/com/flansmod/common/guns/ItemGun.java index bab0a8a1..66da53b2 100644 --- a/src/main/java/com/flansmod/common/guns/ItemGun.java +++ b/src/main/java/com/flansmod/common/guns/ItemGun.java @@ -1351,7 +1351,10 @@ public static void dropItem(World world, Entity entity, String itemName) { itemName = itemName.split("\\.")[0]; } ItemStack dropStack = InfoType.getRecipeElement(itemName, damage); - entity.entityDropItem(dropStack, 0.5F); + + if (dropStack != null) { + entity.entityDropItem(dropStack, 0.5F); + } } } diff --git a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java index 8d15b021..be938893 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java +++ b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; +import com.flansmod.client.FlansModClient; import com.flansmod.common.guns.GunType; import com.flansmod.utils.ConfigMap; import com.flansmod.utils.ConfigUtils; @@ -195,10 +196,18 @@ public List getRecipe(String[] split) { List recipe = new ArrayList(); for (int i = 0; i < (split.length - 2) / 2; i++) { - if (split[i * 2 + 3].contains(".")) - recipe.add(getRecipeElement(split[i * 2 + 3].split("\\.")[0], Integer.parseInt(split[i * 2 + 2]), Integer.valueOf(split[i * 2 + 3].split("\\.")[1]), shortName)); - else - recipe.add(getRecipeElement(split[i * 2 + 3], Integer.parseInt(split[i * 2 + 2]), 0, shortName)); + ItemStack recipeElement = null; + if (split[i * 2 + 3].contains(".")) { + recipeElement = getRecipeElement(split[i * 2 + 3].split("\\.")[0], Integer.parseInt(split[i * 2 + 2]), Integer.valueOf(split[i * 2 + 3].split("\\.")[1]), shortName); + } else { + recipeElement = getRecipeElement(split[i * 2 + 3], Integer.parseInt(split[i * 2 + 2]), 0, shortName); + } + + if (recipeElement != null) { + recipe.add(recipeElement); + } else { + FlansMod.logPackError(null, packName, shortName, "Could not find item for recipe", split, null); + } } return recipe; @@ -208,7 +217,13 @@ public List getRecipe(String[] split) { @Override public void addRecipe(Item par1Item) { if (smeltableFrom != null) { - GameRegistry.addSmelting(getRecipeElement(smeltableFrom, 0), new ItemStack(item), 0.0F); + ItemStack recipeElement = getRecipeElement(smeltableFrom, 0); + + if (recipeElement != null) { + GameRegistry.addSmelting(recipeElement, new ItemStack(item), 0.0F); + } else { + FlansMod.logPackError(null, packName, shortName, "Could not find item for SmeltableFrom", null, null); + } } if (recipeLine == null) return; @@ -276,20 +291,33 @@ public void addRecipe(Item par1Item) { recipe[i * 2 + rows] = recipeLine[i * 2 + 1].charAt(0); // Split ID with . and if it contains a second part, use it // as damage value. + ItemStack recipeElement = null; if (recipeLine[i * 2 + 2].contains(".")) - recipe[i * 2 + rows + 1] = getRecipeElement(recipeLine[i * 2 + 2].split("\\.")[0], Integer.valueOf(recipeLine[i * 2 + 2].split("\\.")[1])); + recipeElement = getRecipeElement(recipeLine[i * 2 + 2].split("\\.")[0], Integer.valueOf(recipeLine[i * 2 + 2].split("\\.")[1])); else - recipe[i * 2 + rows + 1] = getRecipeElement(recipeLine[i * 2 + 2], 0); + recipeElement = getRecipeElement(recipeLine[i * 2 + 2], 0); + + if (recipeElement == null) { + FlansMod.logPackError(null, packName, shortName, "Could not find item for recipe", new String[] { recipeLine[i * 2 + 2] }, null); + } + recipe[i * 2 + rows + 1] = recipeElement; } GameRegistry.addRecipe(new ItemStack(block, recipeOutput, 0), recipe); } else { recipe = new Object[recipeLine.length - 1]; for (int i = 0; i < (recipeLine.length - 1); i++) { + ItemStack recipeElement = null; if (recipeLine[i + 1].contains(".")) - recipe[i] = getRecipeElement(recipeLine[i + 1].split("\\.")[0], Integer.valueOf(recipeLine[i + 1].split("\\.")[1])); + recipeElement = getRecipeElement(recipeLine[i + 1].split("\\.")[0], Integer.valueOf(recipeLine[i + 1].split("\\.")[1])); else - recipe[i] = getRecipeElement(recipeLine[i + 1], 0); + recipeElement = getRecipeElement(recipeLine[i + 1], 0); + + if (recipeElement == null) { + FlansModClient.logPackError(null, packName, shortName, "Could not find item for recipe", new String[] { recipeLine[i+1] }, null); + } + + recipe[i] = recipeElement; } GameRegistry.addShapelessRecipe(new ItemStack(block, recipeOutput, 0), recipe); } diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index e134b14e..4e1c8b9b 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -62,8 +62,16 @@ protected void read(ConfigMap config, TypeFile file) try { int numDyes = (split.length - 2) / 2; ItemStack[] dyeStacks = new ItemStack[numDyes]; - for(int i = 0; i < numDyes; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 4]), getDyeDamageValue(split[i * 2 + 3])); + for(int i = 0; i < numDyes; i++) { + int dyeID = getDyeDamageValue(split[i * 2 + 3]); + + if (dyeID == -1) { + FlansMod.logPackError(file.name, packName, shortName, "Unknown dye name for Paintjob", split, null); + } + + // Do different behaviour here? + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 4]), dyeID); + } if(split[1].contains("_")) { @@ -81,8 +89,18 @@ protected void read(ConfigMap config, TypeFile file) for (String[] split : lines) { try { ItemStack[] dyeStacks = new ItemStack[(split.length - 4) / 2]; - for(int i = 0; i < (split.length - 4) / 2; i++) - dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), getDyeDamageValue(split[i * 2 + 4])); + for(int i = 0; i < (split.length - 4) / 2; i++) { + int dyeID = getDyeDamageValue(split[i * 2 + 4]); + + if (dyeID == -1) { + FlansMod.logPackError(file.name, packName, shortName, "Unknown dye name for AdvPaintjob", split, null); + } + + // Do different behaviour here? + dyeStacks[i] = new ItemStack(Items.dye, Integer.parseInt(split[i * 2 + 5]), dyeID); + } + + paintjobs.add(new Paintjob(nextPaintjobID++, split[1], split[2], split[3], dyeStacks, true)); } catch (Exception e) { FlansMod.logPackError(file.name, packName, shortName, "Reading advanced paintjob line failed", split, e); diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index b4aaaf7a..9d03af29 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -132,7 +132,14 @@ protected void read(ConfigMap config, TypeFile file) { boolean damaged = split[2 * i + 3].contains("."); String itemName = damaged ? split[2 * i + 3].split("\\.")[0] : split[2 * i + 3]; int damage = damaged ? Integer.parseInt(split[2 * i + 3].split("\\.")[1]) : 0; - stacks[i] = getRecipeElement(itemName, amount, damage, shortName); + + ItemStack recipeElement = getRecipeElement(itemName, amount, damage, shortName); + + if (recipeElement == null) { + FlansMod.logPackError(file.name, packName, shortName, "Could not find item for PartBoxRecipe", split, null); + } + + stacks[i] = recipeElement; } partBoxRecipe.addAll(Arrays.asList(stacks)); } diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 0fd47d5e..1b316282 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -80,16 +80,16 @@ protected void read(ConfigMap config, TypeFile file) entry.armours[i] = ArmourType.getArmourType(lineSplit[0]); for(int j = 0; j < (lineSplit.length - 1) / 2; j++) { - ItemStack stack; + ItemStack recipeElement = null; if(lineSplit[j * 2 + 1].contains(".")) - stack = getRecipeElement(lineSplit[j * 2 + 1].split("\\.")[0], Integer.parseInt(lineSplit[j * 2 + 2]), Integer.parseInt(lineSplit[j * 2 + 1].split("\\.")[1]), shortName); + recipeElement = getRecipeElement(lineSplit[j * 2 + 1].split("\\.")[0], Integer.parseInt(lineSplit[j * 2 + 2]), Integer.parseInt(lineSplit[j * 2 + 1].split("\\.")[1]), shortName); else - stack = getRecipeElement(lineSplit[j * 2 + 1], Integer.parseInt(lineSplit[j * 2 + 2]), 0, shortName); + recipeElement = getRecipeElement(lineSplit[j * 2 + 1], Integer.parseInt(lineSplit[j * 2 + 2]), 0, shortName); - if(stack != null) { - entry.requiredStacks[i].add(stack); + if(recipeElement != null) { + entry.requiredStacks[i].add(recipeElement); } else { - if (FlansMod.printDebugLog) { FlansMod.log("Could not add part %s to %s in armourbox %s", lineSplit[j * 2 + 1], name.toString(), shortName); } + FlansMod.logPackError(file.name, packName, shortName, "Could not find item for armour recipe", split, null); } } } diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index 2cac2edf..78b5c6d0 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -88,7 +88,14 @@ protected void read(ConfigMap config, TypeFile file) boolean damaged = split[2 * i + 2].contains("."); String itemName = damaged ? split[2 * i + 2].split("\\.")[0] : split[2 * i + 2]; int damage = damaged ? Integer.parseInt(split[2 * i + 2].split("\\.")[1]) : 0; - rechargeRecipe.add(getRecipeElement(itemName, amount, damage, shortName)); + + ItemStack recipeElement = getRecipeElement(itemName, amount, damage, shortName); + + if (recipeElement != null) { + rechargeRecipe.add(recipeElement); + } else { + FlansMod.logPackError(file.name, packName, shortName, "Could not find item for RechargeRecipe", split, null); + } } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Couldn't add recharge recipe", split, ex); diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index 74d3c17e..e11c8951 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -174,7 +174,13 @@ public void addRecipe() { */ public void addRecipe(Item par1Item) { if (smeltableFrom != null) { - GameRegistry.addSmelting(getRecipeElement(smeltableFrom, 0), new ItemStack(item), 0.0F); + ItemStack recipeElement = getRecipeElement(smeltableFrom, 0); + + if (recipeElement != null) { + GameRegistry.addSmelting(recipeElement, new ItemStack(item), 0.0F); + } else { + FlansMod.logPackError(null, packName, shortName, "Could not find item for SmeltableFrom", new String[] { smeltableFrom }, null); + } } if (recipeLine == null) return; @@ -238,20 +244,36 @@ public void addRecipe(Item par1Item) { recipe[i * 2 + rows] = recipeLine[i * 2 + 1].charAt(0); // Split ID with . and if it contains a second part, use it // as damage value. + ItemStack recipeElement = null; + if (recipeLine[i * 2 + 2].contains(".")) - recipe[i * 2 + rows + 1] = getRecipeElement(recipeLine[i * 2 + 2].split("\\.")[0], Integer.parseInt(recipeLine[i * 2 + 2].split("\\.")[1])); + recipeElement = getRecipeElement(recipeLine[i * 2 + 2].split("\\.")[0], Integer.parseInt(recipeLine[i * 2 + 2].split("\\.")[1])); else - recipe[i * 2 + rows + 1] = getRecipeElement(recipeLine[i * 2 + 2], 0); + recipeElement = getRecipeElement(recipeLine[i * 2 + 2], 0); + + if (recipeElement == null) { + FlansMod.logPackError(null, packName, shortName, "Could not find item for recipe", new String[] { recipeLine[i * 2 + 2] }, null); + } + + recipe[i * 2 + rows + 1] = recipeElement; } GameRegistry.addRecipe(new ItemStack(item, recipeOutput), recipe); } else { recipe = new Object[recipeLine.length - 1]; for (int i = 0; i < (recipeLine.length - 1); i++) { + ItemStack recipeElement = null; + if (recipeLine[i + 1].contains(".")) - recipe[i] = getRecipeElement(recipeLine[i + 1].split("\\.")[0], Integer.parseInt(recipeLine[i + 1].split("\\.")[1])); + recipeElement = getRecipeElement(recipeLine[i + 1].split("\\.")[0], Integer.parseInt(recipeLine[i + 1].split("\\.")[1])); else - recipe[i] = getRecipeElement(recipeLine[i + 1], 0); + recipeElement = getRecipeElement(recipeLine[i + 1], 0); + + if (recipeElement == null) { + FlansMod.logPackError(null, packName, shortName, "Could not find item for recipe", new String[] { recipeLine[i+1] }, null); + } + + recipe[i] = recipeElement; } GameRegistry.addShapelessRecipe(new ItemStack(item, recipeOutput), recipe); } @@ -294,7 +316,6 @@ public static ItemStack getRecipeElement(String s, int amount, int damage, Strin return new ItemStack(Items.iron_ingot, amount); } - FlansMod.log("Could not find " + s + " when adding recipe for " + requester); return null; } @@ -307,8 +328,6 @@ protected int getDyeDamageValue(String dyeName) { if (ItemDye.field_150923_a[i].equals(dyeName)) damage = i; } - if (damage == -1) - FlansMod.log("Failed to find dye colour : " + dyeName + " while adding " + packName); return damage; } From 255874b3fcc540ade402450dcfdb1e01d561588d Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 17 May 2023 00:18:21 +0100 Subject: [PATCH 26/32] Misc config rewrite related stuff, better logging and more stable handling of passengers + wheels. Discovered ShootableType needs a rework. --- .../common/driveables/DriveableType.java | 83 ++++++++++--------- .../flansmod/common/driveables/PlaneType.java | 6 +- .../driveables/mechas/MechaItemType.java | 5 +- .../com/flansmod/common/guns/AAGunType.java | 3 +- .../flansmod/common/guns/AttachmentType.java | 3 +- .../com/flansmod/common/guns/GunType.java | 22 ++--- .../flansmod/common/guns/ShootableType.java | 14 ++-- .../com/flansmod/common/teams/ArmourType.java | 5 +- .../com/flansmod/common/types/InfoType.java | 2 +- 9 files changed, 66 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index c67546bc..541e1c9b 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -1,6 +1,7 @@ package com.flansmod.common.driveables; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -371,17 +372,18 @@ protected void read(ConfigMap config, TypeFile file) { // Must be read first. try { - numPassengers = ConfigUtils.configInt(config, "Passengers", numPassengers); - try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[]{"Passenger"}); - if (splits.size() < numPassengers) { - FlansMod.logPackError(file.name, packName, shortName, "Fewer passenger definitions than NumPassengers. You should check this.", null, null); - numPassengers = splits.size(); - } else if (splits.size() > numPassengers) { - FlansMod.logPackError(file.name, packName, shortName, "More passenger definitions than NumPassengers. You should check this.", null, null); - numPassengers = splits.size(); - } + // numpassengers from config isn't really needed, we can just count instead. + numPassengers = splits.size(); + + //if (splits.size() < numPassengers) { + // FlansMod.logPackError(file.name, packName, shortName, "Fewer passenger definitions than NumPassengers. You should check this.", null, null); + // numPassengers = splits.size(); + //} else if (splits.size() > numPassengers) { + // FlansMod.logPackError(file.name, packName, shortName, "More passenger definitions than NumPassengers. You should check this.", null, null); + // numPassengers = splits.size(); + //} seats = new Seat[numPassengers + 1]; @@ -402,31 +404,30 @@ protected void read(ConfigMap config, TypeFile file) { // this should be a "disable item" situation } - int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); - - if (numWheels == 0) { - numWheels = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }).size(); - FlansMod.logPackError(file.name, packName, shortName, "Please specify NumWheels, defaulting to counting wheels", null, null); - } - - if (numWheels < 2 || numWheels > 4) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumWheels should be either 3 or 4", null, null); - throw new Exception("Invalid Wheel Configuration"); - } else { - wheelPositions = new DriveablePosition[numWheels]; - } + // numWheels from config can just be ignored at this point. + //int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); //Wheels try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); - if (splits.size() != wheelPositions.length) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error: NumWheels differs from number of wheels configured", null, null); + int numWheels = splits.size(); + + if (numWheels < 2 || numWheels > 4) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: Either 3 or 4 wheels are required", null, null); throw new Exception("Invalid Wheel Configuration"); + } else { + wheelPositions = new DriveablePosition[numWheels]; } + int counter = 0; for (String[] split : splits) { int wheelIndex = Integer.parseInt(split[1]); + if (wheelIndex >= numWheels) { + FlansMod.logPackError(file.name, packName, shortName, "Incorrect wheel index given, defaulting to counting.", split, null); + wheelIndex = counter; + } + float x = Float.parseFloat(split[2]) / 16F; float y = Float.parseFloat(split[3]) / 16F; float z = Float.parseFloat(split[4]) / 16F; @@ -438,6 +439,8 @@ protected void read(ConfigMap config, TypeFile file) { DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); wheelPositions[wheelIndex] = wheelPosition; + + counter++; } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Fatal error thrown while parsing wheels", null, ex); @@ -471,8 +474,7 @@ protected void read(ConfigMap config, TypeFile file) { // this should be a "disable item" situation } - if (FMLCommonHandler.instance().getSide().isClient()) - model = FlansMod.proxy.loadModel(ConfigUtils.configString(config, "Model", null), shortName, ModelDriveable.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelDriveable.class); vehicleGunModelScale = ConfigUtils.configFloat(config, "VehicleGunModelScale", vehicleGunModelScale); reloadSoundTick = ConfigUtils.configInt(config, "VehicleGunReloadTick", reloadSoundTick); @@ -837,25 +839,24 @@ protected void read(ConfigMap config, TypeFile file) { for (String[] split : splits) { try { - DriveablePosition rootPos; - Vector3f offPos; secondary = EnumWeaponType.GUN; - PilotGun pilotGun; - if (split.length == 6) { // TODO: Refactor this.. - rootPos = (PilotGun) getShootPoint(split); - offPos = new Vector3f(0, 0, 0); - pilotGun = (PilotGun) getShootPoint(split); + if (split.length == 6 || split.length == 9) { + PilotGun pilotGun = new PilotGun(Arrays.copyOfRange(split, 0, 6)); + Vector3f offPos = split.length == 6 ? Vector3f.Zero : new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + + if (pilotGun.type == null) { + // The gun type is not found, skip. + FlansMod.logPackError(file.name, packName, shortName, "Could not find gun type for AddGun. Skipping.", split, null); + } else { + ShootPoint sPoint = new ShootPoint(pilotGun, offPos); + shootPointsSecondary.add(sPoint); + pilotGuns.add(pilotGun); + driveableRecipe.add(new ItemStack(pilotGun.type.item)); + } } else { - String[] gun = new String[]{split[0], split[1], split[2], split[3], split[4], split[5]}; - rootPos = (PilotGun) getShootPoint(gun); - pilotGun = (PilotGun) getShootPoint(gun); - offPos = new Vector3f(Float.parseFloat(split[6]) / 16F, Float.parseFloat(split[7]) / 16F, Float.parseFloat(split[8]) / 16F); + FlansMod.logPackError(file.name, packName, shortName, "AddGun not in correct format. Skipping.", split, null); } - ShootPoint sPoint = new ShootPoint(rootPos, offPos); - shootPointsSecondary.add(sPoint); - pilotGuns.add(pilotGun); - driveableRecipe.add(new ItemStack(pilotGun.type.item)); } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding pilot gun with AddGun", split, ex); } diff --git a/src/main/java/com/flansmod/common/driveables/PlaneType.java b/src/main/java/com/flansmod/common/driveables/PlaneType.java index 86c19991..02bfb6f0 100644 --- a/src/main/java/com/flansmod/common/driveables/PlaneType.java +++ b/src/main/java/com/flansmod/common/driveables/PlaneType.java @@ -163,7 +163,11 @@ protected void read(ConfigMap config, TypeFile file) { propellers.add(propeller); } - driveableRecipe.add(new ItemStack(propeller.itemType.item)); + if (propeller.itemType == null) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't find item for propeller, not adding to recipe.", split, null); + } else { + driveableRecipe.add(new ItemStack(propeller.itemType.item)); + } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Adding propeller failed", split, ex); } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java index 4c6dd4d3..31b5e34c 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java @@ -76,8 +76,6 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - String modelString = ConfigUtils.configString(config, "Model", ""); - model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); texture = ConfigUtils.configString(config, "Texture", texture); @@ -128,8 +126,7 @@ protected void read(ConfigMap config, TypeFile file) { } public void reloadModel() { - if(modelString != null) - model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); } @Override diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index e2be9f5d..db0d44e5 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -65,8 +65,7 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAAGun.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelAAGun.class); texture = ConfigUtils.configString(config, "Texture", texture); damage = ConfigUtils.configInt(config, "Damage", damage); diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index f3587a73..38efb22d 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -134,8 +134,7 @@ protected void read(ConfigMap config, TypeFile file) { if (config.containsKey("AttachmentType")) type = EnumAttachmentType.get(config.get("AttachmentType")); - if(FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("Model"))) - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelAttachment.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelAttachment.class); // This is read in InfoType //modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 544ec069..15a75ed7 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -662,24 +662,16 @@ protected void read(ConfigMap config, TypeFile file) { deployable = ConfigUtils.configBool(config, "Deployable", deployable); - if (FMLCommonHandler.instance().getSide().isClient() && deployable && config.containsKey("DeployedModel")) { - deployableModel = FlansMod.proxy.loadModel(config.get("DeployedModel"), shortName, ModelMG.class); - deployableModelString = config.get("DeployedModel"); - } + deployableModelString = ConfigUtils.configString(configMap, "DeployedModel", null); + deployableModel = FlansMod.proxy.loadModel(deployableModelString, shortName, ModelMG.class); - if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("Model"))) { - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelGun.class); - } + model = FlansMod.proxy.loadModel(modelString, shortName, ModelGun.class); - if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("CasingModel"))) { - casingModel = FlansMod.proxy.loadModel(config.get("CasingModel"), shortName, ModelCasing.class); - casingModelString = config.get("CasingModel"); - } + casingModelString = ConfigUtils.configString(config, "CasingModel", null); + casingModel = FlansMod.proxy.loadModel(casingModelString, shortName, ModelCasing.class); - if (FMLCommonHandler.instance().getSide().isClient() && (config.containsKey("FlashModel"))) { - flashModel = FlansMod.proxy.loadModel(config.get("FlashModel"), shortName, ModelFlash.class); - flashModelString = config.get("FlashModel"); - } + flashModelString = ConfigUtils.configString(config, "FlashModel", null); + flashModel = FlansMod.proxy.loadModel(flashModelString, shortName, ModelFlash.class); casingTexture = config.get("CasingTexture"); flashTexture = config.get("FlashTexture"); diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index d0be926f..ce6aae53 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -173,17 +173,15 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); //Model and Texture - if (FMLCommonHandler.instance().getSide().isClient() && config.containsKey("Model")) { - model = FlansMod.proxy.loadModel(config.get("Model"), shortName, ModelBase.class); - } - if (configMap.containsKey("Texture")) - texture = config.get("Texture"); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelBase.class); + + texture = ConfigUtils.configString(config, "Texture", texture); //Item Stuff maxStackSize = ConfigUtils.configInt(config, new String[]{"StackSize", "MaxStackSize"}, maxStackSize); - dropItemOnShoot = config.get("DropItemOnShoot"); - dropItemOnReload = config.get("DropItemOnReload"); - dropItemOnHit = config.get("DropItemOnHit"); + dropItemOnShoot = ConfigUtils.configString(config, "DropItemOnShoot", dropItemOnShoot); + dropItemOnReload = ConfigUtils.configString(config, "DropItemOnReload", dropItemOnReload); + dropItemOnHit = ConfigUtils.configString(config, "DropItemOnHit", dropItemOnHit); roundsPerItem = ConfigUtils.configInt(config, "RoundsPerItem", roundsPerItem); //Physics diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index 4f06b6af..5e23669c 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -103,9 +103,8 @@ protected void postRead(TypeFile file) { protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - String modelName = ConfigUtils.configString(config, "Model", null); - if (modelName != null) { - model = FlansMod.proxy.loadModel(modelName, shortName, ModelCustomArmour.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelCustomArmour.class); + if (model != null) { model.type = this; } diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index e11c8951..a84bb8f9 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -131,7 +131,7 @@ protected void readLine(String[] split, TypeFile file) { */ protected void read(ConfigMap config, TypeFile file) { // Model stuff - modelString = ConfigUtils.configString(configMap, "Model", modelString); + modelString = ConfigUtils.configString(configMap, "Model", null); modelScale = ConfigUtils.configFloat(configMap, "ModelScale", modelScale); // Text stuff From 3cb5d9fd36ee0e56b4c965a3dfc8dfe5c999dc72 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 31 May 2023 17:29:43 +0100 Subject: [PATCH 27/32] Still more config rewrite. More testing and looking for issues next. --- .../common/driveables/DriveableType.java | 65 +++-- .../com/flansmod/common/guns/AAGunType.java | 8 +- .../flansmod/common/guns/AttachmentType.java | 32 ++- .../com/flansmod/common/guns/BulletType.java | 9 +- .../com/flansmod/common/guns/GrenadeType.java | 26 +- .../com/flansmod/common/guns/GunType.java | 268 ++++++++++-------- .../flansmod/common/guns/ShootableType.java | 18 +- .../com/flansmod/common/parts/PartType.java | 59 ++-- .../flansmod/common/teams/PlayerClass.java | 78 ++--- .../java/com/flansmod/common/teams/Team.java | 4 +- .../com/flansmod/common/tools/ToolType.java | 28 +- 11 files changed, 347 insertions(+), 248 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 541e1c9b..548e31b3 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; +import com.flansmod.common.driveables.mechas.MechaType; import com.flansmod.utils.ConfigMap; import com.flansmod.utils.ConfigUtils; import net.minecraft.block.material.Material; @@ -408,46 +409,50 @@ protected void read(ConfigMap config, TypeFile file) { //int numWheels = ConfigUtils.configInt(config, "NumWheels", 0); //Wheels - try { - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); - - int numWheels = splits.size(); + // This is bad design, but Mechas do not have or need wheels. + if (!(this instanceof MechaType)) { + try { + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Wheel", "WheelPosition" }); - if (numWheels < 2 || numWheels > 4) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error: Either 3 or 4 wheels are required", null, null); - throw new Exception("Invalid Wheel Configuration"); - } else { - wheelPositions = new DriveablePosition[numWheels]; - } + int numWheels = splits.size(); - int counter = 0; - for (String[] split : splits) { - int wheelIndex = Integer.parseInt(split[1]); - if (wheelIndex >= numWheels) { - FlansMod.logPackError(file.name, packName, shortName, "Incorrect wheel index given, defaulting to counting.", split, null); - wheelIndex = counter; + if (numWheels < 2 || numWheels > 4) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error: Either 3 or 4 wheels are required", null, null); + throw new Exception("Invalid Wheel Configuration"); + } else { + wheelPositions = new DriveablePosition[numWheels]; } - float x = Float.parseFloat(split[2]) / 16F; - float y = Float.parseFloat(split[3]) / 16F; - float z = Float.parseFloat(split[4]) / 16F; + int counter = 0; + for (String[] split : splits) { + int wheelIndex = Integer.parseInt(split[1]); + if (wheelIndex >= numWheels) { + FlansMod.logPackError(file.name, packName, shortName, "Incorrect wheel index given, defaulting to counting.", split, null); + wheelIndex = counter; + } - EnumDriveablePart part = EnumDriveablePart.coreWheel; - if (split.length > 5) { - part = EnumDriveablePart.getPart(split[5]); - } + float x = Float.parseFloat(split[2]) / 16F; + float y = Float.parseFloat(split[3]) / 16F; + float z = Float.parseFloat(split[4]) / 16F; - DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); - wheelPositions[wheelIndex] = wheelPosition; + EnumDriveablePart part = EnumDriveablePart.coreWheel; + if (split.length > 5) { + part = EnumDriveablePart.getPart(split[5]); + } - counter++; - } - } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error thrown while parsing wheels", null, ex); + DriveablePosition wheelPosition = new DriveablePosition(new Vector3f(x, y, z), part); + wheelPositions[wheelIndex] = wheelPosition; - throw new Exception("Invalid Wheel Configuration"); + counter++; + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Fatal error thrown while parsing wheels", null, ex); + + throw new Exception("Invalid Wheel Configuration"); + } } + try { ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Driver", "Pilot" }); if (splits.size() == 0) { diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index db0d44e5..55e228c8 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -130,9 +130,11 @@ protected void read(ConfigMap config, TypeFile file) { try { String[] split = ConfigUtils.getSplitFromKey(config, "GunnerPos"); - gunnerX = Integer.parseInt(split[1]); - gunnerY = Integer.parseInt(split[2]); - gunnerZ = Integer.parseInt(split[3]); + if (split != null) { + gunnerX = Integer.parseInt(split[1]); + gunnerY = Integer.parseInt(split[2]); + gunnerZ = Integer.parseInt(split[3]); + } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Setting gunner position failed", null, ex); } diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index 38efb22d..47e39f92 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -129,10 +129,10 @@ public AttachmentType(TypeFile file) @Override protected void read(ConfigMap config, TypeFile file) { try { - super.read(config, file); - if (config.containsKey("AttachmentType")) - type = EnumAttachmentType.get(config.get("AttachmentType")); + + String typeString = ConfigUtils.configString(config, "AttachmentType", type.toString()); + type = EnumAttachmentType.get(typeString); model = FlansMod.proxy.loadModel(modelString, shortName, ModelAttachment.class); @@ -148,9 +148,11 @@ protected void read(ConfigMap config, TypeFile file) { flashlightStrength = ConfigUtils.configInt(config, "FlashlightStrength", flashlightStrength); //Mode override - if(config.containsKey("ModeOverride")) - modeOverride = EnumFireMode.getFireMode(config.get("ModeOverride")); -// + String modeOverrideString = ConfigUtils.configString(config, "ModeOverride", null); + if (modeOverrideString != null) { + modeOverride = EnumFireMode.getFireMode(modeOverrideString); + } + //Secondary Stuff secondaryFire = ConfigUtils.configBool(config, "SecondaryMode", secondaryFire); //todo fix multiples @@ -165,8 +167,12 @@ protected void read(ConfigMap config, TypeFile file) { secondaryShootDelay = ConfigUtils.configInt(config, "SecondaryShootDelay", secondaryShootDelay); secondaryNumBullets = ConfigUtils.configInt(config, "SecondaryNumBullets", secondaryNumBullets); numSecAmmoItems = ConfigUtils.configInt(config, "LoadSecondaryIntoGun", numSecAmmoItems); - if (config.containsKey("SecondaryFireMode")) - secondaryFireMode = EnumFireMode.getFireMode(config.get("SecondaryFireMode")); + + String secondaryFireModeString = ConfigUtils.configString(config, "SecondaryFireMode", null); + if (secondaryFireModeString != null) { + secondaryFireMode = EnumFireMode.getFireMode(secondaryFireModeString); + } + secondaryShootSound = ConfigUtils.configGunSound(packName, config, "SecondaryShootSound", secondaryShootSound); secondaryReloadSound = ConfigUtils.configGunSound(packName, config, "SecondaryReloadSound", secondaryReloadSound); toggleSound = ConfigUtils.configGunSound(packName, config, "ModeSwitchSound", toggleSound); @@ -189,11 +195,13 @@ protected void read(ConfigMap config, TypeFile file) { zoomAugment = ConfigUtils.configFloat(config, "ZoomAugment", zoomAugment); zoomLevel = ConfigUtils.configFloat(config, "ZoomLevel", zoomLevel); FOVZoomLevel = ConfigUtils.configFloat(config, "FOVZoomLevel", FOVZoomLevel); - if (config.containsKey("ZoomOverlay")) { + + String zoomOverlayString = ConfigUtils.configString(config, "ZoomOverlay", null); + if (zoomOverlayString == null || zoomOverlayString.equalsIgnoreCase("None")) { + hasScopeOverlay = false; + } else { hasScopeOverlay = true; - if (config.get("ZoomOverlay").equals("None")) - hasScopeOverlay = false; - else zoomOverlay = config.get("ZoomOverlay"); + zoomOverlay = zoomOverlayString; } hasNightVision = ConfigUtils.configBool(config, "HasNightVision", hasNightVision); diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 6a85981b..758107d4 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -143,11 +143,10 @@ protected void read(ConfigMap config, TypeFile file) { entityHitSoundEnable = ConfigUtils.configBool(config, "EntityHitSoundEnable", entityHitSoundEnable); hitSound = ConfigUtils.configSound(packName, config, "HitSound", hitSound); hitSoundRange = ConfigUtils.configFloat(config, "HitSoundRange", hitSoundRange); - //Dont know why its like this - if (config.containsKey("Penetrates")) { - boolean pens = Boolean.parseBoolean(config.get("Penetrates")); - penetratingPower = pens ? 1F : 0.7F; - } + + boolean pens = ConfigUtils.configBool(config, "Penetrates", true); + penetratingPower = pens ? 1F : 0.7F; + penetratingPower = ConfigUtils.configFloat(config, new String[]{"Penetration", "PenetratingPower"}, penetratingPower); penetrationDecay = ConfigUtils.configFloat(config, "PenetrationDecay", penetrationDecay); diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index 1243f610..1b3b589a 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -167,8 +167,16 @@ protected void read(ConfigMap config, TypeFile file) { smokeTime = ConfigUtils.configInt(config, "SmokeTime", smokeTime); explodeParticles = ConfigUtils.configInt(config, "NumExplodeParticles", explodeParticles); smokeParticleType = ConfigUtils.configString(config, "SmokeParticles", smokeParticleType); - if(config.containsKey("SmokeEffect")) - smokeEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, "SmokeEffect"))); + + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "SmokeEffect" }); + for (String[] split : splits) { + try { + smokeEffects.add(getPotionEffect(split)); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't add SmokeEffect for grenade", split, ex); + } + } + smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); spinWhenThrown = ConfigUtils.configBool(config, "SpinWhenThrown", spinWhenThrown); remote = ConfigUtils.configBool(config, "Remote", remote); @@ -197,18 +205,20 @@ protected void read(ConfigMap config, TypeFile file) { //Deployable Bag Stuff if(config.containsKey("DeployableBag")) isDeployableBag = true; + numUses = ConfigUtils.configInt(config, "NumUses", numUses); healAmount = ConfigUtils.configFloat(config, "HealAmount", healAmount); - if(config.containsKey("AddPotionEffect") || config.containsKey("PotionEffect")) { - String key = "AddPotionEffect"; - if (config.containsKey("PotionEffect")) - key = "PotionEffect"; - potionEffects.add(getPotionEffect(ConfigUtils.getSplitFromKey(config, key))); + + String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "AddPotionEffect", "PotionEffect" }); + + if (split != null) { + potionEffects.add(getPotionEffect(split)); } + numClips = ConfigUtils.configInt(config, "NumClips", numClips); } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal error ocurred while reading grenade file", null, ex); + FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading grenade file", null, ex); } } diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 15a75ed7..a521f48f 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -509,11 +509,9 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); damage = ConfigUtils.configFloat(config, "Damage", damage); - if (config.containsKey("MeleeDamage")) { - meleeDamage = Float.parseFloat(config.get("MeleeDamage")); - if (meleeDamage > 0F) - secondaryFunction = EnumSecondaryFunction.MELEE; - } + meleeDamage = ConfigUtils.configFloat(config, "MeleeDamage", meleeDamage); + secondaryFunction = meleeDamage > 0 ? EnumSecondaryFunction.MELEE : secondaryFunction; + meleeDamageDriveableModifier = ConfigUtils.configFloat(config, "MeleeDamageDriveableModifier", meleeDamageDriveableModifier); recoilCounterCoefficient = ConfigUtils.configFloat(config, "CounterRecoilForce", recoilCounterCoefficient); recoilCounterCoefficientSneaking = ConfigUtils.configFloat(config, "CounterRecoilForceSneaking", recoilCounterCoefficientSneaking); @@ -526,18 +524,18 @@ protected void read(ConfigMap config, TypeFile file) { //Recoil recoilPitch = ConfigUtils.configFloat(config, "Recoil", recoilPitch); - if (config.containsKey("FancyRecoil")) { - String[] split = ConfigUtils.getSplitFromKey(config, "FancyRecoil"); - try { - if (split.length > 1) { - recoil.read(split); - useFancyRecoil = true; - } - } catch (Exception ex) { - useFancyRecoil = false; - FlansMod.logPackError(file.name, packName, shortName, "Failed to read fancy recoil", split, ex); + + String[] aSplit = ConfigUtils.getSplitFromKey(config, "FancyRecoil"); + try { + if (aSplit != null && aSplit.length > 1) { + recoil.read(aSplit); + useFancyRecoil = true; } + } catch (Exception ex) { + useFancyRecoil = false; + FlansMod.logPackError(file.name, packName, shortName, "Failed to read fancy recoil", aSplit, ex); } + recoilYaw = ConfigUtils.configFloat(config, "RecoilYaw", recoilYaw) / 10; rndRecoilPitchRange = ConfigUtils.configFloat(config, "RandomRecoilRange", rndRecoilPitchRange); rndRecoilYawRange = ConfigUtils.configFloat(config, "RandomRecoilYawRange", rndRecoilYawRange); @@ -559,7 +557,7 @@ protected void read(ConfigMap config, TypeFile file) { //Lock on settings lockOnSoundTime = ConfigUtils.configInt(config, "LockOnSoundTime", lockOnSoundTime); if (config.containsKey("LockOnToDriveables")) - lockOnToPlanes = lockOnToVehicles = lockOnToMechas = Boolean.parseBoolean(config.get("LockOnToDriveables")); + lockOnToPlanes = lockOnToVehicles = lockOnToMechas = ConfigUtils.configBool(config, "LockOnToDriveables", false); lockOnToVehicles = ConfigUtils.configBool(config, "LockOnToVehicles", lockOnToVehicles); lockOnToPlanes = ConfigUtils.configBool(config, "LockOnToPlanes", lockOnToPlanes); lockOnToMechas = ConfigUtils.configBool(config, "LockOnToMechas", lockOnToMechas); @@ -584,7 +582,7 @@ protected void read(ConfigMap config, TypeFile file) { // This is needed, because the presence of the value overrides the default value of zero. if (config.containsKey("HipFireWhileSprinting")) - hipFireWhileSprinting = Boolean.parseBoolean(config.get("HipFireWhileSprinting").toLowerCase()) ? 1 : 2; + hipFireWhileSprinting = ConfigUtils.configBool(config, "HipFireWhileSprinting", false) ? 1 : 2; //Sounds shootDelay = ConfigUtils.configFloat(config, "ShootDelay", shootDelay); @@ -611,17 +609,11 @@ protected void read(ConfigMap config, TypeFile file) { //Looping sounds warmupSound = ConfigUtils.configGunSound(packName, config, "WarmupSound", warmupSound); warmupSoundLength = ConfigUtils.configInt(config, "WarmupSoundLength", warmupSoundLength); - if (config.containsKey("LoopedSound") || config.containsKey("SpinSound")) { - String key = "LoopedSound"; - if (config.containsKey("SpinSound")) - key = "SpinSound"; - loopedSound = config.get(key); - useLoopingSounds = true; - FlansMod.proxy.loadSound(packName, "guns", config.get(key)); - } + loopedSound = ConfigUtils.configGunSound(packName, config, new String[]{"LoopedSound", "SpinSound"}, loopedSound); if (loopedSound != null && !loopedSound.isEmpty()) useLoopingSounds = true; + loopedSoundLength = ConfigUtils.configInt(config, new String[]{"LoopedSoundLength", "SpinSoundLength"}, loopedSoundLength); cooldownSound = ConfigUtils.configGunSound(packName, config, "CooldownSound", cooldownSound); lockOnSound = ConfigUtils.configGunSound(packName, config, "LockOnSound", lockOnSound); @@ -636,21 +628,30 @@ protected void read(ConfigMap config, TypeFile file) { if(maxZoom>1F) secondaryFunction=EnumSecondaryFunction.ZOOM; zoomAugment = ConfigUtils.configFloat(config, "ZoomAugment", zoomAugment); - if (config.containsKey("Mode")) { - String[] split = ConfigUtils.getSplitFromKey(config, "Mode"); - mode = EnumFireMode.getFireMode(split[1]); - defaultmode = mode; - submode = new EnumFireMode[split.length - 1]; - for (int i = 0; i < submode.length; i++) { - submode[i] = EnumFireMode.getFireMode(split[1 + i]); + + aSplit = ConfigUtils.getSplitFromKey(config, "Mode"); + + if (aSplit != null) { + try { + mode = EnumFireMode.getFireMode(aSplit[1]); + defaultmode = mode; + submode = new EnumFireMode[aSplit.length - 1]; + for (int i = 0; i < submode.length; i++) { + submode[i] = EnumFireMode.getFireMode(aSplit[1 + i]); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while setting gun mode", aSplit, ex); } } - if (config.containsKey("Scope")) { + + String scopeString = ConfigUtils.configString(config, "Scope", null); + if (scopeString == null || scopeString.equalsIgnoreCase("None")) { + hasScopeOverlay = false; + } else { hasScopeOverlay = true; - if (config.get("Scope").equalsIgnoreCase("None")) - hasScopeOverlay = false; - else defaultScopeTexture = config.get("Scope"); + defaultScopeTexture = scopeString; } + allowNightVision = ConfigUtils.configBool(config, "AllowNightVision", allowNightVision); zoomLevel = ConfigUtils.configFloat(config, "ZoomLevel", zoomLevel); if (zoomLevel > 1F) @@ -692,10 +693,17 @@ protected void read(ConfigMap config, TypeFile file) { sideViewLimit = ConfigUtils.configFloat(config, "SideViewLimit", modelScale); pivotHeight = ConfigUtils.configFloat(config, "PivotHeight", modelScale); - if (config.containsKey("Ammo")) { - for (String ammoOption : config.getAll("Ammo")) { - ShootableType type = ShootableType.getShootableType(ammoOption); - ammo.add(type); + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Ammo" }); + for (String[] split : splits) { + try { + ShootableType type = ShootableType.getShootableType(split[1]); + if (type == null) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't find shootable type for adding Ammo to gun", split, null); + } else { + ammo.add(type); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while adding Ammo for gun", split, ex); } } @@ -704,29 +712,44 @@ protected void read(ConfigMap config, TypeFile file) { canShootUnderwater = ConfigUtils.configBool(config, "CanShootUnderwater", canShootUnderwater); canSetPosition = ConfigUtils.configBool(config, "CanSetPosition", canSetPosition); oneHanded = ConfigUtils.configBool(config, "OneHanded", oneHanded); - if (config.containsKey("SecondaryFunction")) - secondaryFunction = EnumSecondaryFunction.get(config.get("SecondaryFunction")); + + String secondaryFunctionString = ConfigUtils.configString(config, "SecondaryFunction", secondaryFunction.toString()); + secondaryFunction = EnumSecondaryFunction.get(secondaryFunctionString); + usableByPlayers = ConfigUtils.configBool(config, "UsableByPlayers", usableByPlayers); usableByMechas = ConfigUtils.configBool(config, "UsableByMechas", usableByMechas); //Custom Melee Stuff - if (config.containsKey("UseCustomMelee") && Boolean.parseBoolean(config.get("UseCustomMelee"))) { + if (ConfigUtils.configBool(config, "UseCustomMelee", false)) { secondaryFunction = EnumSecondaryFunction.CUSTOM_MELEE; } - if (config.containsKey("UseCustomMeleeWhenShoot") && Boolean.parseBoolean(config.get("UseCustomMeleeWhenShoot"))) + + if (ConfigUtils.configBool(config, "UseCustomMeleeWhenShoot", false)) { secondaryFunctionWhenShoot = EnumSecondaryFunction.CUSTOM_MELEE; + } + meleeTime = ConfigUtils.configInt(config, "MeleeTime", meleeTime); - if (config.containsKey("AddNode")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AddNode"); - meleePath.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); - meleePathAngles.add(new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]))); + + try { + aSplit = ConfigUtils.getSplitFromKey(config, "AddNode"); + + if (aSplit != null) { + meleePath.add(new Vector3f(Float.parseFloat(aSplit[1]) / 16F, Float.parseFloat(aSplit[2]) / 16F, Float.parseFloat(aSplit[3]) / 16F)); + meleePathAngles.add(new Vector3f(Float.parseFloat(aSplit[4]), Float.parseFloat(aSplit[5]), Float.parseFloat(aSplit[6]))); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown during AddNode", aSplit, ex); } - if (config.containsKey("MeleeDamagePoint")) { - String[] split = ConfigUtils.getSplitFromKey(config, "MeleeDamagePoint"); - meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); - } else if (config.containsKey("MeleeDamageOffset")) { - String[] split = ConfigUtils.getSplitFromKey(config, "MeleeDamageOffset"); - meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + + + try { + aSplit = ConfigUtils.getSplitFromKey(config, new String[] { "MeleeDamagePoint", "MeleeDamageOffset" }); + + if (aSplit != null) { + meleeDamagePoints.add(new Vector3f(Float.parseFloat(aSplit[1]) / 16F, Float.parseFloat(aSplit[2]) / 16F, Float.parseFloat(aSplit[3]) / 16F)); + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown during MeleeDamagePoint", aSplit, ex); } //Player modifiers @@ -737,18 +760,22 @@ protected void read(ConfigMap config, TypeFile file) { //Attachment settings allowAllAttachments = ConfigUtils.configBool(config, "AllowAllAttachments", allowAllAttachments); - if (config.containsKey("AllowAttachments")) { - String[] split = ConfigUtils.getSplitFromKey(config, "AllowAttachments"); - for (int i = 1; i < split.length; i++) { - allowedAttachments.add(AttachmentType.getAttachment(split[i])); - } - } - if (config.containsKey("AllowAttachments")) { - String[] attachments = config.get("AllowAttachments").split(" "); - for (String attachment : attachments) { - allowedAttachments.add(AttachmentType.getAttachment(attachment)); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AllowAttachments" }); + try { + for (String[] split : splits) { + for (int i=1; i(); - for (int i = 0; i < split.length - 1; i++) { - worksWith.add(EnumType.get(split[i + 1])); + + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "WorksWith" }); + try { + if (splits.size() > 0) { + worksWith = new ArrayList(); + } + for (String[] split : splits) { + for (int i=1; i Date: Thu, 1 Jun 2023 12:10:42 +0100 Subject: [PATCH 28/32] More config rewrite stuff. Onto testing now. --- .../com/flansmod/common/guns/AAGunType.java | 2 +- .../flansmod/common/guns/AttachmentType.java | 18 ++++++-- .../com/flansmod/common/guns/BulletType.java | 12 ++++- .../com/flansmod/common/guns/GrenadeType.java | 12 ++--- .../com/flansmod/common/guns/GunType.java | 45 +++++++++---------- .../flansmod/common/guns/ShootableType.java | 8 ++-- 6 files changed, 58 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index 55e228c8..67ad0650 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -147,7 +147,7 @@ protected void read(ConfigMap config, TypeFile file) { targetMechas = ConfigUtils.configBool(config, "TargetMechas", targetMechas); if(config.containsKey("TargetDriveables")) - targetMechas = targetPlanes = targetVehicles = Boolean.parseBoolean(config.get("TargetDriveables")); + targetMechas = targetPlanes = targetVehicles = ConfigUtils.configBool(config, "TargetDriveables", false); shareAmmo = ConfigUtils.configBool(config, "ShareAmmo", shareAmmo); targetRange = ConfigUtils.configFloat(config, "TargetRange", targetRange); diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index 47e39f92..aa40a4c5 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -155,10 +155,20 @@ protected void read(ConfigMap config, TypeFile file) { //Secondary Stuff secondaryFire = ConfigUtils.configBool(config, "SecondaryMode", secondaryFire); - //todo fix multiples -// else if(split[0].equals("SecondaryAmmo")) -// secondaryAmmo.add(split[1]); - secondaryAmmo.add(ConfigUtils.configString(config, "SecondaryAmmo", "")); + + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "SecondaryAmmo" }); + try { + for (String[] split : splits) { + if (split.length == 2) { + secondaryAmmo.add(split[1]); + } else { + FlansMod.logPackError(file.name, packName, shortName, "SecondaryAmmo in unknown format, skipping", split, null); + } + } + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown while parsing SecondaryMode", null, ex); + } + secondaryDamage = ConfigUtils.configFloat(config, "SecondaryDamage", secondaryDamage); secondarySpread = ConfigUtils.configFloat(config, new String[]{"SecondarySpread", "SecondaryAccuracy"}, secondarySpread); secondarySpeed = ConfigUtils.configFloat(config, "SecondaryBulletSpeed", secondarySpeed); diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 758107d4..6e495987 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -169,7 +169,11 @@ protected void read(ConfigMap config, TypeFile file) { ArrayList lines = ConfigUtils.getSplitsFromKey(config, new String[] { "SmokeEffect" }); for (String[] split : lines) { - smokeEffects.add(getPotionEffect(split)); + try { + smokeEffects.add(getPotionEffect(split)); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't read PotionEffect for bullet", split, ex); + } } smokeRadius = ConfigUtils.configFloat(config, "SmokeRadius", smokeRadius); @@ -223,7 +227,11 @@ else if (config.containsKey("WeaponType")) { lines = ConfigUtils.getSplitsFromKey(config, new String[] { "PotionEffect" }); for (String[] split : lines) { - hitEffects.add(getPotionEffect(split)); + try { + hitEffects.add(getPotionEffect(split)); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't read PotionEffect for bullet", split, ex); + } } manualGuidance = ConfigUtils.configBool(config, "ManualGuidance", manualGuidance); diff --git a/src/main/java/com/flansmod/common/guns/GrenadeType.java b/src/main/java/com/flansmod/common/guns/GrenadeType.java index 1b3b589a..8b878612 100644 --- a/src/main/java/com/flansmod/common/guns/GrenadeType.java +++ b/src/main/java/com/flansmod/common/guns/GrenadeType.java @@ -209,13 +209,15 @@ protected void read(ConfigMap config, TypeFile file) { numUses = ConfigUtils.configInt(config, "NumUses", numUses); healAmount = ConfigUtils.configFloat(config, "HealAmount", healAmount); - String[] split = ConfigUtils.getSplitFromKey(config, new String[] { "AddPotionEffect", "PotionEffect" }); - - if (split != null) { - potionEffects.add(getPotionEffect(split)); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddPotionEffect", "PotionEffect" }); + for (String[] split : splits) { + try { + potionEffects.add(getPotionEffect(split)); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't add PotionEffect", split, ex); + } } - numClips = ConfigUtils.configInt(config, "NumClips", numClips); } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading grenade file", null, ex); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index a521f48f..7ee735c5 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import org.classpath.icedtea.Config; import java.util.ArrayList; import java.util.HashMap; @@ -567,7 +568,7 @@ protected void read(ConfigMap config, TypeFile file) { consumeGunUponUse = ConfigUtils.configBool(config, "ConsumeGunOnUse", consumeGunUponUse); showCrosshair = ConfigUtils.configBool(config, "ShowCrosshair", showCrosshair); - dropItemOnShoot = config.get("DropItemOnShoot"); + dropItemOnShoot = ConfigUtils.configString(config, "DropItemOnShoot", null); numBurstRounds = ConfigUtils.configInt(config, "NumBurstRounds", numBurstRounds); minigunStartSpeed = ConfigUtils.configFloat(config, "MinigunStartSpeed", minigunStartSpeed); @@ -674,9 +675,9 @@ protected void read(ConfigMap config, TypeFile file) { flashModelString = ConfigUtils.configString(config, "FlashModel", null); flashModel = FlansMod.proxy.loadModel(flashModelString, shortName, ModelFlash.class); - casingTexture = config.get("CasingTexture"); - flashTexture = config.get("FlashTexture"); - muzzleFlashParticle = config.get("MuzzleFlashParticle"); + casingTexture = ConfigUtils.configString(config, "CasingTexture", null); + flashTexture = ConfigUtils.configString(config, "FlashTexture", null); + muzzleFlashParticle = ConfigUtils.configString(config, "MuzzleFlashParticle", null);; muzzleFlashParticleSize = ConfigUtils.configFloat(config, "MuzzleFlashParticleSize", muzzleFlashParticleSize); showMuzzleFlashParticles = ConfigUtils.configBool(config, "ShowMuzzleFlashParticle", showMuzzleFlashParticles); if (showMuzzleFlashParticles) @@ -685,9 +686,9 @@ protected void read(ConfigMap config, TypeFile file) { muzzleFlashParticlesShoulderOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleShoulderOffset", muzzleFlashParticlesShoulderOffset); muzzleFlashParticlesHandOffset = ConfigUtils.configVector(config, "MuzzleFlashParticleHandOffset", muzzleFlashParticlesHandOffset); modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); - texture = config.get("Texture"); - hitTexture = config.get("CasingTexture"); - deployableTexture = config.get("DeployedTexture"); + texture = ConfigUtils.configString(config, "Texture", texture); + hitTexture = ConfigUtils.configString(config, "CasingTexture", hitTexture); + deployableTexture = ConfigUtils.configString(config, "DeployedTexture", deployableTexture); topViewLimit = ConfigUtils.configFloat(config, "TopViewLimit", modelScale); bottomViewLimit = ConfigUtils.configFloat(config, "BottomViewLimit", modelScale); sideViewLimit = ConfigUtils.configFloat(config, "SideViewLimit", modelScale); @@ -730,28 +731,26 @@ protected void read(ConfigMap config, TypeFile file) { meleeTime = ConfigUtils.configInt(config, "MeleeTime", meleeTime); - try { - aSplit = ConfigUtils.getSplitFromKey(config, "AddNode"); - - if (aSplit != null) { - meleePath.add(new Vector3f(Float.parseFloat(aSplit[1]) / 16F, Float.parseFloat(aSplit[2]) / 16F, Float.parseFloat(aSplit[3]) / 16F)); - meleePathAngles.add(new Vector3f(Float.parseFloat(aSplit[4]), Float.parseFloat(aSplit[5]), Float.parseFloat(aSplit[6]))); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddNode" }); + for (String[] split : splits) { + try { + meleePath.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + meleePathAngles.add(new Vector3f(Float.parseFloat(split[4]), Float.parseFloat(split[5]), Float.parseFloat(split[6]))); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown during AddNode", split, ex); } - } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Error thrown during AddNode", aSplit, ex); } - - try { - aSplit = ConfigUtils.getSplitFromKey(config, new String[] { "MeleeDamagePoint", "MeleeDamageOffset" }); - - if (aSplit != null) { - meleeDamagePoints.add(new Vector3f(Float.parseFloat(aSplit[1]) / 16F, Float.parseFloat(aSplit[2]) / 16F, Float.parseFloat(aSplit[3]) / 16F)); + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "MeleeDamagePoint", "MeleeDamageOffset" }); + for (String[] split : splits) { + try { + meleeDamagePoints.add(new Vector3f(Float.parseFloat(split[1]) / 16F, Float.parseFloat(split[2]) / 16F, Float.parseFloat(split[3]) / 16F)); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Error thrown during MeleeDamagePoint", split, ex); } - } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Error thrown during MeleeDamagePoint", aSplit, ex); } + //Player modifiers moveSpeedModifier = ConfigUtils.configFloat(config, new String[]{"MoveSpeedModifier", "Slowness"}, moveSpeedModifier); knockbackModifier = ConfigUtils.configFloat(config, new String[]{"KnockbackReduction", "KnockbackModifier"}, knockbackModifier); diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 8377bc13..82c44806 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -236,12 +236,12 @@ protected void read(ConfigMap config, TypeFile file) { explosionDamageVsPlayer = ConfigUtils.configFloat(config, "ExplosionDamageVsPlayer", explosionDamageVsPlayer); explosionDamageVsPlane = ConfigUtils.configFloat(config, "ExplosionDamageVsPlane", explosionDamageVsPlane); explosionDamageVsVehicle = ConfigUtils.configFloat(config, "ExplosionDamageVsVehicle", explosionDamageVsVehicle); - dropItemOnDetonate = config.get("DropItemOnDetonate"); - detonateSound = config.get("DetonateSound"); + dropItemOnDetonate = ConfigUtils.configString(config, "DropItemOnDetonate", dropItemOnDetonate); + detonateSound = ConfigUtils.configString(config, "DetonateSound", detonateSound); //Submunitions hasSubmunitions = ConfigUtils.configBool(config, "HasSubmunitions", hasSubmunitions); - submunition = config.get("Submunition"); + submunition = ConfigUtils.configString(config, "Submunition", submunition); numSubmunitions = ConfigUtils.configInt(config, "NumSubmunitions", numSubmunitions); subMunitionTimer = ConfigUtils.configInt(config, "SubmunitionDelay", subMunitionTimer); submunitionSpread = ConfigUtils.configFloat(config, "SubmunitionSpread", submunitionSpread); @@ -250,7 +250,7 @@ protected void read(ConfigMap config, TypeFile file) { //Particles trailParticles = ConfigUtils.configBool(config, new String[]{"TrailParticles", "SmokeTrail"}, trailParticles); - trailParticleType = config.get("TrailParticleType"); + trailParticleType = ConfigUtils.configString(config, "TrailParticleType", trailParticleType); } public static ShootableType getShootableType(String string) { From 9d2dd6e4e1a9188b6b8e368666863fe313905775 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 13 Jun 2023 18:09:47 +0100 Subject: [PATCH 29/32] Misc config rewrite fixes, testing has given good results --- .../client/gui/GuiDriveableInventory.java | 6 ++-- .../common/driveables/DriveableType.java | 19 ++++++---- .../common/driveables/EntityDriveable.java | 5 +-- .../com/flansmod/common/guns/BulletType.java | 35 +++++++++++++------ .../common/guns/boxes/GunBoxType.java | 2 +- .../common/network/PacketChangeZoom.java | 1 - .../com/flansmod/common/types/InfoType.java | 5 ++- .../com/flansmod/common/vector/Vector3f.java | 8 ++--- .../java/com/flansmod/utils/ConfigUtils.java | 8 ++++- 9 files changed, 55 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java b/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java index aef26933..f4b453ba 100644 --- a/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java +++ b/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java @@ -141,10 +141,8 @@ protected void drawGuiContainerForegroundLayer(int x, int y) { if (driveable.getDriveableType().ammo.size() > 0) { listHoveringText.add("[Missiles]"); for (BulletType ammo : driveable.getDriveableType().ammo) { - if (ammo != null) { - if (ammo != null && ammo.weaponType != EnumWeaponType.BOMB) { - listHoveringText.add("> " + ammo.name); - } + if (ammo != null && ammo.weaponType != EnumWeaponType.SHELL) { + listHoveringText.add("> " + ammo.name); } } } diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 548e31b3..8e36db8b 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -670,7 +670,7 @@ protected void read(ConfigMap config, TypeFile file) { acceptAllAmmo = ConfigUtils.configBool(config, new String[]{ "AllowAllAmmo", "AcceptAllAmmo" }, acceptAllAmmo); - String line = ConfigUtils.configString(config, "Primary", null); + String line = ConfigUtils.configString(config, "Primary", "NONE"); try { if (line != null) { primary = EnumWeaponType.valueOf(line.toUpperCase()); @@ -679,7 +679,7 @@ protected void read(ConfigMap config, TypeFile file) { FlansMod.logPackError(file.name, packName, shortName, "Primary weapon type not known", new String[] { "Primary", line }, ex); } - line = ConfigUtils.configString(config, "Secondary", null); + line = ConfigUtils.configString(config, "Secondary", "NONE"); try { if (line != null) { secondary = EnumWeaponType.valueOf(line.toUpperCase()); @@ -691,13 +691,18 @@ protected void read(ConfigMap config, TypeFile file) { damageMultiplierPrimary = ConfigUtils.configFloat(config, "DamageMultiplierPrimary", damageMultiplierPrimary); damageMultiplierSecondary = ConfigUtils.configFloat(config, "DamageMultiplierSecondary", damageMultiplierSecondary); - shootDelayPrimary = ConfigUtils.configFloat(config, new String[] { "ShootDelayPrimary", "ShellDelay" }, shootDelayPrimary); + shootDelayPrimary = ConfigUtils.configFloat(config, new String[] { "ShootDelayPrimary", "ShellDelay", "BombDelay" }, shootDelayPrimary); shootDelaySecondary = ConfigUtils.configFloat(config, new String[] { "ShootDelaySecondary", "ShootDelay" } , shootDelaySecondary); try { - shootDelayPrimary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinPrimary", shootDelayPrimary*1200F), 1); - shootDelaySecondary = Math.min(1200F / ConfigUtils.configFloat(config, "RoundsPerMinSecondary", shootDelaySecondary*1200F), 1); + if (shootDelayPrimary == -1) { + shootDelayPrimary = Math.max(1200F / ConfigUtils.configFloat(config, "RoundsPerMinPrimary", 60), 1); + } + + if (shootDelaySecondary == -1) { + shootDelaySecondary = Math.max(1200F / ConfigUtils.configFloat(config, "RoundsPerMinSecondary", 60), 1); + } } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Error thrown setting RoundsPerMin", null, ex); } @@ -888,7 +893,7 @@ else if (split.length == 7) splits = ConfigUtils.getSplitsFromKey(config, new String[]{"BarrelPosition"}); - if (splits.size() > 1) { + if (splits.size() >= 1) { primary = EnumWeaponType.SHELL; } @@ -993,7 +998,7 @@ else if (split.length == 7) - if (seats.length == 0 || seats[0] != null) { + if (seats.length > 0 && seats[0] != null) { seats[0].part = EnumDriveablePart.getPart(ConfigUtils.configString(config, "DriverPart", "core")); seats[0].gunName = ConfigUtils.configString(config, new String[] { "DriverGun", "PilotGun" }, seats[0].gunName); diff --git a/src/main/java/com/flansmod/common/driveables/EntityDriveable.java b/src/main/java/com/flansmod/common/driveables/EntityDriveable.java index 3385b30f..7939e1bf 100644 --- a/src/main/java/com/flansmod/common/driveables/EntityDriveable.java +++ b/src/main/java/com/flansmod/common/driveables/EntityDriveable.java @@ -633,7 +633,7 @@ public void shoot(boolean secondary) { currentGun = (currentGun + 1) % shootPoints.size(); setCurrentGun(currentGun, secondary); shootEach(type, shootPoints.get(currentGun), currentGun, secondary, weaponType); - } else for (int i = 0; i < shootPoints.size(); i++) + } else for (int i = 0; i < shootPoints.size(); i++) shootEach(type, shootPoints.get(i), i, secondary, weaponType); } } @@ -1839,9 +1839,6 @@ public ItemStack getPickedResult(MovingObjectPosition target) { public boolean hasEnoughFuel() { //if (seats == null || seats[0] == null || seats[0].riddenByEntity == null) //return false; - System.out.println(driverIsCreative()); - System.out.println(driveableData.fuelInTank > Math.abs(driveableData.engine.fuelConsumption * throttle)); - System.out.println(getDriveableType().fuelTankSize < 0); return driverIsCreative() || driveableData.fuelInTank > Math.abs(driveableData.engine.fuelConsumption * throttle) || getDriveableType().fuelTankSize < 0; } diff --git a/src/main/java/com/flansmod/common/guns/BulletType.java b/src/main/java/com/flansmod/common/guns/BulletType.java index 6e495987..1fb57725 100644 --- a/src/main/java/com/flansmod/common/guns/BulletType.java +++ b/src/main/java/com/flansmod/common/guns/BulletType.java @@ -1,7 +1,6 @@ package com.flansmod.common.guns; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import com.flansmod.utils.ConfigMap; @@ -13,9 +12,6 @@ import com.flansmod.common.FlansMod; import com.flansmod.common.driveables.EnumWeaponType; import com.flansmod.common.types.TypeFile; -import com.flansmod.common.guns.boxes.BlockGunBox; - - public class BulletType extends ShootableType { @@ -186,13 +182,30 @@ protected void read(ConfigMap config, TypeFile file) { boostPhaseParticle = ConfigUtils.configString(config, "BoostParticle", boostPhaseParticle); torpedo = ConfigUtils.configBool(config, "Torpedo", torpedo); - if (config.containsKey("Bomb")) - weaponType = EnumWeaponType.BOMB; - else if (config.containsKey("Shell")) - weaponType = EnumWeaponType.SHELL; - else if (config.containsKey("Missile")) - weaponType = EnumWeaponType.MISSILE; - else if (config.containsKey("WeaponType")) { + + // Some content packs use 'true' and false after this, which confuses things... + ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Bomb" }); + for (String[] split : splits) { + if (split.length == 1 || (split.length == 2 && split[1].equalsIgnoreCase("true"))) { + weaponType = EnumWeaponType.BOMB; + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Shell" }); + for (String[] split : splits) { + if (split.length == 1 || (split.length == 2 && split[1].equalsIgnoreCase("true"))) { + weaponType = EnumWeaponType.SHELL; + } + } + + splits = ConfigUtils.getSplitsFromKey(config, new String[] { "Missile" }); + for (String[] split : splits) { + if (split.length == 1 || (split.length == 2 && split[1].equalsIgnoreCase("true"))) { + weaponType = EnumWeaponType.MISSILE; + } + } + + if (config.containsKey("WeaponType")) { String line = ConfigUtils.configString(config, "WeaponType", "Bomb"); try { if (line != null) { diff --git a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java index be938893..ada0af73 100644 --- a/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java +++ b/src/main/java/com/flansmod/common/guns/boxes/GunBoxType.java @@ -138,7 +138,7 @@ protected void readLine(String[] split, TypeFile file) { return; } - gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(InfoType.getType(split[1]), getRecipe(split))); + gunEntries[nextGun].addAmmoEntry(new GunBoxEntry(ammoType, getRecipe(split))); } catch(Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Adding ammo to GunBox failed", split, ex); diff --git a/src/main/java/com/flansmod/common/network/PacketChangeZoom.java b/src/main/java/com/flansmod/common/network/PacketChangeZoom.java index ad444179..4f042676 100644 --- a/src/main/java/com/flansmod/common/network/PacketChangeZoom.java +++ b/src/main/java/com/flansmod/common/network/PacketChangeZoom.java @@ -38,7 +38,6 @@ public void handleServerSide(EntityPlayerMP playerEntity) { ItemStack currentItem = playerEntity.inventory.getCurrentItem(); if (currentItem != null && currentItem.getItem() instanceof ItemGun) { ItemGun itemGun = (ItemGun) currentItem.getItem(); - System.out.println(isPositive); if(isPositive) itemGun.increaseZoom(currentItem); diff --git a/src/main/java/com/flansmod/common/types/InfoType.java b/src/main/java/com/flansmod/common/types/InfoType.java index a84bb8f9..5a13e8ab 100644 --- a/src/main/java/com/flansmod/common/types/InfoType.java +++ b/src/main/java/com/flansmod/common/types/InfoType.java @@ -49,6 +49,7 @@ public abstract class InfoType implements IInfoType { public InfoType(TypeFile file) { packName = file.pack; + infoTypes.add(this); configMap.setIdentifiers(file.name, file.pack); @@ -92,6 +93,8 @@ else if (line.length() == 1) if (line.startsWith("//") || line.trim().isEmpty()) continue; + readLine(line.split(" "), file); + if (!line.contains(" ")) { configMap.put(line.trim(), ""); } else { @@ -308,7 +311,7 @@ public static ItemStack getRecipeElement(String s, int amount, int damage, Strin } } for (InfoType type : infoTypes) { - if (type.shortName.equals(s)) + if (type.shortName != null && type.shortName.equals(s)) return new ItemStack(type.item, amount, damage); } if (s.equals("gunpowder")) { return new ItemStack(Items.gunpowder, amount); diff --git a/src/main/java/com/flansmod/common/vector/Vector3f.java b/src/main/java/com/flansmod/common/vector/Vector3f.java index 729e4212..59ef3a4e 100644 --- a/src/main/java/com/flansmod/common/vector/Vector3f.java +++ b/src/main/java/com/flansmod/common/vector/Vector3f.java @@ -219,7 +219,7 @@ public static Vector3f cross( * @return this */ @Override - public Vector negate() { + public Vector3f negate() { x = -x; y = -y; z = -z; @@ -287,7 +287,7 @@ else if (dls > 1.0f) * @see org.lwjgl.vector.Vector#load(FloatBuffer) */ @Override - public Vector load(FloatBuffer buf) { + public Vector3f load(FloatBuffer buf) { x = buf.get(); y = buf.get(); z = buf.get(); @@ -298,7 +298,7 @@ public Vector load(FloatBuffer buf) { * @see org.lwjgl.vector.Vector#scale(float) */ @Override - public Vector scale(float scale) { + public Vector3f scale(float scale) { x *= scale; y *= scale; @@ -312,7 +312,7 @@ public Vector scale(float scale) { * @see org.lwjgl.vector.Vector#store(FloatBuffer) */ @Override - public Vector store(FloatBuffer buf) { + public Vector3f store(FloatBuffer buf) { buf.put(x); buf.put(y); diff --git a/src/main/java/com/flansmod/utils/ConfigUtils.java b/src/main/java/com/flansmod/utils/ConfigUtils.java index 84337dd8..6d4d3e83 100644 --- a/src/main/java/com/flansmod/utils/ConfigUtils.java +++ b/src/main/java/com/flansmod/utils/ConfigUtils.java @@ -169,7 +169,13 @@ public static Vector3f configVector(ConfigMap config, String settingName, Vector String val = config.get(settingName); if(val != null) { try { - return (Vector3f) new Vector3f(val).scale(scale); + if (val.contains("[")) { + return new Vector3f(val).scale(scale); + } else { + String[] split = val.split(" "); + return (new Vector3f(Float.parseFloat(split[0]), Float.parseFloat(split[1]), Float.parseFloat(split[2]))).scale(scale); + } + } catch (Exception ex) { FlansMod.logPackError(config.fileName, config.packName, config.fileName, "Parsing argument to vector failed", new String[] { settingName, val }, ex); From e27fad2488e80d6c857170d537073df1a96bc776 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 14 Jun 2023 15:27:41 +0100 Subject: [PATCH 30/32] Misc config rewrite fixes --- .../java/com/flansmod/client/ClientProxy.java | 2 +- .../com/flansmod/client/gui/GuiArmourBox.java | 27 ++++--- .../client/gui/GuiDriveableInventory.java | 4 +- .../common/paintjob/PaintableType.java | 2 +- .../flansmod/common/teams/ArmourBoxType.java | 73 +++++++++++-------- 5 files changed, 60 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/flansmod/client/ClientProxy.java b/src/main/java/com/flansmod/client/ClientProxy.java index 823d8200..3cbd39a1 100644 --- a/src/main/java/com/flansmod/client/ClientProxy.java +++ b/src/main/java/com/flansmod/client/ClientProxy.java @@ -327,7 +327,7 @@ else if (split.length > 1) { */ @Override public T loadModel(String s, String shortName, Class typeClass) { - if (s == null || shortName == null) + if (s == null || s.equalsIgnoreCase("None") || shortName == null) return null; try { return typeClass.cast(Class.forName(getModelName(s)).getConstructor().newInstance()); diff --git a/src/main/java/com/flansmod/client/gui/GuiArmourBox.java b/src/main/java/com/flansmod/client/gui/GuiArmourBox.java index e13f8afb..fe1b9fa1 100644 --- a/src/main/java/com/flansmod/client/gui/GuiArmourBox.java +++ b/src/main/java/com/flansmod/client/gui/GuiArmourBox.java @@ -115,19 +115,22 @@ private void drawRecipe(FontRenderer fontrenderer, int m, int n, int q) //Iterate over y for(int j = 0; j < 2; j++) { - drawSlotInventory(new ItemStack(page.armours[i * 2 + j].item), m + 9 + 83 * i, n + 44 + 22 * j); - int numParts = page.requiredStacks[i * 2 + j].size(); - //Find which 3 parts to render - int startPart = 0; - if (numParts >= 4) - { - startPart = (scroll / 40) % (numParts - 2); - } - - for(int p = 0; p < (numParts < 3 ? numParts : 3); p++) - { - drawSlotInventory(page.requiredStacks[i * 2 + j].get(startPart + p), m + 30 + p * 19 + 83 * i, n + 44 + 22 * j); + if (page.armours[i * 2 +j] != null) { + drawSlotInventory(new ItemStack(page.armours[i * 2 + j].item), m + 9 + 83 * i, n + 44 + 22 * j); + int numParts = page.requiredStacks[i * 2 + j].size(); + //Find which 3 parts to render + int startPart = 0; + if (numParts >= 4) + { + startPart = (scroll / 40) % (numParts - 2); + } + + for(int p = 0; p < (Math.min(numParts, 3)); p++) + { + drawSlotInventory(page.requiredStacks[i * 2 + j].get(startPart + p), m + 30 + p * 19 + 83 * i, n + 44 + 22 * j); + } } + } } diff --git a/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java b/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java index f4b453ba..9800955e 100644 --- a/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java +++ b/src/main/java/com/flansmod/client/gui/GuiDriveableInventory.java @@ -139,9 +139,9 @@ protected void drawGuiContainerForegroundLayer(int x, int y) { if (x >= this.guiLeft + 10 && x < this.guiLeft + 180 - 10 && y >= this.guiTop + 20 && y < this.guiTop + 90) { if (driveable.getDriveableType().ammo.size() > 0) { - listHoveringText.add("[Missiles]"); + listHoveringText.add("[Missiles/Shells]"); for (BulletType ammo : driveable.getDriveableType().ammo) { - if (ammo != null && ammo.weaponType != EnumWeaponType.SHELL) { + if (ammo != null && ammo.weaponType != EnumWeaponType.BOMB) { listHoveringText.add("> " + ammo.name); } } diff --git a/src/main/java/com/flansmod/common/paintjob/PaintableType.java b/src/main/java/com/flansmod/common/paintjob/PaintableType.java index 4e1c8b9b..640067da 100644 --- a/src/main/java/com/flansmod/common/paintjob/PaintableType.java +++ b/src/main/java/com/flansmod/common/paintjob/PaintableType.java @@ -133,7 +133,7 @@ protected void read(ConfigMap config, TypeFile file) public Paintjob getPaintjob(int i) { - return paintjobs.get(i); + return paintjobs.get(Math.min(paintjobs.size()-1, i)); } public float GetRecommendedScale() diff --git a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java index 1b316282..69e3f341 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourBoxType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourBoxType.java @@ -48,36 +48,32 @@ public void postRead(TypeFile file) } @Override - protected void read(ConfigMap config, TypeFile file) - { - super.read(config, file); - try { - topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); - bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); - sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); + protected void readLine(String[] split, TypeFile file) { + if (split.length > 0 && (split[0].equalsIgnoreCase("AddArmour") || split[0].equalsIgnoreCase("AddArmor"))) { + try { + StringBuilder name = new StringBuilder(split[2]); + + for(int i = 3; i < split.length; i++) + name.append(" ").append(split[i]); + ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name.toString()); + //Read the next 4 lines for each armour piece + for (int i = 0; i < 4; i++) + { + String line; + line = file.readLine(); + if(line == null) + continue; + if(line.startsWith("//")) + { + i--; + continue; + } + String[] lineSplit = line.split(" "); - ArrayList splits = ConfigUtils.getSplitsFromKey(config, new String[] { "AddArmour", "AddArmor"}); - for (String[] split : splits) { - try { - StringBuilder name = new StringBuilder(split[2]); + ArmourType armourType = ArmourType.getArmourType(lineSplit[0]); - for(int i = 3; i < split.length; i++) - name.append(" ").append(split[i]); - ArmourBoxEntry entry = new ArmourBoxEntry(split[1], name.toString()); - //Read the next 4 lines for each armour piece - for (int i = 0; i < 4; i++) - { - String line; - line = file.readLine(); - if(line == null) - continue; - if(line.startsWith("//")) - { - i--; - continue; - } - String[] lineSplit = line.split(" "); - entry.armours[i] = ArmourType.getArmourType(lineSplit[0]); + if (armourType != null) { + entry.armours[i] = armourType; for(int j = 0; j < (lineSplit.length - 1) / 2; j++) { ItemStack recipeElement = null; @@ -92,13 +88,26 @@ protected void read(ConfigMap config, TypeFile file) FlansMod.logPackError(file.name, packName, shortName, "Could not find item for armour recipe", split, null); } } + } else { + FlansMod.logPackError(file.name, packName, shortName, "Couldn't find armour type for armour box", lineSplit, null); } - - pages.add(entry); - } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Adding armour to box failed", split, ex); } + + pages.add(entry); + } catch (Exception ex) { + FlansMod.logPackError(file.name, packName, shortName, "Adding armour to box failed", split, ex); } + } + } + + @Override + protected void read(ConfigMap config, TypeFile file) + { + super.read(config, file); + try { + topTexturePath = ConfigUtils.configString(config, "TopTexture", topTexturePath); + bottomTexturePath = ConfigUtils.configString(config, "BottomTexture", bottomTexturePath); + sideTexturePath = ConfigUtils.configString(config, "SideTexture", sideTexturePath); } catch (Exception ex) { FlansMod.logPackError(file.name, packName, shortName, "Fatal error occurred while reading armour box", null, ex); } From 1453ff2b16163a1905d23bd671c3dafcdd3187c7 Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Tue, 4 Jul 2023 00:19:32 +0100 Subject: [PATCH 31/32] Fix spelling errors, move model loading to client side only, fix mecha size issue --- .../flansmod/common/driveables/DriveableType.java | 6 ++++-- .../flansmod/common/driveables/VehicleType.java | 2 +- .../common/driveables/mechas/MechaItemType.java | 4 +++- .../common/driveables/mechas/MechaType.java | 4 ++-- .../java/com/flansmod/common/guns/AAGunType.java | 4 +++- .../com/flansmod/common/guns/AttachmentType.java | 4 +++- .../java/com/flansmod/common/guns/GunType.java | 14 +++++++++----- .../com/flansmod/common/guns/ShootableType.java | 4 +++- .../java/com/flansmod/common/teams/ArmourType.java | 8 +++++++- .../java/com/flansmod/common/tools/ToolType.java | 5 ++++- 10 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/flansmod/common/driveables/DriveableType.java b/src/main/java/com/flansmod/common/driveables/DriveableType.java index 8e36db8b..c6a24cae 100644 --- a/src/main/java/com/flansmod/common/driveables/DriveableType.java +++ b/src/main/java/com/flansmod/common/driveables/DriveableType.java @@ -474,12 +474,14 @@ protected void read(ConfigMap config, TypeFile file) { Integer.parseInt(split[3])); } } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Erorred while reading Driver/Pilot", null, ex); + FlansMod.logPackError(file.name, packName, shortName, "Errored while reading Driver/Pilot", null, ex); throw new Exception("Invalid Driver/Pilot Definitions"); // this should be a "disable item" situation } - model = FlansMod.proxy.loadModel(modelString, shortName, ModelDriveable.class); + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelDriveable.class); + } vehicleGunModelScale = ConfigUtils.configFloat(config, "VehicleGunModelScale", vehicleGunModelScale); reloadSoundTick = ConfigUtils.configInt(config, "VehicleGunReloadTick", reloadSoundTick); diff --git a/src/main/java/com/flansmod/common/driveables/VehicleType.java b/src/main/java/com/flansmod/common/driveables/VehicleType.java index 14edc67f..3ad81e3c 100644 --- a/src/main/java/com/flansmod/common/driveables/VehicleType.java +++ b/src/main/java/com/flansmod/common/driveables/VehicleType.java @@ -171,7 +171,7 @@ protected void read(ConfigMap config, TypeFile file) { } } catch (Exception ex) { - FlansMod.logPackError(file.name, packName, shortName, "Fatal Error! Reading VehicleType filed", null, ex); + FlansMod.logPackError(file.name, packName, shortName, "Fatal Error! Reading VehicleType failed", null, ex); } } diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java index 31b5e34c..6a8568a2 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaItemType.java @@ -76,7 +76,9 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelMechaTool.class); + } texture = ConfigUtils.configString(config, "Texture", texture); diff --git a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java index 73a450e8..c4db6a03 100644 --- a/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java +++ b/src/main/java/com/flansmod/common/driveables/mechas/MechaType.java @@ -136,8 +136,8 @@ protected void read(ConfigMap config, TypeFile file) { armLength = ConfigUtils.configFloat(config, "ArmLength", armLength) / 16F; legLength = ConfigUtils.configFloat(config, "LegLength", legLength) / 16F; heldItemScale = ConfigUtils.configFloat(config, "HeldItemScale", heldItemScale); - height = ConfigUtils.configFloat(config, "Height", height); - width = ConfigUtils.configFloat(config, "Width", width); + height = ConfigUtils.configFloat(config, "Height", height*16F)/16F; + width = ConfigUtils.configFloat(config, "Width", width*16F)/16F; chassisHeight = (float)Math.floor(ConfigUtils.configFloat(config, "ChassisHeight", chassisHeight*16F))/16F; diff --git a/src/main/java/com/flansmod/common/guns/AAGunType.java b/src/main/java/com/flansmod/common/guns/AAGunType.java index 67ad0650..7dc637ab 100644 --- a/src/main/java/com/flansmod/common/guns/AAGunType.java +++ b/src/main/java/com/flansmod/common/guns/AAGunType.java @@ -65,7 +65,9 @@ protected void postRead(TypeFile file) { } protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - model = FlansMod.proxy.loadModel(modelString, shortName, ModelAAGun.class); + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelAAGun.class); + } texture = ConfigUtils.configString(config, "Texture", texture); damage = ConfigUtils.configInt(config, "Damage", damage); diff --git a/src/main/java/com/flansmod/common/guns/AttachmentType.java b/src/main/java/com/flansmod/common/guns/AttachmentType.java index aa40a4c5..2dcb1269 100644 --- a/src/main/java/com/flansmod/common/guns/AttachmentType.java +++ b/src/main/java/com/flansmod/common/guns/AttachmentType.java @@ -134,7 +134,9 @@ protected void read(ConfigMap config, TypeFile file) { String typeString = ConfigUtils.configString(config, "AttachmentType", type.toString()); type = EnumAttachmentType.get(typeString); - model = FlansMod.proxy.loadModel(modelString, shortName, ModelAttachment.class); + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelAttachment.class); + } // This is read in InfoType //modelScale = ConfigUtils.configFloat(config, "ModelScale", modelScale); diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 7ee735c5..96b2d301 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -665,15 +665,19 @@ protected void read(ConfigMap config, TypeFile file) { deployable = ConfigUtils.configBool(config, "Deployable", deployable); deployableModelString = ConfigUtils.configString(configMap, "DeployedModel", null); - deployableModel = FlansMod.proxy.loadModel(deployableModelString, shortName, ModelMG.class); - - model = FlansMod.proxy.loadModel(modelString, shortName, ModelGun.class); casingModelString = ConfigUtils.configString(config, "CasingModel", null); - casingModel = FlansMod.proxy.loadModel(casingModelString, shortName, ModelCasing.class); flashModelString = ConfigUtils.configString(config, "FlashModel", null); - flashModel = FlansMod.proxy.loadModel(flashModelString, shortName, ModelFlash.class); + + if (FMLCommonHandler.instance().getSide().isClient()) { + deployableModel = FlansMod.proxy.loadModel(deployableModelString, shortName, ModelMG.class); + casingModel = FlansMod.proxy.loadModel(casingModelString, shortName, ModelCasing.class); + flashModel = FlansMod.proxy.loadModel(flashModelString, shortName, ModelFlash.class); + model = FlansMod.proxy.loadModel(modelString, shortName, ModelGun.class); + } + + casingTexture = ConfigUtils.configString(config, "CasingTexture", null); flashTexture = ConfigUtils.configString(config, "FlashTexture", null); diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 5d2b2899..3920780c 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -176,7 +176,9 @@ protected void read(ConfigMap config, TypeFile file) { super.read(config, file); //Model and Texture - model = FlansMod.proxy.loadModel(modelString, shortName, ModelBase.class); + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelBase.class); + } texture = ConfigUtils.configString(config, "Texture", texture); diff --git a/src/main/java/com/flansmod/common/teams/ArmourType.java b/src/main/java/com/flansmod/common/teams/ArmourType.java index 5e23669c..d5a6a7c8 100644 --- a/src/main/java/com/flansmod/common/teams/ArmourType.java +++ b/src/main/java/com/flansmod/common/teams/ArmourType.java @@ -9,6 +9,7 @@ import com.flansmod.utils.ConfigMap; import com.flansmod.utils.ConfigUtils; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; @@ -103,7 +104,11 @@ protected void postRead(TypeFile file) { protected void read(ConfigMap config, TypeFile file) { super.read(config, file); try { - model = FlansMod.proxy.loadModel(modelString, shortName, ModelCustomArmour.class); + + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelString, shortName, ModelCustomArmour.class); + } + if (model != null) { model.type = this; } @@ -168,6 +173,7 @@ public static ArmourType getArmourType(String string) { */ public void reloadModel() { model = FlansMod.proxy.loadModel(modelString, shortName, ModelCustomArmour.class); + if (model != null) model.type = this; } diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index 8347b9a8..d9736481 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -68,7 +68,10 @@ protected void read(ConfigMap config, TypeFile file) try { // The model load can be done on server too, proxy will just skip it. String modelName = ConfigUtils.configString(config, "Model", null); - model = FlansMod.proxy.loadModel(modelName, shortName, ModelBase.class); + + if (FMLCommonHandler.instance().getSide().isClient()) { + model = FlansMod.proxy.loadModel(modelName, shortName, ModelBase.class); + } texture = ConfigUtils.configString(config, "Texture", texture); parachute = ConfigUtils.configBool(config, "Parachute", parachute); From 4afcaef456cf02322ef886171dfdfb379bb743ab Mon Sep 17 00:00:00 2001 From: GolddolphinSKB-Fexcraftian <22482566+GolddolphinSKB-Fexcraftian@users.noreply.github.com> Date: Wed, 5 Jul 2023 11:06:55 +0100 Subject: [PATCH 32/32] Removed ICED TEA --- src/main/java/com/flansmod/common/guns/GunType.java | 1 - src/main/java/com/flansmod/common/guns/ShootableType.java | 1 - src/main/java/com/flansmod/common/parts/PartType.java | 1 - src/main/java/com/flansmod/common/tools/ToolType.java | 1 - 4 files changed, 4 deletions(-) diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index 96b2d301..1b7fd42c 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -16,7 +16,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import org.classpath.icedtea.Config; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/com/flansmod/common/guns/ShootableType.java b/src/main/java/com/flansmod/common/guns/ShootableType.java index 3920780c..728221c6 100644 --- a/src/main/java/com/flansmod/common/guns/ShootableType.java +++ b/src/main/java/com/flansmod/common/guns/ShootableType.java @@ -9,7 +9,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; -import org.classpath.icedtea.Config; import java.util.HashMap; diff --git a/src/main/java/com/flansmod/common/parts/PartType.java b/src/main/java/com/flansmod/common/parts/PartType.java index 63750cd8..fb6a734f 100644 --- a/src/main/java/com/flansmod/common/parts/PartType.java +++ b/src/main/java/com/flansmod/common/parts/PartType.java @@ -10,7 +10,6 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; import net.minecraft.item.ItemStack; -import org.classpath.icedtea.Config; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/com/flansmod/common/tools/ToolType.java b/src/main/java/com/flansmod/common/tools/ToolType.java index d9736481..aede6ec9 100644 --- a/src/main/java/com/flansmod/common/tools/ToolType.java +++ b/src/main/java/com/flansmod/common/tools/ToolType.java @@ -16,7 +16,6 @@ import com.flansmod.common.types.InfoType; import com.flansmod.common.types.TypeFile; import com.flansmod.utils.ConfigUtils; -import org.classpath.icedtea.Config; public class ToolType extends InfoType {