aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--build.properties2
-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
6 files changed, 110 insertions, 92 deletions
diff --git a/build.properties b/build.properties
index ce6e505857..40a794bffd 100644
--- a/build.properties
+++ b/build.properties
@@ -1,7 +1,7 @@
minecraft.version=1.7.10
forge.version=10.13.4.1614-1.7.10
-detravscanner.version=1.5.0a
+detravscanner.version=1.5.1
ae2.version=rv2-beta-33
applecore.version=1.7.10-1.2.1+107.59407
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": [],