aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard Hendricks <richardhendricks@pobox.com>2018-08-14 03:11:05 -0500
committerRichard Hendricks <richardhendricks@pobox.com>2018-08-14 03:11:05 -0500
commit801213a86027b38e615861e73337b65821e74a44 (patch)
tree87eee8e9f9de07c6f68d38a7145794732380e51c /src
parent32e8c40e71a773e5813e417dd73e824892a49474 (diff)
downloadGT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.tar.gz
GT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.tar.bz2
GT5-Unofficial-801213a86027b38e615861e73337b65821e74a44.zip
Updated version to 1.5.1. Fixed basic prospector behavior. Changed to display summary of ores found and distance from player. Adjusted range down overall. Increased success chance slightly. Increased durability.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/detrav/DetravScannerMod.java2
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java18
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java174
-rw-r--r--src/main/java/com/detrav/items/tools/DetravProPick.java2
-rw-r--r--src/main/resources/mcmod.info4
5 files changed, 109 insertions, 91 deletions
diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java
index 5ffaff866c..8898a98dd0 100644
--- a/src/main/java/com/detrav/DetravScannerMod.java
+++ b/src/main/java/com/detrav/DetravScannerMod.java
@@ -23,7 +23,7 @@ import net.minecraftforge.common.config.Configuration;
public class DetravScannerMod
{
public static final String MODID = "detravscannermod";
- public static final String VERSION = "1.4.2";
+ public static final String VERSION = "1.5.1";
public static final boolean DEBUGBUILD = false;
public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab();
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
index 4c10d28dde..62d296077c 100644
--- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -39,6 +39,7 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
addTool(14,"Prospector's Scanner(ZPM)","", new DetravProPick(7), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
addTool(16,"Prospector's Scanner(UV)","", new DetravProPick(8), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
addTool(18,"Prospector's Scanner(UHV)","", new DetravProPick(9), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+
addTool(100, "Electric Prospector's Scanner (LuV)", "", new DetravToolElectricProPick(6), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
addTool(102, "Electric Prospector's Scanner (ZPM)", "", new DetravToolElectricProPick(7), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
addTool(104, "Electric Prospector's Scanner (UV)", "", new DetravToolElectricProPick(8), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
@@ -46,8 +47,6 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
setCreativeTab(DetravScannerMod.TAB_DETRAV);
}
-
-
public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) {
//getElectricStats()
//super.addAdditionalToolTips();
@@ -60,13 +59,24 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
String name = aStack.getUnlocalizedName();
String num = name.substring("gt.detrav.metatool.01.".length());
int meta = Integer.parseInt(num);
+ int range = getHarvestLevel(aStack, "")/2+(meta/4);
+ if ((range % 2) == 0 ) {
+ range += 1;
+ }
if (meta<100) {
aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + Long.toString(tMaxDamage - getToolDamage(aStack)) + " / " + Long.toString(tMaxDamage) + EnumChatFormatting.GRAY);
aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.GRAY);
- aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " + Integer.toString(getHarvestLevel(aStack, "")+(meta/4))+ "x"+Integer.toString(getHarvestLevel(aStack, "")+(meta/4)) + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Chunks: " +
+ Integer.toString(range) +
+ "x"+
+ Integer.toString(range) +
+ EnumChatFormatting.GRAY);
aList.add(tOffset + 3, EnumChatFormatting.ITALIC+ "Right click on rock for prospecting current chunk!" + EnumChatFormatting.GRAY);
aList.add(tOffset + 4, EnumChatFormatting.ITALIC+ "Right click on bedrock for prospecting oil!" + EnumChatFormatting.GRAY);
- aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ "Chance of a successful scan: "+EnumChatFormatting.RESET+Integer.toString(((((1+meta)*7) <= 100)? ((1+meta)*7) : 100))+EnumChatFormatting.GRAY+"%");
+ aList.add(tOffset + 5, EnumChatFormatting.ITALIC+ "Chance of a successful scan: "+EnumChatFormatting.RESET+Integer.toString(((((1+meta)*8) <= 100)? ((1+meta)*8) : 100))+EnumChatFormatting.GRAY+"%");
+ aList.add(tOffset + 6, EnumChatFormatting.ITALIC+ "next to you (0 chunks away), close to you (1-2)");
+ aList.add(tOffset + 7, EnumChatFormatting.ITALIC+ "at medium range (3-5), at long range (6-8), far away (9+)");
+
/*aList.add(tOffset + 4, "Traces: 1-9");
aList.add(tOffset + 5, "Small: 10-29");
aList.add(tOffset + 6, "Medium: 30-59");
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
index ffd8122380..52bae97da3 100644
--- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java
@@ -38,13 +38,33 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
static final String[] foundTexts = new String[]{
"Found nothing of interest", //0
- "Found Traces of ", //1-9
- "Found a small sample of ", //10-29
- "Found a medium sample of ", //30-59
- "Found a large sample of ", //60-99
- "Found a very large sample of ", //100-**
+ " traces.", //1-9
+ " small sample.", //10-29
+ " medium sample.", //30-59
+ " large sample.", //60-99
+ " very large sample.", //100-**
"Found "
};
+
+ static final String[] DISTANCETEXTS = new String[]{
+ " next to you,", // 0 chunks away
+ " close to you,", // 1-2 chunks aways
+ " at medium range,", // 3 - 5 chunks away
+ " at long range,", // 6 -8 chunks away
+ " far away,", // 9 + chunks away
+ };
+
+ static final int[] DISTANCEINTS = new int[] {
+ 0,
+ 4,
+ 25,
+ 64,
+ };
+ int distTextIndex;
+
+ HashMap<String, Integer> ores;
+ int badluck;
+
protected final int mCosts;
public BehaviourDetravToolProPick(int aCosts) {
@@ -54,7 +74,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
public boolean onItemUse(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
SplittableRandom aRandom =new SplittableRandom();
- int chance = ((1+aStack.getItemDamage())*7) > 100 ? 100 :(1+aStack.getItemDamage())*7;
+ int chance = ((1+aStack.getItemDamage())*8) > 100 ? 100 :(1+aStack.getItemDamage())*8;
if (aWorld.isRemote)
return false;
@@ -77,34 +97,45 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
if (!aWorld.isRemote) {
int bX = aX;
int bZ = aZ;
+
+ badluck = 0;
+ ores = new HashMap<String, Integer>();
+
+ int range = ((DetravMetaGeneratedTool01)aItem).getHarvestLevel(aStack, "")/2+(aStack.getItemDamage()/4);
+ if ((range % 2) == 0 ) {
+ range += 1; // kinda not needed here, divide takes it out, but we put it back in with the range+1 in the loop
+ }
+ range = range/2; // Convert range from diameter to radius
- int chunks = (((DetravMetaGeneratedTool01)aItem).getHarvestLevel(aStack, "")+(aStack.getItemDamage()/4));
- int half = chunks/2;
-
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+"Start of Prospectoring"));
- for (int x = -half; x<half;++x)
- for (int z = -half; z<half;++z) {
- aX=aX+(x*16);
- aZ=aZ+(z*16);
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+"Prospecting at " + EnumChatFormatting.BLUE + "(" + bX + ", " + bZ + ")" ));
+ for (int x = -(range); x<(range+1);++x){
+ aX=bX+(x*16);
+ for (int z = -(range); z<(range+1);++z) {
+
+ aZ=bZ+(z*16);
+ int dist = x*x + z*z;
+
+ for( distTextIndex = 0; distTextIndex < DISTANCEINTS.length; distTextIndex++ ) {
+ if ( dist <= DISTANCEINTS[distTextIndex] ) {
+ break;
+ }
+ }
if (DetravScannerMod.DEBUGBUILD)
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16)));
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16) + DISTANCETEXTS[distTextIndex]));
processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(aX, aZ), aWorld.getTileEntity(aX, aY, aZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(aX, aY, aZ), 1, aWorld.getBlockMetadata(aX, aY, aZ))), aRandom, chance);
}
-
- /*for (byte b = 0; b<chunks;++b) {
- aX=aX+(b*16);
- aZ=aZ+(b*16);
- bX=bX-(b*16);
- bZ=bZ-(b*16);
- if (DetravScannerMod.DEBUGBUILD)
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ aX +"|"+aZ+" to "+(aX+16)+"|"+(aZ+16)));
- processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(aX, aZ), aWorld.getTileEntity(aX, aY, aZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(aX, aY, aZ), 1, aWorld.getBlockMetadata(aX, aY, aZ))), aRandom, chance);
- if (bX!=aX && bZ != aZ) {
- if (DetravScannerMod.DEBUGBUILD)
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW+"Chunk at "+ bX +"|"+bZ+" to "+(bX+16)+"|"+(bZ+16)));
- processOreProspecting((DetravMetaGeneratedTool01) aItem, aStack, aPlayer, aWorld.getChunkFromBlockCoords(bX, bZ), aWorld.getTileEntity(bX, aY, bZ),GT_OreDictUnificator.getAssociation(new ItemStack(aWorld.getBlock(bX, aY, bZ), 1, aWorld.getBlockMetadata(bX, aY, bZ))), aRandom, chance);
- }
- }*/
+ }
+
+ for (String key : ores.keySet()) {
+ int value = ores.get(key);
+ addChatMassageByValue(aPlayer,value,key);
+ }
+
+ if( badluck == 0) {
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + "All chunks scanned successfully!"));
+ } else {
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + "Failed on " + badluck + " chunks. Better luck next time!"));
+ }
return true;
}
return true;
@@ -119,7 +150,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) aTileEntity;
short meta = gt_entity.getMetaData();
String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation("gt.blockores." + meta + ".name"), meta%1000);
- addChatMassageByValue(aPlayer, -1, name);
+ addOreToHashMap(name, aPlayer);
if (!aPlayer.capabilities.isCreativeMode)
aItem.doDamage(aStack, this.mCosts);
return;
@@ -138,10 +169,8 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
{
addChatMassageByValue(aPlayer, -1, "ERROR, lol ^_^");
}
- //}
}else if (aRandom.nextInt(100) < chance) {
int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue();
- HashMap<String, Integer> ores = new HashMap<String, Integer>();
for (int x = 0; x < 16; x++)
for (int z = 0; z < 16; z++) {
int ySize = aChunk.getHeightValue(x, z);
@@ -160,33 +189,18 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
GT_LanguageManager.getTranslation(tBlock.getUnlocalizedName() + "." + tMetaID + ".name"), tMetaID%1000);
if (name.startsWith("Small")) if (data != 1) continue;
if (name.startsWith("Small")) if(data!=1) continue;
- if (!ores.containsKey(name))
- ores.put(name, 1);
- else {
- int val = ores.get(name);
- ores.put(name, val + 1);
- }
+ addOreToHashMap(name, aPlayer);
}
catch(Exception e) {
String name = tBlock.getUnlocalizedName() + ".";
if (name.contains(".small.")) if (data != 1) continue;
if (name.startsWith("Small")) if(data!=1) continue;
- if (!ores.containsKey(name))
- ores.put(name, 1);
- else {
- int val = ores.get(name);
- ores.put(name, val + 1);
- }
+ addOreToHashMap(name, aPlayer);
}
}
} else if (tBlock instanceof BlockBaseOre) {
String name = tBlock.getLocalizedName();
- if (!ores.containsKey(name))
- ores.put(name, 1);
- else {
- int val = ores.get(name);
- ores.put(name, val + 1);
- }
+ addOreToHashMap(name, aPlayer);
} else if (data == 1) {
tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID));
@@ -197,20 +211,10 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
String name = Materials.getLocalizedNameForItem(GT_LanguageManager.getTranslation(
"gt.blockores." + tMetaID + ".name"), tMetaID%1000);
- if (!ores.containsKey(name))
- ores.put(name, 1);
- else {
- int val = ores.get(name);
- ores.put(name, val + 1);
- }
+ addOreToHashMap(name, aPlayer);
} catch (Exception e1) {
String name = tAssotiation.toString();
- if (!ores.containsKey(name))
- ores.put(name, 1);
- else {
- int val = ores.get(name);
- ores.put(name, val + 1);
- }
+ addOreToHashMap(name, aPlayer);
}
}
catch (Exception e)
@@ -222,49 +226,53 @@ public class BehaviourDetravToolProPick extends Behaviour_None {
}
}
- int total = 0;
- for (String key : ores.keySet()) {
- int value = ores.get(key);
- total+=value;
- addChatMassageByValue(aPlayer,value,key);
- }
- addChatMassageByValue(aPlayer,total,"Total");
+
if (!aPlayer.capabilities.isCreativeMode)
aItem.doDamage(aStack, this.mCosts);
- if(total==0)
- {
- addChatMassageByValue(aPlayer,0,null);
- }
+
return;
}
- else if (aRandom.nextInt(100) > chance) {
- aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+"You had no luck this time."));
+ else {
+ if (DetravScannerMod.DEBUGBUILD)
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED+" Failed on this chunk"));
+ badluck++;
if (!aPlayer.capabilities.isCreativeMode)
aItem.doDamage(aStack, this.mCosts/4);
}
// addChatMassageByValue(aPlayer,0,null);
}
+ void addOreToHashMap(String orename, EntityPlayer aPlayer) {
+ String oreDistance = orename + DISTANCETEXTS[distTextIndex]; // orename + the textual distance of the ore
+ if (!ores.containsKey(oreDistance)) {
+ if (DetravScannerMod.DEBUGBUILD)
+ aPlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN+" Adding to oremap " + oreDistance));
+ ores.put(oreDistance, 1);
+ } else {
+ int val = ores.get(oreDistance);
+ ores.put(oreDistance, val + 1);
+ }
+ }
+
void addChatMassageByValue(EntityPlayer aPlayer, int value, String name) {
- if(name == "Total") return;
if (value < 0) {
aPlayer.addChatMessage(new ChatComponentText(foundTexts[6] + name));
} else if (value < 1) {
aPlayer.addChatMessage(new ChatComponentText(foundTexts[0]));
} else if (value < 10)
- aPlayer.addChatMessage(new ChatComponentText(foundTexts[1] + name));
+ aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[1]));
else if (value < 30)
- aPlayer.addChatMessage(new ChatComponentText(foundTexts[2] + name));
+ aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[2]));
else if (value < 60)
- aPlayer.addChatMessage(new ChatComponentText(foundTexts[3] + name));
+ aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[3]));
else if (value < 100)
- aPlayer.addChatMessage(new ChatComponentText(foundTexts[4] + name));
+ aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[4]));
else
- aPlayer.addChatMessage(new ChatComponentText(foundTexts[5] + name));
+ aPlayer.addChatMessage(new ChatComponentText(name + foundTexts[5]));
}
public static int getPolution(World aWorld, int aX, int aZ)
{
return GT_Pollution.getPollution(aWorld.getChunkFromBlockCoords(aX, aZ));
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/com/detrav/items/tools/DetravProPick.java b/src/main/java/com/detrav/items/tools/DetravProPick.java
index a86f68e40d..9d3b2de50c 100644
--- a/src/main/java/com/detrav/items/tools/DetravProPick.java
+++ b/src/main/java/com/detrav/items/tools/DetravProPick.java
@@ -24,7 +24,7 @@ public class DetravProPick extends DetravToolElectricProPickBase {
return 0.02F;
return ((float) Math.pow(tier,((float)tier/5F)))/24F;*/
double x = tier+1;
- return (float) ((float) 0.005D+Math.tanh(Math.pow(x,(x/8D))/25D)*(x/6D));
+ return (float) (((float) 0.005D+Math.tanh(Math.pow(x,(x/8D))/25D)*(x/6D))*1.25);
}
public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info
index 618df6eb4e..168d7a382a 100644
--- a/src/main/resources/mcmod.info
+++ b/src/main/resources/mcmod.info
@@ -3,11 +3,11 @@
"modid": "detravscannermod",
"name": "GT Scanner Mod",
"description": "To locate ores deep underground.",
- "version": "1.4.2",
+ "version": "1.5.1",
"mcversion": "1.7.10",
"url": "https://github.com/GTNewHorizons/GTScannerMod",
"updateUrl": "",
- "authorList": ["Ethryan, GTNewHorizons Team, bartimaeusnek"],
+ "authorList": ["Ethryan, GTNewHorizons Team, bartimaeusnek, richardhendricks"],
"credits": "Detrav",
"logoFile": "",
"screenshots": [],