summaryrefslogtreecommitdiff
path: root/eclipse/.metadata/.plugins
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2017-06-17 08:12:18 +0300
committerFoghrye4 <foghrye4@gmail.com>2017-06-17 08:12:18 +0300
commitdc3df3edd5843bde0c1335d6a8e460b2c832aa48 (patch)
treeaf13bfeee567f2351e35e1ef176d168fe37c8aac /eclipse/.metadata/.plugins
parent1da8dcd58647e34c9af94ceeecaeaf3b0d08c48c (diff)
full project files
Diffstat (limited to 'eclipse/.metadata/.plugins')
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1e/4090a85b46a3001516ebc455efc032e5112
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/d0d1122b11a000151fdfc2dacce472e3109
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/200ef4dc19910015138fc97f11b3d08b303
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/0034395f7f8b0015134481ec712b17ae316
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/3087c516499b001510c7de20d4b3838c0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/30/90354db2158e00151544f45b8684d31e390
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/50d57f047194001516739e804437c3f8494
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/e07bf28042b60015176c95ddaf2504ce578
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/401f465e708b0015134481ec712b17ae207
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/2010220b148e00151544f45b8684d31e318
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/80b79e1a088e00151544f45b8684d31e370
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/60b1517d5da3001518cde17cb509661c128
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/a08480c30bb300151351fd9e9a996bbe162
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/7096612146a3001516ebc455efc032e5101
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/e0c732e253a3001516ebc455efc032e5120
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/600afeecd8b20015115782a55d40af78395
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/b026503b5ea3001518cde17cb509661c141
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/a0f3e06d7d8b0015134481ec712b17ae315
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/2052af7b0b8e00151544f45b8684d31e371
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/3026c575748b0015134481ec712b17ae307
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40b9d805088e00151544f45b8684d31e364
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/72/106e4eb2158e00151544f45b8684d31e321
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/7054990556b400151e8fcdb87a141443567
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb3543b60015176c95ddaf2504ce578
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/0003ff6a758b0015134481ec712b17ae312
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/90232f55a7ca001510f7df4278c93a7e949
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b01bf4eb46a3001516ebc455efc032e5112
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0b1b07b0b8e00151544f45b8684d31e260
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/700d2b9561b500151fdb993ef9230294572
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/00f7674b748b0015134481ec712b17ae274
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0dbc47f07a50015138cc582c427ac9166
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a7/f042703fd8b20015115782a55d40af78395
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a8/d037e47347a3001516ebc455efc032e5113
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/b025dae449a3001516ebc455efc032e5116
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/a00189f69cb4001510d7bdb0b1be77c9934
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f1ce250b400151e8fcdb87a141443564
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/10184eb91baa00151263eb9882e2ad6786
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0339bee53a3001516ebc455efc032e5125
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ca/e006f2ab27bc001514d3de1c0800049b269
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b0083d60a7ca001510f7df4278c93a7e935
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/50f158a8d9e200151b3e8eaec212bcd4878
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/50374e2ca4e00015119a88e59fd033e2146
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b02f8eb743a000151531bed9130b5444391
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/5015a2ff41b60015176c95ddaf2504ce573
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d7200b148e00151544f45b8684d31e376
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d88773a7ca001510f7df4278c93a7e934
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/b0676a5333b500151a77dabf7b9b4d77526
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/40c790ca5da3001518cde17cb509661c141
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10871e5d49a3001516ebc455efc032e5113
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.locationbin0 -> 97 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markersbin0 -> 5247 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/3.treebin0 -> 575018 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/org.eclipse.jdt.core/state.datbin0 -> 570376 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.indexbin0 -> 151 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/113.treebin0 -> 410 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resourcesbin0 -> 1430 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs7
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ui.prefs3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.gathering.prefs3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs20
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs20
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs5
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs10
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Client.launch13
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch11
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Server.launch13
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml16
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml19
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi2444
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdtbin0 -> 11 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdxbin0 -> 12 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fnm1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.frq0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.nrm1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tiibin0 -> 24 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tisbin0 -> 24 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments.genbin0 -> 20 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments_1bin0 -> 248 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdtbin0 -> 11 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdxbin0 -> 12 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fnm1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.frq0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.nrm1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tiibin0 -> 24 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tisbin0 -> 24 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments.genbin0 -> 20 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments_1bin0 -> 248 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml5
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCachebin0 -> 4 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCachebin0 -> 4 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStampsbin0 -> 8463 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCachebin0 -> 4 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCachebin0 -> 7464 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt66
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.datbin0 -> 173 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml41
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml63
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml71
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhoverbin0 -> 39852 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhoverbin0 -> 1041481 bytes
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.history4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.index1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.index2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.history4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.index1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.index5
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.index14
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.index4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.index4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.index2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.index3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.history3
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.index4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.history4
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.index1
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml17
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.0.20150526-2032.xml43
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup6
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.core/.log0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/FP.local.files_0/node.properties57
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/H.local_16/node.properties25
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/node.properties7
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log0
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml169
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.team.ui/syncParticipants.xml2
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml5
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml38
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml21
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml165
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml5
-rw-r--r--eclipse/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties3
167 files changed, 20758 insertions, 0 deletions
diff --git a/eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log b/eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log
new file mode 100644
index 0000000..57aacd0
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log
@@ -0,0 +1 @@
+*** SESSION Apr 02, 2016 09:35:54.87 -------------------------------------------
diff --git a/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
@@ -0,0 +1 @@
+
diff --git a/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
@@ -0,0 +1 @@
+
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1e/4090a85b46a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1e/4090a85b46a3001516ebc455efc032e5
new file mode 100644
index 0000000..010c6aa
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1e/4090a85b46a3001516ebc455efc032e5
@@ -0,0 +1,112 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ Files.copy(fileFrom, file);
+ }
+ return new File(folder, "ihl-guidebook.xml");
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/d0d1122b11a000151fdfc2dacce472e3 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/d0d1122b11a000151fdfc2dacce472e3
new file mode 100644
index 0000000..51069ea
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/d0d1122b11a000151fdfc2dacce472e3
@@ -0,0 +1,109 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import net.minecraft.item.ItemStack;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ Set<ItemStack> iss = new HashSet(4);
+ Set<String> textBlocks = new HashSet(2);
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode.getNodeName().equals("section"))
+ {
+ if(i==sectionNumber)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(list.getLength()<=sectionNumber)
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ if (node instanceof Element)
+ {
+ Element e = (Element) node;
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(e.getTextContent());
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = e.getTextContent().split(":");
+ iss.add(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ textBlocks.add(e.getTextContent());
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(e.getTextContent(), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ }
+ if(!iss.isEmpty())
+ {
+ ihlGuidebookGui.setItems(iss);
+ }
+ if(!textBlocks.isEmpty())
+ {
+ ihlGuidebookGui.setContent(textBlocks);
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile()
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ return new File(folder, "ihl-guidebook.xml");
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/200ef4dc19910015138fc97f11b3d08b b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/200ef4dc19910015138fc97f11b3d08b
new file mode 100644
index 0000000..fa4e745
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/200ef4dc19910015138fc97f11b3d08b
@@ -0,0 +1,303 @@
+package ihl.items_blocks;
+
+import ic2.api.tile.IWrenchable;
+import ic2.core.IC2;
+import ic2.core.IHasGui;
+import ic2.core.Ic2Items;
+import ic2.core.block.EntityDynamite;
+import ic2.core.item.tool.ItemToolCutter;
+import ic2.core.item.tool.ItemToolWrench;
+import ihl.IHLCreativeTab;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.collector.GlassBoxTileEntity;
+import ihl.datanet.RedstoneSignalConverterTileEntity;
+import ihl.flexible_cable.BatterySwitchUnitTileEntity;
+import ihl.flexible_cable.FrequencyGeneratorTileEntity;
+import ihl.flexible_cable.GroundingTileEntity;
+import ihl.flexible_cable.RectifierTransformerUnitTileEntity;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.items_blocks.MachineBaseBlock.MachineType;
+import ihl.model.ImpregnatingMachineBlockRender;
+import ihl.processing.chemistry.ChemicalReactorTileEntity;
+import ihl.processing.chemistry.CryogenicDistillerTileEntity;
+import ihl.processing.chemistry.ElectrolysisBathTileEntity;
+import ihl.processing.chemistry.ExplosiveTileEntity;
+import ihl.processing.chemistry.FluidizedBedReactorTileEntity;
+import ihl.processing.chemistry.FractionatorBottomTileEntity;
+import ihl.processing.chemistry.FractionatorCoverTileEntity;
+import ihl.processing.chemistry.FractionatorSectionTileEntity;
+import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity;
+import ihl.processing.chemistry.GoldChimneyKneeTileEntity;
+import ihl.processing.chemistry.LabElectrolyzerTileEntity;
+import ihl.processing.chemistry.LeadOvenTileEntity;
+import ihl.processing.chemistry.LoomTileEntity;
+import ihl.processing.chemistry.PaperMachineTileEntity;
+import ihl.processing.chemistry.PrecipitatorCondenserTileEntity;
+import ihl.processing.chemistry.RefluxCondenserTileEntity;
+import ihl.processing.metallurgy.AchesonFurnanceTileEntity;
+import ihl.processing.metallurgy.CoilerTileEntity;
+import ihl.processing.metallurgy.DetonationSprayingMachineTileEntity;
+import ihl.processing.metallurgy.ExtruderTileEntity;
+import ihl.processing.metallurgy.GasWeldingStationTileEntity;
+import ihl.processing.metallurgy.ImpregnatingMachineTileEntity;
+import ihl.processing.metallurgy.LathePart1TileEntity;
+import ihl.processing.metallurgy.LathePart2TileEntity;
+import ihl.processing.metallurgy.MuffleFurnanceTileEntity;
+import ihl.processing.metallurgy.RollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.RollingMachinePart2TileEntity;
+import ihl.processing.metallurgy.VacuumInductionMeltingFurnaceTileEntity;
+import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity;
+import ihl.processing.metallurgy.WireMillTileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity;
+import ihl.tunneling_shield.HydrotransportPulpRegeneratorTileEntity;
+import ihl.utils.IHLUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class ExplosiveBlock extends Block implements ITileEntityProvider{
+
+ @SideOnly(Side.CLIENT)
+ IIcon textureSide,
+ textureBack,
+ textureTop;
+
+ public ExplosiveBlock()
+ {
+ super(Material.tnt);
+ this.setCreativeTab(IHLCreativeTab.tab);
+ this.setBlockName("ihlExplosive");
+ this.setHardness(2F);
+ this.setResistance(1F);
+ }
+
+
+ @Override
+ public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
+ {
+ if(IC2.platform.isSimulating())
+ {
+ }
+ }
+
+ @Override
+ public void getSubBlocks(Item item, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ ItemStack result = new ItemStack(item);
+ result.stackTagCompound=new NBTTagCompound();
+ result.stackTagCompound.setInteger("explosionType", 0);//0 - IC2; 1- IHL
+ result.stackTagCompound.setInteger("explosionPower", 100000);
+ //itemList.add(result);
+ result = new ItemStack(item);
+ result.stackTagCompound=new NBTTagCompound();
+ result.stackTagCompound.setInteger("explosionType", 1);//0 - IC2; 1- IHL
+ result.stackTagCompound.setInteger("explosionPower", 32000);//31000
+ itemList.add(result);
+ }
+
+ @Override
+ public void onBlockPreDestroy(World world, int x, int y, int z, int meta)
+ {
+ if(!world.isRemote)
+ {
+ TileEntity te = world.getTileEntity(x, y, z);
+ }
+ super.onBlockPreDestroy(world, x, y, z, meta);
+ }
+
+ @Override
+ public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity)
+ {
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.1F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.1F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.9F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.9F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBoundsForItemRender();
+ }
+
+ public void setBlockBoundsForItemRender()
+ {
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z)
+ {
+ int facing = 3;
+ TileEntity te = blockAccess.getTileEntity(x, y, z);
+ if(te!=null && te instanceof IWrenchable)
+ {
+ IWrenchable tebh = (IWrenchable) te;
+ facing=tebh.getFacing();
+ }
+ super.setBlockBoundsBasedOnState(blockAccess, x, y, z);
+ }
+
+ public static void init()
+ {
+ GameRegistry.registerBlock(new ExplosiveBlock(), IHLItemBlock.class,"ihlExplosive");
+ GameRegistry.registerTileEntity(ExplosiveTileEntity.class, "explosiveTileEntity");
+ ExplosiveType[] var1 = ExplosiveType.values();
+ }
+
+ @Override
+ public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int flag)
+ {
+ super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, flag);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int var2) {
+ return new ExplosiveTileEntity();
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister par1IconRegister)
+ {
+ this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenSide");
+ this.textureBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenBack");
+ this.textureSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenSide");
+ this.textureTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenTop");
+ }
+
+ @Override
+ public boolean hasTileEntity(int metadata)
+ {
+ return true;
+ }
+
+ @Override
+ public boolean onBlockActivated(World world,int x,int y,int z,EntityPlayer player,int i,float pos_x,float pos_y,float pos_z){
+ TileEntity te = world.getTileEntity(x,y,z);
+ if(IC2.platform.isSimulating() && te instanceof ExplosiveTileEntity)
+ {
+ ((ExplosiveTileEntity)te).createExplosion(player);
+ }
+ return false;
+ }
+
+
+ /**
+ * Called when the block is placed in the world.
+ */
+ @Override
+ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack)
+ {
+ TileEntity t = world.getTileEntity(x, y, z);
+ if(t!=null)
+ {
+ t.readFromNBT(itemStack.stackTagCompound);
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
+ {
+ int facing=3;
+ int mask[] = {
+ 0,1,2,3,4,5,
+ 1,0,3,2,4,5,
+ 2,3,0,1,4,5,
+ 2,3,1,0,4,5,
+ 2,3,5,4,0,1,
+ 2,3,4,5,1,0
+ };
+ TileEntity te = world.getTileEntity(x, y, z);
+ if(te instanceof IWrenchable)
+ {
+ IWrenchable tebh = (IWrenchable) te;
+ facing=tebh.getFacing();
+ }
+ return this.getIconFromFacing(facing, side);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int side, int meta)
+ {
+ return this.getIconFromFacing(3, side);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromFacing(int facing, int side)
+ {
+ return this.textureSide;
+ }
+
+ @Override
+ public boolean onBlockEventReceived(World world, int x, int y, int z, int metadata, int flag)
+ {
+ return true;
+ }
+
+ public enum ExplosiveType
+ {
+ MuffleFurnace("muffleFurnance",MuffleFurnanceTileEntity.class, true, new ItemStack(Items.brick));
+ ExplosiveType(String unlocalizedName1, Class teclass1, boolean isNormalBlock1,ItemStack itemDroppedOnBlockDestroy1)
+ {
+ unlocalizedName=unlocalizedName1;
+ teclass=teclass1;
+ isNormalBlock=isNormalBlock1;
+ itemDroppedOnBlockDestroy=itemDroppedOnBlockDestroy1;
+ }
+ String unlocalizedName;
+ Class teclass;
+ boolean isNormalBlock=true;
+ ItemStack itemDroppedOnBlockDestroy;
+ }
+
+ public int getRenderType()
+ {
+ return 0;
+ }
+
+ public boolean isOpaqueCube()
+ {
+ return true;
+ }
+
+ public boolean renderAsNormalBlock()
+ {
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getInnerTextureForBlockRenderer()
+ {
+ return this.blockIcon;
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/0034395f7f8b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/0034395f7f8b0015134481ec712b17ae
new file mode 100644
index 0000000..a891dbe
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/0034395f7f8b0015134481ec712b17ae
@@ -0,0 +1,316 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/3087c516499b001510c7de20d4b3838c b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/3087c516499b001510c7de20d4b3838c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/3087c516499b001510c7de20d4b3838c
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/30/90354db2158e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/30/90354db2158e00151544f45b8684d31e
new file mode 100644
index 0000000..483decd
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/30/90354db2158e00151544f45b8684d31e
@@ -0,0 +1,390 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ public ExtendedBlockStorage[][][] esbArray;
+ private int[][][] esbHardness;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ public int chunkX;
+ public int chunkZ;
+ public DamageSource damageSource;
+ public int areaSize;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.drops=new HashMap();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/16000,1));
+ this.areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.esbArray = new ExtendedBlockStorage[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ this.esbArray[var11 - this.chunkX][var12 - this.chunkZ] = var13.getBlockStorageArray();
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ this.precalculateESBHardness();
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ private void precalculateESBHardness()
+ {
+ for(int x1=0;x1<this.esbArray.length;x1++)
+ {
+ ExtendedBlockStorage[][] esb3 = this.esbArray[x1];
+ for(int z2=0;z2<esb3.length;z2++)
+ {
+ ExtendedBlockStorage[] esb2 = esb3[z2];
+ for(int y3=0;y3<esb2.length;y3++)
+ {
+ ExtendedBlockStorage esb = esb2[y3];
+ if(esb.isEmpty())
+ {
+ this.esbHardness[x1][z2][y3]=0;
+ }
+ else
+ {
+ byte[] lbsArray = esb.getBlockLSBArray();
+ for(int i4=0;i4<lbsArray.length;i4++)
+ {
+ int var4 = lbsArray[i4] & 255;
+
+ if (esb.getBlockMSBArray() != null)
+ {
+ var4 |= esb.getBlockMSBArray().get(i4>>8, (i4>>4) & 4095, i4 & 4095) << 8;
+ }
+ this.esbHardness[x1][z2][y3]+=Math.round(Block.getBlockById(var4).getExplosionResistance(this, worldObj, (i4>>8)+(x1<<4), ((i4>>4) & 4095)+(y3<<4), (i4 & 4095)+(z2<<4), this.x, this.y, this.z)*10f);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ Iterator<Long> bnctbi = this.blocksNotConnectedWithBedrock.iterator();
+ while(bnctbi.hasNext())
+ {
+ long longNumber5 = bnctbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber5);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ float bh = block.getBlockHardness(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(bh>=0f && bh<Float.MAX_VALUE)
+ {
+ block.onBlockDestroyedByExplosion(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], explosion);
+ this.setBlockToAir(x, y, z);
+ }
+ }
+
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public List<Entity> getEntityFromESB(int cax, int eay, int caz)
+ {
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ return var7.entityLists[eay];
+ }
+ }
+ return null;
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+ public int getEBSResistance(int x2, int y2, int z2)
+ {
+ return this.esbHardness[x2][z2][y2];
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/50d57f047194001516739e804437c3f8 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/50d57f047194001516739e804437c3f8
new file mode 100644
index 0000000..a941ce6
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/50d57f047194001516739e804437c3f8
@@ -0,0 +1,494 @@
+package ihl.utils;
+
+import java.nio.FloatBuffer;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.lwjgl.opengl.GL11;
+
+import ic2.core.util.DrawUtil;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.renderer.GLAllocation;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.texture.TextureManager;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.IBlockAccess;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+public class IHLRenderUtils
+{
+ private FloatBuffer colorBuffer;
+ private Map<Long, Integer> frameTooltipMap;
+ private int displayScaledWidth=-1;
+ private int displayScaledHeight=-1;
+ private int guiXPos=-1;
+ private int guiYPos=-1;
+ private int prevDisplayWidth=-1;
+ private int prevDisplayHeight=-1;
+ private final int guiContainerWidth = 166;
+ private final int guiContainerHeight = 176;
+ private float lastPlayerYaw;
+ private float lastPlayerPitch;
+ private double lastPlayerPosY;
+ private double lastPlayerPosZ;
+ private double lastPlayerPosX;
+ private double renderMinX=0d;
+ private double renderMaxX=1d;
+ private double renderMinY=0d;
+ private double renderMaxY=1d;
+ private double renderMinZ=0d;
+ private double renderMaxZ=1d;
+ public boolean renderFromInside=false;
+ public static IHLRenderUtils instance;
+
+ public IHLRenderUtils()
+ {
+ instance=this;
+ colorBuffer = GLAllocation.createDirectFloatBuffer(16);
+ frameTooltipMap = new HashMap();
+ }
+
+ public void renderIHLFluidTank(IHLFluidTank fluidTank, int x1, int y1, int x2, int y2, float zLevel, int par1, int par2, int xOffset, int yOffset)
+ {
+ int liquidHeight = 0;
+ int prevLiquidHeight = 0;
+ int i = y2-y1;
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glColor4f(1f, 1f, 1f, 1f);
+ for(int i2 = 0;i2<fluidTank.getNumberOfFluids();i2++)
+ {
+ FluidStack fluidStack = fluidTank.getFluid(i2);
+ if(fluidStack!=null)
+ {
+ Fluid fluid = fluidStack.getFluid();
+ if(fluid!=null)
+ {
+ IIcon fluidIcon = fluid.getIcon();
+ if (fluidIcon != null)
+ {
+ liquidHeight = fluidTank.getFluidAmount(i2) * i /fluidTank.getCapacity();
+ DrawUtil.drawRepeated(fluidIcon, (double)x1, (double)(y2 - liquidHeight-prevLiquidHeight), (double)(x2-x1), (double)liquidHeight, (double)zLevel);
+ prevLiquidHeight+=liquidHeight;
+ }
+ }
+ }
+ }
+ drawIHLFluidTankTooltip(par1, par2, x1+guiXPos-6, y1+guiYPos+6, x2+guiXPos-6, y2+guiYPos+6, fluidTank);
+ }
+
+ public void drawMissingEngineTooltip(GuiContainer gui, int par1, int par2, int xPos, int yPos, int xOffset, int yOffset)
+ {
+ gui.drawTexturedModalRect(xPos, yPos, 194, 0, 3, 14);
+ drawTooltip(par1,par2,3,14,xPos+xOffset,yPos+yOffset,"ihl.gui.missing.engine");
+ }
+
+ public void drawWorkspaceElementTooltip(int par1, int par2, int xPos, int yPos, ItemStack workSpaceElement)
+ {
+ drawTooltip(par1,par2,16,16,xPos,yPos,workSpaceElement.getUnlocalizedName()+".tooltip");
+ }
+
+ public void drawIHLFluidTankTooltip(int par1, int par2, int x1, int y1, int x2, int y2, IHLFluidTank fluidTank)
+ {
+ String fluidListNames="";
+ List<FluidStack> fli = fluidTank.getFluidList();
+ for(int i=fli.size()-1;i>=0;i--)
+ {
+ FluidStack fluidStack = fli.get(i);
+ fluidListNames+=StatCollector.translateToLocal(fluidStack.getUnlocalizedName())+": "+fluidStack.amount+"mB /n ";
+ }
+ drawTooltip(par1,par2,x2-x1,y2-y1,x1,y1,fluidListNames);
+ }
+
+ public boolean drawTooltip(int cursorPosX, int cursorPosY, int width, int height, int xPos, int yPos, String text)
+ {
+ updateScreenSize();
+ long key = xPos+yPos*1024;
+ Integer frame=0;
+ if(frameTooltipMap.containsKey(key))
+ {
+ frame=frameTooltipMap.get(key);
+ }
+ boolean showString=true;
+ if(cursorPosX<xPos || cursorPosX>xPos+width||
+ cursorPosY<yPos || cursorPosY>yPos+height)
+ {
+ if(frame>0)
+ {
+ frame-=20;
+ frameTooltipMap.put(key, frame);
+ }
+ showString=false;
+ }
+ else
+ {
+ frame+=10;
+ frameTooltipMap.put(key, frame);
+ }
+ if(frame>0)
+ {
+ int strokeHeight=15;
+ int i,x1,x2,y1,y2,tooltipWidth,tooltipHeight;
+ tooltipWidth=tooltipHeight=0;
+ String[] splittedText = StatCollector.translateToLocal(text).split(" /n ");
+ for(i=0;i<splittedText.length;i++)
+ {
+ if(Minecraft.getMinecraft().fontRenderer.getStringWidth(splittedText[i])+8>tooltipWidth)
+ {
+ tooltipWidth=Math.min(frame,Minecraft.getMinecraft().fontRenderer.getStringWidth(splittedText[i])+8);
+ }
+ }
+ tooltipHeight=Math.min(Math.max(frame-tooltipWidth,strokeHeight),strokeHeight*splittedText.length);
+ x1=cursorPosX-xPos;
+ x2=x1+tooltipWidth;
+ y1=cursorPosY-guiYPos+18;
+ y2=y1+tooltipHeight;
+ GL11.glPushAttrib(16704);
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ GL11.glDisable(GL11.GL_TEXTURE_2D);
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ if(showString)
+ {
+ drawRectangle(Tessellator.instance, x1,y1,x2,y2,128);
+ GL11.glEnable(GL11.GL_TEXTURE_2D);
+ for(i=0;i<splittedText.length;i++)
+ {
+ if(i<tooltipHeight/strokeHeight)
+ {
+ Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(splittedText[i].substring(0, Math.min(splittedText[i].length(), tooltipWidth/5)), x1+4, y1+i*strokeHeight+4, 16768125);
+ }
+ }
+ }
+ else
+ {
+ drawRectangle(Tessellator.instance, x1,y1,x2,y2,Math.min(128,frame/2));
+ GL11.glEnable(GL11.GL_TEXTURE_2D);
+ }
+ GL11.glPopAttrib();
+ frame=Math.min(tooltipWidth+tooltipHeight,frame);
+ frameTooltipMap.put(key, frame);
+ return true;
+ }
+ return false;
+ }
+
+ public void enableAmbientLighting()
+ {
+ GL11.glDisable(GL11.GL_LIGHT0);
+ GL11.glDisable(GL11.GL_LIGHT1);
+ GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, setColorBuffer(1.0f, 1.0f, 1.0f, 1.0F));
+ }
+
+ public void disableAmbientLighting()
+ {
+ GL11.glEnable(GL11.GL_LIGHT0);
+ GL11.glEnable(GL11.GL_LIGHT1);
+ GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, setColorBuffer(0.0f, 0.0f, 0.0f, 1.0F));
+ }
+
+ /**
+ * Update and return colorBuffer with the RGBA values passed as arguments
+ */
+ private FloatBuffer setColorBuffer(float par0, float par1, float par2, float par3)
+ {
+ colorBuffer.clear();
+ colorBuffer.put(par0).put(par1).put(par2).put(par3);
+ colorBuffer.flip();
+ return colorBuffer;
+ }
+
+ private void drawRectangle(Tessellator tessellator, int x1, int y1, int x2, int y2, int color)
+ {
+ tessellator.startDrawingQuads();
+ tessellator.setColorRGBA(color >>> 24 & 255, color >>> 16 & 255, color >>> 8 & 255, color & 255);
+ tessellator.addVertex((double)x2, (double)y1, 300.0D);
+ tessellator.addVertex((double)x1, (double)y1, 300.0D);
+ tessellator.addVertex((double)x1, (double)y2, 300.0D);
+ tessellator.addVertex((double)x2, (double)y2, 300.0D);
+ tessellator.draw();
+ }
+
+ public void drawThermometerTemperature(long temperature, boolean show)
+ {
+ updateScreenSize();
+ long key = 0;
+ int frame=0;
+ if(frameTooltipMap.containsKey(key))
+ {
+ frame=frameTooltipMap.get(key);
+ }
+ if(frame<=0)
+ {
+ updatePlayerView();
+ }
+ boolean showString=true;
+ if(show && frame<=122)
+ {
+ frame+=1;
+ frameTooltipMap.put(key, frame);
+ }
+ else
+ {
+ if(frame>0)
+ {
+ frame-=2;
+ frameTooltipMap.put(key, frame);
+ }
+ showString=false;
+ }
+ if(frame>0)
+ {
+ int width=Math.min(frame, 122);
+ int height=Math.min(frame, 48);
+ int xShift = Math.round(displayScaledWidth/100*(lastPlayerYaw - Minecraft.getMinecraft().renderViewEntity.prevRotationYaw));
+ int yShift = Math.round(displayScaledHeight/64*(lastPlayerPitch - Minecraft.getMinecraft().renderViewEntity.prevRotationPitch));
+ int xPos = displayScaledWidth/2+xShift;
+ int yPos = displayScaledHeight/2-48+yShift;
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ drawTexturedModalRect(xPos,yPos,0,0,width,height);
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ if(showString)
+ {
+ Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(temperature+"\u00B0K", xPos+35, yPos+3, 16768125);
+ }
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ GL11.glDisable(GL11.GL_BLEND);
+ }
+ }
+
+ public void drawTexturedModalRect(int x1, int y1, int u, int v, int x2, int y2) {
+ float f = 0.00390625F;
+ float f1 = 0.00390625F;
+ Tessellator tessellator = Tessellator.instance;
+ tessellator.startDrawingQuads();
+ tessellator.setColorRGBA_F(1f, 1f, 1f, 0.5f);
+ tessellator.addVertexWithUV((double)(x1 + 0), (double)(y1 + y2), 300D, (double)((float)(u + 0) * f), (double)((float)(v + y2) * f1));
+ tessellator.addVertexWithUV((double)(x1 + x2), (double)(y1 + y2), 300D, (double)((float)(u + x2) * f), (double)((float)(v + y2) * f1));
+ tessellator.addVertexWithUV((double)(x1 + x2), (double)(y1 + 0), 300D, (double)((float)(u + x2) * f), (double)((float)(v + 0) * f1));
+ tessellator.addVertexWithUV((double)(x1 + 0), (double)(y1 + 0), 300D, (double)((float)(u + 0) * f), (double)((float)(v + 0) * f1));
+ tessellator.draw();
+ }
+
+
+ private void updateScreenSize()
+ {
+ if(prevDisplayHeight!=Minecraft.getMinecraft().displayHeight || prevDisplayWidth!=Minecraft.getMinecraft().displayWidth)
+ {
+ ScaledResolution var2 = new ScaledResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight);
+ displayScaledWidth = var2.getScaledWidth();
+ displayScaledHeight = var2.getScaledHeight();
+ guiXPos = (displayScaledWidth - guiContainerWidth)/2;
+ guiYPos = (displayScaledHeight - guiContainerHeight)/2;
+ prevDisplayWidth=Minecraft.getMinecraft().displayWidth;
+ prevDisplayHeight=Minecraft.getMinecraft().displayHeight;
+ }
+ }
+
+ public void updatePlayerView()
+ {
+ lastPlayerYaw = Minecraft.getMinecraft().renderViewEntity.prevRotationYaw;
+ lastPlayerPitch = Minecraft.getMinecraft().renderViewEntity.prevRotationPitch;
+ lastPlayerPosX = Minecraft.getMinecraft().renderViewEntity.prevPosX;
+ lastPlayerPosY = Minecraft.getMinecraft().renderViewEntity.prevPosY;
+ lastPlayerPosZ = Minecraft.getMinecraft().renderViewEntity.prevPosZ;
+ }
+
+ public void renderPipeOutside(double xPos, double yPos, double zPos, IIcon icon)
+ {
+ double minX = this.renderMinX;
+ double maxX = this.renderMaxX;
+ double minY = this.renderMinY;
+ double maxY = this.renderMaxY;
+ double minZ = this.renderMinZ;
+ double maxZ = this.renderMaxZ;
+ this.setRenderBounds(0d, 0d, 0d, 1/3d, 1/3d, 1/3d);
+ }
+
+ public void renderFaceXpYmNeg(double xPos, double yPos, double zPos, IIcon icon)
+ {
+ Tessellator var9 = Tessellator.instance;
+
+ double u1 = (double)icon.getInterpolatedU(this.renderMinZ * 16.0D);
+ double u2 = (double)icon.getInterpolatedU(this.renderMaxZ * 16.0D);
+
+ double v2 = (double)icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D);
+ double v1 = (double)icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D);
+
+ if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D)
+ {
+ u1 = (double)icon.getMinU();
+ u2 = (double)icon.getMaxU();
+ }
+
+ if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D)
+ {
+ v2 = (double)icon.getMinV();
+ v1 = (double)icon.getMaxV();
+ }
+
+ double vertexX1 = xPos + this.renderMinX;
+ double vertexX2 = xPos + this.renderMaxX;
+ double vertexY1 = yPos + this.renderMinY;
+ double vertexY2 = yPos + this.renderMaxY;
+ double vertexZ1 = zPos + this.renderMinZ;
+ double vertexZ2 = zPos + this.renderMaxZ;
+
+ if(this.renderFromInside)
+ {
+ vertexZ1 = zPos + this.renderMaxZ;
+ vertexZ2 = zPos + this.renderMinZ;
+ }
+ var9.addVertexWithUV(vertexX1, vertexY1, vertexZ2, u1, v1);
+ var9.addVertexWithUV(vertexX1, vertexY1, vertexZ1, u2, v1);
+ var9.addVertexWithUV(vertexX2, vertexY2, vertexZ1, u2, v2);
+ var9.addVertexWithUV(vertexX2, vertexY2, vertexZ2, u1, v2);
+ }
+
+ public void renderFaceXmYpPos(double xPos, double yPos, double zPos, IIcon icon)
+ {
+ Tessellator var9 = Tessellator.instance;
+
+ double u1 = (double)icon.getInterpolatedU(this.renderMinZ * 16.0D);
+ double u2 = (double)icon.getInterpolatedU(this.renderMaxZ * 16.0D);
+
+ double v2 = (double)icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D);
+ double v1 = (double)icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D);
+
+ if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D)
+ {
+ u1 = (double)icon.getMinU();
+ u2 = (double)icon.getMaxU();
+ }
+
+ if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D)
+ {
+ v2 = (double)icon.getMinV();
+ v1 = (double)icon.getMaxV();
+ }
+
+ double vertexX1 = xPos + this.renderMinX;
+ double vertexX2 = xPos + this.renderMaxX;
+ double vertexY1 = yPos + this.renderMinY;
+ double vertexY2 = yPos + this.renderMaxY;
+ double vertexZ1 = zPos + this.renderMaxZ;
+ double vertexZ2 = zPos + this.renderMinZ;
+
+ if(this.renderFromInside)
+ {
+ vertexZ1 = zPos + this.renderMinZ;
+ vertexZ2 = zPos + this.renderMaxZ;
+ }
+ var9.addVertexWithUV(vertexX1, vertexY1, vertexZ2, u1, v1);
+ var9.addVertexWithUV(vertexX1, vertexY1, vertexZ1, u2, v1);
+ var9.addVertexWithUV(vertexX2, vertexY2, vertexZ1, u2, v2);
+ var9.addVertexWithUV(vertexX2, vertexY2, vertexZ2, u1, v2);
+ }
+
+
+ public void renderFaceXmYmPos(double xPos, double yPos, double zPos, IIcon icon)
+ {
+ Tessellator var9 = Tessellator.instance;
+
+ double u1 = (double)icon.getInterpolatedU(this.renderMinZ * 16.0D);
+ double u2 = (double)icon.getInterpolatedU(this.renderMaxZ * 16.0D);
+
+ double v2 = (double)icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D);
+ double v1 = (double)icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D);
+
+ if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D)
+ {
+ u1 = (double)icon.getMinU();
+ u2 = (double)icon.getMaxU();
+ }
+
+ if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D)
+ {
+ v2 = (double)icon.getMinV();
+ v1 = (double)icon.getMaxV();
+ }
+
+ double vertexX1 = xPos + this.renderMinX;
+ double vertexX2 = xPos + this.renderMaxX;
+ double vertexY1 = yPos + this.renderMinY;
+ double vertexY2 = yPos + this.renderMaxY;
+ double vertexZ1 = zPos + this.renderMinZ;
+ double vertexZ2 = zPos + this.renderMaxZ;
+
+ if(this.renderFromInside)
+ {
+ vertexZ1 = zPos + this.renderMaxZ;
+ vertexZ2 = zPos + this.renderMinZ;
+ }
+ var9.addVertexWithUV(vertexX2, vertexY1, vertexZ2, u1, v1);
+ var9.addVertexWithUV(vertexX2, vertexY1, vertexZ1, u2, v1);
+ var9.addVertexWithUV(vertexX1, vertexY2, vertexZ1, u2, v2);
+ var9.addVertexWithUV(vertexX1, vertexY2, vertexZ2, u1, v2);
+ }
+
+ public void renderFaceXpYpNeg(double xPos, double yPos, double zPos, IIcon icon)
+ {
+ Tessellator var9 = Tessellator.instance;
+
+ double u1 = (double)icon.getInterpolatedU(this.renderMinZ * 16.0D);
+ double u2 = (double)icon.getInterpolatedU(this.renderMaxZ * 16.0D);
+
+ double v2 = (double)icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D);
+ double v1 = (double)icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D);
+
+ if (this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D)
+ {
+ u1 = (double)icon.getMinU();
+ u2 = (double)icon.getMaxU();
+ }
+
+ if (this.renderMinY < 0.0D || this.renderMaxY > 1.0D)
+ {
+ v2 = (double)icon.getMinV();
+ v1 = (double)icon.getMaxV();
+ }
+
+ double vertexX1 = xPos + this.renderMinX;
+ double vertexX2 = xPos + this.renderMaxX;
+ double vertexY1 = yPos + this.renderMinY;
+ double vertexY2 = yPos + this.renderMaxY;
+ double vertexZ1 = zPos + this.renderMaxZ;
+ double vertexZ2 = zPos + this.renderMinZ;
+
+ if(this.renderFromInside)
+ {
+ vertexZ1 = zPos + this.renderMinZ;
+ vertexZ2 = zPos + this.renderMaxZ;
+ }
+ var9.addVertexWithUV(vertexX2, vertexY1, vertexZ2, u1, v1);
+ var9.addVertexWithUV(vertexX2, vertexY1, vertexZ1, u2, v1);
+ var9.addVertexWithUV(vertexX1, vertexY2, vertexZ1, u2, v2);
+ var9.addVertexWithUV(vertexX1, vertexY2, vertexZ2, u1, v2);
+ }
+
+
+
+ public void setRenderBounds(double minX, double minY, double minZ, double maxX, double maxY, double maxZ)
+ {
+ this.renderMinX = minX;
+ this.renderMaxX = maxX;
+ this.renderMinY = minY;
+ this.renderMaxY = maxY;
+ this.renderMinZ = minZ;
+ this.renderMaxZ = maxZ;
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/e07bf28042b60015176c95ddaf2504ce b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/e07bf28042b60015176c95ddaf2504ce
new file mode 100644
index 0000000..1aa15b0
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/e07bf28042b60015176c95ddaf2504ce
@@ -0,0 +1,578 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldServer;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public Entity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=64;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+ private boolean alreadyRegistered=false;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ @Override
+ public void setInPortal(){}
+
+ @Override
+ public void travelToDimension(int dimensionId){}
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ if(!alreadyRegistered)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ alreadyRegistered=true;
+ }
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.5D-this.posX*1D;
+ this.motionY=(y0+y2)*0.5D-this.posY*1D;
+ this.motionZ=(z0+z2)*0.5D-this.posZ*1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.1D;
+ this.motionY+=(y2-this.posY)*0.1D;
+ this.motionZ+=(z2-this.posZ)*0.1D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.1D;
+ this.motionY+=(y0-this.posY)*0.1D;
+ this.motionZ+=(z0-this.posZ)*0.1D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ float movvmentSpeed=0.05f;
+ this.renderPosX=this.renderPosX*(1f-movvmentSpeed)+(float) this.prevPosX*movvmentSpeed;
+ this.renderPosY=this.renderPosY*(1f-movvmentSpeed)+(float) this.prevPosY*movvmentSpeed;
+ this.renderPosZ=this.renderPosZ*(1f-movvmentSpeed)+(float) this.prevPosZ*movvmentSpeed;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ WorldServer world = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId);
+ TileEntity te = world.getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/401f465e708b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/401f465e708b0015134481ec712b17ae
new file mode 100644
index 0000000..691bc57
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/401f465e708b0015134481ec712b17ae
@@ -0,0 +1,207 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ while(!this.isDead)
+ {
+ update();
+ }
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ this.setDead();
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/2010220b148e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/2010220b148e00151544f45b8684d31e
new file mode 100644
index 0000000..4f6f419
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/2010220b148e00151544f45b8684d31e
@@ -0,0 +1,318 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+
+public class ExplosionVector
+{
+ public Set<Long> startVectors = new HashSet();
+ public Map<Long,Set<Long>> vectors = new HashMap();
+ public Map<Long,Integer> explosionPower = new HashMap();
+ public Map<Long,Float> explosionPowerDampingFactor = new HashMap();
+ private Random random = new Random();
+
+ public ExplosionVector()
+ {
+ this.precalculateExplosion();
+ }
+
+ public void precalculateExplosion()
+ {
+ int maxExplosionRadius=32;
+ for(int levelRadius=1; levelRadius<maxExplosionRadius; levelRadius++)
+ {
+ for(int ix=-levelRadius;ix<=levelRadius;ix++)
+ {
+ for(int iy=-levelRadius;iy<=levelRadius;iy++)
+ {
+ for(int iz=-levelRadius;iz<=levelRadius;iz++)
+ {
+ {
+ long coordinateKey = IHLUtils.encodeXYZ(ix,iy,iz);
+ if(!vectors.containsKey(coordinateKey))
+ {
+ int prevX=ix;
+ int prevY=iy;
+ int prevZ=iz;
+ if(Math.abs(ix)+Math.abs(iy)+Math.abs(iz)>Math.round(levelRadius*1.8f))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(ix)<=Math.abs(iy) && Math.abs(ix)<=Math.abs(iz))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iy)<=Math.abs(ix) && Math.abs(iy)<=Math.abs(iz))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iz)<=Math.abs(ix) && Math.abs(iz)<=Math.abs(iy))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ }
+ long prevKey = IHLUtils.encodeXYZ(prevX,prevY,prevZ);
+ if(prevX==ix && prevY==iy && prevZ==iz && levelRadius>1)
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ throw new ArithmeticException("Variables are out of expected range. \n Expected are not equal: "+ix+"="+prevX+" "+iy+"="+prevY+" "+iz+"="+prevZ);
+ }
+ if(levelRadius==1)
+ {
+ startVectors.add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else if(vectors.containsKey(prevKey))
+ {
+ prevKey=this.getParentWithLowestDescendantsRate(prevKey, prevX, prevY, prevZ, levelRadius);
+ vectors.get(prevKey).add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ IHLMod.log.info("ExplosionVector is missing parent! Help him!");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private long getParentWithLowestDescendantsRate(long prevKey, int prevX, int prevY, int prevZ, int levelRadius)
+ {
+ long prevKey1 = prevKey;
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ int x2,y2,z2;
+ int descendantsRate=vectors.get(prevKey).size();
+ for(int i=0;i<=5;i++)
+ {
+ x2=prevX+xyzi[i];
+ y2=prevY+xyzi[i+2];
+ z2=prevZ+xyzi[i+1];
+ long newKey = IHLUtils.encodeXYZ(x2, y2, z2);
+ boolean atALevelRadius = (Math.abs(x2)==levelRadius-1||Math.abs(y2)==levelRadius-1||Math.abs(z2)==levelRadius-1)&&(Math.abs(x2)<levelRadius && Math.abs(y2)<levelRadius && Math.abs(z2)<levelRadius);
+ if(atALevelRadius && vectors.get(newKey).size()<descendantsRate)
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ else if(atALevelRadius && vectors.get(newKey).size()==descendantsRate)
+ {
+ if(random.nextBoolean())
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ }
+ }
+ return prevKey1;
+ }
+
+ private void addElement(long coordinateKey, int prevX, int prevY, int prevZ, int ix, int iy, int iz)
+ {
+ vectors.put(coordinateKey, new HashSet());
+ float df = (float)(prevX*prevX+prevY*prevY+prevZ*prevZ+1)/(float)(ix*ix+iy*iy+iz*iz+1);
+ explosionPowerDampingFactor.put(coordinateKey,df);
+ }
+
+ public void setPower(int power1)
+ {
+ for(long ev:startVectors)
+ {
+ this.explosionPower.put(ev, power1);
+ }
+
+ }
+
+ public Set<Long> breakBlocksAndGetDescendants(World world, EntityIHLExplosion exploder, Explosion explosion, long longNumber)
+ {
+ int multiplier = exploder.multiplier;
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int power1 = explosionPower.get(longNumber);
+ int repeat=0;
+ //System.out.println("Power before " + power1);
+ if(Math.abs(xyz[0])>=Math.abs(xyz[1]) && Math.abs(xyz[0])>=Math.abs(xyz[2]))
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else if(Math.abs(xyz[1])>=Math.abs(xyz[0]) && Math.abs(xyz[1])>=Math.abs(xyz[2]))
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ power1=Math.round(power1*explosionPowerDampingFactor.get(longNumber)-0.5f);
+ //System.out.println("Power after " + power1 + " \n repeats "+repeat);
+ if(power1<=1 || !vectors.containsKey(longNumber)|| vectors.get(longNumber).isEmpty())
+ {
+ exploder.effectBorderBlocks.add(longNumber);
+ if(xyz[1]<0 || (exploder.y<=6 && xyz[1]<=6))
+ {
+ exploder.effectBorderBlocksWithLowPosition.add(longNumber);
+ }
+ return null;
+ }
+ else
+ {
+ for(long d1:vectors.get(longNumber))
+ {
+ explosionPower.put(d1, power1);
+ }
+ return vectors.get(longNumber);
+ }
+ }
+
+
+ public Set<Long> breakBlocksAndGetDescendantsForEBS(World world, EntityIHLExplosion exploder, Explosion explosion, long longNumber)
+ {
+ int multiplier = exploder.multiplier;
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int power1 = explosionPower.get(longNumber);
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ power1=Math.round(power1*explosionPowerDampingFactor.get(longNumber)-0.5f);
+ if(power1<=1 || !vectors.containsKey(longNumber)|| vectors.get(longNumber).isEmpty())
+ {
+ exploder.effectBorderBlocks.add(longNumber);
+ if(xyz[1]<0 || (exploder.y<=6 && xyz[1]<=6))
+ {
+ exploder.effectBorderBlocksWithLowPosition.add(longNumber);
+ }
+ return null;
+ }
+ else
+ {
+ for(long d1:vectors.get(longNumber))
+ {
+ explosionPower.put(d1, power1);
+ }
+ return vectors.get(longNumber);
+ }
+
+ }
+
+ private int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ private int getNewPowerAndProcessBlocks(World world, EntityIHLExplosion exploder, Explosion explosion, int xyz[], int multiplier, int ix, int iy, int iz, int power2)
+ {
+ int power1=power2;
+ int x = exploder.x+xyz[0]*multiplier+ix;
+ int y = exploder.y+xyz[1]*multiplier+iy;
+ int z = exploder.z+xyz[2]*multiplier+iz;
+ if(y<=4 || y>256)
+ {
+ return 0;
+ }
+ Block block = exploder.getBlock(x, y, z);
+ int explosionResistance = Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ if(explosionResistance>=power1)
+ {
+ power1=0;
+ }
+ else
+ {
+ power1-=Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ Entity entity = exploder.getEntity(x, y, z);
+ if(entity!=null)
+ {
+ entity.attackEntityFrom(exploder.damageSource, power1/10f);
+ }
+ block.onBlockDestroyedByExplosion(world, x, y, z, explosion);
+ exploder.setBlockToAir(x, y, z);
+ }
+ return power1;
+ }
+
+ private int getNewPowerAndProcessBlocksEBS(World world, EntityIHLExplosion exploder, Explosion explosion, int xyz[], int multiplier, int ix, int iy, int iz, int power2)
+ {
+ int power1=power2;
+ int x = exploder.x+xyz[0]*multiplier+ix;
+ int y = exploder.y+xyz[1]*multiplier+iy;
+ int z = exploder.z+xyz[2]*multiplier+iz;
+ if(y<=4 || y>256)
+ {
+ return 0;
+ }
+ int explosionResistance = exploder.getEBSResistance(x, y, z);
+ if(explosionResistance>=power1)
+ {
+ power1=0;
+ }
+ else
+ {
+ power1-=Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ Entity entity = exploder.getEntity(x, y, z);
+ if(entity!=null)
+ {
+ entity.attackEntityFrom(exploder.damageSource, power1/10f);
+ }
+ block.onBlockDestroyedByExplosion(world, x, y, z, explosion);
+ exploder.setBlockToAir(x, y, z);
+ }
+ return power1;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/80b79e1a088e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/80b79e1a088e00151544f45b8684d31e
new file mode 100644
index 0000000..5697adc
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/80b79e1a088e00151544f45b8684d31e
@@ -0,0 +1,370 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private ExtendedBlockStorage[][][] esbArray;
+ private int[][][] esbHardness;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.drops=new HashMap();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/16000,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.esbArray = new ExtendedBlockStorage[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ this.esbArray[var11 - this.chunkX][var12 - this.chunkZ] = var13.getBlockStorageArray();
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ private void precalculateESBHardness()
+ {
+ for(int x1=0;x1<this.esbArray.length;x1++)
+ {
+ ExtendedBlockStorage[][] esb3 = this.esbArray[x1];
+ for(int z2=0;z2<esb3.length;z2++)
+ {
+ ExtendedBlockStorage[] esb2 = esb3[z2];
+ for(int y3=0;y3<esb2.length;y3++)
+ {
+ ExtendedBlockStorage esb = esb2[y3];
+ if(esb.isEmpty())
+ {
+ this.esbHardness[x1][z2][y3]=0;
+ }
+ else
+ {
+ byte[] lbsArray = esb.getBlockLSBArray();
+ for(int i4=0;i4<lbsArray.length;i4++)
+ {
+ int var4 = lbsArray[i4] & 255;
+
+ if (esb.getBlockMSBArray() != null)
+ {
+ var4 |= esb.getBlockMSBArray().get(i4>>8, (i4>>4) & 4095, i4 & 4095) << 8;
+ }
+ this.esbHardness[x1][z2][y3]+=Math.round(Block.getBlockById(var4).getExplosionResistance(this, worldObj, (i4>>8)+(x1<<4), ((i4>>4) & 4095)+(y3<<4), (i4 & 4095)+(z2<<4), this.x, this.y, this.z)*10f);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ Iterator<Long> bnctbi = this.blocksNotConnectedWithBedrock.iterator();
+ while(bnctbi.hasNext())
+ {
+ long longNumber5 = bnctbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber5);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ float bh = block.getBlockHardness(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(bh>=0f && bh<Float.MAX_VALUE)
+ {
+ block.onBlockDestroyedByExplosion(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], explosion);
+ this.setBlockToAir(x, y, z);
+ }
+ }
+
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/60b1517d5da3001518cde17cb509661c b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/60b1517d5da3001518cde17cb509661c
new file mode 100644
index 0000000..2a66c48
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/60b1517d5da3001518cde17cb509661c
@@ -0,0 +1,128 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ InputStream in = IHLMod.class.getResourceAsStream("/assets/ihl/config/ihl-guidebook.xml");
+ InputStreamReader isReader = new InputStreamReader(in, "UTF-8");
+ LineNumberReader reader = new LineNumberReader(isReader);
+ OutputStreamWriter osWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+ BufferedWriter writer = new BufferedWriter(osWriter);
+ String line;
+ while ((line = reader.readLine()) != null)
+ {
+ writer.append(line);
+ writer.newLine();
+ }
+ writer.close();
+ osWriter.close();
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/a08480c30bb300151351fd9e9a996bbe b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/a08480c30bb300151351fd9e9a996bbe
new file mode 100644
index 0000000..6effb9d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/a08480c30bb300151351fd9e9a996bbe
@@ -0,0 +1,162 @@
+package ihl.flexible_cable;
+
+import ihl.IHLMod;
+import ihl.interfaces.IEnergyNetNode;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.nbt.NBTTagCompound;
+
+public class IHLENet {
+
+ public Map<Integer, IHLGrid> grids = new HashMap();
+ public Map<Integer, Set<NodeEntity>> nodeEntityRegistry = new HashMap();
+ public Map<Integer, IHLGrid> cablesToGrids = new HashMap();
+
+ private int griduid=0;
+
+ public IHLENet()
+ {
+ }
+
+ public int getNewUniqueGridID()
+ {
+ for(int i=0;i<Integer.MAX_VALUE;i++)
+ {
+ if(grids.get(++griduid)==null)
+ {
+ return griduid;
+ }
+ }
+ return -1;
+ }
+
+ public int mergeGrids(int gridID, int gridID2)
+ {
+ if(gridID==-1 && gridID2!=-1)
+ {
+ return gridID2;
+ }
+ else if(gridID!=-1 && gridID2==-1)
+ {
+ return gridID;
+ }
+ else if(gridID==-1 && gridID2==-1)
+ {
+ int newGridID=this.getNewUniqueGridID();
+ IHLGrid cgrid;
+ cgrid=new IHLGrid();
+ grids.put(newGridID, cgrid);
+ return newGridID;
+ }
+ else if(gridID!=gridID2)
+ {
+ Iterator<IEnergyNetNode> tei = grids.get(gridID2).telist.iterator();
+ while(tei.hasNext())
+ {
+ IEnergyNetNode te = tei.next();
+ te.setGrid(gridID);
+ }
+ grids.remove(gridID2);
+ return gridID;
+ }
+ return gridID2;
+ }
+
+
+ public IHLGrid getGrid(int gridID)
+ {
+ if(this.grids.get(gridID)==null)
+ {
+ IHLGrid cgrid;
+ cgrid=new IHLGrid();
+ grids.put(gridID, cgrid);
+ return cgrid;
+ }
+ else
+ {
+ return this.grids.get(gridID);
+ }
+ }
+
+ public void splitGrids(int gridID, IEnergyNetNode exclude)
+ {
+ Set<IEnergyNetNode> telist = this.grids.get(gridID).telist;
+ telist.remove(exclude);
+ Iterator<IEnergyNetNode> atei = telist.iterator();
+ while(atei.hasNext())
+ {
+ IEnergyNetNode cte = atei.next();
+ cte.getCableList().removeAll(exclude.getCableList());
+ cte.setGrid(-1);
+ }
+ Iterator<IEnergyNetNode> atei2 = telist.iterator();
+ while(atei2.hasNext())
+ {
+ IEnergyNetNode cte = atei2.next();
+ if(cte.getGridID()==-1)//Warning! Potential future bugs are hidden here!
+ {
+ Iterator<IEnergyNetNode> atei3 = telist.iterator();
+ while(atei3.hasNext())
+ {
+ IEnergyNetNode cte2 = atei3.next();
+ if(cte2!=cte && hasSame(cte.getCableList(),cte2.getCableList()))
+ {
+ int result=this.mergeGrids(cte.getGridID(), cte2.getGridID());
+ cte.setGrid(result);
+ cte2.setGrid(result);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ public void removeCableAndSplitGrids(int gridID, NBTTagCompound cable)
+ {
+ this.grids.get(gridID).removeCableAndSplitGrids(cable);
+ }
+
+ public boolean hasSame(Set<NBTTagCompound> set, Set<NBTTagCompound> set2)
+ {
+ Iterator<NBTTagCompound> i1 = set.iterator();
+ while(i1.hasNext())
+ {
+ NBTTagCompound num1=i1.next();
+ if(set2.contains(num1))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void setOnFire(NBTTagCompound cable)
+ {
+ Set<NodeEntity> cs = this.nodeEntityRegistry.get(cable.getInteger("chainUID"));
+ for(NodeEntity ne:cs)
+ {
+ ne.setFire(10);
+ }
+ }
+
+ public void removeCableEntities(NBTTagCompound cable)
+ {
+ int uid = cable.getInteger("chainUID");
+ Set<NodeEntity> cs = this.nodeEntityRegistry.get(uid);
+ if(cs!=null)
+ {
+ for(NodeEntity ne:cs)
+ {
+ if(ne!=null)
+ {
+ ne.setDead();
+ }
+ }
+ }
+ cablesToGrids.remove(uid);
+ }
+} \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/7096612146a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/7096612146a3001516ebc455efc032e5
new file mode 100644
index 0000000..b89f929
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/7096612146a3001516ebc455efc032e5
@@ -0,0 +1,101 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile()
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ return new File(folder, "ihl-guidebook.xml");
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/e0c732e253a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/e0c732e253a3001516ebc455efc032e5
new file mode 100644
index 0000000..9bdd6e9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/e0c732e253a3001516ebc455efc032e5
@@ -0,0 +1,120 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+// File fileFrom = new File(IHLMod.proxy.getMinecraftDir(),"/assets/ihl/config/ihl-guidebook.xml");
+ File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ if(!fileFrom.exists())
+ {
+ fileFrom = new File(IHLMod.class.getResource("../src/main/java/assets/ihl/config/ihl-guidebook.xml").getFile());
+ }
+ Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/600afeecd8b20015115782a55d40af78 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/600afeecd8b20015115782a55d40af78
new file mode 100644
index 0000000..d0a51d7
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/600afeecd8b20015115782a55d40af78
@@ -0,0 +1,395 @@
+package ihl.flexible_cable;
+
+import ic2.api.energy.EnergyNet;
+import ic2.api.energy.event.EnergyTileLoadEvent;
+import ic2.api.energy.event.EnergyTileUnloadEvent;
+import ic2.api.energy.tile.IEnergySink;
+import ic2.api.energy.tile.IEnergySource;
+import ic2.core.ExplosionIC2;
+import ic2.core.IC2;
+import ic2.core.block.TileEntityBlock;
+import ihl.IHLMod;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.utils.IHLUtils;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class AnchorTileEntity extends TileEntityBlock implements IEnergySink, IEnergySource
+{
+ public boolean addedToEnergyNet=false;
+ private final Set<TileEntity> sacrifices = new HashSet<TileEntity>();
+ public SubAnchorEnergyNetNode[] energyNetNodes = new SubAnchorEnergyNetNode[6];
+ public boolean[] hasCableOnSide=new boolean [] {false,false,false,false,false,false};
+ public int checksum=-1;
+
+ public AnchorTileEntity()
+ {
+ super();
+ for(short i=0;i<6;i++)
+ {
+ energyNetNodes[i] = new SubAnchorEnergyNetNode(this, i);
+ }
+ }
+
+ @Override
+ public List<String> getNetworkedFields()
+ {
+ List<String> fields = super.getNetworkedFields();
+ fields.add("hasCableOnSide");
+ return fields;
+ }
+
+ @Override
+ public void onLoaded()
+ {
+ super.onLoaded();
+ if (IC2.platform.isSimulating()&&!this.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
+ this.addedToEnergyNet = true;
+ }
+ for(short i=0;i<6;i++)
+ {
+ energyNetNodes[i].onLoaded();
+ }
+ }
+
+ @Override
+ public void onUnloaded()
+ {
+ if (IC2.platform.isSimulating())
+ {
+ if(this.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
+ this.addedToEnergyNet = false;
+ }
+ }
+ }
+
+ @Override
+ public boolean wrenchCanRemove(EntityPlayer var1)
+ {
+ return false;
+ }
+
+ public boolean enableUpdateEntity()
+ {
+ return IC2.platform.isSimulating();
+ }
+
+ @Override
+ public void updateEntityServer()
+ {
+ if(!sacrifices.isEmpty())
+ {
+ Iterator<TileEntity> victimIterator = sacrifices.iterator();
+ while(victimIterator.hasNext())
+ {
+ TileEntity sacrifice = victimIterator.next();
+ ExplosionIC2 explosion = new ExplosionIC2(this.worldObj, null, sacrifice.xCoord+0.5D, sacrifice.yCoord+0.5D, sacrifice.zCoord+0.5D, 3F, 0.3F, ExplosionIC2.Type.Normal, null, 0);
+ explosion.doExplosion();
+ sacrifices.remove(sacrifice);
+ }
+
+ }
+ int newchecksum=0;
+ for(short i=0;i<6;i++)
+ {
+ if(this.hasCableOnSide[i])
+ {
+ newchecksum++;
+ }
+ }
+ if(newchecksum!=checksum)
+ {
+ IC2.network.get().updateTileEntityField(this, "hasCableOnSide");
+ checksum=newchecksum;
+ }
+ else if(newchecksum==0)
+ {
+ for(short i=0;i<6;i++)
+ {
+ if(!this.energyNetNodes[i].getCableList().isEmpty())
+ {
+ newchecksum++;
+ }
+ }
+ //if(newchecksum==0)worldObj.setBlockToAir(xCoord, yCoord, zCoord);
+ }
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound nbt) {
+ super.writeToNBT(nbt);
+ NBTTagList energyNetNodeNBTList = new NBTTagList();
+ for(SubAnchorEnergyNetNode node:this.energyNetNodes)
+ {
+ energyNetNodeNBTList.appendTag(node.writeToNBT());
+ }
+ nbt.setTag("energyNetNodes", energyNetNodeNBTList);
+ if(nbt.hasKey("facing"))
+ {
+ nbt.removeTag("facing");
+ }
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound nbt) {
+ super.readFromNBT(nbt);
+ if(nbt.hasKey("facing"))
+ {
+ short facing = nbt.getShort("facing");
+ int gridID=nbt.getInteger("gridID");
+ this.energyNetNodes[facing].setGrid(gridID);
+ NBTTagList cableNBTList=nbt.getTagList("cableList", 10);
+ for(int i=0;i<cableNBTList.tagCount();i++)
+ {
+ this.energyNetNodes[facing].addCable(cableNBTList.getCompoundTagAt(i));
+ }
+ }
+ else
+ {
+ NBTTagList energyNetNodeNBTList=nbt.getTagList("energyNetNodes", 10);
+ for(int i=0;i<6;i++)
+ {
+ this.energyNetNodes[i].readFromNBT(energyNetNodeNBTList.getCompoundTagAt(i));
+ }
+ }
+ }
+
+ @Override
+ public void setFacing(short facing)
+ {
+ System.out.println("facing="+facing);
+ this.energyNetNodes[facing].removeAttachedChains();
+ boolean removeTE=true;
+ for(short i=0;i<6;i++)
+ {
+ if(!energyNetNodes[i].getCableList().isEmpty())
+ {
+ System.out.println("not empty="+i);
+ removeTE=false;
+ }
+ }
+ if(removeTE)
+ {
+ worldObj.setBlockToAir(xCoord, yCoord, zCoord);
+ }
+ }
+
+ @Override
+ public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
+ {
+ switch(direction)
+ {
+ case UP:
+ return this.energyNetNodes[0].getGridID()!=-1;
+ case DOWN:
+ return this.energyNetNodes[1].getGridID()!=-1;
+ case SOUTH:
+ return this.energyNetNodes[2].getGridID()!=-1;
+ case NORTH:
+ return this.energyNetNodes[3].getGridID()!=-1;
+ case EAST:
+ return this.energyNetNodes[4].getGridID()!=-1;
+ case WEST:
+ return this.energyNetNodes[5].getGridID()!=-1;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction)
+ {
+ return this.acceptsEnergyFrom(receiver, direction);
+ }
+
+ @Override
+ public double getOfferedEnergy()
+ {
+ double offeredEnergy=0d;
+ for(short i=0;i<6;i++)
+ {
+ offeredEnergy+=energyNetNodes[i].getOfferedEnergy();
+ }
+ return offeredEnergy;
+ }
+
+ @Override
+ public void drawEnergy(double amount)
+ {
+ for(short i=0;i<6;i++)
+ {
+ amount-=energyNetNodes[i].drawEnergy(amount);
+ double voltage = energyNetNodes[i].getVoltage();
+ if(voltage>500D)
+ {
+ Set<TileEntity> teset = new HashSet<TileEntity>();
+ ForgeDirection direction = ForgeDirection.getOrientation(i).getOpposite();
+ TileEntity te = EnergyNet.instance.getNeighbor(this, direction);
+ teset.add(te);
+ TileEntity te1 = this.getSink(te, teset);
+ if(te1 instanceof IEnergyNetNode)
+ {
+ if(((IEnergyNetNode)te1).getMaxAllowableVoltage()>=voltage)
+ {
+ return;
+ }
+ }
+ if(te1!=null)
+ {
+ sacrifices.add(te1);
+ }
+ }
+ if(amount<=0d)
+ {
+ break;
+ }
+ }
+ }
+
+ @Override
+ public int getSourceTier() {
+ return 4;
+ }
+
+ @Override
+ public double getDemandedEnergy()
+ {
+ double amount=0d;
+ for(short i=0;i<6;i++)
+ {
+ amount+=energyNetNodes[i].getDemandedEnergy();
+ }
+ return amount;
+ }
+
+ @Override
+ public int getSinkTier() {
+ return 4;
+ }
+
+ @Override
+ public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) {
+ if (directionFrom.flag>5 || this.energyNetNodes[directionFrom.flag].getGridID()==-1 || this.energyNetNodes[directionFrom.flag].getGrid().energy > 1D)
+ {
+ return amount;
+ }
+ else
+ {
+ this.energyNetNodes[directionFrom.flag].getGrid().injectEnergy(amount, 400D, this.energyNetNodes[directionFrom.flag]);
+ return 0.0D;
+ }
+ }
+
+ @Override
+ public ItemStack getWrenchDrop(EntityPlayer entityPlayer)
+ {
+ return null;
+ }
+
+ @Override
+ public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side)
+ {
+ return !this.wrenchCanRemove(entityPlayer);
+ }
+
+ private TileEntity getSink(TileEntity te, Set<TileEntity> teset)
+ {
+ teset.add(te);
+ while(te!=null && !(te instanceof IEnergySink))
+ {
+ TileEntity te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.NORTH);
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.SOUTH);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.UP);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.DOWN);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.WEST);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.EAST);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1!=null)
+ {
+ teset.add(te1);
+ }
+ te=te1;
+ }
+ if(te instanceof IEnergySink)
+ {
+ return te;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/b026503b5ea3001518cde17cb509661c b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/b026503b5ea3001518cde17cb509661c
new file mode 100644
index 0000000..67d246b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/b026503b5ea3001518cde17cb509661c
@@ -0,0 +1,141 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(IHLMod.class.getResourceAsStream("/assets/ihl/config/ihl-guidebook.xml"));
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ InputStream in = IHLMod.class.getResourceAsStream("/assets/ihl/config/ihl-guidebook.xml");
+ InputStreamReader isReader = new InputStreamReader(in, "UTF-8");
+ LineNumberReader reader = new LineNumberReader(isReader);
+ OutputStreamWriter osWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+ BufferedWriter writer = new BufferedWriter(osWriter);
+ String line;
+ while ((line = reader.readLine()) != null)
+ {
+ writer.append(line);
+ writer.newLine();
+ }
+ writer.close();
+ osWriter.close();
+ in = IHLMod.class.getResourceAsStream("/assets/ihl/config/adress.xsd");
+ isReader = new InputStreamReader(in, "UTF-8");
+ reader = new LineNumberReader(isReader);
+ file = new File(folder, "adress.xsd");
+ osWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+ writer = new BufferedWriter(osWriter);
+ while ((line = reader.readLine()) != null)
+ {
+ writer.append(line);
+ writer.newLine();
+ }
+ writer.close();
+ osWriter.close();
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/a0f3e06d7d8b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/a0f3e06d7d8b0015134481ec712b17ae
new file mode 100644
index 0000000..2777b01
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/a0f3e06d7d8b0015134481ec712b17ae
@@ -0,0 +1,315 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/2052af7b0b8e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/2052af7b0b8e00151544f45b8684d31e
new file mode 100644
index 0000000..de861df
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/2052af7b0b8e00151544f45b8684d31e
@@ -0,0 +1,371 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private ExtendedBlockStorage[][][] esbArray;
+ private int[][][] esbHardness;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.drops=new HashMap();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/16000,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.esbArray = new ExtendedBlockStorage[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ this.esbArray[var11 - this.chunkX][var12 - this.chunkZ] = var13.getBlockStorageArray();
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ this.precalculateESBHardness();
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ private void precalculateESBHardness()
+ {
+ for(int x1=0;x1<this.esbArray.length;x1++)
+ {
+ ExtendedBlockStorage[][] esb3 = this.esbArray[x1];
+ for(int z2=0;z2<esb3.length;z2++)
+ {
+ ExtendedBlockStorage[] esb2 = esb3[z2];
+ for(int y3=0;y3<esb2.length;y3++)
+ {
+ ExtendedBlockStorage esb = esb2[y3];
+ if(esb.isEmpty())
+ {
+ this.esbHardness[x1][z2][y3]=0;
+ }
+ else
+ {
+ byte[] lbsArray = esb.getBlockLSBArray();
+ for(int i4=0;i4<lbsArray.length;i4++)
+ {
+ int var4 = lbsArray[i4] & 255;
+
+ if (esb.getBlockMSBArray() != null)
+ {
+ var4 |= esb.getBlockMSBArray().get(i4>>8, (i4>>4) & 4095, i4 & 4095) << 8;
+ }
+ this.esbHardness[x1][z2][y3]+=Math.round(Block.getBlockById(var4).getExplosionResistance(this, worldObj, (i4>>8)+(x1<<4), ((i4>>4) & 4095)+(y3<<4), (i4 & 4095)+(z2<<4), this.x, this.y, this.z)*10f);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ Iterator<Long> bnctbi = this.blocksNotConnectedWithBedrock.iterator();
+ while(bnctbi.hasNext())
+ {
+ long longNumber5 = bnctbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber5);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ float bh = block.getBlockHardness(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(bh>=0f && bh<Float.MAX_VALUE)
+ {
+ block.onBlockDestroyedByExplosion(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], explosion);
+ this.setBlockToAir(x, y, z);
+ }
+ }
+
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/3026c575748b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/3026c575748b0015134481ec712b17ae
new file mode 100644
index 0000000..c88afeb
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/3026c575748b0015134481ec712b17ae
@@ -0,0 +1,307 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ long longNumber = ebbi.next();
+ ebbi.remove();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(this.isBlockConnectedWithBedrock(longNumber))
+ {
+
+ }
+ }
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40b9d805088e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40b9d805088e00151544f45b8684d31e
new file mode 100644
index 0000000..deab651
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40b9d805088e00151544f45b8684d31e
@@ -0,0 +1,364 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private ExtendedBlockStorage[][][] esbArray;
+ private int[][][] esbHardness;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.drops=new HashMap();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/16000,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.esbArray = new ExtendedBlockStorage[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ this.esbArray[var11 - this.chunkX][var12 - this.chunkZ] = var13.getBlockStorageArray();
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ private void precalculateESBHardness()
+ {
+ for(int x1=0;x1<this.esbArray.length;x1++)
+ {
+ ExtendedBlockStorage[][] esb3 = this.esbArray[x1];
+ for(int z2=0;z2<esb3.length;z2++)
+ {
+ ExtendedBlockStorage[] esb2 = esb3[z2];
+ for(int y3=0;y3<esb2.length;y3++)
+ {
+ ExtendedBlockStorage esb = esb2[y3];
+ if(esb.isEmpty())
+ {
+ this.esbHardness[x1][z2][y3]=0;
+ }
+ else
+ {
+ byte[] lbsArray = esb.getBlockLSBArray();
+ for(int i4=0;i4<lbsArray.length;i4++)
+ {
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ Iterator<Long> bnctbi = this.blocksNotConnectedWithBedrock.iterator();
+ while(bnctbi.hasNext())
+ {
+ long longNumber5 = bnctbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber5);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ float bh = block.getBlockHardness(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(bh>=0f && bh<Float.MAX_VALUE)
+ {
+ block.onBlockDestroyedByExplosion(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], explosion);
+ this.setBlockToAir(x, y, z);
+ }
+ }
+
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/72/106e4eb2158e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/72/106e4eb2158e00151544f45b8684d31e
new file mode 100644
index 0000000..3d4d821
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/72/106e4eb2158e00151544f45b8684d31e
@@ -0,0 +1,321 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class ExplosionVector
+{
+ public Set<Long> startVectors = new HashSet();
+ public Map<Long,Set<Long>> vectors = new HashMap();
+ public Map<Long,Integer> explosionPower = new HashMap();
+ public Map<Long,Float> explosionPowerDampingFactor = new HashMap();
+ private Random random = new Random();
+
+ public ExplosionVector()
+ {
+ this.precalculateExplosion();
+ }
+
+ public void precalculateExplosion()
+ {
+ int maxExplosionRadius=32;
+ for(int levelRadius=1; levelRadius<maxExplosionRadius; levelRadius++)
+ {
+ for(int ix=-levelRadius;ix<=levelRadius;ix++)
+ {
+ for(int iy=-levelRadius;iy<=levelRadius;iy++)
+ {
+ for(int iz=-levelRadius;iz<=levelRadius;iz++)
+ {
+ {
+ long coordinateKey = IHLUtils.encodeXYZ(ix,iy,iz);
+ if(!vectors.containsKey(coordinateKey))
+ {
+ int prevX=ix;
+ int prevY=iy;
+ int prevZ=iz;
+ if(Math.abs(ix)+Math.abs(iy)+Math.abs(iz)>Math.round(levelRadius*1.8f))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(ix)<=Math.abs(iy) && Math.abs(ix)<=Math.abs(iz))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iy)<=Math.abs(ix) && Math.abs(iy)<=Math.abs(iz))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iz)<=Math.abs(ix) && Math.abs(iz)<=Math.abs(iy))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ }
+ long prevKey = IHLUtils.encodeXYZ(prevX,prevY,prevZ);
+ if(prevX==ix && prevY==iy && prevZ==iz && levelRadius>1)
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ throw new ArithmeticException("Variables are out of expected range. \n Expected are not equal: "+ix+"="+prevX+" "+iy+"="+prevY+" "+iz+"="+prevZ);
+ }
+ if(levelRadius==1)
+ {
+ startVectors.add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else if(vectors.containsKey(prevKey))
+ {
+ prevKey=this.getParentWithLowestDescendantsRate(prevKey, prevX, prevY, prevZ, levelRadius);
+ vectors.get(prevKey).add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ IHLMod.log.info("ExplosionVector is missing parent! Help him!");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private long getParentWithLowestDescendantsRate(long prevKey, int prevX, int prevY, int prevZ, int levelRadius)
+ {
+ long prevKey1 = prevKey;
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ int x2,y2,z2;
+ int descendantsRate=vectors.get(prevKey).size();
+ for(int i=0;i<=5;i++)
+ {
+ x2=prevX+xyzi[i];
+ y2=prevY+xyzi[i+2];
+ z2=prevZ+xyzi[i+1];
+ long newKey = IHLUtils.encodeXYZ(x2, y2, z2);
+ boolean atALevelRadius = (Math.abs(x2)==levelRadius-1||Math.abs(y2)==levelRadius-1||Math.abs(z2)==levelRadius-1)&&(Math.abs(x2)<levelRadius && Math.abs(y2)<levelRadius && Math.abs(z2)<levelRadius);
+ if(atALevelRadius && vectors.get(newKey).size()<descendantsRate)
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ else if(atALevelRadius && vectors.get(newKey).size()==descendantsRate)
+ {
+ if(random.nextBoolean())
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ }
+ }
+ return prevKey1;
+ }
+
+ private void addElement(long coordinateKey, int prevX, int prevY, int prevZ, int ix, int iy, int iz)
+ {
+ vectors.put(coordinateKey, new HashSet());
+ float df = (float)(prevX*prevX+prevY*prevY+prevZ*prevZ+1)/(float)(ix*ix+iy*iy+iz*iz+1);
+ explosionPowerDampingFactor.put(coordinateKey,df);
+ }
+
+ public void setPower(int power1)
+ {
+ for(long ev:startVectors)
+ {
+ this.explosionPower.put(ev, power1);
+ }
+
+ }
+
+ public Set<Long> breakBlocksAndGetDescendants(World world, EntityIHLExplosion exploder, Explosion explosion, long longNumber)
+ {
+ int multiplier = exploder.multiplier;
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int power1 = explosionPower.get(longNumber);
+ int repeat=0;
+ //System.out.println("Power before " + power1);
+ if(Math.abs(xyz[0])>=Math.abs(xyz[1]) && Math.abs(xyz[0])>=Math.abs(xyz[2]))
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else if(Math.abs(xyz[1])>=Math.abs(xyz[0]) && Math.abs(xyz[1])>=Math.abs(xyz[2]))
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ power1=Math.round(power1*explosionPowerDampingFactor.get(longNumber)-0.5f);
+ //System.out.println("Power after " + power1 + " \n repeats "+repeat);
+ if(power1<=1 || !vectors.containsKey(longNumber)|| vectors.get(longNumber).isEmpty())
+ {
+ exploder.effectBorderBlocks.add(longNumber);
+ if(xyz[1]<0 || (exploder.y<=6 && xyz[1]<=6))
+ {
+ exploder.effectBorderBlocksWithLowPosition.add(longNumber);
+ }
+ return null;
+ }
+ else
+ {
+ for(long d1:vectors.get(longNumber))
+ {
+ explosionPower.put(d1, power1);
+ }
+ return vectors.get(longNumber);
+ }
+ }
+
+
+ public Set<Long> breakBlocksAndGetDescendantsForEBS(World world, EntityIHLExplosion exploder, Explosion explosion, long longNumber)
+ {
+ int multiplier = exploder.multiplier;
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int power1 = explosionPower.get(longNumber);
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ power1=Math.round(power1*explosionPowerDampingFactor.get(longNumber)-0.5f);
+ if(power1<=1 || !vectors.containsKey(longNumber)|| vectors.get(longNumber).isEmpty())
+ {
+ exploder.effectBorderBlocks.add(longNumber);
+ if(xyz[1]<0 || (exploder.y<=6 && xyz[1]<=6))
+ {
+ exploder.effectBorderBlocksWithLowPosition.add(longNumber);
+ }
+ return null;
+ }
+ else
+ {
+ for(long d1:vectors.get(longNumber))
+ {
+ explosionPower.put(d1, power1);
+ }
+ return vectors.get(longNumber);
+ }
+
+ }
+
+ private int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ private int getNewPowerAndProcessBlocks(World world, EntityIHLExplosion exploder, Explosion explosion, int xyz[], int multiplier, int ix, int iy, int iz, int power2)
+ {
+ int power1=power2;
+ int x = exploder.x+xyz[0]*multiplier+ix;
+ int y = exploder.y+xyz[1]*multiplier+iy;
+ int z = exploder.z+xyz[2]*multiplier+iz;
+ if(y<=4 || y>256)
+ {
+ return 0;
+ }
+ Block block = exploder.getBlock(x, y, z);
+ int explosionResistance = Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ if(explosionResistance>=power1)
+ {
+ power1=0;
+ }
+ else
+ {
+ power1-=Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ Entity entity = exploder.getEntity(x, y, z);
+ if(entity!=null)
+ {
+ entity.attackEntityFrom(exploder.damageSource, power1/10f);
+ }
+ block.onBlockDestroyedByExplosion(world, x, y, z, explosion);
+ exploder.setBlockToAir(x, y, z);
+ }
+ return power1;
+ }
+
+ private int getNewPowerAndProcessBlocksEBS(World world, EntityIHLExplosion exploder, Explosion explosion, int xyz[],int power2)
+ {
+ int power1=power2;
+ int x = xyz[0] + (exploder.areaSize>>4);
+ int y = xyz[1];
+ int z = xyz[2] + (exploder.areaSize>>4);
+ if(y<0 || y>16)
+ {
+ return 0;
+ }
+ int explosionResistance = exploder.getEBSResistance(x, y, z);
+ if(explosionResistance>=power1)
+ {
+ power1=0;
+ }
+ else
+ {
+ power1-=explosionResistance;
+ exploder.esbArray[x][z][y].;
+ Entity entity = exploder.getEntity(x, y, z);
+ if(entity!=null)
+ {
+ entity.attackEntityFrom(exploder.damageSource, power1/10f);
+ }
+ block.onBlockDestroyedByExplosion(world, x, y, z, explosion);
+ exploder.setBlockToAir(x, y, z);
+ }
+ return power1;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/7054990556b400151e8fcdb87a141443 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/7054990556b400151e8fcdb87a141443
new file mode 100644
index 0000000..aec8b3e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/7054990556b400151e8fcdb87a141443
@@ -0,0 +1,567 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public Entity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=32;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ @Override
+ public void setInPortal(){}
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.05D-this.posX*0.1D;
+ this.motionY=(y0+y2)*0.05D-this.posY*0.1D;
+ this.motionZ=(z0+z2)*0.05D-this.posZ*0.1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.01D;
+ this.motionY+=(y2-this.posY)*0.01D;
+ this.motionZ+=(z2-this.posZ)*0.01D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.01D;
+ this.motionY+=(y0-this.posY)*0.01D;
+ this.motionZ+=(z0-this.posZ)*0.01D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ this.renderPosX=(float) this.prevPosX;
+ this.renderPosY=(float) this.prevPosY;
+ this.renderPosZ=(float) this.prevPosZ;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ TileEntity te = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId).getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb3543b60015176c95ddaf2504ce b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb3543b60015176c95ddaf2504ce
new file mode 100644
index 0000000..68987b9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb3543b60015176c95ddaf2504ce
@@ -0,0 +1,578 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldServer;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public NodeEntity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=64;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+ private boolean alreadyRegistered=false;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ @Override
+ public void setInPortal(){}
+
+ @Override
+ public void travelToDimension(int dimensionId){}
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ if(!alreadyRegistered)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ alreadyRegistered=true;
+ }
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.5D-this.posX*1D;
+ this.motionY=(y0+y2)*0.5D-this.posY*1D;
+ this.motionZ=(z0+z2)*0.5D-this.posZ*1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.1D;
+ this.motionY+=(y2-this.posY)*0.1D;
+ this.motionZ+=(z2-this.posZ)*0.1D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.1D;
+ this.motionY+=(y0-this.posY)*0.1D;
+ this.motionZ+=(z0-this.posZ)*0.1D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ float movvmentSpeed=0.05f;
+ this.renderPosX=this.renderPosX*(1f-movvmentSpeed)+(float) this.prevPosX*movvmentSpeed;
+ this.renderPosY=this.renderPosY*(1f-movvmentSpeed)+(float) this.prevPosY*movvmentSpeed;
+ this.renderPosZ=this.renderPosZ*(1f-movvmentSpeed)+(float) this.prevPosZ*movvmentSpeed;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ WorldServer world = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId);
+ TileEntity te = world.getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/0003ff6a758b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/0003ff6a758b0015134481ec712b17ae
new file mode 100644
index 0000000..dc1e53c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/0003ff6a758b0015134481ec712b17ae
@@ -0,0 +1,312 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ long longNumber = ebbi.next();
+ ebbi.remove();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(this.isBlockConnectedWithBedrock(longNumber))
+ {
+
+ }
+ }
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ }
+ }
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/90232f55a7ca001510f7df4278c93a7e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/90232f55a7ca001510f7df4278c93a7e
new file mode 100644
index 0000000..6fb4677
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/90232f55a7ca001510f7df4278c93a7e
@@ -0,0 +1,949 @@
+package ihl.utils;
+
+import ic2.api.recipe.IMachineRecipeManager;
+import ic2.api.recipe.IRecipeInput;
+import ic2.api.recipe.RecipeInputItemStack;
+import ic2.api.recipe.RecipeInputOreDict;
+import ic2.api.recipe.Recipes;
+import ic2.core.block.invslot.InvSlotOutput;
+import ihl.IHLMod;
+import ihl.interfaces.IWire;
+import ihl.metallurgy.constants.*;
+import ihl.processing.invslots.InvSlotConsumableLiquidIHL;
+import ihl.recipes.IRecipeInputFluid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class IHLUtils
+{
+ private static Map<String,ItemStack> ihlItemStackRegistry = new HashMap();
+
+ public static void registerLocally(String name, ItemStack stack)
+ {
+ ihlItemStackRegistry.put(name, stack);
+ }
+
+ public static ItemStack getOreDictItemStack(String name)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=1;
+ return orecopy;
+ }
+
+ public static boolean hasOreDictionaryEntry(String name)
+ {
+ return !OreDictionary.getOres(name).isEmpty();
+ }
+
+ public static Item getOreDictItem(String name)
+ {
+ return OreDictionary.getOres(name).get(0).getItem();
+ }
+
+ public static Block getOreDictBlock(String name)
+ {
+ return Block.getBlockFromItem(OreDictionary.getOres(name).get(0).getItem());
+ }
+
+ public static ItemStack getOreDictItemStackWithSize(String name, int size)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=size;
+ return orecopy;
+ }
+
+ public static String getFirstOreDictName(ItemStack stack)
+ {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ if(arrayIDs.length>0)
+ {
+ return OreDictionary.getOreName(arrayIDs[0]);
+ }
+ return "";
+ }
+
+ public static ItemStack getThisModItemStack(String name)
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithSize(String name, int i) {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ ItemStack stack = ihlItemStackRegistry.get(name).copy();
+ stack.stackSize=i;
+ return stack;
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name),i);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name),i);
+ }
+ }
+
+ public static ItemStack getOtherModItemStackWithDamage(String modname, String name,int damage) {
+ if(GameRegistry.findItem(modname, name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem(modname, name),1,damage);
+ }
+ else if(GameRegistry.findBlock(modname, name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock(modname, name),1,damage);
+ }
+ }
+
+ public static Item getThisModItem(String name)
+ {
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return GameRegistry.findItem("ihl", name);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return Item.getItemFromBlock(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static FluidStack getFluidStackWithSize(String name, int i) {
+ if(FluidRegistry.isFluidRegistered(name))
+ {
+ return FluidRegistry.getFluidStack(name, i);
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such fluid: "+name);
+ }
+ }
+
+ public static Block getThisModBlock(String name)
+ {
+ if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such block in item registry: ihl:"+name);
+ }
+ else
+ {
+ return GameRegistry.findBlock("ihl", name);
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithDamage(String name,
+ int value)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ stack.setItemDamage(value);
+ return stack;
+ }
+
+ public static boolean adjustWireLength(ItemStack stack, int adjustBy)
+ {
+ int length = getWireLength(stack);
+ if(length<=0)
+ {
+ return true;
+ }
+ else
+ {
+ int newLength = Math.max(length+adjustBy,0);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),newLength);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),newLength);
+ if(newLength==0)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public static int getWireLength(ItemStack itemStack)
+ {
+ return itemStack.stackTagCompound.getInteger(((IWire)itemStack.getItem()).getTag());
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(String name, int i) {
+ if(getThisModItemStack(name)!=null)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ if(stack.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException("ihl:"+name + " is not an instance of IWire.");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(ItemStack stack1, int i) {
+ ItemStack stack = stack1.copy();
+ if(stack1.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException(stack1.getUnlocalizedName() + " is not an instance of IWire.");
+ }
+ }
+
+ public static boolean isItemsHaveSameOreDictionaryEntry(ItemStack is, ItemStack is1)
+ {
+ int[] odids1 = OreDictionary.getOreIDs(is);
+ int[] odids2 = OreDictionary.getOreIDs(is1);
+ if(odids1!=null && odids1.length>0 && odids2!=null && odids2.length>0)
+ {
+ for(int i1=0;i1<odids1.length;i1++)
+ {
+ for(int i2=0;i2<odids2.length;i2++)
+ {
+ if(!OreDictionary.getOreName(odids1[i1]).contains("Any") && odids1[i1]==odids2[i2])
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static List<ItemStack> getEntryListForOre(String name)
+ {
+ ArrayList<ItemStack> outputList = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> oreList = OreDictionary.getOres(name);
+ Iterator<ItemStack> oreListIterator = oreList.iterator();
+ while(oreListIterator.hasNext())
+ {
+ outputList.add(oreListIterator.next().copy());
+ }
+ return outputList;
+ }
+
+ public static ItemStack getItemStackIfExist(String name)
+ {
+ if(hasOreDictionaryEntry(name))
+ {
+ return getOreDictItemStack(name);
+ }
+ else
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+ }
+
+ public static FluidStack getFluidStackIfExist(String string, int meltingFluidAmount)
+ {
+ if(FluidRegistry.isFluidRegistered(string))
+ {
+ return getFluidStackWithSize(string,meltingFluidAmount);
+ }
+ return null;
+ }
+
+ public static boolean addItemStackToInventory(EntityPlayer player, ItemStack stack)
+ {
+ ItemStack[] inv = player.inventory.mainInventory;
+ for (int i=0;i<=35;i++)
+ {
+ if(inv[i]!=null)
+ {
+ if(inv[i].getItem()==stack.getItem())
+ {
+ if(inv[i].getItemDamage()==stack.getItemDamage() && inv[i].stackSize<inv[i].getMaxStackSize())
+ {
+ inv[i].stackSize+=stack.stackSize;
+ if(inv[i].stackSize>inv[i].getMaxStackSize())
+ {
+ stack.stackSize=inv[i].stackSize-inv[i].getMaxStackSize();
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ inv[i]=stack;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static FluidStack getFluidStackWithSizeChemicallyPure(String name, int amount)
+ {
+ FluidStack fstack = getFluidStackWithSize(name, amount);
+ fstack.tag=new NBTTagCompound();
+ fstack.tag.setBoolean("chemicallyPure", true);
+ return fstack;
+ }
+
+ public static void removeItemStackFromOreDictionaryEntry(String orename, ItemStack itemStack)
+ {
+ ArrayList<ItemStack> orelist = OreDictionary.getOres(orename);
+ Iterator<ItemStack> oreListIterator = orelist.iterator();
+ ItemStack odstack = null;
+ while(oreListIterator.hasNext())
+ {
+ odstack = oreListIterator.next();
+ if(odstack.getItem()==itemStack.getItem())
+ {
+ break;
+ }
+ else
+ {
+ odstack = null;
+ }
+ }
+ if(odstack != null)
+ {
+ orelist.remove(odstack);
+ IHLMod.log.debug("Stack "+odstack.getDisplayName()+" ("+odstack.toString()+")"+" removed from ore entry '"+orename+"'");
+ }
+ }
+
+ public static boolean isRecipeInputExist(IMachineRecipeManager iMachineRecipeManager, ItemStack stack)
+ {
+ Iterator<IRecipeInput> keyI = iMachineRecipeManager.getRecipes().keySet().iterator();
+ while(keyI.hasNext())
+ {
+ IRecipeInput iri = keyI.next();
+ if(iri.matches(stack))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static void addIC2MaceratorRecipe(String input, ItemStack output)
+ {
+ if(!isRecipeInputExist(Recipes.macerator,getOreDictItemStack(input)))
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, int stacksize, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStackWithSize(input,stacksize), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input,stacksize), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(String input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(getThisModItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2CentrifugeRecipe(String input, ItemStack output, ItemStack output2)
+ {
+ if(Recipes.centrifuge.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("minHeat", 2000);
+ Recipes.centrifuge.addRecipe(new RecipeInputOreDict(input), tag, new ItemStack[] {output,output2});
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 centrifuge recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void damageItemViaNBTTag(ItemStack stack, int amount)
+ {
+ NBTTagCompound gtTagCompound;
+ if(stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+ int damage = 0;
+ int maxDamage = 0;
+ if(gtTagCompound.hasKey("MaxDamage"))
+ {
+ maxDamage = gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+
+ if(gtTagCompound.hasKey("Damage"))
+ {
+ damage = gtTagCompound.getInteger("Damage");
+ }
+ if(damage<maxDamage-amount)
+ {
+ damage+=amount;
+ gtTagCompound.setInteger("Damage",damage);
+ gtTagCompound.setInteger("MaxDamage",maxDamage);
+ stack.stackTagCompound.setTag("GT.ToolStats", gtTagCompound);
+ }
+ else
+ {
+ stack.stackSize--;
+ }
+ }
+
+ public static int getDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("Damage"))
+ {
+ return gtTagCompound.getInteger("Damage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static int getMaxDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("MaxDamage"))
+ {
+ return gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, ItemStack stack2, boolean useOreDictionary)
+ {
+ if(useOreDictionary && isItemsHaveSameOreDictionaryEntry(stack1,stack2))
+ {
+ return true;
+ }
+ else
+ {
+ if(stack1.getItemDamage()==OreDictionary.WILDCARD_VALUE || stack2.getItemDamage()==OreDictionary.WILDCARD_VALUE)
+ {
+ return stack1.getItem()==stack2.getItem();
+ }
+ else
+ {
+ return stack1.getItem()==stack2.getItem() && stack1.getItemDamage()==stack2.getItemDamage();
+ }
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, String stack2name, boolean useOreDictionary)
+ {
+ return isItemStacksIsEqual(stack1, getThisModItemStack(stack2name),useOreDictionary);
+ }
+
+ public static boolean isIRecipeInputMatchesWithAmount(IRecipeInput input, ItemStack stack)
+ {
+ if(input.matches(stack))
+ {
+ if(stack.getItem() instanceof IWire)
+ {
+ return getWireLength(stack)>=input.getAmount();
+ }
+ else
+ {
+ return stack.stackSize>=input.getAmount();
+ }
+ }
+ return false;
+ }
+
+ public static boolean reduceItemStackAmountUsingIRecipeInput(IRecipeInput input, ItemStack stack) {
+ if(stack.getItem() instanceof IWire)
+ {
+ return adjustWireLength(stack,-input.getAmount());
+ }
+ else
+ {
+ stack.stackSize-=input.getAmount();
+ return stack.stackSize<=0;
+ }
+ }
+
+ public static String getFirstOreDictNameExcludingTagAny(ItemStack stack) {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ for(int i=0;i<arrayIDs.length;i++)
+ {
+ if(!OreDictionary.getOreName(arrayIDs[i]).contains("Any"))
+ {
+ return OreDictionary.getOreName(arrayIDs[i]);
+ }
+ }
+ return "";
+ }
+
+ public static void handleFluidSlotsBehaviour(InvSlotConsumableLiquidIHL fillInputSlot, InvSlotConsumableLiquidIHL drainInputSlot, InvSlotOutput emptyFluidItemsSlot, IFluidTank fluidTank)
+ {
+ MutableObject output;
+ if (drainInputSlot!=null && !drainInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if(fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, true),false)>0 && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, false),true);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ if (fillInputSlot!=null && !fillInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if (fillInputSlot.transferFromTank(fluidTank, output, true) && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fillInputSlot.transferFromTank(fluidTank, output, false);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ }
+ public static double[] tracePlayerView(EntityPlayer entityplayer)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+ if (entityplayer.worldObj!=null && entityplayer.worldObj.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+ double z = entityplayer.posZ;
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 1.0D;
+ return new double[] {x+f7 * d3, y+f6 * d3, z+f9 * d3};
+ }
+
+ public static MovingObjectPosition returnMOPFromPlayer(EntityPlayer entityplayer, World world)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+
+ if (world.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+
+ double z = entityplayer.posZ;
+ Vec3 vec3d = Vec3.createVectorHelper(x, y, z);
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 5.0D;
+ Vec3 vec3d1 = vec3d.addVector(f7 * d3, f6 * d3, f9 * d3);
+ MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3d, vec3d1, true);
+
+ if (movingobjectposition == null)
+ {
+ return null;
+ }
+
+ if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
+ {
+ return movingobjectposition;
+ }
+ return null;
+ }
+
+ public static short getFacingFromPlayerView(EntityLivingBase player, boolean ignoreSneaking)
+ {
+ int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3;
+ int var7 = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
+ {
+ if(var6==1)
+ {
+ return 1;
+ }
+ else if(var6==3)
+ {
+ return 0;
+ }
+ else
+ {
+ if(player.isSneaking() && !ignoreSneaking)
+ {
+ switch(var7)
+ {
+ case 0:
+ return 3;
+ case 1:
+ return 4;
+ case 2:
+ return 2;
+ case 3:
+ return 5;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch(var7)
+ {
+ case 0:
+ return 2;
+ case 1:
+ return 5;
+ case 2:
+ return 3;
+ case 3:
+ return 4;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ return 3;
+ }
+
+ public static int getChainID(ItemStack itemStack)
+ {
+ if(itemStack!=null && itemStack.stackTagCompound!=null && itemStack.stackTagCompound.hasKey("chainUID"))
+ {
+ return itemStack.stackTagCompound.getInteger("chainUID");
+ }
+ return -1;
+ }
+
+ public static List<ItemStack> convertRecipeInputToItemStackList(List<IRecipeInput> input)
+ {
+ Iterator<IRecipeInput> irii=input.iterator();
+ List<ItemStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInput iri = irii.next();
+ ItemStack stack = iri.getInputs().get(0);
+ stack.stackSize=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static List<FluidStack> convertRecipeInputToFluidStackList(List<IRecipeInputFluid> input) {
+ Iterator<IRecipeInputFluid> irii=input.iterator();
+ List<FluidStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInputFluid iri = irii.next();
+ FluidStack stack = iri.getInputs().get(0);
+ stack.amount=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static int[] decodeXYZ(long longNumber)
+ {
+ return new int[] {(int) ((longNumber>>30) & 0xfff)-256,(int) ((longNumber>>15) & 0xfff)-256,(int) (longNumber & 0xfff)-256};
+ }
+
+ public static long encodeXYZ(int x,int y,int z)
+ {
+ return (x+256L)<<30|((y+256L)<<15)|(z+256L);
+ }
+
+ public static int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ public static long getXYZHash(int x,int y,int z)
+ {
+ return ((x&0x1FFFFF)<<42)|((y&0x1FFFFF)<<21)|(z&0x1FFFFF);
+ }
+
+ public static String trim(String str)
+ {
+ int len = str.length();
+ int start;
+ char c;
+ for (start = 0; start < len; ++start)
+ {
+ c = str.charAt(start);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ int end;
+ for (end = len - 1; end >= start; --end)
+ {
+ c = str.charAt(end);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ return start <= 0 && end >= len - 1 ? str : str.substring(start, end + 1);
+ }
+
+ public static int getAmountOf(ItemStack is)
+ {
+ if(is.getItem() instanceof IWire)
+ {
+ return getWireLength(is);
+ }
+ else
+ {
+ return is.stackSize;
+ }
+ }
+
+ public static ItemStack getWireItemStackCopyWithLengthMultiplied(ItemStack stack, int multiplier)
+ {
+ ItemStack out = stack.copy();
+ adjustWireLength(out,getWireLength(stack)*(multiplier-1));
+ return out;
+ }
+
+ public static ItemStack getUninsulatedWire(String material, int length, int transverseSection) {
+ ItemStack is = getThisModItemStack("copperWire");
+ is.stackTagCompound=new NBTTagCompound();
+ is.stackTagCompound.setBoolean("firstConnection",false);
+ is.stackTagCompound.setInteger("fullLength", length);
+ is.stackTagCompound.setInteger("length", length);
+ is.stackTagCompound.setBoolean("firstConnection", false);
+ is.stackTagCompound.setString("material", material);
+ is.stackTagCompound.setInteger("transverseSection",transverseSection);
+ is.stackTagCompound.setInteger("resistance", ElectricConductor.getResistivity(material)*100/transverseSection);
+ return is;
+ }
+
+ public static ItemStack getInsulatedWire(String material, int length, int transverseSection, String insulationMaterial, int insulationThickness) {
+ ItemStack is = getUninsulatedWire(material, length, transverseSection);
+ is.stackTagCompound.setString("insulationMaterial",insulationMaterial);
+ is.stackTagCompound.setInteger("insulationThickness",insulationThickness);
+ is.stackTagCompound.setInteger("maxVoltage", getInsulationMaxVoltage(insulationMaterial, insulationThickness));
+ return is;
+ }
+
+ public static int getInsulationMaxVoltage(String insulationMaterial, int insulationThickness)
+ {
+ return Math.min(Insulation.getMaxVoltagePermm(insulationMaterial)*insulationThickness/10,Insulation.getMaxVoltageCap(insulationMaterial));
+ }
+
+ public static ItemStack getItemStackWithTag(String unLocalizedName, String tag, int tagValue) {
+ ItemStack stack = IHLUtils.getThisModItemStack(unLocalizedName);
+ if(stack.stackTagCompound==null)
+ {
+ stack.stackTagCompound=new NBTTagCompound();
+ }
+ stack.stackTagCompound.setInteger(tag, tagValue);
+ return stack;
+ }
+
+ public static boolean isSegmentInsideAABB(AxisAlignedBB collisionBox, double posX, double posY, double posZ, double posX2, double posY2, double posZ2)
+ {
+ if(isInsideofBoundingBox(collisionBox,(float)posX,(float)posY,(float)posZ)||isInsideofBoundingBox(collisionBox,(float)posX2,(float)posY2,(float)posZ2))
+ {
+ return true;
+ }
+ else
+ {
+ double minX=Math.min(posX, posX2);
+ double maxX=Math.max(posX, posX2);
+ double minY=Math.min(posY, posY2);
+ double maxY=Math.max(posY, posY2);
+ double minZ=Math.min(posZ, posZ2);
+ double maxZ=Math.max(posZ, posZ2);
+ return !(maxX<collisionBox.minX || minX>collisionBox.maxX ||
+ maxY<collisionBox.minY || minY>collisionBox.maxY ||
+ maxZ<collisionBox.minZ || minZ>collisionBox.maxZ);
+ }
+ }
+
+ public static boolean isInsideofBoundingBox(AxisAlignedBB bb, float xi, float yi, float zi)
+ {
+ return bb.maxX>xi && bb.minX<xi && bb.maxY>yi && bb.minY<yi && bb.maxZ>zi && bb.minZ<zi;
+ }
+
+ public static boolean isBlockCanBeReplaced(World world, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if(block==Blocks.air || block.isAir(world, x, y, z) || block == Blocks.vine || block == Blocks.tallgrass || block == Blocks.deadbush || block == Blocks.snow_layer || block == Blocks.snow)
+ {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b01bf4eb46a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b01bf4eb46a3001516ebc455efc032e5
new file mode 100644
index 0000000..43e3b2b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b01bf4eb46a3001516ebc455efc032e5
@@ -0,0 +1,112 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0b1b07b0b8e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0b1b07b0b8e00151544f45b8684d31e
new file mode 100644
index 0000000..64fb284
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0b1b07b0b8e00151544f45b8684d31e
@@ -0,0 +1,260 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+
+public class ExplosionVector
+{
+ public Set<Long> startVectors = new HashSet();
+ public Map<Long,Set<Long>> vectors = new HashMap();
+ public Map<Long,Integer> explosionPower = new HashMap();
+ public Map<Long,Float> explosionPowerDampingFactor = new HashMap();
+ private Random random = new Random();
+
+ public ExplosionVector()
+ {
+ this.precalculateExplosion();
+ }
+
+ public void precalculateExplosion()
+ {
+ int maxExplosionRadius=32;
+ for(int levelRadius=1; levelRadius<maxExplosionRadius; levelRadius++)
+ {
+ for(int ix=-levelRadius;ix<=levelRadius;ix++)
+ {
+ for(int iy=-levelRadius;iy<=levelRadius;iy++)
+ {
+ for(int iz=-levelRadius;iz<=levelRadius;iz++)
+ {
+ {
+ long coordinateKey = IHLUtils.encodeXYZ(ix,iy,iz);
+ if(!vectors.containsKey(coordinateKey))
+ {
+ int prevX=ix;
+ int prevY=iy;
+ int prevZ=iz;
+ if(Math.abs(ix)+Math.abs(iy)+Math.abs(iz)>Math.round(levelRadius*1.8f))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(ix)<=Math.abs(iy) && Math.abs(ix)<=Math.abs(iz))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iy)<=Math.abs(ix) && Math.abs(iy)<=Math.abs(iz))
+ {
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ prevZ=reduceVariableByAbsoluteValue(prevZ);
+ }
+ else if(Math.abs(iz)<=Math.abs(ix) && Math.abs(iz)<=Math.abs(iy))
+ {
+ prevY=reduceVariableByAbsoluteValue(prevY);
+ prevX=reduceVariableByAbsoluteValue(prevX);
+ }
+ long prevKey = IHLUtils.encodeXYZ(prevX,prevY,prevZ);
+ if(prevX==ix && prevY==iy && prevZ==iz && levelRadius>1)
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ throw new ArithmeticException("Variables are out of expected range. \n Expected are not equal: "+ix+"="+prevX+" "+iy+"="+prevY+" "+iz+"="+prevZ);
+ }
+ if(levelRadius==1)
+ {
+ startVectors.add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else if(vectors.containsKey(prevKey))
+ {
+ prevKey=this.getParentWithLowestDescendantsRate(prevKey, prevX, prevY, prevZ, levelRadius);
+ vectors.get(prevKey).add(coordinateKey);
+ this.addElement(coordinateKey, prevX, prevY, prevZ, ix, iy, iz);
+ }
+ else
+ {
+ IHLMod.log.error("Was:"+ix+"/" +iy+"/" +iz+"/");
+ IHLMod.log.error("Now:"+prevX+"/" +prevY+"/" +prevZ+"/");
+ IHLMod.log.info("ExplosionVector is missing parent! Help him!");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private long getParentWithLowestDescendantsRate(long prevKey, int prevX, int prevY, int prevZ, int levelRadius)
+ {
+ long prevKey1 = prevKey;
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ int x2,y2,z2;
+ int descendantsRate=vectors.get(prevKey).size();
+ for(int i=0;i<=5;i++)
+ {
+ x2=prevX+xyzi[i];
+ y2=prevY+xyzi[i+2];
+ z2=prevZ+xyzi[i+1];
+ long newKey = IHLUtils.encodeXYZ(x2, y2, z2);
+ boolean atALevelRadius = (Math.abs(x2)==levelRadius-1||Math.abs(y2)==levelRadius-1||Math.abs(z2)==levelRadius-1)&&(Math.abs(x2)<levelRadius && Math.abs(y2)<levelRadius && Math.abs(z2)<levelRadius);
+ if(atALevelRadius && vectors.get(newKey).size()<descendantsRate)
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ else if(atALevelRadius && vectors.get(newKey).size()==descendantsRate)
+ {
+ if(random.nextBoolean())
+ {
+ descendantsRate=vectors.get(newKey).size();
+ prevKey1=newKey;
+ }
+ }
+ }
+ return prevKey1;
+ }
+
+ private void addElement(long coordinateKey, int prevX, int prevY, int prevZ, int ix, int iy, int iz)
+ {
+ vectors.put(coordinateKey, new HashSet());
+ float df = (float)(prevX*prevX+prevY*prevY+prevZ*prevZ+1)/(float)(ix*ix+iy*iy+iz*iz+1);
+ explosionPowerDampingFactor.put(coordinateKey,df);
+ }
+
+ public void setPower(int power1)
+ {
+ for(long ev:startVectors)
+ {
+ this.explosionPower.put(ev, power1);
+ }
+
+ }
+
+ public Set<Long> breakBlocksAndGetDescendants(World world, EntityIHLExplosion exploder, Explosion explosion, long longNumber)
+ {
+ int multiplier = exploder.multiplier;
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int power1 = explosionPower.get(longNumber);
+ int repeat=0;
+ //System.out.println("Power before " + power1);
+ if(Math.abs(xyz[0])>=Math.abs(xyz[1]) && Math.abs(xyz[0])>=Math.abs(xyz[2]))
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else if(Math.abs(xyz[1])>=Math.abs(xyz[0]) && Math.abs(xyz[1])>=Math.abs(xyz[2]))
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ else
+ {
+ for(int iz=xyz[2]>0?0:multiplier-1;iz<multiplier && iz>=0;iz=xyz[2]>0?iz+1:iz-1)
+ {
+ for(int ix=xyz[0]>0?0:multiplier-1;ix<multiplier && ix>=0;ix=xyz[0]>0?ix+1:ix-1)
+ {
+ for(int iy=xyz[1]>0?0:multiplier-1;iy<multiplier && iy>=0;iy=xyz[1]>0?iy+1:iy-1)
+ {
+ power1 = this.getNewPowerAndProcessBlocks(world, exploder, explosion, xyz, multiplier, ix, iy, iz, power1);
+ }
+ }
+ }
+ }
+ power1=Math.round(power1*explosionPowerDampingFactor.get(longNumber)-0.5f);
+ //System.out.println("Power after " + power1 + " \n repeats "+repeat);
+ if(power1<=1 || !vectors.containsKey(longNumber)|| vectors.get(longNumber).isEmpty())
+ {
+ exploder.effectBorderBlocks.add(longNumber);
+ if(xyz[1]<0 || (exploder.y<=6 && xyz[1]<=6))
+ {
+ exploder.effectBorderBlocksWithLowPosition.add(longNumber);
+ }
+ return null;
+ }
+ else
+ {
+ for(long d1:vectors.get(longNumber))
+ {
+ explosionPower.put(d1, power1);
+ }
+ return vectors.get(longNumber);
+ }
+ }
+
+ private int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ private int getNewPowerAndProcessBlocks(World world, EntityIHLExplosion exploder, Explosion explosion, int xyz[], int multiplier, int ix, int iy, int iz, int power2)
+ {
+ int power1=power2;
+ int x = exploder.x+xyz[0]*multiplier+ix;
+ int y = exploder.y+xyz[1]*multiplier+iy;
+ int z = exploder.z+xyz[2]*multiplier+iz;
+ if(y<=4 || y>256)
+ {
+ return 0;
+ }
+ Block block = exploder.getBlock(x, y, z);
+ int explosionResistance = Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ if(explosionResistance>=power1)
+ {
+ power1=0;
+ }
+ else
+ {
+ power1-=Math.round(block.getExplosionResistance(exploder, world, x, y, z, exploder.x, exploder.y, exploder.z)*10f);
+ Entity entity = exploder.getEntity(x, y, z);
+ if(entity!=null)
+ {
+ entity.attackEntityFrom(exploder.damageSource, power1/10f);
+ }
+ block.onBlockDestroyedByExplosion(world, x, y, z, explosion);
+ exploder.setBlockToAir(x, y, z);
+ }
+ return power1;
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/700d2b9561b500151fdb993ef9230294 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/700d2b9561b500151fdb993ef9230294
new file mode 100644
index 0000000..735124b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/700d2b9561b500151fdb993ef9230294
@@ -0,0 +1,572 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldServer;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public Entity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=64;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ @Override
+ public void setInPortal(){}
+
+ @Override
+ public void travelToDimension(int dimensionId){}
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.05D-this.posX*0.1D;
+ this.motionY=(y0+y2)*0.05D-this.posY*0.1D;
+ this.motionZ=(z0+z2)*0.05D-this.posZ*0.1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.01D;
+ this.motionY+=(y2-this.posY)*0.01D;
+ this.motionZ+=(z2-this.posZ)*0.01D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.01D;
+ this.motionY+=(y0-this.posY)*0.01D;
+ this.motionZ+=(z0-this.posZ)*0.01D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ this.renderPosX=(float) this.prevPosX;
+ this.renderPosY=(float) this.prevPosY;
+ this.renderPosZ=(float) this.prevPosZ;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ WorldServer world = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId);
+ TileEntity te = world.getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/00f7674b748b0015134481ec712b17ae b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/00f7674b748b0015134481ec712b17ae
new file mode 100644
index 0000000..bbc52ab
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/00f7674b748b0015134481ec712b17ae
@@ -0,0 +1,274 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/4063232,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ long longNumber = ebbi.next();
+ ebbi.remove();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(this.isBlockConnectedWithBedrock(longNumber))
+ {
+
+ }
+ }
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ Set<Long> path = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ break;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0dbc47f07a50015138cc582c427ac91 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0dbc47f07a50015138cc582c427ac91
new file mode 100644
index 0000000..4b8e182
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0dbc47f07a50015138cc582c427ac91
@@ -0,0 +1,66 @@
+package ihl.processing.chemistry;
+
+import ic2.core.ContainerBase;
+import ic2.core.slot.SlotInvSlot;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.ICrafting;
+import net.minecraft.inventory.Slot;
+
+public class LoomContainer extends ContainerBase {
+
+ public LoomTileEntity tileEntity;
+ public int lastProgress = -1;
+ private final static int height=166;
+
+ public LoomContainer(EntityPlayer entityPlayer,
+ LoomTileEntity lathePart1TileEntity) {
+ super(lathePart1TileEntity);
+ tileEntity=lathePart1TileEntity;
+ int col;
+
+ for (col = 0; col < 3; ++col)
+ {
+ for (int col1 = 0; col1 < 9; ++col1)
+ {
+ this.addSlotToContainer(new Slot(entityPlayer.inventory, col1 + col * 9 + 9, 8 + col1 * 18, height + -82 + col * 18));
+ }
+ }
+
+ for (col = 0; col < 9; ++col)
+ {
+ this.addSlotToContainer(new Slot(entityPlayer.inventory, col, 8 + col * 18, height + -24));
+ }
+ this.addSlotToContainer(new SlotInvSlot(lathePart1TileEntity.input, 0, 8, 44));
+ this.addSlotToContainer(new SlotInvSlot(lathePart1TileEntity.output, 0, 127, 44));
+ }
+
+ @Override
+ public void detectAndSendChanges()
+ {
+ super.detectAndSendChanges();
+ for (int i = 0; i < this.crafters.size(); ++i)
+ {
+ ICrafting icrafting = (ICrafting)this.crafters.get(i);
+ if (this.tileEntity.progress != this.lastProgress)
+ {
+ icrafting.sendProgressBarUpdate(this, 0, this.tileEntity.progress);
+ }
+ }
+ this.lastProgress = this.tileEntity.progress;
+ }
+
+ @Override
+ public void updateProgressBar(int index, int value)
+ {
+ super.updateProgressBar(index, value);
+
+ switch (index)
+ {
+ case 0:
+ this.tileEntity.progress=(short) value;
+ break;
+
+ }
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a7/f042703fd8b20015115782a55d40af78 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a7/f042703fd8b20015115782a55d40af78
new file mode 100644
index 0000000..084b4c0
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a7/f042703fd8b20015115782a55d40af78
@@ -0,0 +1,395 @@
+package ihl.flexible_cable;
+
+import ic2.api.energy.EnergyNet;
+import ic2.api.energy.event.EnergyTileLoadEvent;
+import ic2.api.energy.event.EnergyTileUnloadEvent;
+import ic2.api.energy.tile.IEnergySink;
+import ic2.api.energy.tile.IEnergySource;
+import ic2.core.ExplosionIC2;
+import ic2.core.IC2;
+import ic2.core.block.TileEntityBlock;
+import ihl.IHLMod;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.utils.IHLUtils;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class AnchorTileEntity extends TileEntityBlock implements IEnergySink, IEnergySource
+{
+ public boolean addedToEnergyNet=false;
+ private final Set<TileEntity> sacrifices = new HashSet<TileEntity>();
+ public SubAnchorEnergyNetNode[] energyNetNodes = new SubAnchorEnergyNetNode[6];
+ public boolean[] hasCableOnSide=new boolean [] {false,false,false,false,false,false};
+ public int checksum=-1;
+
+ public AnchorTileEntity()
+ {
+ super();
+ for(short i=0;i<6;i++)
+ {
+ energyNetNodes[i] = new SubAnchorEnergyNetNode(this, i);
+ }
+ }
+
+ @Override
+ public List<String> getNetworkedFields()
+ {
+ List<String> fields = super.getNetworkedFields();
+ fields.add("hasCableOnSide");
+ return fields;
+ }
+
+ @Override
+ public void onLoaded()
+ {
+ super.onLoaded();
+ if (IC2.platform.isSimulating()&&!this.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
+ this.addedToEnergyNet = true;
+ }
+ for(short i=0;i<6;i++)
+ {
+ energyNetNodes[i].onLoaded();
+ }
+ }
+
+ @Override
+ public void onUnloaded()
+ {
+ if (IC2.platform.isSimulating())
+ {
+ if(this.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
+ this.addedToEnergyNet = false;
+ }
+ }
+ }
+
+ @Override
+ public boolean wrenchCanRemove(EntityPlayer var1)
+ {
+ return false;
+ }
+
+ public boolean enableUpdateEntity()
+ {
+ return IC2.platform.isSimulating();
+ }
+
+ @Override
+ public void updateEntityServer()
+ {
+ if(!sacrifices.isEmpty())
+ {
+ Iterator<TileEntity> victimIterator = sacrifices.iterator();
+ while(victimIterator.hasNext())
+ {
+ TileEntity sacrifice = victimIterator.next();
+ ExplosionIC2 explosion = new ExplosionIC2(this.worldObj, null, sacrifice.xCoord+0.5D, sacrifice.yCoord+0.5D, sacrifice.zCoord+0.5D, 3F, 0.3F, ExplosionIC2.Type.Normal, null, 0);
+ explosion.doExplosion();
+ sacrifices.remove(sacrifice);
+ }
+
+ }
+ int newchecksum=0;
+ for(short i=0;i<6;i++)
+ {
+ if(this.hasCableOnSide[i])
+ {
+ newchecksum++;
+ }
+ }
+ if(newchecksum!=checksum)
+ {
+ IC2.network.get().updateTileEntityField(this, "hasCableOnSide");
+ checksum=newchecksum;
+ }
+ else if(newchecksum==0)
+ {
+ for(short i=0;i<6;i++)
+ {
+ if(!this.energyNetNodes[i].getCableList().isEmpty())
+ {
+ newchecksum++;
+ }
+ }
+ //if(newchecksum==0)worldObj.setBlockToAir(xCoord, yCoord, zCoord);
+ }
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound nbt) {
+ super.writeToNBT(nbt);
+ NBTTagList energyNetNodeNBTList = new NBTTagList();
+ for(SubAnchorEnergyNetNode node:this.energyNetNodes)
+ {
+ energyNetNodeNBTList.appendTag(node.writeToNBT());
+ }
+ nbt.setTag("energyNetNodes", energyNetNodeNBTList);
+ if(nbt.hasKey("facing"))
+ {
+ nbt.removeTag("facing");
+ }
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound nbt) {
+ super.readFromNBT(nbt);
+ if(nbt.hasKey("facing"))
+ {
+ short facing = nbt.getShort("facing");
+ int gridID=nbt.getInteger("gridID");
+ this.energyNetNodes[facing].setGrid(gridID);
+ NBTTagList cableNBTList=nbt.getTagList("cableList", 10);
+ for(int i=0;i<cableNBTList.tagCount();i++)
+ {
+ this.energyNetNodes[facing].addCable(cableNBTList.getCompoundTagAt(i));
+ }
+ }
+ else
+ {
+ NBTTagList energyNetNodeNBTList=nbt.getTagList("energyNetNodes", 10);
+ for(int i=0;i<6;i++)
+ {
+ this.energyNetNodes[i].readFromNBT(energyNetNodeNBTList.getCompoundTagAt(i));
+ }
+ }
+ }
+
+ @Override
+ public void setFacing(short facing)
+ {
+ System.out.println("facing");
+ this.energyNetNodes[facing].removeAttachedChains();
+ boolean removeTE=true;
+ for(short i=0;i<6;i++)
+ {
+ if(!energyNetNodes[i].getCableList().isEmpty())
+ {
+ System.out.println("not empty="+i);
+ removeTE=false;
+ }
+ }
+ if(removeTE)
+ {
+ worldObj.setBlockToAir(xCoord, yCoord, zCoord);
+ }
+ }
+
+ @Override
+ public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
+ {
+ switch(direction)
+ {
+ case UP:
+ return this.energyNetNodes[0].getGridID()!=-1;
+ case DOWN:
+ return this.energyNetNodes[1].getGridID()!=-1;
+ case SOUTH:
+ return this.energyNetNodes[2].getGridID()!=-1;
+ case NORTH:
+ return this.energyNetNodes[3].getGridID()!=-1;
+ case EAST:
+ return this.energyNetNodes[4].getGridID()!=-1;
+ case WEST:
+ return this.energyNetNodes[5].getGridID()!=-1;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction)
+ {
+ return this.acceptsEnergyFrom(receiver, direction);
+ }
+
+ @Override
+ public double getOfferedEnergy()
+ {
+ double offeredEnergy=0d;
+ for(short i=0;i<6;i++)
+ {
+ offeredEnergy+=energyNetNodes[i].getOfferedEnergy();
+ }
+ return offeredEnergy;
+ }
+
+ @Override
+ public void drawEnergy(double amount)
+ {
+ for(short i=0;i<6;i++)
+ {
+ amount-=energyNetNodes[i].drawEnergy(amount);
+ double voltage = energyNetNodes[i].getVoltage();
+ if(voltage>500D)
+ {
+ Set<TileEntity> teset = new HashSet<TileEntity>();
+ ForgeDirection direction = ForgeDirection.getOrientation(i).getOpposite();
+ TileEntity te = EnergyNet.instance.getNeighbor(this, direction);
+ teset.add(te);
+ TileEntity te1 = this.getSink(te, teset);
+ if(te1 instanceof IEnergyNetNode)
+ {
+ if(((IEnergyNetNode)te1).getMaxAllowableVoltage()>=voltage)
+ {
+ return;
+ }
+ }
+ if(te1!=null)
+ {
+ sacrifices.add(te1);
+ }
+ }
+ if(amount<=0d)
+ {
+ break;
+ }
+ }
+ }
+
+ @Override
+ public int getSourceTier() {
+ return 4;
+ }
+
+ @Override
+ public double getDemandedEnergy()
+ {
+ double amount=0d;
+ for(short i=0;i<6;i++)
+ {
+ amount+=energyNetNodes[i].getDemandedEnergy();
+ }
+ return amount;
+ }
+
+ @Override
+ public int getSinkTier() {
+ return 4;
+ }
+
+ @Override
+ public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) {
+ if (directionFrom.flag>5 || this.energyNetNodes[directionFrom.flag].getGridID()==-1 || this.energyNetNodes[directionFrom.flag].getGrid().energy > 1D)
+ {
+ return amount;
+ }
+ else
+ {
+ this.energyNetNodes[directionFrom.flag].getGrid().injectEnergy(amount, 400D, this.energyNetNodes[directionFrom.flag]);
+ return 0.0D;
+ }
+ }
+
+ @Override
+ public ItemStack getWrenchDrop(EntityPlayer entityPlayer)
+ {
+ return null;
+ }
+
+ @Override
+ public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side)
+ {
+ return !this.wrenchCanRemove(entityPlayer);
+ }
+
+ private TileEntity getSink(TileEntity te, Set<TileEntity> teset)
+ {
+ teset.add(te);
+ while(te!=null && !(te instanceof IEnergySink))
+ {
+ TileEntity te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.NORTH);
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.SOUTH);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.UP);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.DOWN);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.WEST);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1==null || teset.contains(te1))
+ {
+ te1 = EnergyNet.instance.getNeighbor(te, ForgeDirection.EAST);
+ }
+ else
+ {
+ TileEntity te2 = this.getSink(te1, teset);
+ if(te2!=null)
+ {
+ return te2;
+ }
+ }
+ if(te1!=null)
+ {
+ teset.add(te1);
+ }
+ te=te1;
+ }
+ if(te instanceof IEnergySink)
+ {
+ return te;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a8/d037e47347a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a8/d037e47347a3001516ebc455efc032e5
new file mode 100644
index 0000000..2ae6fb9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a8/d037e47347a3001516ebc455efc032e5
@@ -0,0 +1,113 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ File fileFrom = new File(IHLMod.proxy.getMinecraftDir(),"/assets/ihl/config/ihl-guidebook.xml");
+ //File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/b025dae449a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/b025dae449a3001516ebc455efc032e5
new file mode 100644
index 0000000..97c05f6
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/b025dae449a3001516ebc455efc032e5
@@ -0,0 +1,116 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+// File fileFrom = new File(IHLMod.proxy.getMinecraftDir(),"/assets/ihl/config/ihl-guidebook.xml");
+ File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/a00189f69cb4001510d7bdb0b1be77c9 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/a00189f69cb4001510d7bdb0b1be77c9
new file mode 100644
index 0000000..227d0c1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/a00189f69cb4001510d7bdb0b1be77c9
@@ -0,0 +1,934 @@
+package ihl.utils;
+
+import ic2.api.recipe.IRecipeInput;
+import ic2.api.recipe.RecipeInputItemStack;
+import ic2.api.recipe.RecipeInputOreDict;
+import ic2.api.recipe.Recipes;
+import ic2.core.block.invslot.InvSlotOutput;
+import ihl.IHLMod;
+import ihl.interfaces.IWire;
+import ihl.metallurgy.constants.*;
+import ihl.processing.invslots.InvSlotConsumableLiquidIHL;
+import ihl.recipes.IRecipeInputFluid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class IHLUtils
+{
+ private static Map<String,ItemStack> ihlItemStackRegistry = new HashMap();
+
+ public static void registerLocally(String name, ItemStack stack)
+ {
+ ihlItemStackRegistry.put(name, stack);
+ }
+
+ public static ItemStack getOreDictItemStack(String name)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=1;
+ return orecopy;
+ }
+
+ public static boolean hasOreDictionaryEntry(String name)
+ {
+ return !OreDictionary.getOres(name).isEmpty();
+ }
+
+ public static Item getOreDictItem(String name)
+ {
+ return OreDictionary.getOres(name).get(0).getItem();
+ }
+
+ public static Block getOreDictBlock(String name)
+ {
+ return Block.getBlockFromItem(OreDictionary.getOres(name).get(0).getItem());
+ }
+
+ public static ItemStack getOreDictItemStackWithSize(String name, int size)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=size;
+ return orecopy;
+ }
+
+ public static String getFirstOreDictName(ItemStack stack)
+ {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ if(arrayIDs.length>0)
+ {
+ return OreDictionary.getOreName(arrayIDs[0]);
+ }
+ return "";
+ }
+
+ public static ItemStack getThisModItemStack(String name)
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithSize(String name, int i) {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ ItemStack stack = ihlItemStackRegistry.get(name).copy();
+ stack.stackSize=i;
+ return stack;
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name),i);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name),i);
+ }
+ }
+
+ public static ItemStack getOtherModItemStackWithDamage(String modname, String name,int damage) {
+ if(GameRegistry.findItem(modname, name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem(modname, name),1,damage);
+ }
+ else if(GameRegistry.findBlock(modname, name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock(modname, name),1,damage);
+ }
+ }
+
+ public static Item getThisModItem(String name)
+ {
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return GameRegistry.findItem("ihl", name);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return Item.getItemFromBlock(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static FluidStack getFluidStackWithSize(String name, int i) {
+ if(FluidRegistry.isFluidRegistered(name))
+ {
+ return FluidRegistry.getFluidStack(name, i);
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such fluid: "+name);
+ }
+ }
+
+ public static Block getThisModBlock(String name)
+ {
+ if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such block in item registry: ihl:"+name);
+ }
+ else
+ {
+ return GameRegistry.findBlock("ihl", name);
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithDamage(String name,
+ int value)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ stack.setItemDamage(value);
+ return stack;
+ }
+
+ public static boolean adjustWireLength(ItemStack stack, int adjustBy)
+ {
+ int length = getWireLength(stack);
+ if(length<=0)
+ {
+ return true;
+ }
+ else
+ {
+ int newLength = Math.max(length+adjustBy,0);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),newLength);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),newLength);
+ if(newLength==0)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public static int getWireLength(ItemStack itemStack)
+ {
+ return itemStack.stackTagCompound.getInteger(((IWire)itemStack.getItem()).getTag());
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(String name, int i) {
+ if(getThisModItemStack(name)!=null)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ if(stack.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException("ihl:"+name + " is not an instance of IWire.");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(ItemStack stack1, int i) {
+ ItemStack stack = stack1.copy();
+ if(stack1.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException(stack1.getUnlocalizedName() + " is not an instance of IWire.");
+ }
+ }
+
+ public static boolean isItemsHaveSameOreDictionaryEntry(ItemStack is, ItemStack is1)
+ {
+ int[] odids1 = OreDictionary.getOreIDs(is);
+ int[] odids2 = OreDictionary.getOreIDs(is1);
+ if(odids1!=null && odids1.length>0 && odids2!=null && odids2.length>0)
+ {
+ for(int i1=0;i1<odids1.length;i1++)
+ {
+ for(int i2=0;i2<odids2.length;i2++)
+ {
+ if(!OreDictionary.getOreName(odids1[i1]).contains("Any") && odids1[i1]==odids2[i2])
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static List<ItemStack> getEntryListForOre(String name)
+ {
+ ArrayList<ItemStack> outputList = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> oreList = OreDictionary.getOres(name);
+ Iterator<ItemStack> oreListIterator = oreList.iterator();
+ while(oreListIterator.hasNext())
+ {
+ outputList.add(oreListIterator.next().copy());
+ }
+ return outputList;
+ }
+
+ public static ItemStack getItemStackIfExist(String name)
+ {
+ if(hasOreDictionaryEntry(name))
+ {
+ return getOreDictItemStack(name);
+ }
+ else
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+ }
+
+ public static FluidStack getFluidStackIfExist(String string, int meltingFluidAmount)
+ {
+ if(FluidRegistry.isFluidRegistered(string))
+ {
+ return getFluidStackWithSize(string,meltingFluidAmount);
+ }
+ return null;
+ }
+
+ public static boolean addItemStackToInventory(EntityPlayer player, ItemStack stack)
+ {
+ ItemStack[] inv = player.inventory.mainInventory;
+ for (int i=0;i<=35;i++)
+ {
+ if(inv[i]!=null)
+ {
+ if(inv[i].getItem()==stack.getItem())
+ {
+ if(inv[i].getItemDamage()==stack.getItemDamage() && inv[i].stackSize<inv[i].getMaxStackSize())
+ {
+ inv[i].stackSize+=stack.stackSize;
+ if(inv[i].stackSize>inv[i].getMaxStackSize())
+ {
+ stack.stackSize=inv[i].stackSize-inv[i].getMaxStackSize();
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ inv[i]=stack;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static FluidStack getFluidStackWithSizeChemicallyPure(String name, int amount)
+ {
+ FluidStack fstack = getFluidStackWithSize(name, amount);
+ fstack.tag=new NBTTagCompound();
+ fstack.tag.setBoolean("chemicallyPure", true);
+ return fstack;
+ }
+
+ public static void removeItemStackFromOreDictionaryEntry(String orename, ItemStack itemStack)
+ {
+ ArrayList<ItemStack> orelist = OreDictionary.getOres(orename);
+ Iterator<ItemStack> oreListIterator = orelist.iterator();
+ ItemStack odstack = null;
+ while(oreListIterator.hasNext())
+ {
+ odstack = oreListIterator.next();
+ if(odstack.getItem()==itemStack.getItem())
+ {
+ break;
+ }
+ else
+ {
+ odstack = null;
+ }
+ }
+ if(odstack != null)
+ {
+ orelist.remove(odstack);
+ IHLMod.log.debug("Stack "+odstack.getDisplayName()+" ("+odstack.toString()+")"+" removed from ore entry '"+orename+"'");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, int stacksize, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStackWithSize(input,stacksize), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input,stacksize), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(String input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(getThisModItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2CentrifugeRecipe(String input, ItemStack output, ItemStack output2)
+ {
+ if(Recipes.centrifuge.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("minHeat", 2000);
+ Recipes.centrifuge.addRecipe(new RecipeInputOreDict(input), tag, new ItemStack[] {output,output2});
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 centrifuge recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void damageItemViaNBTTag(ItemStack stack, int amount)
+ {
+ NBTTagCompound gtTagCompound;
+ if(stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+ int damage = 0;
+ int maxDamage = 0;
+ if(gtTagCompound.hasKey("MaxDamage"))
+ {
+ maxDamage = gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+
+ if(gtTagCompound.hasKey("Damage"))
+ {
+ damage = gtTagCompound.getInteger("Damage");
+ }
+ if(damage<maxDamage-amount)
+ {
+ damage+=amount;
+ gtTagCompound.setInteger("Damage",damage);
+ gtTagCompound.setInteger("MaxDamage",maxDamage);
+ stack.stackTagCompound.setTag("GT.ToolStats", gtTagCompound);
+ }
+ else
+ {
+ stack.stackSize--;
+ }
+ }
+
+ public static int getDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("Damage"))
+ {
+ return gtTagCompound.getInteger("Damage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static int getMaxDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("MaxDamage"))
+ {
+ return gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, ItemStack stack2, boolean useOreDictionary)
+ {
+ if(useOreDictionary && isItemsHaveSameOreDictionaryEntry(stack1,stack2))
+ {
+ return true;
+ }
+ else
+ {
+ if(stack1.getItemDamage()==OreDictionary.WILDCARD_VALUE || stack2.getItemDamage()==OreDictionary.WILDCARD_VALUE)
+ {
+ return stack1.getItem()==stack2.getItem();
+ }
+ else
+ {
+ return stack1.getItem()==stack2.getItem() && stack1.getItemDamage()==stack2.getItemDamage();
+ }
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, String stack2name, boolean useOreDictionary)
+ {
+ return isItemStacksIsEqual(stack1, getThisModItemStack(stack2name),useOreDictionary);
+ }
+
+ public static boolean isIRecipeInputMatchesWithAmount(IRecipeInput input, ItemStack stack)
+ {
+ if(input.matches(stack))
+ {
+ if(stack.getItem() instanceof IWire)
+ {
+ return getWireLength(stack)>=input.getAmount();
+ }
+ else
+ {
+ return stack.stackSize>=input.getAmount();
+ }
+ }
+ return false;
+ }
+
+ public static boolean reduceItemStackAmountUsingIRecipeInput(IRecipeInput input, ItemStack stack) {
+ if(stack.getItem() instanceof IWire)
+ {
+ return adjustWireLength(stack,-input.getAmount());
+ }
+ else
+ {
+ stack.stackSize-=input.getAmount();
+ return stack.stackSize<=0;
+ }
+ }
+
+ public static String getFirstOreDictNameExcludingTagAny(ItemStack stack) {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ for(int i=0;i<arrayIDs.length;i++)
+ {
+ if(!OreDictionary.getOreName(arrayIDs[i]).contains("Any"))
+ {
+ return OreDictionary.getOreName(arrayIDs[i]);
+ }
+ }
+ return "";
+ }
+
+ public static void handleFluidSlotsBehaviour(InvSlotConsumableLiquidIHL fillInputSlot, InvSlotConsumableLiquidIHL drainInputSlot, InvSlotOutput emptyFluidItemsSlot, IFluidTank fluidTank)
+ {
+ MutableObject output;
+ if (drainInputSlot!=null && !drainInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if(fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, true),false)>0 && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, false),true);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ if (fillInputSlot!=null && !fillInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if (fillInputSlot.transferFromTank(fluidTank, output, true) && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fillInputSlot.transferFromTank(fluidTank, output, false);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ }
+ public static double[] tracePlayerView(EntityPlayer entityplayer)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+ if (entityplayer.worldObj!=null && entityplayer.worldObj.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+ double z = entityplayer.posZ;
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 1.0D;
+ return new double[] {x+f7 * d3, y+f6 * d3, z+f9 * d3};
+ }
+
+ public static MovingObjectPosition returnMOPFromPlayer(EntityPlayer entityplayer, World world)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+
+ if (world.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+
+ double z = entityplayer.posZ;
+ Vec3 vec3d = Vec3.createVectorHelper(x, y, z);
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 5.0D;
+ Vec3 vec3d1 = vec3d.addVector(f7 * d3, f6 * d3, f9 * d3);
+ MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3d, vec3d1, true);
+
+ if (movingobjectposition == null)
+ {
+ return null;
+ }
+
+ if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
+ {
+ return movingobjectposition;
+ }
+ return null;
+ }
+
+ public static short getFacingFromPlayerView(EntityLivingBase player, boolean ignoreSneaking)
+ {
+ int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3;
+ int var7 = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
+ {
+ if(var6==1)
+ {
+ return 1;
+ }
+ else if(var6==3)
+ {
+ return 0;
+ }
+ else
+ {
+ if(player.isSneaking() && !ignoreSneaking)
+ {
+ switch(var7)
+ {
+ case 0:
+ return 3;
+ case 1:
+ return 4;
+ case 2:
+ return 2;
+ case 3:
+ return 5;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch(var7)
+ {
+ case 0:
+ return 2;
+ case 1:
+ return 5;
+ case 2:
+ return 3;
+ case 3:
+ return 4;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ return 3;
+ }
+
+ public static int getChainID(ItemStack itemStack)
+ {
+ if(itemStack!=null && itemStack.stackTagCompound!=null && itemStack.stackTagCompound.hasKey("chainUID"))
+ {
+ return itemStack.stackTagCompound.getInteger("chainUID");
+ }
+ return -1;
+ }
+
+ public static List<ItemStack> convertRecipeInputToItemStackList(List<IRecipeInput> input)
+ {
+ Iterator<IRecipeInput> irii=input.iterator();
+ List<ItemStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInput iri = irii.next();
+ ItemStack stack = iri.getInputs().get(0);
+ stack.stackSize=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static List<FluidStack> convertRecipeInputToFluidStackList(List<IRecipeInputFluid> input) {
+ Iterator<IRecipeInputFluid> irii=input.iterator();
+ List<FluidStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInputFluid iri = irii.next();
+ FluidStack stack = iri.getInputs().get(0);
+ stack.amount=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static int[] decodeXYZ(long longNumber)
+ {
+ return new int[] {(int) ((longNumber>>30) & 0xfff)-256,(int) ((longNumber>>15) & 0xfff)-256,(int) (longNumber & 0xfff)-256};
+ }
+
+ public static long encodeXYZ(int x,int y,int z)
+ {
+ return (x+256L)<<30|((y+256L)<<15)|(z+256L);
+ }
+
+ public static int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ public static long getXYZHash(int x,int y,int z)
+ {
+ return ((x&0x1FFFFF)<<42)|((y&0x1FFFFF)<<21)|(z&0x1FFFFF);
+ }
+
+ public static String trim(String str)
+ {
+ int len = str.length();
+ int start;
+ char c;
+ for (start = 0; start < len; ++start)
+ {
+ c = str.charAt(start);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ int end;
+ for (end = len - 1; end >= start; --end)
+ {
+ c = str.charAt(end);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ return start <= 0 && end >= len - 1 ? str : str.substring(start, end + 1);
+ }
+
+ public static int getAmountOf(ItemStack is)
+ {
+ if(is.getItem() instanceof IWire)
+ {
+ return getWireLength(is);
+ }
+ else
+ {
+ return is.stackSize;
+ }
+ }
+
+ public static ItemStack getWireItemStackCopyWithLengthMultiplied(ItemStack stack, int multiplier)
+ {
+ ItemStack out = stack.copy();
+ adjustWireLength(out,getWireLength(stack)*(multiplier-1));
+ return out;
+ }
+
+ public static ItemStack getUninsulatedWire(String material, int length, int transverseSection) {
+ ItemStack is = getThisModItemStack("copperWire");
+ is.stackTagCompound=new NBTTagCompound();
+ is.stackTagCompound.setBoolean("firstConnection",false);
+ is.stackTagCompound.setInteger("fullLength", length);
+ is.stackTagCompound.setInteger("length", length);
+ is.stackTagCompound.setBoolean("firstConnection", false);
+ is.stackTagCompound.setString("material", material);
+ is.stackTagCompound.setInteger("transverseSection",transverseSection);
+ is.stackTagCompound.setInteger("resistance", ElectricConductor.getResistivity(material)*100/transverseSection);
+ return is;
+ }
+
+ public static ItemStack getInsulatedWire(String material, int length, int transverseSection, String insulationMaterial, int insulationThickness) {
+ ItemStack is = getUninsulatedWire(material, length, transverseSection);
+ is.stackTagCompound.setString("insulationMaterial",insulationMaterial);
+ is.stackTagCompound.setInteger("insulationThickness",insulationThickness);
+ is.stackTagCompound.setInteger("maxVoltage", getInsulationMaxVoltage(insulationMaterial, insulationThickness));
+ return is;
+ }
+
+ public static int getInsulationMaxVoltage(String insulationMaterial, int insulationThickness)
+ {
+ return Math.min(Insulation.getMaxVoltagePermm(insulationMaterial)*insulationThickness/10,Insulation.getMaxVoltageCap(insulationMaterial));
+ }
+
+ public static ItemStack getItemStackWithTag(String unLocalizedName, String tag, int tagValue) {
+ ItemStack stack = IHLUtils.getThisModItemStack(unLocalizedName);
+ if(stack.stackTagCompound==null)
+ {
+ stack.stackTagCompound=new NBTTagCompound();
+ }
+ stack.stackTagCompound.setInteger(tag, tagValue);
+ return stack;
+ }
+
+ public static boolean isSegmentInsideAABB(AxisAlignedBB collisionBox, double posX, double posY, double posZ, double posX2, double posY2, double posZ2)
+ {
+ if(isInsideofBoundingBox(collisionBox,(float)posX,(float)posY,(float)posZ)||isInsideofBoundingBox(collisionBox,(float)posX2,(float)posY2,(float)posZ2))
+ {
+ return true;
+ }
+ else
+ {
+ double minX=Math.min(posX, posX2);
+ double maxX=Math.max(posX, posX2);
+ double minY=Math.min(posY, posY2);
+ double maxY=Math.max(posY, posY2);
+ double minZ=Math.min(posZ, posZ2);
+ double maxZ=Math.max(posZ, posZ2);
+ return !(maxX<collisionBox.minX || minX>collisionBox.maxX ||
+ maxY<collisionBox.minY || minY>collisionBox.maxY ||
+ maxZ<collisionBox.minZ || minZ>collisionBox.maxZ);
+ }
+ }
+
+ public static boolean isInsideofBoundingBox(AxisAlignedBB bb, float xi, float yi, float zi)
+ {
+ return bb.maxX>xi && bb.minX<xi && bb.maxY>yi && bb.minY<yi && bb.maxZ>zi && bb.minZ<zi;
+ }
+
+ public static boolean isBlockCanBeReplaced(World world, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if(block==Blocks.air || block.isAir(world, x, y, z) || block == Blocks.vine || block == Blocks.tallgrass || block == Blocks.deadbush)
+ {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f1ce250b400151e8fcdb87a141443 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f1ce250b400151e8fcdb87a141443
new file mode 100644
index 0000000..5072a08
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f1ce250b400151e8fcdb87a141443
@@ -0,0 +1,564 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public Entity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=32;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.05D-this.posX*0.1D;
+ this.motionY=(y0+y2)*0.05D-this.posY*0.1D;
+ this.motionZ=(z0+z2)*0.05D-this.posZ*0.1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.01D;
+ this.motionY+=(y2-this.posY)*0.01D;
+ this.motionZ+=(z2-this.posZ)*0.01D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.01D;
+ this.motionY+=(y0-this.posY)*0.01D;
+ this.motionZ+=(z0-this.posZ)*0.01D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ this.renderPosX=(float) this.prevPosX;
+ this.renderPosY=(float) this.prevPosY;
+ this.renderPosZ=(float) this.prevPosZ;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ TileEntity te = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId).getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/10184eb91baa00151263eb9882e2ad67 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/10184eb91baa00151263eb9882e2ad67
new file mode 100644
index 0000000..e5e9501
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/10184eb91baa00151263eb9882e2ad67
@@ -0,0 +1,86 @@
+package ihl.flexible_cable;
+
+import net.minecraft.client.particle.EntityFX;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.world.World;
+
+public class BlastEntityFX extends EntityFX {
+
+ public BlastEntityFX(World world, double x, double y, double z)
+ {
+ super(world, x, y, z);
+ this.renderDistanceWeight = 5.0D;
+ }
+
+ public BlastEntityFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, float par14)
+ {
+ super(par1World, par2, par4, par6, 0.0D, 0.0D, 0.0D);
+ this.motionX *= 0.10000000149011612D;
+ this.motionY *= 0.10000000149011612D;
+ this.motionZ *= 0.10000000149011612D;
+ this.motionX += par8;
+ this.motionY += par10;
+ this.motionZ += par12;
+ this.particleScale *= par14;
+ this.particleMaxAge = 3;
+ this.noClip = false;
+ this.renderDistanceWeight = 6.0D;
+ }
+
+ @Override
+ public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7)
+ {
+ float var8 = this.particleTextureIndexX / 2.0F;
+ float var9 = var8 + 0.5f;
+ float var10 = this.particleTextureIndexY / 2.0F;
+ float var11 = var10 + 0.5f;
+ float var12 = 0.1F * this.particleScale;
+
+ float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * par2 - interpPosX);
+ float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * par2 - interpPosY);
+ float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ);
+ par1Tessellator.addVertexWithUV(var13 - par3 * var12 - par6 * var12, var14 - par4 * var12, var15 - par5 * var12 - par7 * var12, var9, var11);
+ par1Tessellator.addVertexWithUV(var13 - par3 * var12 + par6 * var12, var14 + par4 * var12, var15 - par5 * var12 + par7 * var12, var9, var10);
+ par1Tessellator.addVertexWithUV(var13 + par3 * var12 + par6 * var12, var14 + par4 * var12, var15 + par5 * var12 + par7 * var12, var8, var10);
+ par1Tessellator.addVertexWithUV(var13 + par3 * var12 - par6 * var12, var14 - par4 * var12, var15 + par5 * var12 - par7 * var12, var8, var11);
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ this.prevPosX = this.posX;
+ this.prevPosY = this.posY;
+ this.prevPosZ = this.posZ;
+
+ if (this.particleAge++ >= this.particleMaxAge)
+ {
+ this.setDead();
+ }
+ this.setParticleTextureIndex(this.particleAge * 3 / this.particleMaxAge);
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+
+ if (this.posY == this.prevPosY)
+ {
+ this.motionX *= 1.1D;
+ this.motionZ *= 1.1D;
+ }
+
+ this.motionX *= 0.95D;
+ this.motionY *= 0.95D;
+ this.motionZ *= 0.95D;
+
+ if (this.onGround)
+ {
+ this.motionX *= 0.7D;
+ this.motionZ *= 0.7D;
+ }
+ }
+
+ @Override
+ public void setParticleTextureIndex(int par1)
+ {
+ this.particleTextureIndexX = par1 % 2;
+ this.particleTextureIndexY = par1 / 2;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0339bee53a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0339bee53a3001516ebc455efc032e5
new file mode 100644
index 0000000..152efac
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0339bee53a3001516ebc455efc032e5
@@ -0,0 +1,125 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ URL gburl = IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml");
+ System.out.println(gburl.getAuthority());
+ System.out.println(gburl.getFile());
+ System.out.println(gburl.getHost());
+ System.out.println(gburl.getPath());
+ System.out.println(gburl.getQuery());
+ System.out.println(gburl.getRef());
+ System.out.println(gburl.toExternalForm());
+ System.out.println(gburl.toURI().getPath());
+// File fileFrom = new File(IHLMod.proxy.getMinecraftDir(),"/assets/ihl/config/ihl-guidebook.xml");
+ //File fileFrom = new File(.getFile());
+ //Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ca/e006f2ab27bc001514d3de1c0800049b b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ca/e006f2ab27bc001514d3de1c0800049b
new file mode 100644
index 0000000..be4cbb7
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ca/e006f2ab27bc001514d3de1c0800049b
@@ -0,0 +1,269 @@
+package ihl.flexible_cable;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraftforge.common.MinecraftForge;
+import ic2.api.energy.event.EnergyTileLoadEvent;
+import ic2.api.energy.event.EnergyTileUnloadEvent;
+import ic2.core.IC2;
+import ihl.IHLMod;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.utils.IHLUtils;
+
+public class SubAnchorEnergyNetNode implements IEnergyNetNode{
+
+ private AnchorTileEntity base;
+ private short facing;
+ private int gridID=-1;
+ private Set<NBTTagCompound> cableList = new HashSet();
+
+ public SubAnchorEnergyNetNode(AnchorTileEntity base1, short facing1)
+ {
+ base=base1;
+ facing=facing1;
+ }
+
+ @Override
+ public double[] getPortPos(EntityLivingBase player)
+ {
+ double d=0.5D;
+ double f=-0.1D;
+ switch(facing)
+ {
+ case 0:
+ return new double[]{
+ (base.xCoord+d),
+ (base.yCoord+1D-f),
+ (base.zCoord+0.5D)};
+ case 1:
+ return new double[]{
+ (base.xCoord+d),
+ (base.yCoord+f),
+ (base.zCoord+0.5D)};
+ case 2:
+ return new double[]{
+ (base.xCoord+0.5D),
+ (base.yCoord+d),
+ (base.zCoord+1D-f)};
+ case 3:
+ return new double[]{
+ (base.xCoord+0.5D),
+ (base.yCoord+d),
+ (base.zCoord+f)};
+ case 4:
+ return new double[]{
+ (base.xCoord+1D-f),
+ (base.yCoord+d),
+ (base.zCoord+0.5D)};
+ case 5:
+ return new double[]{
+ (base.xCoord+f),
+ (base.yCoord+d),
+ (base.zCoord+0.5D)};
+ default:
+ return new double[]{
+ (base.xCoord+f),
+ (base.yCoord+d),
+ (base.zCoord+0.5D)};
+ }
+ }
+
+ @Override
+ public IHLGrid getGrid()
+ {
+ if(gridID!=-1)
+ {
+ return IHLMod.enet.getGrid(gridID);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public int getGridID()
+ {
+ return gridID;
+ }
+
+ @Override
+ public void setGrid(int newgridID)
+ {
+ if(IC2.platform.isSimulating()&& base.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(base));
+ base.addedToEnergyNet = false;
+ }
+ if(newgridID!=-1)
+ {
+ this.gridID=newgridID;
+ IHLMod.enet.getGrid(newgridID).add(this);
+ }
+ else
+ {
+ this.gridID=-1;
+ }
+ if (IC2.platform.isSimulating()&& !base.addedToEnergyNet)
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(base));
+ base.addedToEnergyNet = true;
+ }
+ }
+
+ @Override
+ public double getMaxAllowableVoltage()
+ {
+ return 64000d;
+ }
+
+ @Override
+ public boolean addCable(NBTTagCompound cable)
+ {
+ base.hasCableOnSide[this.facing]=true;
+ return this.cableList.add(cable);
+ }
+
+ @Override
+ public Set<NBTTagCompound> getCableList() {
+ return cableList;
+ }
+
+ @Override
+ public void removeAttachedChains()
+ {
+ Iterator<NBTTagCompound> cli = this.getCableList().iterator();
+ while(cli.hasNext())
+ {
+ NBTTagCompound c = cli.next();
+ IHLMod.enet.removeCableEntities(c);
+ ItemStack is = IHLUtils.getThisModItemStack("copperWire");
+ is.stackTagCompound=c;
+ EntityItem eitem = new EntityItem(base.getWorldObj(), base.xCoord+0.5D, base.yCoord+0.5D, base.zCoord+0.5D, is);
+ base.getWorldObj().spawnEntityInWorld(eitem);
+ }
+ if(gridID!=-1)
+ {
+ IHLMod.enet.splitGrids(gridID, this);
+ }
+ this.getCableList().clear();
+ base.hasCableOnSide[this.facing]=false;
+ }
+
+ public void onLoaded()
+ {
+ if(gridID!=-1)
+ {
+ IHLGrid grid = IHLMod.enet.getGrid(gridID);
+ grid.add(this);
+ }
+ }
+
+ public NBTTagCompound writeToNBT()
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ NBTTagList cableNBTList = new NBTTagList();
+ for(NBTTagCompound cable:this.cableList)
+ {
+ cableNBTList.appendTag(cable);
+ }
+ nbt.setTag("cableList", cableNBTList);
+ nbt.setInteger("gridID", this.gridID);
+ return nbt;
+ }
+
+ public void readFromNBT(NBTTagCompound nbt) {
+ NBTTagList cableNBTList=nbt.getTagList("cableList", 10);
+ for(int i=0;i<cableNBTList.tagCount();i++)
+ {
+ this.cableList.add(cableNBTList.getCompoundTagAt(i));
+ }
+ this.gridID=nbt.getInteger("gridID");
+ if(this.gridID!=-1)
+ {
+ base.hasCableOnSide[this.facing]=true;
+ }
+ }
+
+ public double getOfferedEnergy()
+ {
+ if(this.gridID==-1)
+ {
+ return 0D;
+ }
+ else
+ {
+ return Math.max(this.getGrid().energy, 0D);
+ }
+ }
+
+ public double getDemandedEnergy()
+ {
+ if(this.gridID==-1 || this.getGrid().energy>1d)
+ {
+ return 0D;
+ }
+ else
+ {
+ return this.getGrid().getDemandedEnergy();
+ }
+ }
+
+ public double drawEnergy(double amount)
+ {
+ if(this.gridID==-1)
+ {
+ return 0D;
+ }
+ else
+ {
+ double dEnergy = Math.min(this.getGrid().energy, amount);
+ this.getGrid().energy-=dEnergy;
+ return dEnergy;
+ }
+ }
+
+ public double getVoltage()
+ {
+ if(this.gridID==-1)
+ {
+ return 0D;
+ }
+ else
+ {
+ return this.getGrid().getSinkVoltage(this);
+ }
+ }
+
+ @Override
+ public void remove(NBTTagCompound cable)
+ {
+ this.cableList.remove(cable);
+ if(this.cableList.isEmpty())
+ {
+ base.hasCableOnSide[this.facing]=false;
+ }
+ }
+
+ public double injectEnergy(double amount)
+ {
+ if(this.gridID==-1)
+ {
+ return amount;
+ }
+ else
+ {
+ this.getGrid().injectEnergy(amount, 400d, this);
+ return 0d;
+ }
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b0083d60a7ca001510f7df4278c93a7e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b0083d60a7ca001510f7df4278c93a7e
new file mode 100644
index 0000000..b15e16c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b0083d60a7ca001510f7df4278c93a7e
@@ -0,0 +1,935 @@
+package ihl.utils;
+
+import ic2.api.recipe.IRecipeInput;
+import ic2.api.recipe.RecipeInputItemStack;
+import ic2.api.recipe.RecipeInputOreDict;
+import ic2.api.recipe.Recipes;
+import ic2.core.BasicMachineRecipeManager;
+import ic2.core.block.invslot.InvSlotOutput;
+import ihl.IHLMod;
+import ihl.interfaces.IWire;
+import ihl.metallurgy.constants.*;
+import ihl.processing.invslots.InvSlotConsumableLiquidIHL;
+import ihl.recipes.IRecipeInputFluid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class IHLUtils
+{
+ private static Map<String,ItemStack> ihlItemStackRegistry = new HashMap();
+
+ public static void registerLocally(String name, ItemStack stack)
+ {
+ ihlItemStackRegistry.put(name, stack);
+ }
+
+ public static ItemStack getOreDictItemStack(String name)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=1;
+ return orecopy;
+ }
+
+ public static boolean hasOreDictionaryEntry(String name)
+ {
+ return !OreDictionary.getOres(name).isEmpty();
+ }
+
+ public static Item getOreDictItem(String name)
+ {
+ return OreDictionary.getOres(name).get(0).getItem();
+ }
+
+ public static Block getOreDictBlock(String name)
+ {
+ return Block.getBlockFromItem(OreDictionary.getOres(name).get(0).getItem());
+ }
+
+ public static ItemStack getOreDictItemStackWithSize(String name, int size)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=size;
+ return orecopy;
+ }
+
+ public static String getFirstOreDictName(ItemStack stack)
+ {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ if(arrayIDs.length>0)
+ {
+ return OreDictionary.getOreName(arrayIDs[0]);
+ }
+ return "";
+ }
+
+ public static ItemStack getThisModItemStack(String name)
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithSize(String name, int i) {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ ItemStack stack = ihlItemStackRegistry.get(name).copy();
+ stack.stackSize=i;
+ return stack;
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name),i);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name),i);
+ }
+ }
+
+ public static ItemStack getOtherModItemStackWithDamage(String modname, String name,int damage) {
+ if(GameRegistry.findItem(modname, name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem(modname, name),1,damage);
+ }
+ else if(GameRegistry.findBlock(modname, name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock(modname, name),1,damage);
+ }
+ }
+
+ public static Item getThisModItem(String name)
+ {
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return GameRegistry.findItem("ihl", name);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return Item.getItemFromBlock(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static FluidStack getFluidStackWithSize(String name, int i) {
+ if(FluidRegistry.isFluidRegistered(name))
+ {
+ return FluidRegistry.getFluidStack(name, i);
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such fluid: "+name);
+ }
+ }
+
+ public static Block getThisModBlock(String name)
+ {
+ if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such block in item registry: ihl:"+name);
+ }
+ else
+ {
+ return GameRegistry.findBlock("ihl", name);
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithDamage(String name,
+ int value)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ stack.setItemDamage(value);
+ return stack;
+ }
+
+ public static boolean adjustWireLength(ItemStack stack, int adjustBy)
+ {
+ int length = getWireLength(stack);
+ if(length<=0)
+ {
+ return true;
+ }
+ else
+ {
+ int newLength = Math.max(length+adjustBy,0);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),newLength);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),newLength);
+ if(newLength==0)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public static int getWireLength(ItemStack itemStack)
+ {
+ return itemStack.stackTagCompound.getInteger(((IWire)itemStack.getItem()).getTag());
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(String name, int i) {
+ if(getThisModItemStack(name)!=null)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ if(stack.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException("ihl:"+name + " is not an instance of IWire.");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(ItemStack stack1, int i) {
+ ItemStack stack = stack1.copy();
+ if(stack1.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException(stack1.getUnlocalizedName() + " is not an instance of IWire.");
+ }
+ }
+
+ public static boolean isItemsHaveSameOreDictionaryEntry(ItemStack is, ItemStack is1)
+ {
+ int[] odids1 = OreDictionary.getOreIDs(is);
+ int[] odids2 = OreDictionary.getOreIDs(is1);
+ if(odids1!=null && odids1.length>0 && odids2!=null && odids2.length>0)
+ {
+ for(int i1=0;i1<odids1.length;i1++)
+ {
+ for(int i2=0;i2<odids2.length;i2++)
+ {
+ if(!OreDictionary.getOreName(odids1[i1]).contains("Any") && odids1[i1]==odids2[i2])
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static List<ItemStack> getEntryListForOre(String name)
+ {
+ ArrayList<ItemStack> outputList = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> oreList = OreDictionary.getOres(name);
+ Iterator<ItemStack> oreListIterator = oreList.iterator();
+ while(oreListIterator.hasNext())
+ {
+ outputList.add(oreListIterator.next().copy());
+ }
+ return outputList;
+ }
+
+ public static ItemStack getItemStackIfExist(String name)
+ {
+ if(hasOreDictionaryEntry(name))
+ {
+ return getOreDictItemStack(name);
+ }
+ else
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+ }
+
+ public static FluidStack getFluidStackIfExist(String string, int meltingFluidAmount)
+ {
+ if(FluidRegistry.isFluidRegistered(string))
+ {
+ return getFluidStackWithSize(string,meltingFluidAmount);
+ }
+ return null;
+ }
+
+ public static boolean addItemStackToInventory(EntityPlayer player, ItemStack stack)
+ {
+ ItemStack[] inv = player.inventory.mainInventory;
+ for (int i=0;i<=35;i++)
+ {
+ if(inv[i]!=null)
+ {
+ if(inv[i].getItem()==stack.getItem())
+ {
+ if(inv[i].getItemDamage()==stack.getItemDamage() && inv[i].stackSize<inv[i].getMaxStackSize())
+ {
+ inv[i].stackSize+=stack.stackSize;
+ if(inv[i].stackSize>inv[i].getMaxStackSize())
+ {
+ stack.stackSize=inv[i].stackSize-inv[i].getMaxStackSize();
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ inv[i]=stack;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static FluidStack getFluidStackWithSizeChemicallyPure(String name, int amount)
+ {
+ FluidStack fstack = getFluidStackWithSize(name, amount);
+ fstack.tag=new NBTTagCompound();
+ fstack.tag.setBoolean("chemicallyPure", true);
+ return fstack;
+ }
+
+ public static void removeItemStackFromOreDictionaryEntry(String orename, ItemStack itemStack)
+ {
+ ArrayList<ItemStack> orelist = OreDictionary.getOres(orename);
+ Iterator<ItemStack> oreListIterator = orelist.iterator();
+ ItemStack odstack = null;
+ while(oreListIterator.hasNext())
+ {
+ odstack = oreListIterator.next();
+ if(odstack.getItem()==itemStack.getItem())
+ {
+ break;
+ }
+ else
+ {
+ odstack = null;
+ }
+ }
+ if(odstack != null)
+ {
+ orelist.remove(odstack);
+ IHLMod.log.debug("Stack "+odstack.getDisplayName()+" ("+odstack.toString()+")"+" removed from ore entry '"+orename+"'");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ ((BasicMachineRecipeManager)Recipes.macerator).addRecipe(new RecipeInputOreDict(input), tag, true, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, int stacksize, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStackWithSize(input,stacksize), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input,stacksize), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(String input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(getThisModItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2CentrifugeRecipe(String input, ItemStack output, ItemStack output2)
+ {
+ if(Recipes.centrifuge.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("minHeat", 2000);
+ Recipes.centrifuge.addRecipe(new RecipeInputOreDict(input), tag, new ItemStack[] {output,output2});
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 centrifuge recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void damageItemViaNBTTag(ItemStack stack, int amount)
+ {
+ NBTTagCompound gtTagCompound;
+ if(stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+ int damage = 0;
+ int maxDamage = 0;
+ if(gtTagCompound.hasKey("MaxDamage"))
+ {
+ maxDamage = gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+
+ if(gtTagCompound.hasKey("Damage"))
+ {
+ damage = gtTagCompound.getInteger("Damage");
+ }
+ if(damage<maxDamage-amount)
+ {
+ damage+=amount;
+ gtTagCompound.setInteger("Damage",damage);
+ gtTagCompound.setInteger("MaxDamage",maxDamage);
+ stack.stackTagCompound.setTag("GT.ToolStats", gtTagCompound);
+ }
+ else
+ {
+ stack.stackSize--;
+ }
+ }
+
+ public static int getDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("Damage"))
+ {
+ return gtTagCompound.getInteger("Damage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static int getMaxDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("MaxDamage"))
+ {
+ return gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, ItemStack stack2, boolean useOreDictionary)
+ {
+ if(useOreDictionary && isItemsHaveSameOreDictionaryEntry(stack1,stack2))
+ {
+ return true;
+ }
+ else
+ {
+ if(stack1.getItemDamage()==OreDictionary.WILDCARD_VALUE || stack2.getItemDamage()==OreDictionary.WILDCARD_VALUE)
+ {
+ return stack1.getItem()==stack2.getItem();
+ }
+ else
+ {
+ return stack1.getItem()==stack2.getItem() && stack1.getItemDamage()==stack2.getItemDamage();
+ }
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, String stack2name, boolean useOreDictionary)
+ {
+ return isItemStacksIsEqual(stack1, getThisModItemStack(stack2name),useOreDictionary);
+ }
+
+ public static boolean isIRecipeInputMatchesWithAmount(IRecipeInput input, ItemStack stack)
+ {
+ if(input.matches(stack))
+ {
+ if(stack.getItem() instanceof IWire)
+ {
+ return getWireLength(stack)>=input.getAmount();
+ }
+ else
+ {
+ return stack.stackSize>=input.getAmount();
+ }
+ }
+ return false;
+ }
+
+ public static boolean reduceItemStackAmountUsingIRecipeInput(IRecipeInput input, ItemStack stack) {
+ if(stack.getItem() instanceof IWire)
+ {
+ return adjustWireLength(stack,-input.getAmount());
+ }
+ else
+ {
+ stack.stackSize-=input.getAmount();
+ return stack.stackSize<=0;
+ }
+ }
+
+ public static String getFirstOreDictNameExcludingTagAny(ItemStack stack) {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ for(int i=0;i<arrayIDs.length;i++)
+ {
+ if(!OreDictionary.getOreName(arrayIDs[i]).contains("Any"))
+ {
+ return OreDictionary.getOreName(arrayIDs[i]);
+ }
+ }
+ return "";
+ }
+
+ public static void handleFluidSlotsBehaviour(InvSlotConsumableLiquidIHL fillInputSlot, InvSlotConsumableLiquidIHL drainInputSlot, InvSlotOutput emptyFluidItemsSlot, IFluidTank fluidTank)
+ {
+ MutableObject output;
+ if (drainInputSlot!=null && !drainInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if(fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, true),false)>0 && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, false),true);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ if (fillInputSlot!=null && !fillInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if (fillInputSlot.transferFromTank(fluidTank, output, true) && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fillInputSlot.transferFromTank(fluidTank, output, false);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ }
+ public static double[] tracePlayerView(EntityPlayer entityplayer)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+ if (entityplayer.worldObj!=null && entityplayer.worldObj.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+ double z = entityplayer.posZ;
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 1.0D;
+ return new double[] {x+f7 * d3, y+f6 * d3, z+f9 * d3};
+ }
+
+ public static MovingObjectPosition returnMOPFromPlayer(EntityPlayer entityplayer, World world)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+
+ if (world.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+
+ double z = entityplayer.posZ;
+ Vec3 vec3d = Vec3.createVectorHelper(x, y, z);
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 5.0D;
+ Vec3 vec3d1 = vec3d.addVector(f7 * d3, f6 * d3, f9 * d3);
+ MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3d, vec3d1, true);
+
+ if (movingobjectposition == null)
+ {
+ return null;
+ }
+
+ if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
+ {
+ return movingobjectposition;
+ }
+ return null;
+ }
+
+ public static short getFacingFromPlayerView(EntityLivingBase player, boolean ignoreSneaking)
+ {
+ int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3;
+ int var7 = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
+ {
+ if(var6==1)
+ {
+ return 1;
+ }
+ else if(var6==3)
+ {
+ return 0;
+ }
+ else
+ {
+ if(player.isSneaking() && !ignoreSneaking)
+ {
+ switch(var7)
+ {
+ case 0:
+ return 3;
+ case 1:
+ return 4;
+ case 2:
+ return 2;
+ case 3:
+ return 5;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch(var7)
+ {
+ case 0:
+ return 2;
+ case 1:
+ return 5;
+ case 2:
+ return 3;
+ case 3:
+ return 4;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ return 3;
+ }
+
+ public static int getChainID(ItemStack itemStack)
+ {
+ if(itemStack!=null && itemStack.stackTagCompound!=null && itemStack.stackTagCompound.hasKey("chainUID"))
+ {
+ return itemStack.stackTagCompound.getInteger("chainUID");
+ }
+ return -1;
+ }
+
+ public static List<ItemStack> convertRecipeInputToItemStackList(List<IRecipeInput> input)
+ {
+ Iterator<IRecipeInput> irii=input.iterator();
+ List<ItemStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInput iri = irii.next();
+ ItemStack stack = iri.getInputs().get(0);
+ stack.stackSize=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static List<FluidStack> convertRecipeInputToFluidStackList(List<IRecipeInputFluid> input) {
+ Iterator<IRecipeInputFluid> irii=input.iterator();
+ List<FluidStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInputFluid iri = irii.next();
+ FluidStack stack = iri.getInputs().get(0);
+ stack.amount=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static int[] decodeXYZ(long longNumber)
+ {
+ return new int[] {(int) ((longNumber>>30) & 0xfff)-256,(int) ((longNumber>>15) & 0xfff)-256,(int) (longNumber & 0xfff)-256};
+ }
+
+ public static long encodeXYZ(int x,int y,int z)
+ {
+ return (x+256L)<<30|((y+256L)<<15)|(z+256L);
+ }
+
+ public static int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ public static long getXYZHash(int x,int y,int z)
+ {
+ return ((x&0x1FFFFF)<<42)|((y&0x1FFFFF)<<21)|(z&0x1FFFFF);
+ }
+
+ public static String trim(String str)
+ {
+ int len = str.length();
+ int start;
+ char c;
+ for (start = 0; start < len; ++start)
+ {
+ c = str.charAt(start);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ int end;
+ for (end = len - 1; end >= start; --end)
+ {
+ c = str.charAt(end);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ return start <= 0 && end >= len - 1 ? str : str.substring(start, end + 1);
+ }
+
+ public static int getAmountOf(ItemStack is)
+ {
+ if(is.getItem() instanceof IWire)
+ {
+ return getWireLength(is);
+ }
+ else
+ {
+ return is.stackSize;
+ }
+ }
+
+ public static ItemStack getWireItemStackCopyWithLengthMultiplied(ItemStack stack, int multiplier)
+ {
+ ItemStack out = stack.copy();
+ adjustWireLength(out,getWireLength(stack)*(multiplier-1));
+ return out;
+ }
+
+ public static ItemStack getUninsulatedWire(String material, int length, int transverseSection) {
+ ItemStack is = getThisModItemStack("copperWire");
+ is.stackTagCompound=new NBTTagCompound();
+ is.stackTagCompound.setBoolean("firstConnection",false);
+ is.stackTagCompound.setInteger("fullLength", length);
+ is.stackTagCompound.setInteger("length", length);
+ is.stackTagCompound.setBoolean("firstConnection", false);
+ is.stackTagCompound.setString("material", material);
+ is.stackTagCompound.setInteger("transverseSection",transverseSection);
+ is.stackTagCompound.setInteger("resistance", ElectricConductor.getResistivity(material)*100/transverseSection);
+ return is;
+ }
+
+ public static ItemStack getInsulatedWire(String material, int length, int transverseSection, String insulationMaterial, int insulationThickness) {
+ ItemStack is = getUninsulatedWire(material, length, transverseSection);
+ is.stackTagCompound.setString("insulationMaterial",insulationMaterial);
+ is.stackTagCompound.setInteger("insulationThickness",insulationThickness);
+ is.stackTagCompound.setInteger("maxVoltage", getInsulationMaxVoltage(insulationMaterial, insulationThickness));
+ return is;
+ }
+
+ public static int getInsulationMaxVoltage(String insulationMaterial, int insulationThickness)
+ {
+ return Math.min(Insulation.getMaxVoltagePermm(insulationMaterial)*insulationThickness/10,Insulation.getMaxVoltageCap(insulationMaterial));
+ }
+
+ public static ItemStack getItemStackWithTag(String unLocalizedName, String tag, int tagValue) {
+ ItemStack stack = IHLUtils.getThisModItemStack(unLocalizedName);
+ if(stack.stackTagCompound==null)
+ {
+ stack.stackTagCompound=new NBTTagCompound();
+ }
+ stack.stackTagCompound.setInteger(tag, tagValue);
+ return stack;
+ }
+
+ public static boolean isSegmentInsideAABB(AxisAlignedBB collisionBox, double posX, double posY, double posZ, double posX2, double posY2, double posZ2)
+ {
+ if(isInsideofBoundingBox(collisionBox,(float)posX,(float)posY,(float)posZ)||isInsideofBoundingBox(collisionBox,(float)posX2,(float)posY2,(float)posZ2))
+ {
+ return true;
+ }
+ else
+ {
+ double minX=Math.min(posX, posX2);
+ double maxX=Math.max(posX, posX2);
+ double minY=Math.min(posY, posY2);
+ double maxY=Math.max(posY, posY2);
+ double minZ=Math.min(posZ, posZ2);
+ double maxZ=Math.max(posZ, posZ2);
+ return !(maxX<collisionBox.minX || minX>collisionBox.maxX ||
+ maxY<collisionBox.minY || minY>collisionBox.maxY ||
+ maxZ<collisionBox.minZ || minZ>collisionBox.maxZ);
+ }
+ }
+
+ public static boolean isInsideofBoundingBox(AxisAlignedBB bb, float xi, float yi, float zi)
+ {
+ return bb.maxX>xi && bb.minX<xi && bb.maxY>yi && bb.minY<yi && bb.maxZ>zi && bb.minZ<zi;
+ }
+
+ public static boolean isBlockCanBeReplaced(World world, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if(block==Blocks.air || block.isAir(world, x, y, z) || block == Blocks.vine || block == Blocks.tallgrass || block == Blocks.deadbush || block == Blocks.snow_layer || block == Blocks.snow)
+ {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/50f158a8d9e200151b3e8eaec212bcd4 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/50f158a8d9e200151b3e8eaec212bcd4
new file mode 100644
index 0000000..caa7daf
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/50f158a8d9e200151b3e8eaec212bcd4
@@ -0,0 +1,878 @@
+package ihl.items_blocks;
+
+import ic2.api.tile.IWrenchable;
+import ic2.core.IC2;
+import ic2.core.IHasGui;
+import ic2.core.item.tool.ItemToolCutter;
+import ic2.core.item.tool.ItemToolWrench;
+import ihl.IHLCreativeTab;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.collector.GlassBoxTileEntity;
+import ihl.datanet.RedstoneSignalConverterTileEntity;
+import ihl.flexible_cable.BatterySwitchUnitTileEntity;
+import ihl.flexible_cable.IronWorkbenchTileEntity;
+import ihl.flexible_cable.RectifierTransformerUnitTileEntity;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.IMultiPowerCableHolder;
+import ihl.processing.chemistry.ChemicalReactorTileEntity;
+import ihl.processing.chemistry.CryogenicDistillerTileEntity;
+import ihl.processing.chemistry.ElectrolysisBathTileEntity;
+import ihl.processing.chemistry.FluidizedBedReactorTileEntity;
+import ihl.processing.chemistry.FractionatorBottomTileEntity;
+import ihl.processing.chemistry.FractionatorCoverTileEntity;
+import ihl.processing.chemistry.FractionatorSectionTileEntity;
+import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity;
+import ihl.processing.chemistry.GoldChimneyKneeTileEntity;
+import ihl.processing.chemistry.LabElectrolyzerTileEntity;
+import ihl.processing.chemistry.LeadOvenTileEntity;
+import ihl.processing.chemistry.LoomTileEntity;
+import ihl.processing.chemistry.PaperMachineTileEntity;
+import ihl.processing.chemistry.PrecipitatorCondenserTileEntity;
+import ihl.processing.chemistry.RefluxCondenserTileEntity;
+import ihl.processing.metallurgy.AchesonFurnanceTileEntity;
+import ihl.processing.metallurgy.CoilerTileEntity;
+import ihl.processing.metallurgy.DetonationSprayingMachineTileEntity;
+import ihl.processing.metallurgy.ExtruderTileEntity;
+import ihl.processing.metallurgy.GasWeldingStationTileEntity;
+import ihl.processing.metallurgy.ImpregnatingMachineTileEntity;
+import ihl.processing.metallurgy.LathePart1TileEntity;
+import ihl.processing.metallurgy.LathePart2TileEntity;
+import ihl.processing.metallurgy.MuffleFurnanceTileEntity;
+import ihl.processing.metallurgy.RollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.RollingMachinePart2TileEntity;
+import ihl.processing.metallurgy.VacuumInductionMeltingFurnaceTileEntity;
+import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity;
+import ihl.processing.metallurgy.WireMillTileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity;
+import ihl.tunneling_shield.HydrotransportPulpRegeneratorTileEntity;
+import ihl.utils.IHLUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class MachineBaseBlock extends Block implements ITileEntityProvider{
+
+ MachineType type;
+ private static List<MachineBaseBlock> instances = new ArrayList();
+
+ @SideOnly(Side.CLIENT)
+ IIcon textureSide,
+ textureBack,
+ textureFrontMuffleFurnance,
+ textureTop,
+ textureTopAchesonFurnance,
+ textureTopGoldFurnace,
+ textureFrontGoldFurnace,
+ textureSideGoldFurnace,
+ textureFrontCryogenicDistiller,
+ textureTopCryogenicDistiller,
+ textureBackCryogenicDistiller,
+ textureFrontChemicalReactor,
+ textureLeftMachineCasing,
+ textureTopMachineCasing,
+ textureRightMachineCasing,
+ textureFrontMachineCasing,
+ textureFrontPaperMachine,
+ textureBackMachineCasing,
+ frequencyGeneratorBack,
+ frequencyGeneratorBottom,
+ frequencyGeneratorFront,
+ frequencyGeneratorLeft,
+ frequencyGeneratorRight,
+ frequencyGeneratorTop,
+ bronzeTubTop,
+ bronzeTubSide,
+ glassBoxTop,
+ glassBoxSide,
+ glassBoxBottom,
+ glassBoxInnerSide,
+ glassBoxInnerBottom,
+ vacuumInductionMeltingFurnaceFront,
+ vacuumInductionMeltingFurnaceBack,
+ vacuumInductionMeltingFurnaceLeft,
+ vacuumInductionMeltingFurnaceRight,
+ hydrotransportPulpRegeneratorFront,
+ hydrotransportPulpRegeneratorBack,
+ redstoneSignalConverterEmitterSide,
+ redstoneSignalConverterEmptySide,
+ redstoneSignalConverterSensorSide,
+ steel,
+ redPaint,
+ greenPaint,
+ rubberInsulatedCase,
+ powerPort;
+
+ public MachineBaseBlock(MachineType type1)
+ {
+ super(Material.iron);
+ this.type=type1;
+ this.setCreativeTab(IHLCreativeTab.tab);
+ this.setBlockName(type.unlocalizedName);
+ this.setHardness(2F);
+ this.setResistance(1F);
+ instances.add(this);
+ }
+
+
+ @Override
+ public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
+ {
+ if(IC2.platform.isSimulating())
+ {
+ TileEntity te = world.getTileEntity(x,y,z);
+ if(world.getBlock(x, y+1, z)==Blocks.fire)
+ {
+ if(te instanceof DetonationSprayingMachineTileEntity)
+ {
+ ((DetonationSprayingMachineTileEntity)te).operate();
+ world.setBlockToAir(x, y+1, z);
+ }
+ }
+ if(te instanceof RedstoneSignalConverterTileEntity)
+ {
+ RedstoneSignalConverterTileEntity rscte = (RedstoneSignalConverterTileEntity) te;
+ rscte.linksOrInventoryChanged=true;
+ }
+ }
+ }
+
+
+ @Override
+ public void onBlockPreDestroy(World world, int x, int y, int z, int meta)
+ {
+ if(!world.isRemote)
+ {
+ TileEntity te = world.getTileEntity(x, y, z);
+ if(te!=null)
+ {
+ if(te instanceof IEnergyNetNode)
+ {
+ IEnergyNetNode ate = (IEnergyNetNode) te;
+ ate.removeAttachedChains();
+ }
+ if(te instanceof IMultiPowerCableHolder)
+ {
+ IMultiPowerCableHolder ate = (IMultiPowerCableHolder) te;
+ ate.removeAttachedChains();
+ }
+ if(te instanceof IronWorkbenchTileEntity)
+ {
+ IronWorkbenchTileEntity iwb=(IronWorkbenchTileEntity) te;
+ iwb.dropContents();
+ }
+ else if(te instanceof IInventory)
+ {
+ IInventory inventory = (IInventory)te;
+ for(int i = 0; i< inventory.getSizeInventory();i++)
+ {
+ if(inventory.getStackInSlot(i)!=null)world.spawnEntityInWorld(new EntityItem(world, x, y+1, z, inventory.getStackInSlot(i)));
+ }
+ }
+ if(te instanceof RedstoneSignalConverterTileEntity)
+ {
+ RedstoneSignalConverterTileEntity rsce = (RedstoneSignalConverterTileEntity)te;
+ rsce.removeAttachedChains();
+ }
+ }
+ }
+ super.onBlockPreDestroy(world, x, y, z, meta);
+ }
+
+ @Override
+ public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity)
+ {
+ switch(this.type)
+ {
+ case BronzeTub:
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.1F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.1F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.9F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.9F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBoundsForItemRender();
+ break;
+ case GlassBox:
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.1F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.1F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.9F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBounds(0.0F, 0.0F, 0.9F, 1.0F, 1.0F, 1.0F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ this.setBlockBoundsForItemRender();
+ break;
+ case RedstoneSignalConverter:
+ this.setBlockBounds(0.2F, 0.2F, 0.2F, 0.8F, 0.8F, 0.8F);
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ break;
+ default:
+ super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
+ break;
+ }
+ }
+
+ @Override
+ public void setBlockBoundsForItemRender()
+ {
+ this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ @Override
+ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z)
+ {
+ int facing = 3;
+ TileEntity te = blockAccess.getTileEntity(x, y, z);
+ if(te!=null && te instanceof IWrenchable)
+ {
+ IWrenchable tebh = (IWrenchable) te;
+ facing=tebh.getFacing();
+ }
+ switch(this.type)
+ {
+ case VacuumInductionMeltingFurnace:
+ switch(facing)
+ {
+ case 0:
+ this.setBlockBounds(-1.0F, -2.0F, 0.0F, 2.0F, 1.0F, 3.0F);
+ break;
+ case 1:
+ this.setBlockBounds(-1.0F, 0.0F, 0.0F, 2.0F, 3.0F, 3.0F);
+ break;
+ case 2:
+ this.setBlockBounds(-1.0F, 0.0F, -2.0F, 2.0F, 3.0F, 1.0F);
+ break;
+ case 3:
+ this.setBlockBounds(-1.0F, 0.0F, 0.0F, 2.0F, 3.0F, 3.0F);
+ break;
+ case 4:
+ this.setBlockBounds(-2.0F, 0.0F, -1.0F, 1.0F, 3.0F, 2.0F);
+ break;
+ case 5:
+ this.setBlockBounds(0.0F, 0.0F, -1.0F, 3.0F, 3.0F, 2.0F);
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ super.setBlockBoundsBasedOnState(blockAccess, x, y, z);
+ break;
+ }
+ }
+
+ public static void init()
+ {
+ MachineType[] var1 = MachineType.values();
+ for(int i=0;i<var1.length;i++)
+ {
+ if(!var1[i].unlocalizedName.equalsIgnoreCase(IHLMod.config.preventMachineBlockRegistrationName))
+ {
+ GameRegistry.registerBlock(new MachineBaseBlock(var1[i]), IHLItemBlock.class,var1[i].unlocalizedName);
+ GameRegistry.registerTileEntity(var1[i].teclass,var1[i].unlocalizedName);
+ }
+ }
+ IHLUtils.getThisModBlock("tubBronze").setBlockTextureName("tubBronzeIcon");
+ }
+
+ @Override
+ public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int flag)
+ {
+ if(this.type.itemDroppedOnBlockDestroy!=null)
+ {
+ this.dropBlockAsItem(world, x, y, z, this.type.itemDroppedOnBlockDestroy.copy());
+ }
+ else
+ {
+ super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, flag);
+ }
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int var2) {
+ TileEntity newTE = null;
+ try
+ {
+ newTE = (TileEntity) type.teclass.newInstance();
+ }
+ catch (InstantiationException e)
+ {
+ e.printStackTrace();
+ }
+ catch (IllegalAccessException e)
+ {
+ e.printStackTrace();
+ }
+ return newTE;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister par1IconRegister)
+ {
+ this.blockIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenSide");
+ this.textureBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenBack");
+ this.textureSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenSide");
+ this.textureTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":brickOvenTop");
+ this.textureFrontMuffleFurnance = par1IconRegister.registerIcon(IHLModInfo.MODID + ":muffleOvenFront");
+ this.textureTopAchesonFurnance = par1IconRegister.registerIcon(IHLModInfo.MODID + ":achesonOvenTop");
+ this.textureTopGoldFurnace = par1IconRegister.registerIcon(IHLModInfo.MODID + ":porcelainFurnaceTop");
+ this.textureFrontGoldFurnace = par1IconRegister.registerIcon(IHLModInfo.MODID + ":porcelainFurnaceFront");
+ this.textureSideGoldFurnace = par1IconRegister.registerIcon(IHLModInfo.MODID + ":porcelainFurnaceSide");
+ this.textureLeftMachineCasing = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fiberglassSpinneretsLeft");
+ this.textureTopMachineCasing = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fiberglassSpinneretsTop");
+ this.textureRightMachineCasing = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fiberglassSpinneretsRight");
+ this.textureFrontMachineCasing = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fiberglassSpinneretsFront");
+ this.textureBackMachineCasing = par1IconRegister.registerIcon(IHLModInfo.MODID + ":fiberglassSpinneretsBack");
+ this.textureFrontCryogenicDistiller = par1IconRegister.registerIcon(IHLModInfo.MODID + ":cryogenicDistillerOxygenSide");
+ this.textureTopCryogenicDistiller = par1IconRegister.registerIcon(IHLModInfo.MODID + ":cryogenicDistillerNitrogenSide");
+ this.textureBackCryogenicDistiller = par1IconRegister.registerIcon(IHLModInfo.MODID + ":cryogenicDistillerInputSide");
+ this.textureFrontChemicalReactor = par1IconRegister.registerIcon(IHLModInfo.MODID + ":chemicalReactorOutputSide");
+ this.textureFrontPaperMachine = par1IconRegister.registerIcon(IHLModInfo.MODID + ":paperMachineFront");
+ this.frequencyGeneratorBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorBack");
+ this.frequencyGeneratorFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorFront");
+ this.frequencyGeneratorTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorTop");
+ this.frequencyGeneratorLeft = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorLeft");
+ this.frequencyGeneratorRight = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorRight");
+ this.frequencyGeneratorBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":frequencyGeneratorBottom");
+ this.bronzeTubTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":tubBronzeTop");
+ this.bronzeTubSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":tubBronzeSide");
+ this.glassBoxBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxBottom");
+ this.glassBoxInnerBottom = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxInnerBottom");
+ this.glassBoxInnerSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxInnerSide");
+ this.glassBoxSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxSide");
+ this.glassBoxTop = par1IconRegister.registerIcon(IHLModInfo.MODID + ":glassBoxTop");
+ this.vacuumInductionMeltingFurnaceFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceFront");
+ this.vacuumInductionMeltingFurnaceBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceBack");
+ this.vacuumInductionMeltingFurnaceLeft = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceLeft");
+ this.vacuumInductionMeltingFurnaceRight = par1IconRegister.registerIcon(IHLModInfo.MODID + ":vacuumInductionMeltingFurnaceRight");
+ this.hydrotransportPulpRegeneratorFront = par1IconRegister.registerIcon(IHLModInfo.MODID + ":hydrotransportPulpRegeneratorFront");
+ this.hydrotransportPulpRegeneratorBack = par1IconRegister.registerIcon(IHLModInfo.MODID + ":hydrotransportPulpRegeneratorBack");
+ this.redstoneSignalConverterEmitterSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterEmitterSide");
+ this.redstoneSignalConverterEmptySide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterEmptySide");
+ this.redstoneSignalConverterSensorSide = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redstoneSignalConverterSensorSide");
+ this.steel = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steel");
+ this.redPaint = par1IconRegister.registerIcon(IHLModInfo.MODID + ":redPaint");
+ this.greenPaint = par1IconRegister.registerIcon(IHLModInfo.MODID + ":greenPaint");
+ this.rubberInsulatedCase = par1IconRegister.registerIcon(IHLModInfo.MODID + ":rubberInsulatedCase");
+ this.powerPort = par1IconRegister.registerIcon(IHLModInfo.MODID + ":powerPort");
+ }
+
+ @Override
+ public boolean hasTileEntity(int metadata)
+ {
+ return true;
+ }
+
+ @Override
+ public boolean onBlockActivated(World world,int x,int y,int z,EntityPlayer player,int i,float pos_x,float pos_y,float pos_z){
+ TileEntity te = world.getTileEntity(x,y,z);
+ if(IC2.platform.isSimulating())
+ {
+ if(te instanceof DetonationSprayingMachineTileEntity && player.getCurrentEquippedItem()!=null && player.getCurrentEquippedItem().getItem() == Items.flint_and_steel)
+ {
+ ((DetonationSprayingMachineTileEntity)te).operate();
+ return true;
+ }
+ if(te instanceof LathePart2TileEntity)
+ {
+ LathePart2TileEntity lte = ((LathePart2TileEntity)te);
+ te = world.getTileEntity(x-ForgeDirection.getOrientation(lte.getFacing()).offsetX,y-ForgeDirection.getOrientation(lte.getFacing()).offsetY,z-ForgeDirection.getOrientation(lte.getFacing()).offsetZ);
+ }
+ if(te instanceof RollingMachinePart2TileEntity)
+ {
+ RollingMachinePart2TileEntity lte = ((RollingMachinePart2TileEntity)te);
+ te = world.getTileEntity(x-ForgeDirection.getOrientation(lte.getFacing()).offsetX,y-ForgeDirection.getOrientation(lte.getFacing()).offsetY,z-ForgeDirection.getOrientation(lte.getFacing()).offsetZ);
+ }
+ if(te instanceof WoodenRollingMachinePart2TileEntity)
+ {
+ WoodenRollingMachinePart2TileEntity lte = ((WoodenRollingMachinePart2TileEntity)te);
+ te = world.getTileEntity(x-ForgeDirection.getOrientation(lte.getFacing()).offsetX,y-ForgeDirection.getOrientation(lte.getFacing()).offsetY,z-ForgeDirection.getOrientation(lte.getFacing()).offsetZ);
+ }
+ if(te instanceof RectifierTransformerUnitTileEntity)
+ {
+ RectifierTransformerUnitTileEntity rtu = (RectifierTransformerUnitTileEntity)te;
+ if(player.getCurrentEquippedItem()==null)
+ {
+ if(IC2.keyboard.isModeSwitchKeyDown(player))
+ {
+ rtu.switchModeDown();
+ }
+ else
+ {
+ rtu.switchModeUp();
+ }
+ IC2.platform.messagePlayer(player, "ic2.tooltip.mode", new Object[] {" Voltage output was set to x" + rtu.mode});
+ }
+ }
+ if(te instanceof IEnergyNetNode)
+ {
+ IEnergyNetNode node = (IEnergyNetNode)te;
+ if(player.getCurrentEquippedItem()!=null && player.getCurrentEquippedItem().getItem() instanceof ItemToolCutter)
+ {
+ node.removeAttachedChains();
+ }
+ }
+ }
+ return te instanceof IHasGui ? (IC2.platform.isSimulating() ? IC2.platform.launchGui(player, (IHasGui)te) : true) : false;
+ }
+
+
+ /**
+ * Called when the block is placed in the world.
+ */
+ @Override
+ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack)
+ {
+ TileEntity t = world.getTileEntity(x, y, z);
+ if(t!=null && t instanceof IWrenchable)
+ {
+ ((IWrenchable)t).setFacing(IHLUtils.getFacingFromPlayerView(player,false));
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
+ {
+ int facing=3;
+ int mask[] = {
+ 0,1,2,3,4,5,
+ 1,0,3,2,4,5,
+ 2,3,0,1,4,5,
+ 2,3,1,0,4,5,
+ 2,3,5,4,0,1,
+ 2,3,4,5,1,0
+ };
+ TileEntity te = world.getTileEntity(x, y, z);
+ if(te instanceof IWrenchable)
+ {
+ IWrenchable tebh = (IWrenchable) te;
+ facing=tebh.getFacing();
+ }
+ return this.getIconFromFacing(facing, side);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int side, int meta)
+ {
+ if(this.type==MachineType.IronWorkbench)
+ {
+ return this.steel;
+ }
+ if(this.type==MachineType.RedstoneSignalConverter)
+ {
+ return this.redstoneSignalConverterEmptySide;
+ }
+ if(this.type==MachineType.RectifierTransformerUnit)
+ {
+ switch(side)
+ {
+ case 0:
+ return this.bronzeTubSide;
+ case 1:
+ return this.textureSideGoldFurnace;
+ case 2:
+ return this.redPaint;
+ case 3:
+ return this.greenPaint;
+ case 4:
+ return this.rubberInsulatedCase;
+ case 5:
+ return this.powerPort;
+ }
+ }
+ return this.getIconFromFacing(3, side);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromFacing(int facing, int side)
+ {
+ int mask[] = {
+ 0,1,2,3,4,5,
+ 1,0,3,2,4,5,
+ 2,3,0,1,4,5,
+ 2,3,1,0,4,5,
+ 2,3,5,4,0,1,
+ 2,3,4,5,1,0
+ };
+ switch(this.type)
+ {
+ case RefluxCondenser:
+ return this.steel;
+ case RectifierTransformerUnit:
+ return this.bronzeTubSide;
+ default:
+ }
+ switch (mask[facing*6+side])
+ {
+ case 0:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.hydrotransportPulpRegeneratorFront;
+ case GlassBox:
+ return this.glassBoxSide;
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case AchesonFurnace:
+ return this.blockIcon;
+ case MuffleFurnace:
+ return this.textureFrontMuffleFurnance;
+ case LeadOven:
+ return this.textureFrontGoldFurnace;
+ case WireMill:
+ return this.textureFrontMachineCasing;
+ case LabElectrolyzer:
+ return this.textureTopMachineCasing;
+ case FluidizedBedReactor:
+ return this.textureTopMachineCasing;
+ case ChemicalReactor:
+ return this.textureFrontChemicalReactor;
+ case CryogenicDistiller:
+ return this.textureFrontCryogenicDistiller;
+ case PaperMachine:
+ return this.textureFrontPaperMachine;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceFront;
+ default:
+ break;
+ }
+ case 1:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.hydrotransportPulpRegeneratorBack;
+ case GlassBox:
+ return this.glassBoxSide;
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case LeadOven:
+ return this.textureSideGoldFurnace;
+ case WireMill:
+ return this.textureBackMachineCasing;
+ case CryogenicDistiller:
+ return this.textureBackCryogenicDistiller;
+ case PaperMachine:
+ return this.textureBackCryogenicDistiller;
+ case LabElectrolyzer:
+ return this.textureBackCryogenicDistiller;
+ case FluidizedBedReactor:
+ return this.textureBackCryogenicDistiller;
+ case ChemicalReactor:
+ return this.textureBackCryogenicDistiller;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceBack;
+ default:
+ return this.textureBack;
+ }
+
+ case 2:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.textureBackMachineCasing;
+ case GlassBox:
+ return this.glassBoxBottom;
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case LeadOven:
+ return this.textureSideGoldFurnace;
+ case WireMill:
+ return this.textureBackMachineCasing;
+ case CryogenicDistiller:
+ return this.textureBackMachineCasing;
+ case PaperMachine:
+ return this.textureBackMachineCasing;
+ case LabElectrolyzer:
+ return this.textureBackMachineCasing;
+ case FluidizedBedReactor:
+ return this.textureBackMachineCasing;
+ case ChemicalReactor:
+ return this.textureBackMachineCasing;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceRight;
+ default:
+ return this.textureTop;
+ }
+ case 3:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.textureTopMachineCasing;
+ case GlassBox:
+ return this.glassBoxTop;
+ case BronzeTub:
+ return this.bronzeTubTop;
+ case AchesonFurnace:
+ return this.textureTopAchesonFurnance;
+ case MuffleFurnace:
+ return this.textureTop;
+ case LeadOven:
+ return this.textureTopGoldFurnace;
+ case WireMill:
+ return this.textureTopMachineCasing;
+ case CryogenicDistiller:
+ return this.textureTopCryogenicDistiller;
+ case PaperMachine:
+ return this.textureTopMachineCasing;
+ case LabElectrolyzer:
+ return this.textureTopMachineCasing;
+ case FluidizedBedReactor:
+ return this.textureTopMachineCasing;
+ case ChemicalReactor:
+ return this.textureTopMachineCasing;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceRight;
+ default:
+ return this.textureTop;
+ }
+ case 4:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.textureRightMachineCasing;
+ case GlassBox:
+ return this.glassBoxSide;
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case LeadOven:
+ return this.textureSideGoldFurnace;
+ case WireMill:
+ return this.textureRightMachineCasing;
+ case CryogenicDistiller:
+ return this.textureRightMachineCasing;
+ case PaperMachine:
+ return this.textureRightMachineCasing;
+ case LabElectrolyzer:
+ return this.textureRightMachineCasing;
+ case FluidizedBedReactor:
+ return this.textureRightMachineCasing;
+ case ChemicalReactor:
+ return this.textureRightMachineCasing;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceRight;
+ default:
+ return this.textureSide;
+ }
+ case 5:
+ switch(this.type)
+ {
+ case HydrotransportPulpRegenerator:
+ return this.textureLeftMachineCasing;
+ case GlassBox:
+ return this.glassBoxSide;
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case LeadOven:
+ return this.textureSideGoldFurnace;
+ case CryogenicDistiller:
+ return this.textureLeftMachineCasing;
+ case PaperMachine:
+ return this.textureLeftMachineCasing;
+ case WireMill:
+ return this.textureLeftMachineCasing;
+ case ChemicalReactor:
+ return this.textureLeftMachineCasing;
+ case LabElectrolyzer:
+ return this.textureLeftMachineCasing;
+ case FluidizedBedReactor:
+ return this.textureLeftMachineCasing;
+ case VacuumInductionMeltingFurnace:
+ return this.vacuumInductionMeltingFurnaceLeft;
+ default:
+ return this.textureSide;
+ }
+ default:
+ return this.textureSide;
+ }
+ }
+
+ @Override
+ public boolean onBlockEventReceived(World world, int x, int y, int z, int metadata, int flag)
+ {
+ return true;
+ }
+
+ @Override
+ public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side)
+ {
+ TileEntity te = world.getTileEntity(x, y, z);
+ if(te instanceof RedstoneSignalConverterTileEntity)
+ {
+ RedstoneSignalConverterTileEntity rte = (RedstoneSignalConverterTileEntity) te;
+ return rte.isProvidingRedstonePower(side);
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean canProvidePower()
+ {
+ return true;
+ }
+
+ @Override
+ public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int metadata)
+ {
+ return this.isProvidingWeakPower(world, x, y, z, metadata);
+ }
+
+ public enum MachineType
+ {
+
+ IronWorkbench("ironWorkbench",IronWorkbenchTileEntity.class, false, true, null),
+ RedstoneSignalConverter("redstoneSignalConverter",RedstoneSignalConverterTileEntity.class, true, true, IHLUtils.getThisModItemStack("foilSteel")),
+ HydrotransportPulpRegenerator("hydrotransportPulpRegenerator", HydrotransportPulpRegeneratorTileEntity.class, true, IHLUtils.getThisModItemStack("extruderSetOfMoldedPartsSteel")),
+ VacuumInductionMeltingFurnace("vacuumInductionMeltingFurnace", VacuumInductionMeltingFurnaceTileEntity.class, true, IHLUtils.getThisModItemStack("foilSteel")),
+ GlassBox("glassBoxBlock",GlassBoxTileEntity.class, false, true, IHLUtils.getThisModItemStack("dustGlass")),
+ ElectrolysisBath("electrolysisBath",ElectrolysisBathTileEntity.class, false, IHLUtils.getThisModItemStack("plateGraphite")),
+ RectifierTransformerUnit("rectifierTransformerUnit",RectifierTransformerUnitTileEntity.class, false, true, IHLUtils.getThisModItemStack("foilSteel")),
+ BatterySwitchUnit("batterySwitchUnit",BatterySwitchUnitTileEntity.class, false, IHLUtils.getThisModItemStack("foilSteel")),
+ FractionatorBottom("fractionatorBottom",FractionatorBottomTileEntity.class, false, IHLUtils.getThisModItemStack("foilSteel")),
+ FractionatorSection("fractionatorSection",FractionatorSectionTileEntity.class, false, IHLUtils.getThisModItemStackWithSize("ringPorcelain",16)),
+ FractionatorCover("fractionatorCover",FractionatorCoverTileEntity.class, false, IHLUtils.getThisModItemStack("foilSteel")),
+ RefluxCondenser("refluxCondenser",RefluxCondenserTileEntity.class, false,false, IHLUtils.getThisModItemStack("foilSteel")),
+ PaperMachine("paperMachine",PaperMachineTileEntity.class, true, IHLUtils.getThisModItemStack("stickSteel")),
+ GaedesMercuryRotaryPump("gaedesMercuryRotaryPump",GaedesMercuryRotaryPumpTileEntity.class,false, IHLUtils.getThisModItemStack("foilSteel")),
+ LabElectrolyzer("labElectrolyzer",LabElectrolyzerTileEntity.class, true, IHLUtils.getThisModItemStack("stickGraphite")),
+ FluidizedBedReactor("fluidizedBedReactor",FluidizedBedReactorTileEntity.class, true, IHLUtils.getThisModItemStack("highPressureVesselSteel")),
+ ChemicalReactor("chemicalReactor",ChemicalReactorTileEntity.class, true, IHLUtils.getThisModItemStack("highPressureVesselSteel")),
+ CryogenicDistiller("cryogenicDistiller",CryogenicDistillerTileEntity.class, true, IHLUtils.getThisModItemStack("highPressureVesselSteel")),
+ GasWeldingStation("gasWeldingStation",GasWeldingStationTileEntity.class, false, null),
+ WoodenRollingMachine1("woodenRollingMachinePart1",WoodenRollingMachinePart1TileEntity.class, false, IHLUtils.getThisModItemStack("barD10Steel")),
+ WoodenRollingMachine2("woodenRollingMachinePart2",WoodenRollingMachinePart2TileEntity.class, false, IHLUtils.getThisModItemStack("barD10Steel")),
+ WireMill("wireMill",WireMillTileEntity.class, true, IHLUtils.getThisModItemStack("stickSteel")),
+ VulcanizationExtrudingMold("vulcanizationExtrudingMold",VulcanizationExtrudingMoldTileEntity.class, false, IHLUtils.getThisModItemStack("dustCarborundum")),
+ Extruder("extruder",ExtruderTileEntity.class, false, IHLUtils.getThisModItemStack("dustCarborundum")),
+ RollingMachine1("rollingMachinePart1",RollingMachinePart1TileEntity.class, false, IHLUtils.getThisModItemStack("stickSteel")),
+ RollingMachine2("rollingMachinePart2",RollingMachinePart2TileEntity.class, false, IHLUtils.getThisModItemStack("stickSteel")),
+ Loom("loom", LoomTileEntity.class, false, new ItemStack(Items.stick)),
+ Coiler("coiler",CoilerTileEntity.class, false, new ItemStack(Items.stick)),
+ Lathe1("lathePart1",LathePart1TileEntity.class, false, IHLUtils.getThisModItemStack("stickSteel")),
+ Lathe2("lathePart2",LathePart2TileEntity.class, false, IHLUtils.getOreDictItemStack("plateSteel")),
+ PrecipitatorCondenser("goldPrecipitatorCondenser",PrecipitatorCondenserTileEntity.class, false, IHLUtils.getThisModItemStack("dustPorcelain")),
+ GoldChimneyKnee("goldChimneyKnee",GoldChimneyKneeTileEntity.class, false, IHLUtils.getThisModItemStack("dustPorcelain")),
+ LeadOven("leadOven",LeadOvenTileEntity.class, true, IHLUtils.getThisModItemStack("dustPorcelain")),
+ DetonationSprayingMachine("cannonBronze",DetonationSprayingMachineTileEntity.class, false, new ItemStack(Items.stick)),
+ BronzeTub("tubBronze",ImpregnatingMachineTileEntity.class, false, true, null),
+ AchesonFurnace("achesonFurnance",AchesonFurnanceTileEntity.class, true, new ItemStack(Items.brick)),
+ MuffleFurnace("muffleFurnance",MuffleFurnanceTileEntity.class, true, new ItemStack(Items.brick));
+ MachineType(String unlocalizedName1, Class teclass1, boolean isNormalBlock1,ItemStack itemDroppedOnBlockDestroy1)
+ {
+ unlocalizedName=unlocalizedName1;
+ teclass=teclass1;
+ isNormalBlock=isNormalBlock1;
+ if(isNormalBlock)
+ {
+ specialBlockRendererId=0;
+ }
+ else
+ {
+ specialBlockRendererId=-2;
+ }
+ itemDroppedOnBlockDestroy=itemDroppedOnBlockDestroy1;
+ }
+ MachineType(String unlocalizedName1, Class teclass1, boolean isNormalBlock1,boolean hasSpecialBlockRenderer1, ItemStack itemDroppedOnBlockDestroy1)
+ {
+ unlocalizedName=unlocalizedName1;
+ teclass=teclass1;
+ isNormalBlock=isNormalBlock1;
+ hasSpecialBlockRenderer=hasSpecialBlockRenderer1;
+ itemDroppedOnBlockDestroy=itemDroppedOnBlockDestroy1;
+
+ }
+ String unlocalizedName;
+ Class teclass;
+ boolean isNormalBlock=true;
+ boolean hasSpecialBlockRenderer=false;
+ int specialBlockRendererId=-2;
+ ItemStack itemDroppedOnBlockDestroy;
+ }
+
+ @Override
+ public int getRenderType()
+ {
+ if(this.type.hasSpecialBlockRenderer)
+ {
+ return IHLMod.proxy.shareBlockRendererByMachineType(this.type);
+ }
+ return this.type.specialBlockRendererId;
+ }
+
+ @Override
+ public boolean isOpaqueCube()
+ {
+ return this.type==null?false:this.type.isNormalBlock;
+ }
+
+ @Override
+ public boolean renderAsNormalBlock()
+ {
+ return this.type.isNormalBlock;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getAdditionalIconsForBlockRenderer(int flag)
+ {
+ switch(this.type)
+ {
+ case BronzeTub:
+ return this.bronzeTubSide;
+ case GlassBox:
+ switch(flag)
+ {
+ case 0:
+ return this.glassBoxInnerSide;
+ case 1:
+ return this.glassBoxInnerBottom;
+ }
+ case RedstoneSignalConverter:
+ switch(flag)
+ {
+ case 0:
+ return this.redstoneSignalConverterEmptySide;
+ case 1:
+ return this.redstoneSignalConverterEmitterSide;
+ case 2:
+ return this.redstoneSignalConverterSensorSide;
+ }
+ default:
+ return this.blockIcon;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/50374e2ca4e00015119a88e59fd033e2 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/50374e2ca4e00015119a88e59fd033e2
new file mode 100644
index 0000000..588ee99
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/50374e2ca4e00015119a88e59fd033e2
@@ -0,0 +1,146 @@
+package ihl.flexible_cable;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import ic2.core.IC2;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.inventory.Slot;
+import net.minecraft.util.ResourceLocation;
+
+import org.lwjgl.opengl.GL11;
+
+import ic2.core.network.NetworkManager;
+import ihl.interfaces.ItemMiniGUI;
+import ihl.utils.IHLRenderUtils;
+
+@SideOnly(Side.CLIENT)
+public class IronWorkbenchGui extends GuiContainer {
+ private static final ResourceLocation background = new ResourceLocation("ihl", "textures/gui/GUIIronWorkbench.png");
+ private IronWorkbenchContainer container;
+ private ItemMiniGUI miniGui;
+ private static final short outputslotoffset=66;
+
+ public IronWorkbenchGui (IronWorkbenchContainer container1) {
+ //the container is instanciated and passed to the superclass for handling
+ super(container1);
+ this.container=container1;
+ this.ySize=IronWorkbenchContainer.height;
+ }
+
+ @Override
+ public void initGui()
+ {
+ super.initGui();
+ int x = (width - xSize) / 2;
+ int y = (height - ySize) / 2;
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int par1, int par2)
+ {
+ int x = (width - xSize) / 2;
+ int y = (height - ySize) / 2;
+ for(int row = 1;row<6;row++)
+ {
+ if(!this.container.tileEntity.workspaceElements.ready[row] && this.container.tileEntity.workspaceElements.get(row)!=null)
+ {
+ IHLRenderUtils.instance.drawWorkspaceElementTooltip(par1, par2, 8+x, 8+y+row*18, this.container.tileEntity.workspaceElements.get(row));
+ }
+ }
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2,
+ int par3) {
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ this.mc.renderEngine.bindTexture(background);
+ int x = (width - xSize) / 2;
+ int y = (height - ySize) / 2;
+ this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
+ if (this.container.tileEntity.progress > 0)
+ {
+ int progressLevel=Math.min(Math.round(this.container.tileEntity.progress*16.0F/this.container.tileEntity.maxProgress),16);
+ int frameNum=0;
+ short slotRecipeNum=this.container.tileEntity.output.slotRecipe[0];
+ for(int row = 0;row<6;row++)
+ {
+ for (int col = 0; col<3; ++col)
+ {
+ if(slotRecipeNum!=this.container.tileEntity.output.slotRecipe[col+row*3])
+ {
+ frameNum++;
+ slotRecipeNum=this.container.tileEntity.output.slotRecipe[col+row*3];
+ }
+ if(this.container.tileEntity.currentSlot==slotRecipeNum)
+ {
+ int i1 = Math.min(this.container.tileEntity.gaugeProgressScaled(18),18);
+ this.drawTexturedModalRect(115+x+col*18, 7+y+row*18, 176, 72,i1,18);
+ this.drawTexturedModalRect(115+x+col*18, 7+y+row*18, 176+getFrameX(frameNum), getFrameY(frameNum),18,18);
+ }
+ }
+ }
+ }
+ else
+ {
+ int frameNum=0;
+ short slotRecipeNum=this.container.tileEntity.output.slotRecipe[0];
+ for(int row = 0;row<6;row++)
+ {
+ for (int col = 0;col<3; ++col)
+ {
+ if(slotRecipeNum!=this.container.tileEntity.output.slotRecipe[col+row*3])
+ {
+ frameNum++;
+ slotRecipeNum=this.container.tileEntity.output.slotRecipe[col+row*3];
+ }
+ if(this.container.tileEntity.output.get(col+row*3)!=null)
+ {
+ this.drawTexturedModalRect(115+x+col*18, 7+y+row*18, 176+getFrameX(frameNum), getFrameY(frameNum),18,18);
+ }
+ }
+ }
+ }
+ for(int row = 1;row<6;row++)
+ {
+ if(!this.container.tileEntity.workspaceElements.ready[row])
+ {
+ this.drawTexturedModalRect(20+x, 9+y+row*18, 194, 74,3,14);
+ }
+ }
+ }
+
+ @Override
+ public void onGuiClosed()
+ {
+ super.onGuiClosed();
+ this.container.tileEntity.isGuiScreenOpened=false;
+ IC2.network.get().initiateClientTileEntityEvent(this.container.tileEntity, 16);
+ }
+
+ @Override
+ public void handleMouseClick(Slot slot,int slotNumber,int mouseButton/*0=left 1=right*/,int arg3)
+ {
+ if(slot!=null && slot.slotNumber>=outputslotoffset && slot.slotNumber<outputslotoffset+18)
+ {
+ if(mouseButton==0)
+ {
+ IC2.network.get().initiateClientTileEntityEvent(this.container.tileEntity, slot.slotNumber-outputslotoffset);
+ }
+ else if(mouseButton==1)
+ {
+
+ }
+ }
+ super.handleMouseClick(slot, slotNumber, mouseButton, arg3);
+ }
+
+ private int getFrameX(int number)
+ {
+ return (number % 4) * 18;
+ }
+ private int getFrameY(int number)
+ {
+ return ((number>>2) & 3)*18;
+ }
+
+} \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b02f8eb743a000151531bed9130b5444 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b02f8eb743a000151531bed9130b5444
new file mode 100644
index 0000000..155824a
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b02f8eb743a000151531bed9130b5444
@@ -0,0 +1,391 @@
+package ihl;
+
+import java.io.File;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.IntBuffer;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.lwjgl.LWJGLException;
+import org.lwjgl.opengl.Display;
+import org.lwjgl.opengl.EXTFramebufferObject;
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.opengl.Pbuffer;
+import org.lwjgl.opengl.PixelFormat;
+
+import ic2.core.IC2;
+import ihl.collector.ChargerEjectorModel;
+import ihl.collector.ChargerEjectorRender;
+import ihl.collector.ChargerEjectorTileEntity;
+import ihl.collector.CollectorEntity;
+import ihl.collector.CollectorHeavyEntity;
+import ihl.collector.CollectorItemRender;
+import ihl.collector.CollectorRender;
+import ihl.collector.GlassBoxRender;
+import ihl.collector.GlassBoxTileEntity;
+import ihl.crop_harvestors.BlobEntityFX;
+import ihl.crop_harvestors.BlobEntityFX.FluidType;
+import ihl.crop_harvestors.BlobRenderFX;
+import ihl.crop_harvestors.SackRender;
+import ihl.crop_harvestors.SackTileEntity;
+import ihl.enviroment.LightBulbModel;
+import ihl.enviroment.LightBulbRender;
+import ihl.enviroment.LightBulbTileEntity;
+import ihl.enviroment.MirrorRender;
+import ihl.enviroment.MirrorTileEntity;
+import ihl.enviroment.SpotlightModel;
+import ihl.enviroment.SpotlightRender;
+import ihl.enviroment.SpotlightTileEntity;
+import ihl.flexible_cable.BatterySwitchUnitModel;
+import ihl.flexible_cable.BatterySwitchUnitTileEntity;
+import ihl.flexible_cable.GroundingModel;
+import ihl.flexible_cable.GroundingTileEntity;
+import ihl.flexible_cable.IronWorkbenchModel;
+import ihl.flexible_cable.IronWorkbenchTileEntity;
+import ihl.flexible_cable.NodeEntity;
+import ihl.flexible_cable.NodeRender;
+import ihl.flexible_cable.RectifierTransformerUnitModel;
+import ihl.flexible_cable.RectifierTransformerUnitTileEntity;
+import ihl.i_hate_liquids.IHLEventHandler;
+import ihl.i_hate_liquids.InvisibleMagicanEntity;
+import ihl.items_blocks.IHLTool;
+import ihl.items_blocks.ItemSubstance;
+import ihl.items_blocks.MachineBaseBlock;
+import ihl.items_blocks.MachineBaseBlock.MachineType;
+import ihl.metallurgy.constants.Details;
+import ihl.model.*;
+import ihl.nei_integration.InjectionMoldRecipeHandler;
+import ihl.processing.chemistry.ElectrolysisBathModel;
+import ihl.processing.chemistry.ElectrolysisBathTileEntity;
+import ihl.processing.chemistry.FractionatorBottomModel;
+import ihl.processing.chemistry.FractionatorBottomTileEntity;
+import ihl.processing.chemistry.FractionatorCoverModel;
+import ihl.processing.chemistry.FractionatorCoverTileEntity;
+import ihl.processing.chemistry.FractionatorSectionModel;
+import ihl.processing.chemistry.FractionatorSectionTileEntity;
+import ihl.processing.chemistry.GaedesMercuryRotaryPumpModel;
+import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity;
+import ihl.processing.chemistry.GoldChimneyKneeModel;
+import ihl.processing.chemistry.GoldChimneyKneeRender;
+import ihl.processing.chemistry.GoldChimneyKneeTileEntity;
+import ihl.processing.chemistry.LoomModel;
+import ihl.processing.chemistry.LoomTileEntity;
+import ihl.processing.chemistry.PrecipitatorCondenserModel;
+import ihl.processing.chemistry.PrecipitatorCondenserRender;
+import ihl.processing.chemistry.PrecipitatorCondenserTileEntity;
+import ihl.processing.chemistry.RefluxCondenserModel;
+import ihl.processing.chemistry.RefluxCondenserTileEntity;
+import ihl.processing.metallurgy.CoilerModel;
+import ihl.processing.metallurgy.CoilerRender;
+import ihl.processing.metallurgy.CoilerTileEntity;
+import ihl.processing.metallurgy.DetonationSprayingMachineModel;
+import ihl.processing.metallurgy.DetonationSprayingMachineRender;
+import ihl.processing.metallurgy.DetonationSprayingMachineTileEntity;
+import ihl.processing.metallurgy.ExtruderModel;
+import ihl.processing.metallurgy.ExtruderTileEntity;
+import ihl.processing.metallurgy.GasWeldingStationModel;
+import ihl.processing.metallurgy.GasWeldingStationTileEntity;
+import ihl.processing.metallurgy.ImpregnatingMachineRender;
+import ihl.processing.metallurgy.ImpregnatingMachineTileEntity;
+import ihl.processing.metallurgy.InjectionMoldBlock;
+import ihl.processing.metallurgy.LathePart1Model;
+import ihl.processing.metallurgy.LathePart1TileEntity;
+import ihl.processing.metallurgy.LathePart2Model;
+import ihl.processing.metallurgy.LathePart2TileEntity;
+import ihl.processing.metallurgy.RollingMachinePart1Model;
+import ihl.processing.metallurgy.RollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.RollingMachinePart2Model;
+import ihl.processing.metallurgy.RollingMachinePart2TileEntity;
+import ihl.processing.metallurgy.RollingMachineRender;
+import ihl.processing.metallurgy.VulcanizationExtrudingMoldModel;
+import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachinePart2Model;
+import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity;
+import ihl.processing.metallurgy.WoodenRollingMachineRender;
+import ihl.servitor.FlameEntityFX;
+import ihl.servitor.FlameRenderFX;
+import ihl.servitor.LostHeadEntity;
+import ihl.servitor.LostHeadRender;
+import ihl.servitor.SkullItemRender;
+import ihl.tunneling_shield.BlockItemRender;
+import ihl.tunneling_shield.DriverEntity;
+import ihl.tunneling_shield.DriverModel;
+import ihl.tunneling_shield.DriverRender;
+import ihl.tunneling_shield.DriverRenderEntity;
+import ihl.tunneling_shield.DriverTileEntity;
+import ihl.utils.IHLRenderUtils;
+import ihl.utils.IHLUtils;
+import ihl.utils.IHLXMLParser;
+import ihl.worldgen.ores.IHLFluid;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.particle.EntityFX;
+import net.minecraft.client.renderer.GLAllocation;
+import net.minecraft.client.renderer.entity.Render;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.entity.Entity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import net.minecraftforge.client.MinecraftForgeClient;
+import net.minecraftforge.client.event.TextureStitchEvent;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.fluids.FluidStack;
+import cpw.mods.fml.client.registry.ClientRegistry;
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.registry.EntityRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class ClientProxy extends ServerProxy {
+
+ public int fboId=-1;
+ public int renderBufferId=-1;
+ public int defaultMinecraftFBOId=1;
+ public boolean loadMirrorRender=true;
+ public IHLRenderUtils renderUtils;
+ public Map<MachineType,Integer> sharedBlockRenders = new HashMap();
+
+ public ClientProxy() {}
+
+ @Override
+ public void loadClient() throws ParserConfigurationException
+ {
+ this.renderUtils=new IHLRenderUtils();
+ for(int i=0;i<4;i++)
+ {
+ try
+ {
+ boolean isframebuffer = EXTFramebufferObject.glIsFramebufferEXT(i);
+ if(isframebuffer)
+ {
+ defaultMinecraftFBOId=i;
+ }
+ }
+ catch (Throwable e)
+ {
+ IHLMod.log.error("IHL: EXTFramebufferObject cause exception to be casted, no IHL mirror render is possible in current enviroment.");
+ loadMirrorRender=false;
+ }
+ }
+ if(loadMirrorRender && fboId==-1)
+ {
+ fboId = EXTFramebufferObject.glGenFramebuffersEXT();
+ renderBufferId = EXTFramebufferObject.glGenRenderbuffersEXT();
+ }
+ registerBlockHandler(new ImpregnatingMachineBlockRender(), MachineType.BronzeTub, MachineType.GlassBox);
+ registerBlockHandler(new RefluxCondenserBlockRender(), MachineType.RefluxCondenser);
+ registerBlockHandler(new SwitchBoxBlockRender(), MachineType.RedstoneSignalConverter);
+ RenderingRegistry.registerEntityRenderingHandler(CollectorEntity.class, new CollectorRender(false));
+ MinecraftForgeClient.registerItemRenderer(IHLMod.collectorItem, new CollectorItemRender(false));
+ RenderingRegistry.registerEntityRenderingHandler(CollectorHeavyEntity.class, new CollectorRender(true));
+ MinecraftForgeClient.registerItemRenderer(IHLMod.collectorHeavyItem, new CollectorItemRender(true));
+ RenderingRegistry.registerEntityRenderingHandler(DriverEntity.class, new DriverRenderEntity());
+ ClientRegistry.bindTileEntitySpecialRenderer(ChargerEjectorTileEntity.class, new ChargerEjectorRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(DriverTileEntity.class, new DriverRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(SackTileEntity.class, new SackRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(GlassBoxTileEntity.class, new GlassBoxRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(IronWorkbenchTileEntity.class, new UniversalTileRender(new IronWorkbenchModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/ironWorkbench.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(LathePart1TileEntity.class, new UniversalTileRender(new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(LathePart2TileEntity.class, new UniversalTileRender(new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(LoomTileEntity.class, new UniversalTileRender(new LoomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(ImpregnatingMachineTileEntity.class, new ImpregnatingMachineRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(DetonationSprayingMachineTileEntity.class, new DetonationSprayingMachineRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(GoldChimneyKneeTileEntity.class, new GoldChimneyKneeRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(PrecipitatorCondenserTileEntity.class, new PrecipitatorCondenserRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(CoilerTileEntity.class, new CoilerRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart1TileEntity.class, new RollingMachineRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(RollingMachinePart2TileEntity.class, new UniversalTileRender(new RollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(VulcanizationExtrudingMoldTileEntity.class, new UniversalTileRender(new VulcanizationExtrudingMoldModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(ExtruderTileEntity.class, new UniversalTileRender(new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart1TileEntity.class, new WoodenRollingMachineRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(WoodenRollingMachinePart2TileEntity.class, new UniversalTileRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(GasWeldingStationTileEntity.class, new UniversalTileRender(new GasWeldingStationModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/gasWeldingStation.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(GaedesMercuryRotaryPumpTileEntity.class, new UniversalTileRender(new GaedesMercuryRotaryPumpModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/extruder.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(FractionatorBottomTileEntity.class, new UniversalTileRender(new FractionatorBottomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(FractionatorSectionTileEntity.class, new UniversalTileRender(new FractionatorSectionModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(FractionatorCoverTileEntity.class, new UniversalTileRender(new FractionatorCoverModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(RefluxCondenserTileEntity.class, new UniversalTileRender(new RefluxCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(BatterySwitchUnitTileEntity.class, new UniversalTileRender(new BatterySwitchUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/batterySwitchUnit.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(GroundingTileEntity.class, new UniversalTileRender(new GroundingModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/goldChimneyKnee.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(RectifierTransformerUnitTileEntity.class, new UniversalTileRender(new RectifierTransformerUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png")));
+ ClientRegistry.bindTileEntitySpecialRenderer(ElectrolysisBathTileEntity.class, new UniversalTileRender(new ElectrolysisBathModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/electrolysisBath.png")));
+ if(loadMirrorRender && IHLMod.config.mirrorReflectionRange>0)
+ {
+ ClientRegistry.bindTileEntitySpecialRenderer(MirrorTileEntity.class, new MirrorRender());
+ }
+ ClientRegistry.bindTileEntitySpecialRenderer(LightBulbTileEntity.class, new LightBulbRender());
+ ClientRegistry.bindTileEntitySpecialRenderer(SpotlightTileEntity.class, new SpotlightRender());
+ MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(IHLMod.driverBlock), new BlockItemRender(new DriverModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/shield.png"), 5, 2, 0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(IHLMod.chargerEjectorBlock), new BlockItemRender(new ChargerEjectorModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/chargerEjector.png"), 0, 6, 0.5F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(IHLMod.ironWorkbench), new BlockItemRender(new IronWorkbenchModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/ironWorkbench.png"), 0, 0, 0.0F, 0.1F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("goldPrecipitatorCondenser"), new BlockItemRender(new PrecipitatorCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("goldChimneyKnee"), new BlockItemRender(new GoldChimneyKneeModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("cannonBronze"), new BlockItemRender(new DetonationSprayingMachineModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart1"), new BlockItemRender(new LathePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lathePart2"), new BlockItemRender(new LathePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart1"), new BlockItemRender(new RollingMachinePart1Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 5, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rollingMachinePart2"), new BlockItemRender(new RollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("coiler"), new BlockItemRender(new CoilerModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 6, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("loom"), new BlockItemRender(new LoomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/detonationSprayingMachine.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("vulcanizationExtrudingMold"), new BlockItemRender(new VulcanizationExtrudingMoldModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("extruder"), new BlockItemRender(new ExtruderModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/coiler.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart1"), new BlockItemRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("woodenRollingMachinePart2"), new BlockItemRender(new WoodenRollingMachinePart2Model(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/woodenRollingMachine.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gasWeldingStation"), new BlockItemRender(new GasWeldingStationModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/gasWeldingStation.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("gaedesMercuryRotaryPump"), new BlockItemRender(new GaedesMercuryRotaryPumpModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/extruder.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLMod.ihlSkull, new SkullItemRender());
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorBottom"), new BlockItemRender(new FractionatorBottomModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorSection"), new BlockItemRender(new FractionatorSectionModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("fractionatorCover"), new BlockItemRender(new FractionatorCoverModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("refluxCondenser"), new BlockItemRender(new RefluxCondenserModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/splitInjectionMold.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("batterySwitchUnit"), new BlockItemRender(new BatterySwitchUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/batterySwitchUnit.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("grounding"), new BlockItemRender(new GroundingModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/goldChimneyKnee.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("rectifierTransformerUnit"), new BlockItemRender(new RectifierTransformerUnitModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/porcelainBox.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("electrolysisBath"), new BlockItemRender(new ElectrolysisBathModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/electrolysisBath.png"), 0, 0, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("lightBulb"), new BlockItemRender(new LightBulbModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/lightBulb.png"), 0, 1, 0.0F, 0.0F, true));
+ MinecraftForgeClient.registerItemRenderer(IHLUtils.getThisModItem("spotlight"), new BlockItemRender(new SpotlightModel(), new ResourceLocation(IHLModInfo.MODID+":textures/blocks/spotlight.png"), 0, 1, 0.0F, 0.0F));
+ MinecraftForgeClient.registerItemRenderer(IHLTool.instance, new IHLToolRenderer());
+ RenderingRegistry.registerEntityRenderingHandler(LostHeadEntity.class, new LostHeadRender());
+ RenderingRegistry.registerEntityRenderingHandler(FlameEntityFX.class, new FlameRenderFX());
+ RenderingRegistry.registerEntityRenderingHandler(BlobEntityFX.class, new BlobRenderFX());
+ RenderingRegistry.registerEntityRenderingHandler(NodeEntity.class, new NodeRender());
+ MinecraftForge.EVENT_BUS.register(new RenderGameOverlayEventHandler());
+
+ }
+
+ public void spawnParticle(int particle, World world, double x, double y, double z, double mx, double my, double mz, float var)
+ {
+ switch(particle)
+ {
+ case 0:
+ FlameEntityFX flamePEFX1 = new FlameEntityFX(world,x,y,z,mx,my,mz,var);
+ world.spawnEntityInWorld(flamePEFX1);
+ break;
+ case 1:
+ BlobEntityFX blob = new BlobEntityFX(world,x,y,z,mx,my,mz,var, FluidType.RESIN);
+ world.spawnEntityInWorld(blob);
+ break;
+ case 2:
+ BlobEntityFX blob2 = new BlobEntityFX(world,x,y,z,mx,my,mz,var, FluidType.SAP);
+ world.spawnEntityInWorld(blob2);
+ break;
+ default:
+ FlameEntityFX flamePEFX2 = new FlameEntityFX(world,x,y,z,mx,my,mz,var);
+ world.spawnEntityInWorld(flamePEFX2);
+ break;
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ @SubscribeEvent
+ public void registerIcons(TextureStitchEvent.Pre event)
+ {
+ if (event.map.getTextureType() == 0)
+ {
+ IHLFluid.registerIcons();
+ }
+ }
+
+ @Override
+ public int getFBOID() {return fboId;}
+
+ @Override
+ public int getRenderBufferID() {return renderBufferId;}
+
+ @Override
+ public int getDefaultMinecraftFBOID() {return defaultMinecraftFBOId;}
+
+ @Override
+ public Render getRenderForEntityClass(Class<? extends Entity> entityClass)
+ {
+ return (Render) RenderManager.instance.entityRenderMap.get(entityClass);
+ }
+
+ @Override
+ public void checkFramebuffer(int fboId)
+ {
+ int framebuffer = EXTFramebufferObject.glCheckFramebufferStatusEXT( EXTFramebufferObject.GL_FRAMEBUFFER_EXT );
+ switch ( framebuffer ) {
+ case EXTFramebufferObject.GL_FRAMEBUFFER_COMPLETE_EXT:
+ //IHLMod.log.info("EXTFramebufferObject wiwh number "+fboId+" return GL_FRAMEBUFFER_COMPLETE_EXT. Everything is seems fine.");
+ break;
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT exception" );
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT exception" );
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT exception" );
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT exception" );
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT exception" );
+ case EXTFramebufferObject.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
+ throw new RuntimeException( "FrameBuffer: " + fboId
+ + ", has caused a GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT exception" );
+ default:
+ throw new RuntimeException( "Unexpected reply from glCheckFramebufferStatusEXT: " + framebuffer );
+ }
+ }
+
+ @Override
+ public void initBlockRenderer()
+ {
+ new IHLBlockRenderer();
+ }
+
+ @Override
+ public int getGLDisplayList()
+ {
+ return GLAllocation.generateDisplayLists(1);
+ }
+
+ @Override
+ public void deleteFramebuffers()
+ {
+ if(fboId!=-1)
+ {
+ EXTFramebufferObject.glDeleteFramebuffersEXT(fboId);
+ }
+ if(renderBufferId!=-1)
+ {
+ EXTFramebufferObject.glDeleteRenderbuffersEXT(renderBufferId);
+ }
+ }
+
+ @Override
+ public File getMinecraftDir()
+ {
+ return Minecraft.getMinecraft().mcDataDir;
+ }
+
+ @Override
+ public int shareBlockRendererByMachineType(MachineType type)
+ {
+ return sharedBlockRenders.get(type);
+ }
+
+ public void registerBlockHandler(ISimpleBlockRenderingHandler handler, MachineType... types)
+ {
+ RenderingRegistry.registerBlockHandler(handler);
+ for(MachineType type:types)
+ {
+ sharedBlockRenders.put(type, handler.getRenderId());
+ }
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/5015a2ff41b60015176c95ddaf2504ce b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/5015a2ff41b60015176c95ddaf2504ce
new file mode 100644
index 0000000..a96ee72
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/5015a2ff41b60015176c95ddaf2504ce
@@ -0,0 +1,573 @@
+package ihl.flexible_cable;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
+import cpw.mods.fml.common.network.internal.FMLProxyPacket;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.INetworkListener;
+import ihl.utils.IHLUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldServer;
+
+public class NodeEntity extends Entity implements INetworkListener{
+
+ public Entity prevAnchorEntity;
+ public Entity nextAnchorEntity;
+ private int anchorX;
+ private int anchorY;
+ private int anchorZ;
+ private short anchorFacing;
+ private int anchorDimensionId;
+ public ItemStack attachedItem;
+ protected int chainUniqueID=-2;
+ public int chainArrangeNumber=-2;
+ protected int checkTimer=201;
+ public int colorIndex=16777215;
+ public int type=1;//0 - uninsulated wire; 1 - insulated cable; 2 - data cable
+ public float dx0=0;
+ public float dy0=0;
+ public float dz0=0;
+ public final int n=64;
+ public final float[] rotationPitchArray = new float[n+1];
+ public final float[] rotationYawArray = new float[n+1];
+ public final float[] translationX = new float[n+1];
+ public final float[] translationY = new float[n+1];
+ public final float[] translationZ = new float[n+1];
+ public float virtualNodePosX;
+ public float virtualNodePosY;
+ public float virtualNodePosZ;
+ public float renderPosX;
+ public float renderPosY;
+ public float renderPosZ;
+
+ public NodeEntity(World world)
+ {
+ super(world);
+ if(world.isRemote)
+ {
+ IHLMod.proxy.addEntityToList(this);
+ this.setSize(2f, 0.2f);
+ }
+ else
+ {
+ IHLMod.proxy.addEntityToServerList(this);
+ this.setSize(0.5F, 0.1F);
+ }
+ this.renderDistanceWeight = 5.0D;
+ this.yOffset+=0.15F;
+ this.virtualNodePosX=(float) this.posX;
+ this.virtualNodePosY=(float) this.posY;
+ this.virtualNodePosZ=(float) this.posZ;
+ }
+
+ @Override
+ public void setInPortal(){}
+
+ @Override
+ public void travelToDimension(int dimensionId){}
+
+ public void setSize(float width, float heigth)
+ {
+ super.setSize(width, heigth);
+ }
+
+ public void setVirtualNodePos(float posX,float posY, float posZ)
+ {
+ virtualNodePosX=posX;
+ virtualNodePosY=posY;
+ virtualNodePosZ=posZ;
+ this.registerAndSendData(null);
+ }
+
+ public void registerAndSendData(EntityPlayerMP player)
+ {
+ if(!worldObj.isRemote)
+ {
+ Set<NodeEntity> nes;
+ if(IHLMod.proxy.nodeEntityRegistry.containsKey(this.getChainUniqueID()))
+ {
+ nes=IHLMod.proxy.nodeEntityRegistry.get(this.getChainUniqueID());
+ }
+ else
+ {
+ nes=new HashSet();
+ IHLMod.proxy.nodeEntityRegistry.put(this.getChainUniqueID(),nes);
+ }
+ nes.add(this);
+ ByteBuf bb = Unpooled.buffer(30);
+ ByteBufOutputStream byteBufOutputStream = new ByteBufOutputStream(bb);
+ try
+ {
+ byteBufOutputStream.write(1);
+ byteBufOutputStream.writeInt(this.getEntityId());
+ byteBufOutputStream.writeInt(this.getChainUniqueID());
+ byteBufOutputStream.writeInt(this.chainArrangeNumber);
+ byteBufOutputStream.writeByte(this.type);
+ byteBufOutputStream.writeInt(this.colorIndex);
+ byteBufOutputStream.writeFloat(this.virtualNodePosX);
+ byteBufOutputStream.writeFloat(this.virtualNodePosY);
+ byteBufOutputStream.writeFloat(this.virtualNodePosZ);
+ if(player==null)
+ {
+ IHLMod.proxy.sendFromServerToAll(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID));
+ }
+ else
+ {
+ IHLMod.proxy.sendFromServerToPlayer(new FMLProxyPacket(byteBufOutputStream.buffer(), IHLModInfo.MODID),player);
+ }
+ byteBufOutputStream.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if(!noClip && !worldObj.isRemote)
+ {
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ }
+ if(this.checkTimer==201)
+ {
+ if(worldObj.isRemote)
+ {
+ IHLMod.proxy.recieveDelayedDataPacket(this);
+ }
+ else
+ {
+ this.registerAndSendData(null);
+ }
+ }
+ if((prevAnchorEntity==null && !noClip)||(nextAnchorEntity==null || nextAnchorEntity instanceof EntityPlayer || nextAnchorEntity instanceof EntityItem))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<NodeEntity> eItemsList = this.worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity node=(NodeEntity) ei.next();
+ if(node.getChainUniqueID()==this.getChainUniqueID())
+ {
+ if(node.chainArrangeNumber==this.chainArrangeNumber-1)
+ {
+ this.prevAnchorEntity=node;
+ node.nextAnchorEntity=this;
+ }
+ else if(node.chainArrangeNumber==this.chainArrangeNumber+1)
+ {
+ this.nextAnchorEntity=node;
+ node.prevAnchorEntity=this;
+ }
+ }
+ if(prevAnchorEntity!=null && nextAnchorEntity!=null)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if(this.attachedItem!=null && (this.nextAnchorEntity == null || this.nextAnchorEntity.isDead) && !this.noClip)
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityPlayer> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityPlayer player=(EntityPlayer) ei.next();
+ if(this.playerHasItemStack(player))
+ {
+ this.nextAnchorEntity=player;
+ }
+
+ }
+ }
+ }
+ if(this.attachedItem!=null && this.nextAnchorEntity instanceof EntityPlayer && !noClip)
+ {
+ EntityPlayer player = (EntityPlayer) this.nextAnchorEntity;
+ if(!this.playerHasItemStack(player))
+ {
+ double range = 16D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(this.posX-range,this.posY-range,this.posZ-range,this.posX+range,this.posY+range,this.posZ+range);
+ List<EntityItem> eItemsList = this.worldObj.getEntitiesWithinAABB(EntityItem.class, searchArea);
+ if(!eItemsList.isEmpty())
+ {
+ Iterator<EntityItem> ei = eItemsList.iterator();
+ while(ei.hasNext())
+ {
+ EntityItem eitem = ei.next();
+ if(eitem.getEntityItem().isItemEqual(this.attachedItem))
+ {
+ this.nextAnchorEntity=eitem;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(!worldObj.isRemote)
+ {
+ {
+ double x0,x2,y0,y2,z0,z2;
+ x2=x0=this.virtualNodePosX;
+ y2=y0=this.virtualNodePosY;
+ z2=z0=this.virtualNodePosZ;
+ if(nextAnchorEntity!=null)
+ {
+ x2=nextAnchorEntity.posX;
+ y2=nextAnchorEntity.posY;
+ z2=nextAnchorEntity.posZ;
+ }
+ if(prevAnchorEntity!=null)
+ {
+ x0=prevAnchorEntity.posX;
+ y0=prevAnchorEntity.posY;
+ z0=prevAnchorEntity.posZ;
+ }
+
+ double d1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2)+(z0-z2)*(z0-z2);
+ if(d1>4D)
+ {
+ this.motionX=(x0+x2)*0.5D-this.posX*1D;
+ this.motionY=(y0+y2)*0.5D-this.posY*1D;
+ this.motionZ=(z0+z2)*0.5D-this.posZ*1D;
+ if(nextAnchorEntity!=null && this.getDistanceSqToEntity(nextAnchorEntity)>4D)
+ {
+ this.nextAnchorEntity.addVelocity((this.posX-this.nextAnchorEntity.posX)*0.01D, (this.posY-this.nextAnchorEntity.posY)*0.01D, (this.posZ-this.nextAnchorEntity.posZ)*0.01D);
+ }
+ }
+ else
+ {
+ double d2 = this.getDistanceSq(x2,y2,z2);
+ if(d2>1D)
+ {
+ this.motionX+=(x2-this.posX)*0.1D;
+ this.motionY+=(y2-this.posY)*0.1D;
+ this.motionZ+=(z2-this.posZ)*0.1D;
+ }
+ double d3 = this.getDistanceSq(x0,y0,z0);
+ if(d3>1D)
+ {
+ this.motionX+=(x0-this.posX)*0.1D;
+ this.motionY+=(y0-this.posY)*0.1D;
+ this.motionZ+=(z0-this.posZ)*0.1D;
+ }
+ }
+ this.motionY-=0.005D;
+ }
+ }
+ if(this.onGround)
+ {
+ this.motionY *= -0.5D;
+ }
+ this.motionX*=0.9D;
+ this.motionY*=0.9D;
+ this.motionZ*=0.9D;
+ if(worldObj.isRemote)
+ {
+ float movvmentSpeed=0.05f;
+ this.renderPosX=this.renderPosX*(1f-movvmentSpeed)+(float) this.prevPosX*movvmentSpeed;
+ this.renderPosY=this.renderPosY*(1f-movvmentSpeed)+(float) this.prevPosY*movvmentSpeed;
+ this.renderPosZ=this.renderPosZ*(1f-movvmentSpeed)+(float) this.prevPosZ*movvmentSpeed;
+ float xi,yi,zi;
+ float x0=xi=(float)this.prevPosX;
+ float y0=yi=(float)this.prevPosY;
+ float z0=zi=(float)this.prevPosZ;
+ float dx0=this.dx0;
+ float dy0=this.dy0;
+ float dz0=this.dz0;
+ float dx1=this.virtualNodePosX-xi;
+ float dy1=this.virtualNodePosY-yi;
+ float dz1=this.virtualNodePosZ-zi;
+ if(this.nextAnchorEntity!=null)
+ {
+ dx1=(float) (this.nextAnchorEntity.prevPosX-xi);
+ dy1=(float) (this.nextAnchorEntity.prevPosY-yi);
+ dz1=(float) (this.nextAnchorEntity.prevPosZ-zi);
+ }
+ if(this.prevAnchorEntity==null)
+ {
+ this.renderPosX=x0=xi=this.virtualNodePosX;
+ this.renderPosY=y0=yi=this.virtualNodePosY;
+ this.renderPosZ=z0=zi=this.virtualNodePosZ;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ if(((NodeEntity)this.nextAnchorEntity).nextAnchorEntity!=null)
+ {
+ Entity nne = ((NodeEntity)this.nextAnchorEntity).nextAnchorEntity;
+ dx1=(float) (nne.prevPosX-xi);
+ dy1=(float) (nne.prevPosY-yi);
+ dz1=(float) (nne.prevPosZ-zi);
+ }
+ else
+ {
+ dx1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosX-xi);
+ dy1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosY-yi);
+ dz1=(float) (((NodeEntity) this.nextAnchorEntity).virtualNodePosZ-zi);
+ }
+ }
+ float x1=this.virtualNodePosX;
+ float y1=this.virtualNodePosY;
+ float z1=this.virtualNodePosZ;
+ if(this.nextAnchorEntity!=null)
+ {
+ x1=(float)this.nextAnchorEntity.prevPosX;
+ y1=(float)this.nextAnchorEntity.prevPosY;
+ z1=(float)this.nextAnchorEntity.prevPosZ;
+ }
+ int i1=0;
+ for(float i=1f/n;i<=1f+1f/n;i+=1f/n,i1++)
+ {
+ float dxi = xi;
+ float dyi = yi;
+ float dzi = zi;
+ xi=(dx1-2*x1+2*dx0+2*x0-dx0)*i*i*i+(3*x1-dx1-3*dx0-3*x0+dx0)*i*i+dx0*i+x0;
+ yi=(dy1-2*y1+2*dy0+2*y0-dy0)*i*i*i+(3*y1-dy1-3*dy0-3*y0+dy0)*i*i+dy0*i+y0;
+ zi=(dz1-2*z1+2*dz0+2*z0-dz0)*i*i*i+(3*z1-dz1-3*dz0-3*z0+dz0)*i*i+dz0*i+z0;
+ int blockX=(int)xi;
+ int blockY=(int)yi;
+ int blockZ=(int)zi;
+ dxi-=xi;
+ dyi-=yi;
+ dzi-=zi;
+ double var7 = MathHelper.sqrt_double(dxi * dxi + dzi * dzi);
+ float var9 = (float)(Math.atan2(dzi, dxi) * 180.0D / Math.PI) - 90.0F;
+ float var10 = (float)(-(Math.atan2(dyi, var7) * 180.0D / Math.PI));
+ float rotationPitch = (float) Math.atan2(dxi, dzi);
+ float rotationYaw = (float) (-Math.atan2(dyi, var7));
+ rotationPitchArray[i1]=rotationPitch;
+ rotationYawArray[i1]=rotationYaw;
+ translationX[i1]=dxi;
+ translationY[i1]=dyi;
+ translationZ[i1]=dzi;
+ }
+ if(this.nextAnchorEntity instanceof NodeEntity)
+ {
+ NodeEntity next = (NodeEntity) this.nextAnchorEntity;
+ next.dx0=dx1;
+ next.dy0=dy1;
+ next.dz0=dz1;
+ }
+ }
+ if(--this.checkTimer<=0)
+ {
+ if(!worldObj.isRemote)
+ {
+ WorldServer world = MinecraftServer.getServer().worldServerForDimension(this.anchorDimensionId);
+ TileEntity te = world.getTileEntity(this.anchorX, this.anchorY, this.anchorZ);
+ if(te==null || !(te instanceof ICableHolder || te instanceof AnchorTileEntity))
+ {
+ this.setDead();
+ }
+ }
+ this.checkTimer=200;
+ }
+ }
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound nbt)
+ {
+ this.noClip=nbt.getBoolean("noClip");
+ this.setChainUniqueID(nbt.getInteger("chainUniqueID"));
+ this.chainArrangeNumber=nbt.getInteger("chainArrangeNumber");
+ this.anchorX=nbt.getInteger("anchorX");
+ this.anchorY=nbt.getInteger("anchorY");
+ this.anchorZ=nbt.getInteger("anchorZ");
+ this.anchorFacing=nbt.getShort("anchorFacing");
+ this.anchorDimensionId=nbt.getInteger("anchorDimensionId");
+ this.type=nbt.getInteger("type");
+ this.colorIndex=nbt.getInteger("colorIndex");
+ if(nbt.hasKey("itemStack"))
+ {
+ NBTTagCompound stackTag = (NBTTagCompound) nbt.getTag("itemStack");
+ this.attachedItem = ItemStack.loadItemStackFromNBT(stackTag);
+ }
+ if(nbt.hasKey("width"))
+ {
+ this.setSize(nbt.getFloat("width"), nbt.getFloat("height"));
+ }
+ this.virtualNodePosX=nbt.getFloat("virtualNodePosX");
+ this.virtualNodePosY=nbt.getFloat("virtualNodePosY");
+ this.virtualNodePosZ=nbt.getFloat("virtualNodePosZ");
+ }
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound nbt)
+ {
+ nbt.setFloat("width", this.width);
+ nbt.setFloat("height", this.height);
+ nbt.setBoolean("noClip", noClip);
+ nbt.setInteger("chainUniqueID", this.getChainUniqueID());
+ nbt.setInteger("chainArrangeNumber", this.chainArrangeNumber);
+ nbt.setInteger("anchorX", this.anchorX);
+ nbt.setInteger("anchorY", this.anchorY);
+ nbt.setInteger("anchorZ", this.anchorZ);
+ nbt.setShort("anchorFacing",this.anchorFacing);
+ nbt.setInteger("anchorDimensionId",this.anchorDimensionId);
+ nbt.setInteger("type", this.type);
+ nbt.setInteger("colorIndex", this.colorIndex);
+ if(this.attachedItem!=null)
+ {
+ NBTTagCompound stackTag = new NBTTagCompound();
+ this.attachedItem.writeToNBT(stackTag);
+ nbt.setTag("itemStack",stackTag);
+ }
+ nbt.setFloat("virtualNodePosX",this.virtualNodePosX);
+ nbt.setFloat("virtualNodePosY",this.virtualNodePosY);
+ nbt.setFloat("virtualNodePosZ",this.virtualNodePosZ);
+ }
+
+ public void setAnchor(int x, int y, int z, short facing, int dimensionId)
+ {
+ this.anchorX=x;
+ this.anchorY=y;
+ this.anchorZ=z;
+ this.anchorFacing=facing;
+ this.anchorDimensionId=dimensionId;
+ }
+
+ public boolean playerHasItemStack(EntityPlayer player)
+ {
+ int var2;
+
+ for (var2 = 0; var2 < player.inventory.armorInventory.length; ++var2)
+ {
+ if (player.inventory.armorInventory[var2] != null && player.inventory.armorInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.armorInventory[var2].stackTagCompound==null?false:player.inventory.armorInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ for (var2 = 0; var2 < player.inventory.mainInventory.length; ++var2)
+ {
+ if (player.inventory.mainInventory[var2] != null && player.inventory.mainInventory[var2].isItemEqual(this.attachedItem))
+ {
+ return player.inventory.mainInventory[var2].stackTagCompound==null?false:player.inventory.mainInventory[var2].stackTagCompound.getInteger("chainUID")==this.attachedItem.stackTagCompound.getInteger("chainUID");
+ }
+ }
+
+ return false;
+ }
+
+ public int getChainUniqueID() {
+ return chainUniqueID;
+ }
+
+ public void setChainUniqueID(int chainUniqueID) {
+ this.chainUniqueID = chainUniqueID;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBox(Entity entity)
+ {
+ if(this.noClip)
+ {
+ return null;
+ }
+ else
+ {
+ return super.getCollisionBox(entity);
+ }
+ }
+
+ @Override
+ public int getId()
+ {
+ return this.getEntityId();
+ }
+
+ @Override
+ public void recieveData(ByteBufInputStream byteBufInputStream)
+ {
+ try
+ {
+ this.setChainUniqueID(byteBufInputStream.readInt());
+ this.chainArrangeNumber=byteBufInputStream.readInt();
+ this.type=byteBufInputStream.readByte();
+ this.colorIndex=byteBufInputStream.readInt();
+ this.virtualNodePosX=byteBufInputStream.readFloat();
+ this.virtualNodePosY=byteBufInputStream.readFloat();
+ this.virtualNodePosZ=byteBufInputStream.readFloat();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ public boolean isInvalid()
+ {
+ return this.isDead;
+ }
+
+ public void setVirtualNodePosToNearestPortal()
+ {
+ int x0 = (int)this.posX;
+ int y0 = (int)this.posY;
+ int z0 = (int)this.posZ;
+ for(int xi=x0-2;xi<=x0+2;xi++)
+ {
+ for(int yi=y0-2;yi<=y0+2;yi++)
+ {
+ for(int zi=z0-2;zi<=z0+2;zi++)
+ {
+ Block block = worldObj.getBlock(xi, yi, zi);
+ if(block==Blocks.portal||block==Blocks.end_portal)
+ {
+ this.setVirtualNodePos(xi+0.5f, yi+0.5f, zi+0.5f);
+ return;
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d7200b148e00151544f45b8684d31e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d7200b148e00151544f45b8684d31e
new file mode 100644
index 0000000..7193215
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d7200b148e00151544f45b8684d31e
@@ -0,0 +1,376 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.ChunkCache;
+import net.minecraft.world.Explosion;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
+
+public class EntityIHLExplosion extends Entity {
+ private Explosion explosion;
+ private boolean explosionDone=false;
+ private Set<Long> sv;
+ public Set<Long> effectBorderBlocks;
+ public Set<Long> effectBorderBlocksWithLowPosition;
+ public Set<Long> blocksConnectedWithBedrock;
+ public Set<Long> blocksNotConnectedWithBedrock;
+ public Map<Long,Integer> drops;
+ public int explosionPower;
+ public int x;
+ public int y;
+ public int z;
+ private Chunk[][] chunkArray;
+ private ExtendedBlockStorage[][][] esbArray;
+ private int[][][] esbHardness;
+ private boolean[][][] entityCached;
+ private Map<Long,Entity> entityCache = new HashMap();
+ public int multiplier;
+ private int chunkX;
+ private int chunkZ;
+ public DamageSource damageSource;
+
+ public EntityIHLExplosion(World world,int x1,int y1,int z1, int explosionPower1) {
+ super(world);
+ this.effectBorderBlocks=new HashSet();
+ this.effectBorderBlocksWithLowPosition=new HashSet();
+ this.blocksConnectedWithBedrock=new HashSet();
+ this.blocksNotConnectedWithBedrock=new HashSet();
+ this.drops=new HashMap();
+ this.isImmuneToFire=true;
+ this.noClip=true;
+ this.setSize(0F, 0F);
+ this.x=x1;
+ this.y=y1;
+ this.z=z1;
+ this.setPosition(x+0.5d, y+0.5d, z+0.5d);
+ this.explosionPower = explosionPower1;
+ this.multiplier = Math.min(4,Math.max(this.explosionPower/16000,1));
+ int areaSize = 32*multiplier;
+ this.explosion=new Explosion(world, this, this.posX, this.posY, this.posZ, 4.0f);
+ chunkX = x-areaSize >> 4;
+ chunkZ = z-areaSize >> 4;
+ int var9 = x+areaSize >> 4;
+ int var10 = z+areaSize >> 4;
+ this.chunkArray = new Chunk[var9 - this.chunkX + 1][var10 - this.chunkZ + 1];
+ this.esbArray = new ExtendedBlockStorage[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ this.entityCached = new boolean[var9 - this.chunkX + 1][var10 - this.chunkZ + 1][16];
+ int var11;
+ int var12;
+ Chunk var13;
+ for (var11 = chunkX; var11 <= var9; ++var11)
+ {
+ for (var12 = chunkZ; var12 <= var10; ++var12)
+ {
+ var13 =this.worldObj.getChunkFromChunkCoords(var11, var12);
+
+ if (var13 != null)
+ {
+ this.chunkArray[var11 - this.chunkX][var12 - this.chunkZ] = var13;
+ this.esbArray[var11 - this.chunkX][var12 - this.chunkZ] = var13.getBlockStorageArray();
+ for(int eay=0;eay<this.entityCached[var11 - this.chunkX][var12 - this.chunkZ].length;eay++)
+ {
+ this.entityCached[var11 - this.chunkX][var12 - this.chunkZ][eay] = false;
+ }
+ }
+ }
+ }
+ this.precalculateESBHardness();
+ damageSource = DamageSource.setExplosionSource(this.explosion);
+ }
+
+ private void precalculateESBHardness()
+ {
+ for(int x1=0;x1<this.esbArray.length;x1++)
+ {
+ ExtendedBlockStorage[][] esb3 = this.esbArray[x1];
+ for(int z2=0;z2<esb3.length;z2++)
+ {
+ ExtendedBlockStorage[] esb2 = esb3[z2];
+ for(int y3=0;y3<esb2.length;y3++)
+ {
+ ExtendedBlockStorage esb = esb2[y3];
+ if(esb.isEmpty())
+ {
+ this.esbHardness[x1][z2][y3]=0;
+ }
+ else
+ {
+ byte[] lbsArray = esb.getBlockLSBArray();
+ for(int i4=0;i4<lbsArray.length;i4++)
+ {
+ int var4 = lbsArray[i4] & 255;
+
+ if (esb.getBlockMSBArray() != null)
+ {
+ var4 |= esb.getBlockMSBArray().get(i4>>8, (i4>>4) & 4095, i4 & 4095) << 8;
+ }
+ this.esbHardness[x1][z2][y3]+=Math.round(Block.getBlockById(var4).getExplosionResistance(this, worldObj, (i4>>8)+(x1<<4), ((i4>>4) & 4095)+(y3<<4), (i4 & 4095)+(z2<<4), this.x, this.y, this.z)*10f);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onUpdate()
+ {
+ if(!effectBorderBlocks.isEmpty())
+ {
+ boolean hasSomeBlocksStickedToAir=false;
+ Iterator<Long> ebbi = effectBorderBlocks.iterator();
+ while(ebbi.hasNext())
+ {
+ long longNumber = ebbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(block!=Blocks.air && !block.isAir(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]))
+ {
+ if(block.getMaterial().isLiquid())
+ {
+ block.onNeighborBlockChange(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], block);
+ }
+ else if(!this.isBlockConnectedWithBedrock(longNumber))
+ {
+ hasSomeBlocksStickedToAir=true;
+ }
+ }
+ }
+ Iterator<Long> bnctbi = this.blocksNotConnectedWithBedrock.iterator();
+ while(bnctbi.hasNext())
+ {
+ long longNumber5 = bnctbi.next();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber5);
+ Block block = worldObj.getBlock(x+xyz[0], y+xyz[1], z+xyz[2]);
+ float bh = block.getBlockHardness(worldObj, x+xyz[0], y+xyz[1], z+xyz[2]);
+ if(bh>=0f && bh<Float.MAX_VALUE)
+ {
+ block.onBlockDestroyedByExplosion(worldObj, x+xyz[0], y+xyz[1], z+xyz[2], explosion);
+ this.setBlockToAir(x, y, z);
+ }
+ }
+
+ }
+ while(!this.explosionDone)
+ {
+ update();
+ }
+ }
+
+ private boolean isBlockConnectedWithBedrock(long longNumber)
+ {
+ if(this.blocksNotConnectedWithBedrock.contains(longNumber))
+ {
+ return false;
+ }
+ Set<Long> path = new HashSet();
+ Iterator<Long> pathi = path.iterator();
+ Set<Long> deadlockBlocks = new HashSet();
+ int[] xyz = IHLUtils.decodeXYZ(longNumber);
+ int absX=x+xyz[0];
+ int absY=y+xyz[1];
+ int absZ=z+xyz[2];
+ path.add(longNumber);
+ while(absY>4)
+ {
+ int xyzi[] = {0,0,-1,0,0,1,0,0};
+ Block block;
+ int x2,y2,z2;
+ boolean deadlock = true;
+ for(int i=0;i<=5;i++)
+ {
+ x2=absX+xyzi[i];
+ y2=absY+xyzi[i+2];
+ z2=absZ+xyzi[i+1];
+ long longNumber2 = IHLUtils.encodeXYZ(x2-x, y2-y, z2-z);
+ if(this.blocksConnectedWithBedrock.contains(longNumber2))
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ if(!path.contains(longNumber2))
+ {
+ block = worldObj.getBlock(x2,y2,z2);
+ if(block!=Blocks.air && !block.isAir(worldObj, x2,y2,z2) && !block.getMaterial().isLiquid())
+ {
+ absX=x2;
+ absY=y2;
+ absZ=z2;
+ path.add(longNumber2);
+ if(absY<=4)
+ {
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+ deadlock = false;
+ break;
+ }
+ }
+ }
+ if(deadlock)
+ {
+ long longNumber3 = IHLUtils.encodeXYZ(absX-x, absY-y, absZ-z);
+ deadlockBlocks.add(longNumber3);
+ boolean deadEnd=true;
+ while(pathi.hasNext())
+ {
+ long longNumber4 = pathi.next();
+ if(!deadlockBlocks.contains(longNumber4))
+ {
+ int[] xyz2 = IHLUtils.decodeXYZ(longNumber4);
+ absX=x+xyz2[0];
+ absY=y+xyz2[1];
+ absZ=z+xyz2[2];
+ deadEnd=false;
+ break;
+ }
+ }
+ if(deadEnd)
+ {
+ this.blocksNotConnectedWithBedrock.addAll(path);
+ return false;
+ }
+ }
+ }
+ this.blocksConnectedWithBedrock.addAll(path);
+ return true;
+ }
+
+ public void update()
+ {
+ Set<Long> sv2=new HashSet();
+ if(sv==null)
+ {
+ sv = IHLMod.explosionHandler.startVectors;
+ IHLMod.explosionHandler.setPower(explosionPower);
+ System.out.println("Start");
+ }
+ for(long ev:sv)
+ {
+ Set<Long> sv3 = IHLMod.explosionHandler.breakBlocksAndGetDescendants(this.worldObj, this, this.explosion, ev);
+ if(sv3!=null)
+ {
+ sv2.addAll(sv3);
+ }
+ }
+ if(sv2.isEmpty())
+ {
+ explosionDone=true;
+ System.out.println("End");
+ }
+ else
+ {
+ sv=sv2;
+ }
+ }
+
+ @Override
+ protected void entityInit() {}
+
+ @Override
+ protected void readEntityFromNBT(NBTTagCompound arg0) {}
+
+ @Override
+ protected void writeEntityToNBT(NBTTagCompound arg0) {}
+
+ public Block getBlock(int x1, int y1, int z1)
+ {
+ Block var4 = Blocks.air;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var4 = var7.getBlock(x1 & 15, y1, z1 & 15);
+ }
+ }
+ }
+ return var4;
+ }
+
+ public void setBlockToAir(int x1, int y1, int z1)
+ {
+ if (y1 >= 0 && y1 < 256)
+ {
+ int var5 = (x1 >> 4) - this.chunkX;
+ int var6 = (z1 >> 4) - this.chunkZ;
+ if (var5 >= 0 && var5 < this.chunkArray.length && var6 >= 0 && var6 < this.chunkArray[var5].length)
+ {
+ Chunk var7 = this.chunkArray[var5][var6];
+ if (var7 != null)
+ {
+ var7.func_150807_a(x1 & 15, y1, z1 & 15, Blocks.air, 0);
+ this.worldObj.markBlockForUpdate(x1, y1, z1);
+ }
+ }
+ }
+ }
+
+ public Entity getEntity(int x1, int y1, int z1)
+ {
+ int x2 = x1-x;
+ int y2 = y1-y;
+ int z2 = z1-z;
+ if (y1 >= 0 && y1 < 256)
+ {
+ int cax = (x1 >> 4) - this.chunkX;
+ int caz = (z1 >> 4) - this.chunkZ;
+ int eay = (y1 >> 4);
+ if (cax >= 0 && cax < this.entityCached.length && caz >= 0 && caz < this.entityCached[cax].length && eay<=16)
+ {
+ if(this.entityCached[cax][caz][eay])
+ {
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ else
+ {
+ Chunk var7 = this.chunkArray[cax][caz];
+ if (var7 != null)
+ {
+ for(Object entityo:var7.entityLists[eay])
+ {
+ Entity entity=(Entity) entityo;
+ int x3 = (int)entity.posX-x;
+ int y3 = (int)entity.posY-y;
+ int z3 = (int)entity.posZ-z;
+ long key = IHLUtils.encodeXYZ(x3, y3, z3);
+ this.entityCache.put(key, entity);
+ if(entity.height>1f && y3<254)
+ {
+ long key2 = IHLUtils.encodeXYZ(x3, y3+1, z3);
+ this.entityCache.put(key2, entity);
+ }
+ }
+ }
+ this.entityCached[cax][caz][eay]=true;
+ return this.entityCache.get(IHLUtils.encodeXYZ(x2, y2, z2));
+ }
+ }
+ }
+ return null;
+ }
+
+ public int getEBSResistance(int x2, int y2, int z2)
+ {
+ return this.esbHardness[x2][z2][y2];
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d88773a7ca001510f7df4278c93a7e b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d88773a7ca001510f7df4278c93a7e
new file mode 100644
index 0000000..4324a89
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/a0d88773a7ca001510f7df4278c93a7e
@@ -0,0 +1,934 @@
+package ihl.utils;
+
+import ic2.api.recipe.IRecipeInput;
+import ic2.api.recipe.RecipeInputItemStack;
+import ic2.api.recipe.RecipeInputOreDict;
+import ic2.api.recipe.Recipes;
+import ic2.core.BasicMachineRecipeManager;
+import ic2.core.block.invslot.InvSlotOutput;
+import ihl.IHLMod;
+import ihl.interfaces.IWire;
+import ihl.metallurgy.constants.*;
+import ihl.processing.invslots.InvSlotConsumableLiquidIHL;
+import ihl.recipes.IRecipeInputFluid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class IHLUtils
+{
+ private static Map<String,ItemStack> ihlItemStackRegistry = new HashMap();
+
+ public static void registerLocally(String name, ItemStack stack)
+ {
+ ihlItemStackRegistry.put(name, stack);
+ }
+
+ public static ItemStack getOreDictItemStack(String name)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=1;
+ return orecopy;
+ }
+
+ public static boolean hasOreDictionaryEntry(String name)
+ {
+ return !OreDictionary.getOres(name).isEmpty();
+ }
+
+ public static Item getOreDictItem(String name)
+ {
+ return OreDictionary.getOres(name).get(0).getItem();
+ }
+
+ public static Block getOreDictBlock(String name)
+ {
+ return Block.getBlockFromItem(OreDictionary.getOres(name).get(0).getItem());
+ }
+
+ public static ItemStack getOreDictItemStackWithSize(String name, int size)
+ {
+ ItemStack ore = OreDictionary.getOres(name).get(0);
+ if(ore==null)return null;
+ ItemStack orecopy = ore.copy();
+ orecopy.stackSize=size;
+ return orecopy;
+ }
+
+ public static String getFirstOreDictName(ItemStack stack)
+ {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ if(arrayIDs.length>0)
+ {
+ return OreDictionary.getOreName(arrayIDs[0]);
+ }
+ return "";
+ }
+
+ public static ItemStack getThisModItemStack(String name)
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithSize(String name, int i) {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ ItemStack stack = ihlItemStackRegistry.get(name).copy();
+ stack.stackSize=i;
+ return stack;
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name),i);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name),i);
+ }
+ }
+
+ public static ItemStack getOtherModItemStackWithDamage(String modname, String name,int damage) {
+ if(GameRegistry.findItem(modname, name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem(modname, name),1,damage);
+ }
+ else if(GameRegistry.findBlock(modname, name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock(modname, name),1,damage);
+ }
+ }
+
+ public static Item getThisModItem(String name)
+ {
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return GameRegistry.findItem("ihl", name);
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ else
+ {
+ return Item.getItemFromBlock(GameRegistry.findBlock("ihl", name));
+ }
+ }
+
+ public static FluidStack getFluidStackWithSize(String name, int i) {
+ if(FluidRegistry.isFluidRegistered(name))
+ {
+ return FluidRegistry.getFluidStack(name, i);
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such fluid: "+name);
+ }
+ }
+
+ public static Block getThisModBlock(String name)
+ {
+ if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ throw new IllegalArgumentException("No such block in item registry: ihl:"+name);
+ }
+ else
+ {
+ return GameRegistry.findBlock("ihl", name);
+ }
+ }
+
+ public static ItemStack getThisModItemStackWithDamage(String name,
+ int value)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ stack.setItemDamage(value);
+ return stack;
+ }
+
+ public static boolean adjustWireLength(ItemStack stack, int adjustBy)
+ {
+ int length = getWireLength(stack);
+ if(length<=0)
+ {
+ return true;
+ }
+ else
+ {
+ int newLength = Math.max(length+adjustBy,0);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),newLength);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),newLength);
+ if(newLength==0)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public static int getWireLength(ItemStack itemStack)
+ {
+ return itemStack.stackTagCompound.getInteger(((IWire)itemStack.getItem()).getTag());
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(String name, int i) {
+ if(getThisModItemStack(name)!=null)
+ {
+ ItemStack stack = getThisModItemStack(name);
+ if(stack.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException("ihl:"+name + " is not an instance of IWire.");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("No such item in item registry: ihl:"+name);
+ }
+ }
+
+ public static ItemStack getThisModWireItemStackWithLength(ItemStack stack1, int i) {
+ ItemStack stack = stack1.copy();
+ if(stack1.getItem() instanceof IWire)
+ {
+ stack.stackTagCompound = new NBTTagCompound();
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTag(),i);
+ stack.stackTagCompound.setInteger(((IWire)stack.getItem()).getTagSecondary(),i);
+ return stack;
+ }
+ else
+ {
+ throw new IllegalArgumentException(stack1.getUnlocalizedName() + " is not an instance of IWire.");
+ }
+ }
+
+ public static boolean isItemsHaveSameOreDictionaryEntry(ItemStack is, ItemStack is1)
+ {
+ int[] odids1 = OreDictionary.getOreIDs(is);
+ int[] odids2 = OreDictionary.getOreIDs(is1);
+ if(odids1!=null && odids1.length>0 && odids2!=null && odids2.length>0)
+ {
+ for(int i1=0;i1<odids1.length;i1++)
+ {
+ for(int i2=0;i2<odids2.length;i2++)
+ {
+ if(!OreDictionary.getOreName(odids1[i1]).contains("Any") && odids1[i1]==odids2[i2])
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static List<ItemStack> getEntryListForOre(String name)
+ {
+ ArrayList<ItemStack> outputList = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> oreList = OreDictionary.getOres(name);
+ Iterator<ItemStack> oreListIterator = oreList.iterator();
+ while(oreListIterator.hasNext())
+ {
+ outputList.add(oreListIterator.next().copy());
+ }
+ return outputList;
+ }
+
+ public static ItemStack getItemStackIfExist(String name)
+ {
+ if(hasOreDictionaryEntry(name))
+ {
+ return getOreDictItemStack(name);
+ }
+ else
+ {
+ if(ihlItemStackRegistry.get(name)!=null)
+ {
+ return ihlItemStackRegistry.get(name).copy();
+ }
+ if(GameRegistry.findItem("ihl", name)!=null)
+ {
+ return new ItemStack(GameRegistry.findItem("ihl", name));
+ }
+ else if(GameRegistry.findBlock("ihl", name)==null)
+ {
+ return null;
+ }
+ else
+ {
+ return new ItemStack(GameRegistry.findBlock("ihl", name));
+ }
+ }
+ }
+
+ public static FluidStack getFluidStackIfExist(String string, int meltingFluidAmount)
+ {
+ if(FluidRegistry.isFluidRegistered(string))
+ {
+ return getFluidStackWithSize(string,meltingFluidAmount);
+ }
+ return null;
+ }
+
+ public static boolean addItemStackToInventory(EntityPlayer player, ItemStack stack)
+ {
+ ItemStack[] inv = player.inventory.mainInventory;
+ for (int i=0;i<=35;i++)
+ {
+ if(inv[i]!=null)
+ {
+ if(inv[i].getItem()==stack.getItem())
+ {
+ if(inv[i].getItemDamage()==stack.getItemDamage() && inv[i].stackSize<inv[i].getMaxStackSize())
+ {
+ inv[i].stackSize+=stack.stackSize;
+ if(inv[i].stackSize>inv[i].getMaxStackSize())
+ {
+ stack.stackSize=inv[i].stackSize-inv[i].getMaxStackSize();
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ inv[i]=stack;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static FluidStack getFluidStackWithSizeChemicallyPure(String name, int amount)
+ {
+ FluidStack fstack = getFluidStackWithSize(name, amount);
+ fstack.tag=new NBTTagCompound();
+ fstack.tag.setBoolean("chemicallyPure", true);
+ return fstack;
+ }
+
+ public static void removeItemStackFromOreDictionaryEntry(String orename, ItemStack itemStack)
+ {
+ ArrayList<ItemStack> orelist = OreDictionary.getOres(orename);
+ Iterator<ItemStack> oreListIterator = orelist.iterator();
+ ItemStack odstack = null;
+ while(oreListIterator.hasNext())
+ {
+ odstack = oreListIterator.next();
+ if(odstack.getItem()==itemStack.getItem())
+ {
+ break;
+ }
+ else
+ {
+ odstack = null;
+ }
+ }
+ if(odstack != null)
+ {
+ orelist.remove(odstack);
+ IHLMod.log.debug("Stack "+odstack.getDisplayName()+" ("+odstack.toString()+")"+" removed from ore entry '"+orename+"'");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ ((BasicMachineRecipeManager)Recipes.macerator).addRecipe(new RecipeInputOreDict(input), new NBTTagCompound(), true, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(String input, int stacksize, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(getOreDictItemStackWithSize(input,stacksize), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputOreDict(input,stacksize), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2MaceratorRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.macerator.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.macerator.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 macerator recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(ItemStack input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(input, false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputItemStack(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input.getDisplayName()+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2RollingRecipe(String input, ItemStack output)
+ {
+ if(Recipes.metalformerRolling.getOutputFor(getThisModItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ Recipes.metalformerRolling.addRecipe(new RecipeInputOreDict(input), tag, output);
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 metal former (rolling) recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void addIC2CentrifugeRecipe(String input, ItemStack output, ItemStack output2)
+ {
+ if(Recipes.centrifuge.getOutputFor(getOreDictItemStack(input), false)==null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("minHeat", 2000);
+ Recipes.centrifuge.addRecipe(new RecipeInputOreDict(input), tag, new ItemStack[] {output,output2});
+ }
+ else
+ {
+ //IHLMod.log.info("IC2 centrifuge recipe for "+input+" already exist. Skipped.");
+ }
+ }
+
+ public static void damageItemViaNBTTag(ItemStack stack, int amount)
+ {
+ NBTTagCompound gtTagCompound;
+ if(stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+ int damage = 0;
+ int maxDamage = 0;
+ if(gtTagCompound.hasKey("MaxDamage"))
+ {
+ maxDamage = gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ stack.stackSize--;
+ return;
+ }
+
+ if(gtTagCompound.hasKey("Damage"))
+ {
+ damage = gtTagCompound.getInteger("Damage");
+ }
+ if(damage<maxDamage-amount)
+ {
+ damage+=amount;
+ gtTagCompound.setInteger("Damage",damage);
+ gtTagCompound.setInteger("MaxDamage",maxDamage);
+ stack.stackTagCompound.setTag("GT.ToolStats", gtTagCompound);
+ }
+ else
+ {
+ stack.stackSize--;
+ }
+ }
+
+ public static int getDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("Damage"))
+ {
+ return gtTagCompound.getInteger("Damage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static int getMaxDamageValueViaNBTTag(ItemStack stack)
+ {
+ NBTTagCompound gtTagCompound = null;
+ if(stack!=null && stack.stackTagCompound.hasKey("GT.ToolStats"))
+ {
+ gtTagCompound = stack.stackTagCompound.getCompoundTag("GT.ToolStats");
+ }
+ else
+ {
+ return 0;
+ }
+ if(gtTagCompound!=null && gtTagCompound.hasKey("MaxDamage"))
+ {
+ return gtTagCompound.getInteger("MaxDamage");
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, ItemStack stack2, boolean useOreDictionary)
+ {
+ if(useOreDictionary && isItemsHaveSameOreDictionaryEntry(stack1,stack2))
+ {
+ return true;
+ }
+ else
+ {
+ if(stack1.getItemDamage()==OreDictionary.WILDCARD_VALUE || stack2.getItemDamage()==OreDictionary.WILDCARD_VALUE)
+ {
+ return stack1.getItem()==stack2.getItem();
+ }
+ else
+ {
+ return stack1.getItem()==stack2.getItem() && stack1.getItemDamage()==stack2.getItemDamage();
+ }
+ }
+ }
+
+ public static boolean isItemStacksIsEqual(ItemStack stack1, String stack2name, boolean useOreDictionary)
+ {
+ return isItemStacksIsEqual(stack1, getThisModItemStack(stack2name),useOreDictionary);
+ }
+
+ public static boolean isIRecipeInputMatchesWithAmount(IRecipeInput input, ItemStack stack)
+ {
+ if(input.matches(stack))
+ {
+ if(stack.getItem() instanceof IWire)
+ {
+ return getWireLength(stack)>=input.getAmount();
+ }
+ else
+ {
+ return stack.stackSize>=input.getAmount();
+ }
+ }
+ return false;
+ }
+
+ public static boolean reduceItemStackAmountUsingIRecipeInput(IRecipeInput input, ItemStack stack) {
+ if(stack.getItem() instanceof IWire)
+ {
+ return adjustWireLength(stack,-input.getAmount());
+ }
+ else
+ {
+ stack.stackSize-=input.getAmount();
+ return stack.stackSize<=0;
+ }
+ }
+
+ public static String getFirstOreDictNameExcludingTagAny(ItemStack stack) {
+ int[] arrayIDs = OreDictionary.getOreIDs(stack);
+ for(int i=0;i<arrayIDs.length;i++)
+ {
+ if(!OreDictionary.getOreName(arrayIDs[i]).contains("Any"))
+ {
+ return OreDictionary.getOreName(arrayIDs[i]);
+ }
+ }
+ return "";
+ }
+
+ public static void handleFluidSlotsBehaviour(InvSlotConsumableLiquidIHL fillInputSlot, InvSlotConsumableLiquidIHL drainInputSlot, InvSlotOutput emptyFluidItemsSlot, IFluidTank fluidTank)
+ {
+ MutableObject output;
+ if (drainInputSlot!=null && !drainInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if(fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, true),false)>0 && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fluidTank.fill(drainInputSlot.drain(null, fluidTank.getCapacity()-fluidTank.getFluidAmount(), output, false),true);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ if (fillInputSlot!=null && !fillInputSlot.isEmpty())
+ {
+ output = new MutableObject();
+ if (fillInputSlot.transferFromTank(fluidTank, output, true) && (output.getValue() == null || emptyFluidItemsSlot.canAdd((ItemStack)output.getValue())))
+ {
+ fillInputSlot.transferFromTank(fluidTank, output, false);
+ if(output.getValue()!=null)
+ {
+ emptyFluidItemsSlot.add((ItemStack)output.getValue());
+ }
+ }
+ }
+ }
+ public static double[] tracePlayerView(EntityPlayer entityplayer)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+ if (entityplayer.worldObj!=null && entityplayer.worldObj.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+ double z = entityplayer.posZ;
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 1.0D;
+ return new double[] {x+f7 * d3, y+f6 * d3, z+f9 * d3};
+ }
+
+ public static MovingObjectPosition returnMOPFromPlayer(EntityPlayer entityplayer, World world)
+ {
+ float f1 = entityplayer.rotationPitch;
+ float f2 = entityplayer.rotationYaw;
+ double x = entityplayer.posX;
+ double y =entityplayer.posY + entityplayer.getEyeHeight();
+
+ if (world.isRemote)
+ {
+ y -= entityplayer.getDefaultEyeHeight();
+ }
+
+ double z = entityplayer.posZ;
+ Vec3 vec3d = Vec3.createVectorHelper(x, y, z);
+ float f3 = MathHelper.cos(-f2 * 0.01745329F - (float)Math.PI);
+ float f4 = MathHelper.sin(-f2 * 0.01745329F - (float)Math.PI);
+ float f5 = -MathHelper.cos(-f1 * 0.01745329F);
+ float f6 = MathHelper.sin(-f1 * 0.01745329F);
+ float f7 = f4 * f5;
+ float f9 = f3 * f5;
+ double d3 = 5.0D;
+ Vec3 vec3d1 = vec3d.addVector(f7 * d3, f6 * d3, f9 * d3);
+ MovingObjectPosition movingobjectposition = world.rayTraceBlocks(vec3d, vec3d1, true);
+
+ if (movingobjectposition == null)
+ {
+ return null;
+ }
+
+ if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
+ {
+ return movingobjectposition;
+ }
+ return null;
+ }
+
+ public static short getFacingFromPlayerView(EntityLivingBase player, boolean ignoreSneaking)
+ {
+ int var6 = MathHelper.floor_double(player.rotationPitch * 4.0F / 360.0F + 0.5D) & 3;
+ int var7 = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
+ {
+ if(var6==1)
+ {
+ return 1;
+ }
+ else if(var6==3)
+ {
+ return 0;
+ }
+ else
+ {
+ if(player.isSneaking() && !ignoreSneaking)
+ {
+ switch(var7)
+ {
+ case 0:
+ return 3;
+ case 1:
+ return 4;
+ case 2:
+ return 2;
+ case 3:
+ return 5;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch(var7)
+ {
+ case 0:
+ return 2;
+ case 1:
+ return 5;
+ case 2:
+ return 3;
+ case 3:
+ return 4;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ return 3;
+ }
+
+ public static int getChainID(ItemStack itemStack)
+ {
+ if(itemStack!=null && itemStack.stackTagCompound!=null && itemStack.stackTagCompound.hasKey("chainUID"))
+ {
+ return itemStack.stackTagCompound.getInteger("chainUID");
+ }
+ return -1;
+ }
+
+ public static List<ItemStack> convertRecipeInputToItemStackList(List<IRecipeInput> input)
+ {
+ Iterator<IRecipeInput> irii=input.iterator();
+ List<ItemStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInput iri = irii.next();
+ ItemStack stack = iri.getInputs().get(0);
+ stack.stackSize=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static List<FluidStack> convertRecipeInputToFluidStackList(List<IRecipeInputFluid> input) {
+ Iterator<IRecipeInputFluid> irii=input.iterator();
+ List<FluidStack> output = new ArrayList();
+ while(irii.hasNext())
+ {
+ IRecipeInputFluid iri = irii.next();
+ FluidStack stack = iri.getInputs().get(0);
+ stack.amount=iri.getAmount();
+ output.add(stack);
+ }
+ return output;
+ }
+
+ public static int[] decodeXYZ(long longNumber)
+ {
+ return new int[] {(int) ((longNumber>>30) & 0xfff)-256,(int) ((longNumber>>15) & 0xfff)-256,(int) (longNumber & 0xfff)-256};
+ }
+
+ public static long encodeXYZ(int x,int y,int z)
+ {
+ return (x+256L)<<30|((y+256L)<<15)|(z+256L);
+ }
+
+ public static int reduceVariableByAbsoluteValue(int variable)
+ {
+ if(variable==0)
+ {
+ return 0;
+ }
+ else if(variable<0)
+ {
+ return variable+1;
+ }
+ else
+ {
+ return variable-1;
+ }
+ }
+
+ public static long getXYZHash(int x,int y,int z)
+ {
+ return ((x&0x1FFFFF)<<42)|((y&0x1FFFFF)<<21)|(z&0x1FFFFF);
+ }
+
+ public static String trim(String str)
+ {
+ int len = str.length();
+ int start;
+ char c;
+ for (start = 0; start < len; ++start)
+ {
+ c = str.charAt(start);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ int end;
+ for (end = len - 1; end >= start; --end)
+ {
+ c = str.charAt(end);
+ if (c > 32 && c != 65279)
+ {
+ break;
+ }
+ }
+ return start <= 0 && end >= len - 1 ? str : str.substring(start, end + 1);
+ }
+
+ public static int getAmountOf(ItemStack is)
+ {
+ if(is.getItem() instanceof IWire)
+ {
+ return getWireLength(is);
+ }
+ else
+ {
+ return is.stackSize;
+ }
+ }
+
+ public static ItemStack getWireItemStackCopyWithLengthMultiplied(ItemStack stack, int multiplier)
+ {
+ ItemStack out = stack.copy();
+ adjustWireLength(out,getWireLength(stack)*(multiplier-1));
+ return out;
+ }
+
+ public static ItemStack getUninsulatedWire(String material, int length, int transverseSection) {
+ ItemStack is = getThisModItemStack("copperWire");
+ is.stackTagCompound=new NBTTagCompound();
+ is.stackTagCompound.setBoolean("firstConnection",false);
+ is.stackTagCompound.setInteger("fullLength", length);
+ is.stackTagCompound.setInteger("length", length);
+ is.stackTagCompound.setBoolean("firstConnection", false);
+ is.stackTagCompound.setString("material", material);
+ is.stackTagCompound.setInteger("transverseSection",transverseSection);
+ is.stackTagCompound.setInteger("resistance", ElectricConductor.getResistivity(material)*100/transverseSection);
+ return is;
+ }
+
+ public static ItemStack getInsulatedWire(String material, int length, int transverseSection, String insulationMaterial, int insulationThickness) {
+ ItemStack is = getUninsulatedWire(material, length, transverseSection);
+ is.stackTagCompound.setString("insulationMaterial",insulationMaterial);
+ is.stackTagCompound.setInteger("insulationThickness",insulationThickness);
+ is.stackTagCompound.setInteger("maxVoltage", getInsulationMaxVoltage(insulationMaterial, insulationThickness));
+ return is;
+ }
+
+ public static int getInsulationMaxVoltage(String insulationMaterial, int insulationThickness)
+ {
+ return Math.min(Insulation.getMaxVoltagePermm(insulationMaterial)*insulationThickness/10,Insulation.getMaxVoltageCap(insulationMaterial));
+ }
+
+ public static ItemStack getItemStackWithTag(String unLocalizedName, String tag, int tagValue) {
+ ItemStack stack = IHLUtils.getThisModItemStack(unLocalizedName);
+ if(stack.stackTagCompound==null)
+ {
+ stack.stackTagCompound=new NBTTagCompound();
+ }
+ stack.stackTagCompound.setInteger(tag, tagValue);
+ return stack;
+ }
+
+ public static boolean isSegmentInsideAABB(AxisAlignedBB collisionBox, double posX, double posY, double posZ, double posX2, double posY2, double posZ2)
+ {
+ if(isInsideofBoundingBox(collisionBox,(float)posX,(float)posY,(float)posZ)||isInsideofBoundingBox(collisionBox,(float)posX2,(float)posY2,(float)posZ2))
+ {
+ return true;
+ }
+ else
+ {
+ double minX=Math.min(posX, posX2);
+ double maxX=Math.max(posX, posX2);
+ double minY=Math.min(posY, posY2);
+ double maxY=Math.max(posY, posY2);
+ double minZ=Math.min(posZ, posZ2);
+ double maxZ=Math.max(posZ, posZ2);
+ return !(maxX<collisionBox.minX || minX>collisionBox.maxX ||
+ maxY<collisionBox.minY || minY>collisionBox.maxY ||
+ maxZ<collisionBox.minZ || minZ>collisionBox.maxZ);
+ }
+ }
+
+ public static boolean isInsideofBoundingBox(AxisAlignedBB bb, float xi, float yi, float zi)
+ {
+ return bb.maxX>xi && bb.minX<xi && bb.maxY>yi && bb.minY<yi && bb.maxZ>zi && bb.minZ<zi;
+ }
+
+ public static boolean isBlockCanBeReplaced(World world, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if(block==Blocks.air || block.isAir(world, x, y, z) || block == Blocks.vine || block == Blocks.tallgrass || block == Blocks.deadbush || block == Blocks.snow_layer || block == Blocks.snow)
+ {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/b0676a5333b500151a77dabf7b9b4d77 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/b0676a5333b500151a77dabf7b9b4d77
new file mode 100644
index 0000000..00f9ed9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/b0676a5333b500151a77dabf7b9b4d77
@@ -0,0 +1,526 @@
+package ihl.items_blocks;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import ic2.api.energy.tile.IEnergyTile;
+import ihl.IHLCreativeTab;
+import ihl.IHLMod;
+import ihl.IHLModInfo;
+import ihl.flexible_cable.AnchorTileEntity;
+import ihl.flexible_cable.NodeEntity;
+import ihl.flexible_cable.PowerCableNodeEntity;
+import ihl.interfaces.ICableHolder;
+import ihl.interfaces.IDataCableHolder;
+import ihl.interfaces.IEnergyNetNode;
+import ihl.interfaces.IWire;
+import ihl.utils.IHLUtils;
+
+public class FlexibleCableItem extends Item implements IWire {
+
+ @SideOnly(Side.CLIENT)
+ IIcon thickCopper,
+ thinIron,
+ thickIron,
+ insulatedCopperRawruber,
+ insulatedThickCopperRawruber,
+ insulatedIronRawruber,
+ insulatedThickIronRawruber,
+ insulatedCopperRuber,
+ insulatedThickCopperRuber,
+ insulatedIronRuber,
+ insulatedThickIronRuber;
+ public static FlexibleCableItem instance;
+ private final Set<String> yellowColoredWires = new HashSet(3);
+ protected boolean isDataCable=false;
+
+ public FlexibleCableItem()
+ {
+ super();
+ yellowColoredWires.add("Gold");
+ yellowColoredWires.add("Copper");
+ yellowColoredWires.add("Bronze");
+ this.setCreativeTab(IHLCreativeTab.tab);
+ this.setMaxStackSize(1);
+ instance=this;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item item, CreativeTabs tabs, List itemList)
+ {
+ itemList.add(IHLUtils.getUninsulatedWire("Copper", 160, 15));
+ itemList.add(IHLUtils.getUninsulatedWire("Copper", 160, 240));
+ itemList.add(IHLUtils.getUninsulatedWire("Steel", 160, 15));
+ itemList.add(IHLUtils.getUninsulatedWire("Steel", 160, 240));
+ itemList.add(IHLUtils.getInsulatedWire("Copper", 160, 15,"RawRubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Copper", 160, 240,"RawRubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Steel", 160, 15,"RawRubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Steel", 160, 240,"RawRubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Copper", 160, 15,"Rubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Copper", 160, 240,"Rubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Steel", 160, 15,"Rubber",100));
+ itemList.add(IHLUtils.getInsulatedWire("Steel", 160, 240,"Rubber",100));
+ }
+
+ public static void init()
+ {
+ GameRegistry.registerItem(new FlexibleCableItem(),"copperWire");
+ }
+
+ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10)
+ {
+ TileEntity t = world.getTileEntity(x, y, z);
+ short facing = IHLUtils.getFacingFromPlayerView(player, true);
+ if(!world.isRemote && t instanceof IEnergyTile && !(t instanceof AnchorTileEntity) && !(t instanceof ICableHolder))
+ {
+ ForgeDirection direction = ForgeDirection.getOrientation(facing);
+ x+=direction.offsetX;
+ y+=direction.offsetY;
+ z+=direction.offsetZ;
+ t=world.getTileEntity(x, y, z);
+ if(IHLUtils.isBlockCanBeReplaced(world, x,y,z))
+ {
+ world.setBlock(x, y, z, IHLMod.cableAnchorBlock);
+ }
+ else if(!(t instanceof AnchorTileEntity))
+ {
+ return false;
+ }
+ t=world.getTileEntity(x, y, z);
+ }
+ if(world.isRemote)world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, "step.stone", 1.0F, 0.8F);
+ if(!world.isRemote && t!=null &&
+ ((t instanceof IEnergyNetNode && !isDataCable) ||
+ (t instanceof AnchorTileEntity && !isDataCable) ||
+ (t instanceof IDataCableHolder && isDataCable)) &&
+ stack.stackTagCompound.getInteger("fullLength")>=1)
+ {
+ float ppx,ppy,ppz;
+ ICableHolder te;
+ if(t instanceof AnchorTileEntity)
+ {
+ te = ((AnchorTileEntity)t).energyNetNodes[facing];
+ }
+ else
+ {
+ te = (ICableHolder)t;
+ }
+ ppx=(float)te.getPortPos(player)[0];
+ ppy=(float)te.getPortPos(player)[1];
+ ppz=(float)te.getPortPos(player)[2];
+ if(stack.stackTagCompound.getBoolean("firstConnection"))
+ {
+ int x1 = stack.stackTagCompound.getInteger("connectorX");
+ int y1 = stack.stackTagCompound.getInteger("connectorY");
+ int z1 = stack.stackTagCompound.getInteger("connectorZ");
+ int l1=stack.stackTagCompound.getInteger("fullLength");
+ int l2=stack.stackTagCompound.getInteger("length");
+ //if(((x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1))>l1*l1)
+ if(l2<=0)
+ {
+ return false;
+ }
+ if(x==x1 && y==y1 && z==z1)
+ {
+ this.cleanUp(world, x, y, z, stack.stackTagCompound.getInteger("chainUID"));
+ stack.stackTagCompound.setBoolean("firstConnection", false);
+ stack.stackTagCompound.setInteger("length", l1);
+ return true;
+ }
+ int t2DimensionId = stack.stackTagCompound.getInteger("connectorDimensionId");
+ short facing2 = stack.stackTagCompound.getShort("connectorFacing");
+ TileEntity t2 = MinecraftServer.getServer().worldServerForDimension(t2DimensionId).getTileEntity(x1, y1, z1);
+ if(t2==null)
+ {
+ stack.stackTagCompound.setBoolean("firstConnection", false);
+ return false;
+ }
+ this.connect(t,facing, t2, facing2, stack);
+ stack.stackTagCompound.setInteger("fullLength", l2);
+ if(l2<=0)
+ {
+ stack.stackSize--;
+ }
+ stack.stackTagCompound.setBoolean("firstConnection", false);
+ stack.stackTagCompound.setInteger("chainArrangeNumber",stack.stackTagCompound.getInteger("chainArrangeNumber")+1);
+ }
+ else
+ {
+ stack.stackTagCompound.setBoolean("firstConnection", true);
+ stack.stackTagCompound.setInteger("connectorX", x);
+ stack.stackTagCompound.setInteger("connectorY", y);
+ stack.stackTagCompound.setInteger("connectorZ", z);
+ stack.stackTagCompound.setShort("connectorFacing", facing);
+ stack.stackTagCompound.setInteger("connectorDimensionId", world.provider.dimensionId);
+ stack.stackTagCompound.setInteger("prevDimensionId", world.provider.dimensionId);
+ stack.stackTagCompound.setInteger("chainUID",world.rand.nextInt());
+ stack.stackTagCompound.setInteger("chainArrangeNumber",0);
+ stack.stackTagCompound.setDouble("prevNodePosX",ppx);
+ stack.stackTagCompound.setDouble("prevNodePosY",ppy);
+ stack.stackTagCompound.setDouble("prevNodePosZ",ppz);
+ }
+ NodeEntity node = newNode(world, player.posX, player.posY, player.posZ, stack, stack.stackTagCompound.getInteger("chainArrangeNumber"),x,y,z);
+ node.virtualNodePosX=ppx;
+ node.virtualNodePosY=ppy;
+ node.virtualNodePosZ=ppz;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ protected void connect(TileEntity t1,short facing, TileEntity t2, short facing2, ItemStack stack)
+ {
+ IEnergyNetNode te;
+ IEnergyNetNode te1;
+ if(t1 instanceof IEnergyNetNode)
+ {
+ te = (IEnergyNetNode)t1;
+ }
+ else
+ {
+ te = ((AnchorTileEntity)t1).energyNetNodes[facing];
+ }
+ if(t2 instanceof IEnergyNetNode)
+ {
+ te1 = (IEnergyNetNode)t2;
+ }
+ else
+ {
+ te1 = ((AnchorTileEntity)t2).energyNetNodes[facing2];
+ }
+ int newGridID=IHLMod.enet.mergeGrids(te.getGridID(),te1.getGridID());
+ int l1=stack.stackTagCompound.getInteger("fullLength");
+ int l2=stack.stackTagCompound.getInteger("length");
+ NBTTagCompound cable = (NBTTagCompound) stack.stackTagCompound.copy();
+ cable.setInteger("length", l1-l2);
+ cable.setBoolean("firstConnection", false);
+ if(te.addCable(cable) && te1.addCable(cable))
+ {
+ te.setGrid(newGridID);
+ te1.setGrid(newGridID);
+ }
+ }
+
+ private int getTransverseSection(ItemStack stack) {
+ return stack.stackTagCompound.getInteger("transverseSection");
+ }
+
+ public String getMaterial(ItemStack stack)
+ {
+ return stack.stackTagCompound.getString("material");
+ }
+
+ public int getVoltageLimit(ItemStack stack)
+ {
+ if(stack.stackTagCompound.hasKey("maxVoltage"))
+ {
+ return stack.stackTagCompound.getInteger("maxVoltage");
+ }
+ return 0;
+ }
+
+ private int getResistance(ItemStack stack)
+ {
+ return stack.stackTagCompound.getInteger("resistance");
+ }
+
+ private void cleanUp(World worldObj, int xCoord, int yCoord, int zCoord, int chainUID) {
+ double range = 128D;
+ AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(xCoord-range,yCoord-range,zCoord-range,xCoord+range,yCoord+range,zCoord+range);
+ List<NodeEntity> nodeList = worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea);
+ if(!nodeList.isEmpty())
+ {
+ Iterator ei = nodeList.iterator();
+ while(ei.hasNext())
+ {
+ NodeEntity ne=(NodeEntity) ei.next();
+ if(ne.getChainUniqueID()==chainUID)
+ {
+ ne.setDead();
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate(ItemStack stack, World world, Entity entity, int slotIndex, boolean isCurrentItem)
+ {
+ if(!world.isRemote && stack.stackTagCompound!=null)
+ {
+ if(stack.stackTagCompound.getBoolean("firstConnection"))
+ {
+ int leight = stack.stackTagCompound.getInteger("length");
+ if(leight>0)
+ {
+ double pnpx = stack.stackTagCompound.getDouble("prevNodePosX");
+ double pnpy = stack.stackTagCompound.getDouble("prevNodePosY");
+ double pnpz = stack.stackTagCompound.getDouble("prevNodePosZ");
+ double ppx=entity.posX;
+ double ppy=entity.posY;
+ double ppz=entity.posZ;
+
+ if(pnpx!=0D && pnpy!=0D && pnpz!=0D)
+ {
+ double sqd = (ppx - pnpx)*(ppx - pnpx) + (ppy - pnpy)*(ppy - pnpy) + (ppz - pnpz)*(ppz - pnpz);
+ if(sqd>2D)
+ {
+ int can = stack.stackTagCompound.getInteger("chainArrangeNumber")+1;
+ int cx = stack.stackTagCompound.getInteger("connectorX");
+ int cy = stack.stackTagCompound.getInteger("connectorY");
+ int cz = stack.stackTagCompound.getInteger("connectorZ");
+ NodeEntity node = newNode(world, ppx, ppy, ppz, stack, can,cx,cy,cz);
+ node.attachedItem=stack;
+ node.virtualNodePosX=(float) (ppx+(ppx - pnpx)*2);
+ node.virtualNodePosY=(float) (ppy+(ppy - pnpy)*2);
+ node.virtualNodePosZ=(float) (ppz+(ppz - pnpz)*2);
+ stack.stackTagCompound.setInteger("chainArrangeNumber",can);
+ stack.stackTagCompound.setDouble("prevNodePosX",ppx);
+ stack.stackTagCompound.setDouble("prevNodePosY",ppy);
+ stack.stackTagCompound.setDouble("prevNodePosZ",ppz);
+ stack.stackTagCompound.setInteger("length",--leight);
+ stack.stackTagCompound.setInteger("prevDimensionId", world.provider.dimensionId);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected NodeEntity newNode(World world, double ppx, double ppy, double ppz, ItemStack stack, int can, int x, int y, int z)
+ {
+ PowerCableNodeEntity node = new PowerCableNodeEntity(world);
+ node.setPosition(ppx, ppy, ppz);
+ node.setChainUniqueID(stack.stackTagCompound.getInteger("chainUID"));
+ short facing = stack.stackTagCompound.getShort("connectorFacing");
+ int dimensionId = stack.stackTagCompound.getInteger("connectorDimensionId");
+ node.setAnchor(x, y, z,facing,dimensionId);
+ node.chainArrangeNumber=can;
+ node.colorIndex = this.getColor(stack);
+ if(stack.stackTagCompound.hasKey("insulationMaterial"))
+ {
+ node.type=1;
+ }
+ else
+ {
+ node.type=0;
+ }
+ world.spawnEntityInWorld(node);
+ return node;
+ }
+
+ private int getColor(ItemStack stack)
+ {
+ if(!stack.stackTagCompound.hasKey("insulationMaterial"))
+ {
+ if(yellowColoredWires.contains(this.getMaterial(stack)))
+ {
+ return 0xFF9900;
+ }
+ else
+ {
+ return 0xAAAABB;
+ }
+ }
+ return 0xFFFFFF;
+ }
+
+ @Override
+ public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean flag)
+ {
+ if(itemStack.stackTagCompound!=null)
+ {
+ info.add("Length: " + itemStack.stackTagCompound.getInteger("length") +" m");
+ info.add("Wire material: " + this.getMaterial(itemStack));
+ info.add("Resistivity: " + this.getResistance(itemStack)/1000F + " V^2/(EU*m)");
+ info.add("Transverse section: " + this.getTransverseSection(itemStack)/10F + " sq. mm.");
+ if(itemStack.stackTagCompound.hasKey("insulationMaterial"))
+ {
+ info.add("Insulation material: "+this.getInsulationMaterial(itemStack));
+ info.add("Insulation thickness: " + this.getInsulationThickness(itemStack)/10f+" mm");
+ info.add("Insulation breakdown voltage: "+ this.getVoltageLimit(itemStack)/1000 + " kV");
+ }
+
+ }
+ }
+
+ @Override
+ public String getTag()
+ {
+ return "length";
+ }
+
+ @Override
+ public String getTagSecondary()
+ {
+ return "fullLength";
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister par1IconRegister)
+ {
+ this.itemIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":copperWire");
+ this.thickCopper = par1IconRegister.registerIcon(IHLModInfo.MODID + ":copperWire16x");
+ this.thinIron = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steelWire");
+ this.thickIron = par1IconRegister.registerIcon(IHLModInfo.MODID + ":steelWire16x");
+ this.insulatedIronRawruber = par1IconRegister.registerIcon(IHLModInfo.MODID + ":flexibleCableSteel2");
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(ItemStack stack, int i)
+ {
+ if(stack.stackTagCompound!=null)
+ {
+ if(this.getInsulationMaterial(stack).equals("null"))
+ {
+ if(this.getTransverseSection(stack)>=240)
+ {
+ if(yellowColoredWires.contains(this.getMaterial(stack)))
+ {
+ return this.thickCopper;
+ }
+ else
+ {
+ return this.thickIron;
+ }
+ }
+ else
+ {
+ if(yellowColoredWires.contains(this.getMaterial(stack)))
+ {
+ return this.itemIcon;
+ }
+ else
+ {
+ return this.thinIron;
+ }
+ }
+ }
+ else
+ {
+ return this.insulatedIronRawruber;
+ }
+ }
+ return this.itemIcon;
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack stack)
+ {
+ if(stack.stackTagCompound!=null && !this.getInsulationMaterial(stack).equals("null"))
+ {
+ return "cable";
+ }
+ return "wire";
+ }
+
+ @Override
+ public boolean isSameWire(ItemStack stack1,ItemStack stack2)
+ {
+ return this.getMaterial(stack1).equals(this.getMaterial(stack2)) &&
+ this.getTransverseSection(stack1)==(this.getTransverseSection(stack2)) &&
+ this.getInsulationMaterial(stack1).equals(this.getInsulationMaterial(stack2)) &&
+ this.getInsulationThickness(stack1)==this.getInsulationThickness(stack2);
+ }
+
+ public String getInsulationMaterial(ItemStack stack)
+ {
+ if(stack.stackTagCompound.hasKey("insulationMaterial"))
+ {
+ return stack.stackTagCompound.getString("insulationMaterial");
+ }
+ return "null";
+ }
+
+ public int getInsulationThickness(ItemStack stack)
+ {
+ if(stack.stackTagCompound.hasKey("insulationThickness"))
+ {
+ return stack.stackTagCompound.getInteger("insulationThickness");
+ }
+ return 0;
+ }
+
+ public void onPlayerTeleport(PlayerChangedDimensionEvent event)
+ {
+ EntityPlayer player = event.player;
+ for(ItemStack stack:player.inventory.mainInventory)
+ {
+ if(stack!=null && stack.getItem() instanceof FlexibleCableItem)
+ {
+ if(stack.stackTagCompound.getBoolean("firstConnection"))
+ {
+ int can = -1;
+ Set<NodeEntity> ns = IHLMod.proxy.nodeEntityRegistry.get(stack.stackTagCompound.getInteger("chainUID"));
+ if(ns!=null)
+ {
+ NodeEntity lastNode = null;
+ for(NodeEntity node:ns)
+ {
+ if(node.chainArrangeNumber>can)
+ {
+ lastNode=node;
+ can=node.chainArrangeNumber;
+ }
+ }
+ if(lastNode!=null)
+ {
+ lastNode.attachedItem=null;
+ lastNode.setVirtualNodePosToNearestPortal();
+ }
+ }
+ double[] cc = IHLUtils.tracePlayerView(player);
+ int cx = stack.stackTagCompound.getInteger("connectorX");
+ int cy = stack.stackTagCompound.getInteger("connectorY");
+ int cz = stack.stackTagCompound.getInteger("connectorZ");
+ int leight = stack.stackTagCompound.getInteger("length");
+ NodeEntity node = newNode(MinecraftServer.getServer().worldServerForDimension(event.toDim), cc[0], cc[1], cc[2], stack, can++,cx,cy,cz);
+ node.attachedItem=null;
+ node.virtualNodePosX=(float) (player.posX);
+ node.virtualNodePosY=(float) (player.posY);
+ node.virtualNodePosZ=(float) (player.posZ);
+ stack.stackTagCompound.setInteger("chainArrangeNumber",can);
+ stack.stackTagCompound.setDouble("prevNodePosX",cc[0]);
+ stack.stackTagCompound.setDouble("prevNodePosY",cc[1]);
+ stack.stackTagCompound.setDouble("prevNodePosZ",cc[2]);
+ stack.stackTagCompound.setInteger("length",--leight);
+ stack.stackTagCompound.setInteger("prevDimensionId", event.toDim);
+ }
+ }
+ }
+// System.out.println(player.posX+"/"+player.posY+"/"+player.posZ);//Destination coordinates
+ }
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/40c790ca5da3001518cde17cb509661c b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/40c790ca5da3001518cde17cb509661c
new file mode 100644
index 0000000..84a0ddb
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/40c790ca5da3001518cde17cb509661c
@@ -0,0 +1,141 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+ InputStream in = IHLMod.class.getResourceAsStream("/assets/ihl/config/ihl-guidebook.xml");
+ InputStreamReader isReader = new InputStreamReader(in, "UTF-8");
+ LineNumberReader reader = new LineNumberReader(isReader);
+ OutputStreamWriter osWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+ BufferedWriter writer = new BufferedWriter(osWriter);
+ String line;
+ while ((line = reader.readLine()) != null)
+ {
+ writer.append(line);
+ writer.newLine();
+ }
+ writer.close();
+ osWriter.close();
+ in = IHLMod.class.getResourceAsStream("/assets/ihl/config/adress.xsd");
+ isReader = new InputStreamReader(in, "UTF-8");
+ reader = new LineNumberReader(isReader);
+ file = new File(folder, "adress.xsd");
+ osWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+ writer = new BufferedWriter(osWriter);
+ while ((line = reader.readLine()) != null)
+ {
+ writer.append(line);
+ writer.newLine();
+ }
+ writer.close();
+ osWriter.close();
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10871e5d49a3001516ebc455efc032e5 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10871e5d49a3001516ebc455efc032e5
new file mode 100644
index 0000000..973aec1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10871e5d49a3001516ebc455efc032e5
@@ -0,0 +1,113 @@
+package ihl.utils;
+
+import ihl.IHLMod;
+import ihl.guidebook.IHLGuidebookGui;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import com.google.common.io.Files;
+
+
+public class IHLXMLParser {
+
+ public DocumentBuilderFactory dbf;
+ public DocumentBuilder db;
+
+ public IHLXMLParser() throws ParserConfigurationException
+ {
+ dbf = DocumentBuilderFactory.newInstance();
+ db = dbf.newDocumentBuilder();
+ }
+
+ public void visit(Node node, int level, int sectionNumber1, IHLGuidebookGui ihlGuidebookGui)
+ {
+ IHLMod.log.debug("Visiting node.");
+ IHLMod.log.debug("Current section="+sectionNumber1);
+ IHLMod.log.debug("Node name="+node.getNodeName());
+ int sectionNumber = sectionNumber1;
+ NodeList list = node.getChildNodes();
+ IHLMod.log.debug("child size="+list.getLength());
+ if (node instanceof Element)
+ {
+ IHLMod.log.debug("node instance of Element.");
+ Element e = (Element) node;
+ IHLMod.log.debug("Node tagname="+e.getTagName());
+ IHLMod.log.debug("Node text content="+e.getTextContent());
+ if(e.getTagName().equals("title"))
+ {
+ ihlGuidebookGui.setTitle(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("itemstack"))
+ {
+ String[] innername = IHLUtils.trim(e.getTextContent()).split(":");
+ ihlGuidebookGui.addItemStack(IHLUtils.getOtherModItemStackWithDamage(innername[0], innername[1], Integer.parseInt(e.getAttribute("damage"))));
+ }
+ else if(e.getTagName().equals("text"))
+ {
+ ihlGuidebookGui.addTextBlock(IHLUtils.trim(e.getTextContent()));
+ }
+ else if(e.getTagName().equals("image"))
+ {
+ ihlGuidebookGui.setPicture(IHLUtils.trim(e.getTextContent()).replace(" ", ""), Integer.parseInt(e.getAttribute("width")),Integer.parseInt(e.getAttribute("height")));
+ }
+ }
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node childNode = list.item(i);
+ if(childNode instanceof Element && ((Element) childNode).getTagName().equals("section"))
+ {
+ Element e = (Element) childNode;
+ int id = Integer.parseInt(e.getAttribute("id"));
+ ihlGuidebookGui.setMaxSectionNumber(id);
+ if(sectionNumber==id)
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ else
+ {
+ if(sectionNumber > ihlGuidebookGui.getMaxSectionNumber())
+ {
+ sectionNumber=0;
+ ihlGuidebookGui.setSectionNumber(0);
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+ else
+ {
+ visit(childNode, level + 1, sectionNumber, ihlGuidebookGui);
+ }
+ }
+ }
+
+ public void setupGuidebookGUI(IHLGuidebookGui ihlGuidebookGui, int sectionNumber) throws SAXException, IOException
+ {
+ Document doc = db.parse(getGuidebookFile());
+ visit(doc, 0, sectionNumber, ihlGuidebookGui);
+ }
+
+ private File getGuidebookFile() throws IOException
+ {
+ File folder = new File(IHLMod.proxy.getMinecraftDir(), "config");
+ folder.mkdirs();
+ File file = new File(folder, "ihl-guidebook.xml");
+ if(!file.exists())
+ {
+// File fileFrom = new File(IHLMod.proxy.getMinecraftDir(),"/assets/ihl/config/ihl-guidebook.xml");
+ File fileFrom = new File(IHLMod.class.getResource("/assets/ihl/config/ihl-guidebook.xml").getFile());
+ Files.copy(fileFrom, file);
+ }
+ return file;
+ }
+
+}
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.location b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.location
new file mode 100644
index 0000000..07ca694
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.location
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markers b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markers
new file mode 100644
index 0000000..774a341
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markers
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/3.tree b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/3.tree
new file mode 100644
index 0000000..fd61945
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/3.tree
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/org.eclipse.jdt.core/state.dat b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/org.eclipse.jdt.core/state.dat
new file mode 100644
index 0000000..7e92901
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/org.eclipse.jdt.core/state.dat
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
new file mode 100644
index 0000000..a283d92
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/113.tree b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/113.tree
new file mode 100644
index 0000000..e78819c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/113.tree
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..c5e6f77
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
new file mode 100644
index 0000000..5e2da66
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+spelling_locale_initialized=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..a469f5d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+refresh.enabled=true
+version=1
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
new file mode 100644
index 0000000..b94a4cb
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
@@ -0,0 +1,7 @@
+Console.highWaterMark=88000
+StringVariablePreferencePage=130,107,107,86,
+eclipse.preferences.version=1
+org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<launchPerspectives/>\n
+org.eclipse.debug.ui.UseContextualLaunch=false
+org.eclipse.debug.ui.user_view_bindings=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<viewBindings>\r\n<view id\="org.eclipse.ui.console.ConsoleView">\r\n<perspective id\="org.eclipse.jdt.ui.JavaPerspective" userAction\="opened"/>\r\n</view>\r\n</viewBindings>\r\n
+preferredTargets=default\:default|
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs
new file mode 100644
index 0000000..c186df8
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+resetSendMode=KEEP
+resetSendModeOn=0
+sendMode=NOTIFY
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ui.prefs
new file mode 100644
index 0000000..5188891
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ui.prefs
@@ -0,0 +1,3 @@
+action=ASK
+eclipse.preferences.version=1
+rememberSendAction=NONE
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.gathering.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.gathering.prefs
new file mode 100644
index 0000000..333b991
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.gathering.prefs
@@ -0,0 +1,3 @@
+#Sun Jun 05 18:58:07 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.epp.usagedata.gathering.enabled=false
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..12464e1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,20 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.classpathVariable.ECLIPSE_HOME=/home/foghrye4/Programs/Eclipse Kepler
+org.eclipse.jdt.core.classpathVariable.JRE_LIB=/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar
+org.eclipse.jdt.core.classpathVariable.JRE_SRC=/usr/lib/jvm/java-7-oracle/src.zip
+org.eclipse.jdt.core.classpathVariable.JRE_SRCROOT=
+org.eclipse.jdt.core.classpathVariable.JUNIT_HOME=/home/foghrye4/Programs/Eclipse Kepler/plugins/org.junit_4.11.0.v201303080030/
+org.eclipse.jdt.core.classpathVariable.JUNIT_SRC_HOME=/home/foghrye4/Programs/Eclipse Kepler/plugins/org.junit.source_4.11.0.v201303080030.jar
+org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=ignore
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..de49def
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_VM_XML=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<vmSettings defaultVM\="57,org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType13,1447493118572" defaultVMConnector\="">\n<vmType id\="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType">\n<vm id\="1447493118572" name\="java-7-oracle" path\="/usr/lib/jvm/java-7-oracle"/>\n</vmType>\n</vmSettings>\n
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..13b7905
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,20 @@
+content_assist_lru_history=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><history maxLHS\="100" maxRHS\="10"><lhs name\="java.lang.Enum"><rhs name\="net.minecraftforge.common.util.ForgeDirection"/></lhs><lhs name\="net.minecraft.client.renderer.Tessellator"><rhs name\="net.minecraft.client.renderer.Tessellator"/></lhs></history>
+content_assist_number_of_computers=19
+content_assist_proposals_background=255,255,255
+content_assist_proposals_foreground=60,60,60
+eclipse.preferences.version=1
+fontPropagated=true
+org.eclipse.jdt.internal.ui.navigator.layout=2
+org.eclipse.jdt.ui.editor.tab.width=
+org.eclipse.jdt.ui.formatterprofiles.version=12
+org.eclipse.jdt.ui.javadoclocations.migrated=true
+org.eclipse.jdt.ui.text.code_templates_migrated=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+org.eclipse.jdt.ui.text.custom_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+org.eclipse.jdt.ui.text.templates_migrated=true
+org.eclipse.jface.textfont=1|Monospace|10.0|0|GTK|1|;
+proposalOrderMigrated=true
+spelling_locale_initialized=true
+tabWidthPropagated=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs
new file mode 100644
index 0000000..67b1d96
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.m2e.discovery.pref.projects=
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
new file mode 100644
index 0000000..43e97e4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+mylyn.attention.migrated=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
new file mode 100644
index 0000000..8d462a6
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000..e672db7
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+migrated.task.repositories.keyring=true
+migrated.task.repositories.secure.store=true
+org.eclipse.mylyn.tasks.ui.filters.nonmatching=true
+org.eclipse.mylyn.tasks.ui.filters.nonmatching.encouraged=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..d2ed603
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+knownEEFragments=
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..1f92455
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+platform_path=/home/foghrye4/Programs/Eclipse Kepler
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs
new file mode 100644
index 0000000..93878dd
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.rse.systemtype.local.systemType.defaultUserId=foghrye4
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs
new file mode 100644
index 0000000..e24d63a
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.rse.preferences.order.connections=foghrye4-GA-A75-D3H.Local
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs
new file mode 100644
index 0000000..cec65c4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
new file mode 100644
index 0000000..56cd496
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.team.ui.first_time=false
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs
new file mode 100644
index 0000000..8fc247c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+internalWebBrowserHistory=http\://web.archive.org/web/20051219043731/http\://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html|*|http\://download.oracle.com/javase/7/docs/api/java/util/Map.html|*|
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
new file mode 100644
index 0000000..316ef6f
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
@@ -0,0 +1,4 @@
+#Sun Jun 05 18:58:05 CEST 2011
+spacesForTabs=true
+eclipse.preferences.version=1
+overviewRuler_migration=migrated_3.1
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..d49006e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,10 @@
+EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false
+IMPORT_FILES_AND_FOLDERS_MODE=prompt
+IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE=prompt
+PROBLEMS_FILTERS_MIGRATE=true
+SAVE_ALL_BEFORE_BUILD=true
+TASKS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+platformState=1478335949481
+quickStart=false
+tipsAndTricks=true
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..dd77496
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,3 @@
+//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false
+PLUGINS_NOT_ACTIVATED_ON_STARTUP=org.eclipse.m2e.discovery;
+eclipse.preferences.version=1
diff --git a/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Client.launch b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Client.launch
new file mode 100644
index 0000000..53c64e4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Client.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Minecraft"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="GradleStart"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx2048M -Xms2048M"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
+</launchConfiguration>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch
new file mode 100644
index 0000000..e1a66bf
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Minecraft/src/main/java/utils/Main.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="utils.Main"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft"/>
+</launchConfiguration>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Server.launch b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Server.launch
new file mode 100644
index 0000000..395f317
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Server.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Minecraft/src/net/minecraft/server/MinecraftServer.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="GradleStartServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx1024M -Xms1024M"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
+</launchConfiguration>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml
new file mode 100644
index 0000000..40e820e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.debug.ui.SCOPED_SAVE_SELECTION_DIALOG">
+ <item value="312" key="DIALOG_WIDTH"/>
+ <item value="387" key="DIALOG_HEIGHT"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ </section>
+ <section name="org.eclipse.debug.ui.LAUNCH_CONFIGURATIONS_DIALOG_SECTION">
+ <item value="800" key="DIALOG_WIDTH"/>
+ <item value=", org.eclipse.jdt.launching.localJavaApplication, " key="org.eclipse.debug.ui.EXPANDED_NODES"/>
+ <item value="668" key="DIALOG_HEIGHT"/>
+ <item value="237" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_1"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="762" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_2"/>
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
new file mode 100644
index 0000000..da5aef1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchHistory>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+</launchHistory>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/eclipse/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
new file mode 100644
index 0000000..d65addd
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
@@ -0,0 +1,2444 @@
+<?xml version="1.0" encoding="ASCII"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_W0B8oOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.legacy.ide.application" contributorURI="platform:/plugin/org.eclipse.platform" selectedElement="_W0B8oeLhEeWHh-AP9QZrlQ" bindingContexts="_W0DyT-LhEeWHh-AP9QZrlQ">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;workbench>&#xA;&lt;mruList>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IHLMod.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/IHLMod.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/IHLMod.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IHLModInfo.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/IHLModInfo.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/IHLModInfo.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IHLTool.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/items_blocks/IHLTool.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/items_blocks/IHLTool.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IronWorkbenchTileEntity.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/flexible_cable/IronWorkbenchTileEntity.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/flexible_cable/IronWorkbenchTileEntity.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;REGSAddon.java&quot; tooltip=&quot;Minecraft/src/main/java/rapid_electric_grid_setup/REGSAddon.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/rapid_electric_grid_setup/REGSAddon.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.jdt.ui.ClassFileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.ClassFileEditor&quot; name=&quot;FMLControlledNamespacedRegistry.class&quot; tooltip=&quot;cpw.mods.fml.common.registry.FMLControlledNamespacedRegistry&quot;>&#xA;&lt;persistable org.eclipse.jdt.ui.ClassFileIdentifier=&quot;=Minecraft/\/home\/foghrye4\/Programs\/Forge 1.7.10\/build\/dirtyArtifacts\/forgeBin-1.7.10-10.13.4.1564-1.7.10.jar&amp;lt;cpw.mods.fml.common.registry(FMLControlledNamespacedRegistry.class&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;ItemBlockRegsOverIC2.java&quot; tooltip=&quot;Minecraft/src/main/java/rapid_electric_grid_setup/ItemBlockRegsOverIC2.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/rapid_electric_grid_setup/ItemBlockRegsOverIC2.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IHLModInfo.java&quot; tooltip=&quot;Minecraft/src/main/java/rapid_electric_grid_setup/IHLModInfo.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/rapid_electric_grid_setup/IHLModInfo.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IHLMod.java&quot; tooltip=&quot;Minecraft/src/main/java/rapid_electric_grid_setup/IHLMod.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/rapid_electric_grid_setup/IHLMod.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;Main.java&quot; tooltip=&quot;Minecraft/src/main/java/utils/Main.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/utils/Main.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;FlexibleCableItem.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/items_blocks/FlexibleCableItem.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/items_blocks/FlexibleCableItem.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;ServerProxy.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/ServerProxy.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/ServerProxy.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;ClientProxy.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/ClientProxy.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/ClientProxy.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;MachineBaseBlock.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/items_blocks/MachineBaseBlock.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/items_blocks/MachineBaseBlock.java&quot;/>&#xA;&lt;/file>&#xA;&lt;file factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot; name=&quot;IronWorkbenchRecipeHandler.java&quot; tooltip=&quot;Minecraft/src/main/java/ihl/nei_integration/IronWorkbenchRecipeHandler.java&quot;>&#xA;&lt;persistable path=&quot;/Minecraft/src/main/java/ihl/nei_integration/IronWorkbenchRecipeHandler.java&quot;/>&#xA;&lt;/file>&#xA;&lt;/mruList>&#xA;&lt;/workbench>"/>
+ <tags>activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration</tags>
+ <tags>ModelMigrationProcessor.001</tags>
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_W0B8oeLhEeWHh-AP9QZrlQ" elementId="IDEWindow" contributorURI="platform:/plugin/org.eclipse.platform" selectedElement="_W0B8ouLhEeWHh-AP9QZrlQ" label="%trimmedwindow.label.eclipseSDK" x="139" y="246" width="1010" height="483">
+ <persistedState key="coolBarVisible" value="true"/>
+ <persistedState key="perspectiveBarVisible" value="true"/>
+ <persistedState key="workingSets" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;workingSets/>"/>
+ <persistedState key="aggregateWorkingSetId" value="Aggregate for window 1447493118918"/>
+ <persistedState key="isRestored" value="true"/>
+ <persistedState key="show_in_time" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;show_in_time/>"/>
+ <tags>topLevel</tags>
+ <tags>shellMaximized</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_W0B8ouLhEeWHh-AP9QZrlQ" selectedElement="_W0B8o-LhEeWHh-AP9QZrlQ" horizontal="true">
+ <children xsi:type="advanced:PerspectiveStack" xmi:id="_W0B8o-LhEeWHh-AP9QZrlQ" containerData="7500" selectedElement="_W0B8pOLhEeWHh-AP9QZrlQ">
+ <children xsi:type="advanced:Perspective" xmi:id="_W0B8pOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaPerspective" selectedElement="_W0B8peLhEeWHh-AP9QZrlQ" label="Java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/jperspective.gif">
+ <persistedState key="persp.hiddenItems" value="persp.hideToolbarSC:org.eclipse.debug.ui.commands.RunToLine,persp.hideToolbarSC:org.eclipse.jdt.ui.actions.OpenProjectWizard,persp.hideToolbarSC:org.eclipse.ui.edit.text.toggleShowSelectedElementOnly,"/>
+ <tags>persp.actionSet:org.eclipse.ui.cheatsheets.actionSet</tags>
+ <tags>persp.actionSet:org.eclipse.search.searchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo</tags>
+ <tags>persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.keyBindings</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.openFiles</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.launchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.ui.JavaActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.NavigateActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.PackageExplorer</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.SourceView</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.JavadocView</tags>
+ <tags>persp.viewSC:org.eclipse.search.ui.views.SearchView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.console.ConsoleView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ContentOutline</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ProblemView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ResourceNavigator</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.TaskList</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ProgressView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer</tags>
+ <tags>persp.viewSC:org.eclipse.ui.texteditor.TemplatesView</tags>
+ <tags>persp.viewSC:org.eclipse.pde.runtime.LogView</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.wizards.new.folder</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.wizards.new.file</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard</tags>
+ <tags>persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective</tags>
+ <tags>persp.perspSC:org.eclipse.debug.ui.DebugPerspective</tags>
+ <tags>persp.viewSC:org.eclipse.ant.ui.views.AntView</tags>
+ <tags>persp.showIn:org.eclipse.egit.ui.RepositoriesView</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.breakpointActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet</tags>
+ <tags>persp.showIn:org.eclipse.jdt.ui.PackageExplorer</tags>
+ <tags>persp.showIn:org.eclipse.team.ui.GenericHistoryView</tags>
+ <tags>persp.showIn:org.eclipse.ui.views.ResourceNavigator</tags>
+ <tags>persp.showIn:org.eclipse.ui.navigator.ProjectExplorer</tags>
+ <tags>persp.actionSet:org.eclipse.mylyn.doc.actionSet</tags>
+ <tags>persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation</tags>
+ <tags>persp.actionSet:org.eclipse.wb.core.ui.actionset</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_W0B8peLhEeWHh-AP9QZrlQ" selectedElement="_W0B8puLhEeWHh-AP9QZrlQ" horizontal="true">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_W0B8puLhEeWHh-AP9QZrlQ" containerData="2704" selectedElement="_W0B8p-LhEeWHh-AP9QZrlQ">
+ <children xsi:type="basic:PartStack" xmi:id="_W0B8p-LhEeWHh-AP9QZrlQ" elementId="left" containerData="6000" selectedElement="_W0B8qOLhEeWHh-AP9QZrlQ">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.primaryNavigationStack</tags>
+ <tags>active</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8qOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer" ref="_W0CkA-LhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8qeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.TypeHierarchy" toBeRendered="false" ref="_W0CkjuLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8quLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ResourceNavigator" toBeRendered="false" ref="_W0Ckj-LhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8q-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigator.ProjectExplorer" toBeRendered="false" ref="_W0CkkOLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8rOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.ResultView" toBeRendered="false" ref="_W0Ck4eLhEeWHh-AP9QZrlQ"/>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_W0B8reLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewMStack" toBeRendered="false" containerData="4000">
+ <tags>newtablook</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8ruLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesView" toBeRendered="false" ref="_W0Ck4OLhEeWHh-AP9QZrlQ"/>
+ </children>
+ </children>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_W0B8r-LhEeWHh-AP9QZrlQ" containerData="7296" selectedElement="_W0B8sOLhEeWHh-AP9QZrlQ" horizontal="true">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_W0B8sOLhEeWHh-AP9QZrlQ" containerData="7500" selectedElement="_W0B8seLhEeWHh-AP9QZrlQ">
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8seLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editorss" containerData="3214" ref="_W0B9iOLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="basic:PartStack" xmi:id="_W0B8suLhEeWHh-AP9QZrlQ" elementId="bottom" containerData="2336" selectedElement="_W0B8ueLhEeWHh-AP9QZrlQ">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryDataStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8s-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView" ref="_W0CkkeLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8tOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavadocView" ref="_W0CkruLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8teLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SourceView" ref="_W0Ckr-LhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8tuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.views.SearchView" ref="_W0CksuLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8t-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.BookmarkView" toBeRendered="false" ref="_W0Ck2eLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8uOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProgressView" toBeRendered="false" ref="_W0Ck2uLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8ueLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView" ref="_W0CkteLhEeWHh-AP9QZrlQ"/>
+ </children>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_W0B8uuLhEeWHh-AP9QZrlQ" elementId="right" toBeRendered="false" containerData="2500">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryNavigationStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8u-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ContentOutline" toBeRendered="false" ref="_W0Ck2-LhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8vOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.texteditor.TemplatesView" toBeRendered="false" ref="_W0Ck3uLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8veLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.views.AntView" toBeRendered="false" ref="_W0Ck3-LhEeWHh-AP9QZrlQ"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_W0B8vuLhEeWHh-AP9QZrlQ" elementId="stickyFolderRight" toBeRendered="false" containerData="2500">
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8v-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.HelpView" toBeRendered="false" ref="_W0B9heLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8wOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.internal.introview" toBeRendered="false" ref="_W0B9huLhEeWHh-AP9QZrlQ"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B8weLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" toBeRendered="false" ref="_W0B9h-LhEeWHh-AP9QZrlQ"/>
+ </children>
+ </children>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0B9heLhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.HelpView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Help" iconURI="platform:/plugin/org.eclipse.help.ui/icons/view16/help_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0B9huLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.internal.introview" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Welcome" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0B9h-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Cheat Sheets" iconURI="platform:/plugin/org.eclipse.ui.cheatsheets/icons/view16/cheatsheet_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </sharedElements>
+ <sharedElements xsi:type="advanced:Area" xmi:id="_W0B9iOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editorss" selectedElement="_W0B9ieLhEeWHh-AP9QZrlQ">
+ <children xsi:type="basic:PartStack" xmi:id="_W0B9ieLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.primaryDataStack">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.primaryDataStack</tags>
+ <tags>EditorStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_W0B9iuLhEeWHh-AP9QZrlQ" elementId="Drag Placerholder" toBeRendered="false"/>
+ </children>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkA-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Package Explorer" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/package.gif" tooltip="Workspace" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1447493118918&quot;>&#xA;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;>&#xA;&lt;xmlDefinedFilters>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.mylyn.java.ui.MembersFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.m2e.MavenModuleFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;/xmlDefinedFilters>&#xA;&lt;/customFilters>&#xA;&lt;/view>"/>
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ <tags>active</tags>
+ <tags>activeOnClose</tags>
+ <menus xmi:id="_W0CkBOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkGuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkG-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkHOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkHeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkHuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkH-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkIOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkIeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkIuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkI-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkJOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkJeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkJuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkJ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkKOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkKeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkKuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkK-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkLOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkLeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkLuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkL-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkMOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkMeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkMuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkM-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.jdt.ui.PackageExplorer</tags>
+ </menus>
+ <toolbar xmi:id="_W0CkiuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkjuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.TypeHierarchy" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Type Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/class_hi.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ckj-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ResourceNavigator" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Navigator" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/filenav_nav.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkkOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigator.ProjectExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources/icons/full/eview16/resource_persp.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkkeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Problems" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.gif" tooltip="0 errors, 2 warnings, 0 others" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view PRIMARY_SORT_FIELD=&quot;org.eclipse.ui.ide.severityAndDescriptionField&quot; categoryGroup=&quot;org.eclipse.ui.ide.severity&quot; markerContentGenerator=&quot;org.eclipse.ui.ide.problemsGenerator&quot; partName=&quot;Problems&quot;>&#xA;&lt;columnWidths org.eclipse.ui.ide.locationField=&quot;120&quot; org.eclipse.ui.ide.markerType=&quot;120&quot; org.eclipse.ui.ide.pathField=&quot;342&quot; org.eclipse.ui.ide.resourceField=&quot;120&quot; org.eclipse.ui.ide.severityAndDescriptionField=&quot;380&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.severityAndDescriptionField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.resourceField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.pathField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.locationField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.markerType&quot;/>&#xA;&lt;/view>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_W0CkkuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckk-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CklOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkleLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkluLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckl-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkmOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkmeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkmuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckm-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CknOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkneLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CknuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckn-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkoOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkoeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkouLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Cko-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkpOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkpeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkpuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckp-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkqOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkqeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkquLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckq-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkrOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.ui.views.ProblemView</tags>
+ <tags>popup:org.eclipse.ui.ide.MarkersView</tags>
+ </menus>
+ <toolbar xmi:id="_W0CkreLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkruLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavadocView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Javadoc" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/javadoc.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ckr-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SourceView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Declaration" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/source.gif" tooltip="ihl.recipes.UniversalRecipeOutput.getItemOutputs() : List&lt;RecipeOutputItemStack> - Minecraft/src/main/java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view/>"/>
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ <menus xmi:id="_W0CksOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SourceView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_W0CkseLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SourceView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CksuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.views.SearchView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" tooltip="" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view isPinned=&quot;false&quot;>&#xA;&lt;view IMemento.internal.id=&quot;&quot; org.eclipse.search.lastActivation=&quot;0&quot;/>&#xA;&lt;/view>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_W0Cks-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.views.SearchView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_W0CktOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.views.SearchView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0CkteLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console/icons/full/cview16/console_view.gif" tooltip="" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view/>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_W0CktuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckt-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkuOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkueLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkuuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Cku-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkvOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkveLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkvuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckv-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkwOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkweLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkwuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckw-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkxOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkxeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkxuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0Ckx-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkyOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkyeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <menus xsi:type="menu:PopupMenu" xmi:id="_W0CkyuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu">
+ <tags>menuContribution:popup</tags>
+ <tags>popup:org.eclipse.debug.ui.ProcessConsoleType.#ContextMenu</tags>
+ </menus>
+ <toolbar xmi:id="_W0Cky-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck2eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.BookmarkView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Bookmarks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/bkmrk_nav.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck2uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProgressView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Progress" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/pview.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck2-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ContentOutline" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Outline" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/outline_co.gif" tooltip="" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_W0Ck3OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ContentOutline">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_W0Ck3eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ContentOutline" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck3uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.texteditor.TemplatesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Templates" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/templates.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck3-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.views.AntView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Ant" iconURI="platform:/plugin/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Ant</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck4OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Git Repositories" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/repo_rep.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_W0Ck4eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.ResultView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="JUnit" iconURI="platform:/plugin/org.eclipse.jdt.junit/icons/full/eview16/junit.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <trimBars xmi:id="_W0Ck4uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.main.toolbar">
+ <children xsi:type="menu:ToolBar" xmi:id="_W0Ck4-LhEeWHh-AP9QZrlQ" elementId="group.file" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_W0Ck5OLhEeWHh-AP9QZrlQ" elementId="group.file" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0Ck5eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.workbench.file">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_jX9isLZVEeaWh9KzuvcsWA" elementId="print" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/print_edit.png" tooltip="Print" enabled="false" command="_W0FoWuLhEeWHh-AP9QZrlQ"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0Ck8uLhEeWHh-AP9QZrlQ" elementId="additions" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_W0Ck8-LhEeWHh-AP9QZrlQ" elementId="additions" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DKwOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.breakpointActionSet" visible="false">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DKw-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.launchActionSet">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DKyOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaElementCreationActionSet">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DKzeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.searchActionSet">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK0eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.actionSet.presentation" visible="false">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK2OLhEeWHh-AP9QZrlQ" elementId="group.nav" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_W0DK2eLhEeWHh-AP9QZrlQ" elementId="group.nav" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK2uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.workbench.navigate">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_jYCbMLZVEeaWh9KzuvcsWA" elementId="org.eclipse.ui.window.pinEditor" visible="false" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/pin_editor.png" tooltip="Pin Editor" type="Check" command="_W0FAcOLhEeWHh-AP9QZrlQ"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK5eLhEeWHh-AP9QZrlQ" elementId="group.editor" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_W0DK5uLhEeWHh-AP9QZrlQ" elementId="group.editor" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK5-LhEeWHh-AP9QZrlQ" elementId="group.help" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_W0DK6OLhEeWHh-AP9QZrlQ" elementId="group.help" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_W0DK6eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.workbench.help" visible="false">
+ <tags>Draggable</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK7OLhEeWHh-AP9QZrlQ" elementId="PerspectiveSpacer" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>stretch</tags>
+ <tags>SHOW_RESTORE_MENU</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK8OLhEeWHh-AP9QZrlQ" elementId="PerspectiveSwitcher" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher">
+ <tags>Draggable</tags>
+ <tags>HIDEABLE</tags>
+ <tags>SHOW_RESTORE_MENU</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_W0DK8eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.trim.status" side="Bottom">
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK8uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.StatusLine" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim">
+ <tags>stretch</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK8-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.HeapStatus" toBeRendered="false" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim"/>
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK9OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ProgressBar" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim">
+ <tags>Draggable</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_W0DK9eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.trim.vertical1" toBeRendered="false" side="Left">
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK9uLhEeWHh-AP9QZrlQ" elementId="left(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_W0DK9-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.trim.vertical2" toBeRendered="false" side="Right">
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK-OLhEeWHh-AP9QZrlQ" elementId="bottom(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <persistedState key="XSize" value="415"/>
+ <persistedState key="YSize" value="834"/>
+ <tags>TrimStack</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_W0DK-eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editorss(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <persistedState key="XSize" value="904"/>
+ <persistedState key="YSize" value="742"/>
+ <tags>TrimStack</tags>
+ </children>
+ </trimBars>
+ </children>
+ <bindingTables xmi:id="_W0DK-uLhEeWHh-AP9QZrlQ" contributorURI="platform:/plugin/org.eclipse.platform" bindingContext="_W0DyT-LhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DK_OLhEeWHh-AP9QZrlQ" keySequence="CTRL+INSERT" command="_W0FnauLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DK_eLhEeWHh-AP9QZrlQ" keySequence="CTRL+A" command="_W0FnYeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DK_uLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+I" command="_W0FAc-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLAOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SPACE" command="_W0FnpOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLAeLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+SPACE" command="_W0FopOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLAuLhEeWHh-AP9QZrlQ" keySequence="CTRL+V" command="_W0FApOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLA-LhEeWHh-AP9QZrlQ" keySequence="CTRL+X" command="_W0FoB-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLBOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+Z" command="_W0FoUuLhEeWHh-AP9QZrlQ">
+ <tags>platform:gtk</tags>
+ </bindings>
+ <bindings xmi:id="_W0DLBeLhEeWHh-AP9QZrlQ" keySequence="CTRL+Z" command="_W0FnB-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLBuLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+V" command="_W0FoS-LhEeWHh-AP9QZrlQ">
+ <tags>platform:gtk</tags>
+ </bindings>
+ <bindings xmi:id="_W0DLB-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+L" command="_W0FAlOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLCOLhEeWHh-AP9QZrlQ" keySequence="CTRL+1" command="_W0Fn2-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLCeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+F3" command="_W0Fo9OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLCuLhEeWHh-AP9QZrlQ" keySequence="CTRL+F10" command="_W0FnhuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLC-LhEeWHh-AP9QZrlQ" keySequence="SHIFT+INSERT" command="_W0FApOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLDOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+D" command="_W0FoS-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLDeLhEeWHh-AP9QZrlQ" keySequence="SHIFT+DEL" command="_W0FoB-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLDuLhEeWHh-AP9QZrlQ" keySequence="CTRL+C" command="_W0FnauLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLD-LhEeWHh-AP9QZrlQ" keySequence="ALT+PAGE_UP" command="_W0FnneLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLEOLhEeWHh-AP9QZrlQ" keySequence="ALT+PAGE_DOWN" command="_W0FoFOLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DLEeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.javaEditorScope" bindingContext="_W0DyW-LhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DLEuLhEeWHh-AP9QZrlQ" keySequence="CTRL+I" command="_W0FndOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLE-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F" command="_W0FoSuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLFOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+ARROW_UP" command="_W0Fn7eLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLFeLhEeWHh-AP9QZrlQ" keySequence="CTRL+7" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLFuLhEeWHh-AP9QZrlQ" keySequence="CTRL+/" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLF-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+M" command="_W0FoX-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLGOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+/" command="_W0FAdeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLGeLhEeWHh-AP9QZrlQ" keySequence="CTRL+O" command="_W0FnSOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLGuLhEeWHh-AP9QZrlQ" keySequence="CTRL+F3" command="_W0FnyuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLG-LhEeWHh-AP9QZrlQ" keySequence="CTRL+T" command="_W0Fne-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLHOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+P" command="_W0Fnm-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLHeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+U" command="_W0FohuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLHuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+O" command="_W0FASuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLH-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+B" command="_W0FoT-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLIOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+ARROW_UP" command="_W0Fn5-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLIeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+ARROW_DOWN" command="_W0FnVuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLIuLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+C" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLI-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+ARROW_RIGHT" command="_W0Fo--LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLJOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+\" command="_W0Fo_-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLJeLhEeWHh-AP9QZrlQ" keySequence="CTRL+2 F" command="_W0FogeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLJuLhEeWHh-AP9QZrlQ" keySequence="CTRL+2 L" command="_W0FngeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLJ-LhEeWHh-AP9QZrlQ" keySequence="CTRL+2 R" command="_W0FnD-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLKOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+ARROW_DOWN" command="_W0Fo-uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLKeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+ARROW_LEFT" command="_W0FoueLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_RA5wkqM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+SPACE" command="_RAIUi6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBK2UqM1EeaKb6tuSbNsJA" keySequence="CTRL+2 M" command="_RAJivqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DLKuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.window" bindingContext="_W0DyUOLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DLK-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+NUMPAD_MULTIPLY" command="_W0FAWuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLLOLhEeWHh-AP9QZrlQ" keySequence="ALT+ARROW_LEFT" command="_W0Fn5eLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLMOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+D Q" command="_W0FoP-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLMeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+D J" command="_W0FoseLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLMuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+D A" command="_W0Foa-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLM-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+D T" command="_W0FnvuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLNOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+J" command="_W0FpHuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLNeLhEeWHh-AP9QZrlQ" keySequence="ALT+ARROW_RIGHT" command="_W0FoW-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLNuLhEeWHh-AP9QZrlQ" keySequence="CTRL+B" command="_W0FAWOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLN-LhEeWHh-AP9QZrlQ" keySequence="CTRL+F8" command="_W0FpFuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLOOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F7" command="_W0Fns-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLOeLhEeWHh-AP9QZrlQ" keySequence="CTRL+F7" command="_W0FoduLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLOuLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F6" command="_W0FnjOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLO-LhEeWHh-AP9QZrlQ" keySequence="CTRL+F6" command="_W0FnJeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLPOLhEeWHh-AP9QZrlQ" keySequence="CTRL+M" command="_W0FnkOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLPeLhEeWHh-AP9QZrlQ" keySequence="F12" command="_W0FoJOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLPuLhEeWHh-AP9QZrlQ" keySequence="ALT+-" command="_W0Fn7OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLP-LhEeWHh-AP9QZrlQ" keySequence="CTRL+," command="_W0FAp-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLQOLhEeWHh-AP9QZrlQ" keySequence="CTRL+." command="_W0FnR-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLQeLhEeWHh-AP9QZrlQ" keySequence="DEL" command="_W0FAleLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLQuLhEeWHh-AP9QZrlQ" keySequence="F5" command="_W0FnHeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLQ-LhEeWHh-AP9QZrlQ" keySequence="ALT+CR" command="_W0FoeuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLROLhEeWHh-AP9QZrlQ" keySequence="CTRL+P" command="_W0FoWuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLReLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+S" command="_W0FnfuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLRuLhEeWHh-AP9QZrlQ" keySequence="CTRL+S" command="_W0Fn0OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLR-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F4" command="_W0Fo7-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLSOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+W" command="_W0Fo7-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLSeLhEeWHh-AP9QZrlQ" keySequence="CTRL+F4" command="_W0FnYuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLSuLhEeWHh-AP9QZrlQ" keySequence="CTRL+W" command="_W0FnYuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLS-LhEeWHh-AP9QZrlQ" keySequence="CTRL+N" command="_W0FnZOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLTeLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+N" command="_W0FATOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLTuLhEeWHh-AP9QZrlQ" keySequence="CTRL+U" command="_W0FpI-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLT-LhEeWHh-AP9QZrlQ" keySequence="SHIFT+F5" command="_W0FnDOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLUOLhEeWHh-AP9QZrlQ" keySequence="F11" command="_W0FnCeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLUeLhEeWHh-AP9QZrlQ" keySequence="CTRL+F11" command="_W0FoZeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLUuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+S" command="_W0FAqOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLU-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+O" command="_W0FoJeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLVOLhEeWHh-AP9QZrlQ" keySequence="F2" command="_W0FnROLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLVuLhEeWHh-AP9QZrlQ" keySequence="F4" command="_W0Fn2eLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLV-LhEeWHh-AP9QZrlQ" keySequence="SHIFT+F2" command="_W0Fon-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLWOLhEeWHh-AP9QZrlQ" keySequence="F3" command="_W0FoEeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLWeLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+T" command="_W0FnvOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLWuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+L" command="_W0FotuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLW-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+M" command="_W0FowOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLXOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+V" command="_W0FnJOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLXeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+R" command="_W0FoAOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLXuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+T" command="_W0FoaeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLX-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Z" command="_W0FAa-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLYOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F8" command="_W0FnveLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLYeLhEeWHh-AP9QZrlQ" keySequence="ALT+F7" command="_W0Fn4uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLYuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+F7" command="_W0FnduLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLY-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+NUMPAD_DIVIDE" command="_W0FoQuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLZOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+R" command="_W0Fnd-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLZeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+W" command="_W0FnP-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLZuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+N" command="_W0FnA-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLZ-LhEeWHh-AP9QZrlQ" keySequence="CTRL+3" command="_W0Fo9uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLaOLhEeWHh-AP9QZrlQ" keySequence="CTRL+Q" command="_W0FoMOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLaeLhEeWHh-AP9QZrlQ" keySequence="CTRL+G" command="_W0FnTeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLa-LhEeWHh-AP9QZrlQ" keySequence="CTRL+H" command="_W0Foe-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLbeLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+H" command="_W0FAVuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLbuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+I" command="_W0FnZ-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLb-LhEeWHh-AP9QZrlQ" keySequence="CTRL+E" command="_W0FAnOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLc-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q J" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLdOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.JavadocView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLdeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q D" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLduLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.SourceView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLd-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q P" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLeOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.PackageExplorer"/>
+ </bindings>
+ <bindings xmi:id="_W0DLeeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q T" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLeuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.TypeHierarchy"/>
+ </bindings>
+ <bindings xmi:id="_W0DLe-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q V" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLfOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.debug.ui.VariableView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLfeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q B" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLfuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.debug.ui.BreakpointView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLf-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+X Q" command="_W0Fn6uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLgOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+X J" command="_W0FobOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLgeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+X A" command="_W0FpBuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLguLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+X T" command="_W0FoeeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLg-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q S" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLhOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.search.ui.views.SearchView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLheLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q Y" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLhuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.team.sync.views.SynchronizeView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLh-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q Z" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLiOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.team.ui.GenericHistoryView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLieLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q H" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLiuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.cheatsheets.views.CheatSheetView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLi-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q C" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLjOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.console.ConsoleView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLjeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q Q" command="_W0Fo5uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLjuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q X" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLj-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.views.ProblemView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLkOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q O" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLkeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.views.ContentOutline"/>
+ </bindings>
+ <bindings xmi:id="_W0DLkuLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+Q L" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0DLk-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.pde.runtime.LogView"/>
+ </bindings>
+ <bindings xmi:id="_W0DLlOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+C" command="_W0FoguLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLleLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+B" command="_W0FoLOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLluLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+G" command="_W0FAmeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLl-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+F" command="_W0Fo_eLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLmOLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+E" command="_W0Fnr-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLmeLhEeWHh-AP9QZrlQ" keySequence="CTRL+F" command="_W0FoCeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLmuLhEeWHh-AP9QZrlQ" keySequence="CTRL+#" command="_W0FoGeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLm-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+G" command="_W0FAoeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DLnOLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+H" command="_W0FArOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_RA1fIKM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+SHIFT+ARROW_RIGHT" command="_RAIUlKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA4icaM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+SHIFT+ARROW_UP" command="_RAI7kaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA8M0KM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+H" command="_RAJisaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA-CAKM1EeaKb6tuSbNsJA" keySequence="CTRL+-" command="_RAKJtKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA-pEKM1EeaKb6tuSbNsJA" keySequence="ALT+F5" command="_RAKJvKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA_QIaM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+P" command="_RAI7maM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBBFUKM1EeaKb6tuSbNsJA" keySequence="CTRL+{" command="_RAJiqqM1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RBBFUaM1EeaKb6tuSbNsJA" elementId="Splitter.isHorizontal" name="Splitter.isHorizontal" value="false"/>
+ </bindings>
+ <bindings xmi:id="_RBBsYKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+F12" command="_RAIUgqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBC6gKM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+U" command="_W0FAf-LhEeWHh-AP9QZrlQ">
+ <tags>platform:gtk</tags>
+ </bindings>
+ <bindings xmi:id="_RBFWwaM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+F9" command="_RAKJu6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBFWwqM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+P" command="_RAI7nKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBF90qM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+SHIFT+F12" command="_RAKJv6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBGk4KM1EeaKb6tuSbNsJA" keySequence="CTRL+F9" command="_RAI7p6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBHzAKM1EeaKb6tuSbNsJA" keySequence="CTRL+F12" command="_RAI7nqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBIaEqM1EeaKb6tuSbNsJA" keySequence="CTRL+_" command="_RAJiqqM1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RBIaE6M1EeaKb6tuSbNsJA" elementId="Splitter.isHorizontal" name="Splitter.isHorizontal" value="true"/>
+ </bindings>
+ <bindings xmi:id="_RBJBIKM1EeaKb6tuSbNsJA" keySequence="CTRL+=" command="_RAJiu6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJBIaM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+SHIFT+ARROW_DOWN" command="_RAKwy6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJoMaM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+B" command="_W0FnNOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_RBK2UKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+Q K" command="_W0Fo5uLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RBK2UaM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.mylyn.tasks.ui.views.tasks"/>
+ </bindings>
+ <bindings xmi:id="_RBLdYKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+X M" command="_RAKJvqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0Dx0OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.textEditorScope" bindingContext="_W0DyV-LhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0Dx0eLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+NUMPAD_MULTIPLY" command="_W0FAeuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx0uLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+J" command="_W0FoIuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx0-LhEeWHh-AP9QZrlQ" keySequence="CTRL+ARROW_UP" command="_W0FoV-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx1OLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+ARROW_UP" command="_W0FoZuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx1eLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+INSERT" command="_W0FoEOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx1uLhEeWHh-AP9QZrlQ" keySequence="ALT+ARROW_DOWN" command="_W0FoCOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx1-LhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+A" command="_W0Fnz-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx2OLhEeWHh-AP9QZrlQ" keySequence="CTRL+ARROW_DOWN" command="_W0FoUOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx2eLhEeWHh-AP9QZrlQ" keySequence="ALT+/" command="_W0FpGOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx2uLhEeWHh-AP9QZrlQ" keySequence="F2" command="_W0FAiuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx2-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+Q" command="_W0FoC-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx3OLhEeWHh-AP9QZrlQ" keySequence="CTRL+NUMPAD_DIVIDE" command="_W0FoROLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx3eLhEeWHh-AP9QZrlQ" keySequence="CTRL+NUMPAD_MULTIPLY" command="_W0FnpeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx3uLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+NUMPAD_DIVIDE" command="_W0FnlOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx3-LhEeWHh-AP9QZrlQ" keySequence="CTRL+NUMPAD_ADD" command="_W0FnxuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx4OLhEeWHh-AP9QZrlQ" keySequence="CTRL+NUMPAD_SUBTRACT" command="_W0FocuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx4eLhEeWHh-AP9QZrlQ" keySequence="CTRL+K" command="_W0Fo0uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx4uLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+K" command="_W0Fo4-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx4-LhEeWHh-AP9QZrlQ" keySequence="CTRL+J" command="_W0FnieLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx5OLhEeWHh-AP9QZrlQ" keySequence="CTRL+L" command="_W0FoE-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx5eLhEeWHh-AP9QZrlQ" keySequence="INSERT" command="_W0FAjuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx5uLhEeWHh-AP9QZrlQ" keySequence="CTRL+F10" command="_W0Fn3uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx5-LhEeWHh-AP9QZrlQ" keySequence="SHIFT+CR" command="_W0Fnn-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx6OLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+CR" command="_W0FAYeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx6eLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+X" command="_W0FosOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx6uLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+Y" command="_W0Fn7uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx6-LhEeWHh-AP9QZrlQ" keySequence="END" command="_W0Fo_OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx7OLhEeWHh-AP9QZrlQ" keySequence="HOME" command="_W0Fny-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx7eLhEeWHh-AP9QZrlQ" keySequence="SHIFT+END" command="_W0FAXeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx7uLhEeWHh-AP9QZrlQ" keySequence="CTRL+HOME" command="_W0FoeOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx7-LhEeWHh-AP9QZrlQ" keySequence="ALT+ARROW_UP" command="_W0Fof-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx8OLhEeWHh-AP9QZrlQ" keySequence="CTRL+DEL" command="_W0FnBeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx8eLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+J" command="_W0FoVuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx8uLhEeWHh-AP9QZrlQ" keySequence="CTRL+END" command="_W0FAj-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx8-LhEeWHh-AP9QZrlQ" keySequence="CTRL+BS" command="_W0FnMuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx9OLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+ARROW_LEFT" command="_W0Fn_OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx9eLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+DEL" command="_W0FnIuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx9uLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+ARROW_DOWN" command="_W0Fog-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx9-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+ARROW_RIGHT" command="_W0Fo8uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx-OLhEeWHh-AP9QZrlQ" keySequence="SHIFT+HOME" command="_W0FoHeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx-eLhEeWHh-AP9QZrlQ" keySequence="CTRL+ARROW_LEFT" command="_W0FnFOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx-uLhEeWHh-AP9QZrlQ" keySequence="CTRL+ARROW_RIGHT" command="_W0FoiOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx--LhEeWHh-AP9QZrlQ" keySequence="CTRL+D" command="_W0FnheLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_RBHzAqM1EeaKb6tuSbNsJA" keySequence="F12" command="_RAHtcKM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0Dx_OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.AntEditorScope" bindingContext="_W0DyWOLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0Dx_eLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+F" command="_W0FoSuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx_uLhEeWHh-AP9QZrlQ" keySequence="SHIFT+F2" command="_W0Fnb-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0Dx_-LhEeWHh-AP9QZrlQ" keySequence="F3" command="_W0Fn0-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyAOLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+R" command="_W0FAaOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyAeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+O" command="_W0Fo5eLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyAuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.pdeEditorContext" bindingContext="_W0DyWeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyBeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesView" bindingContext="_W0DyXuLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyBuLhEeWHh-AP9QZrlQ" keySequence="CTRL+V" command="_W0FAo-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyB-LhEeWHh-AP9QZrlQ" keySequence="CTRL+C" command="_W0FAquLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyCOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.debugging" bindingContext="_W0DyUuLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyCeLhEeWHh-AP9QZrlQ" keySequence="F5" command="_W0FoU-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyCuLhEeWHh-AP9QZrlQ" keySequence="CTRL+F5" command="_W0FoCuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyC-LhEeWHh-AP9QZrlQ" keySequence="F8" command="_W0FpJOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyDOLhEeWHh-AP9QZrlQ" keySequence="F7" command="_W0Fo-OLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyDeLhEeWHh-AP9QZrlQ" keySequence="F6" command="_W0FAZ-LhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyDuLhEeWHh-AP9QZrlQ" keySequence="CTRL+F2" command="_W0FnqeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyD-LhEeWHh-AP9QZrlQ" keySequence="CTRL+R" command="_W0FnbuLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyEOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.BreakpointView" bindingContext="_W0DyVuLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyEeLhEeWHh-AP9QZrlQ" keySequence="ALT+CR" command="_W0FoXOLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyEuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.memoryview" bindingContext="_W0DyXeLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyE-LhEeWHh-AP9QZrlQ" keySequence="CTRL+W" command="_W0FntuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyFOLhEeWHh-AP9QZrlQ" keySequence="CTRL+N" command="_W0Fn8eLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyFeLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+M" command="_W0FAbOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyFuLhEeWHh-AP9QZrlQ" keySequence="ALT+CTRL+N" command="_W0FAjeLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyF-LhEeWHh-AP9QZrlQ" keySequence="CTRL+T" command="_W0FoM-LhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyGOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.memory.abstractasynctablerendering" bindingContext="_W0DyVOLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyGeLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+," command="_W0Fo4uLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyGuLhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+." command="_W0FARuLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyG-LhEeWHh-AP9QZrlQ" keySequence="CTRL+G" command="_W0FnruLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyHOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.propertiesEditorScope" bindingContext="_W0DyWuLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyHeLhEeWHh-AP9QZrlQ" keySequence="CTRL+7" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyHuLhEeWHh-AP9QZrlQ" keySequence="CTRL+/" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ <bindings xmi:id="_W0DyH-LhEeWHh-AP9QZrlQ" keySequence="CTRL+SHIFT+C" command="_W0FAdOLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyIOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.breadcrumbEditorScope" bindingContext="_W0DyZOLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyIeLhEeWHh-AP9QZrlQ" keySequence="ALT+SHIFT+B" command="_W0FoT-LhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyIuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ReflogView" bindingContext="_W0DyX-LhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyI-LhEeWHh-AP9QZrlQ" keySequence="CTRL+C" command="_W0FnY-LhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyJOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.console" bindingContext="_W0DyXOLhEeWHh-AP9QZrlQ">
+ <bindings xmi:id="_W0DyJeLhEeWHh-AP9QZrlQ" keySequence="CTRL+D" command="_W0FnmuLhEeWHh-AP9QZrlQ"/>
+ </bindingTables>
+ <bindingTables xmi:id="_W0DyJuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyZeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyJ-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyZuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyKOLhEeWHh-AP9QZrlQ" bindingContext="_W0DyZ-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyKeLhEeWHh-AP9QZrlQ" bindingContext="_W0DyaOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyKuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyaeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyK-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyauLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyLOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dya-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyLeLhEeWHh-AP9QZrlQ" bindingContext="_W0DybOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyLuLhEeWHh-AP9QZrlQ" bindingContext="_W0DybeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyL-LhEeWHh-AP9QZrlQ" bindingContext="_W0DybuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyMOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyb-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyMeLhEeWHh-AP9QZrlQ" bindingContext="_W0DycOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyMuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyceLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyM-LhEeWHh-AP9QZrlQ" bindingContext="_W0DycuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyNOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyc-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyNeLhEeWHh-AP9QZrlQ" bindingContext="_W0DydOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyNuLhEeWHh-AP9QZrlQ" bindingContext="_W0DydeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyN-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyduLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyOOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyd-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyOeLhEeWHh-AP9QZrlQ" bindingContext="_W0DyeOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyOuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyeeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyO-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyeuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyPOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dye-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyPeLhEeWHh-AP9QZrlQ" bindingContext="_W0DyfOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyPuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyfeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyP-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyfuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyQOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyf-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyQeLhEeWHh-AP9QZrlQ" bindingContext="_W0DygOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyQuLhEeWHh-AP9QZrlQ" bindingContext="_W0DygeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyQ-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyguLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyROLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyg-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyReLhEeWHh-AP9QZrlQ" bindingContext="_W0DyhOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyRuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyheLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyR-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyhuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DySOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyh-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DySeLhEeWHh-AP9QZrlQ" bindingContext="_W0DyiOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DySuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyieLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyS-LhEeWHh-AP9QZrlQ" bindingContext="_W0DyiuLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyTOLhEeWHh-AP9QZrlQ" bindingContext="_W0Dyi-LhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyTeLhEeWHh-AP9QZrlQ" bindingContext="_W0DyjOLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_W0DyTuLhEeWHh-AP9QZrlQ" bindingContext="_W0DyjeLhEeWHh-AP9QZrlQ"/>
+ <bindingTables xmi:id="_RAzC4KM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structuredTextEditorScope" bindingContext="_RAPCOKM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RA04EKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+C" command="_RAKJtqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA2GMKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_RIGHT" command="_RAI7k6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA3UUKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_DOWN" command="_RAI7s6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA37YqM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+A" command="_RAKw0KM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA4icKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+ARROW_UP" command="_RAI7rqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA5wkaM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_UP" command="_RAI7qqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA7lwKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+F" command="_RAKwxaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBAeQaM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+P" command="_RAIUiKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBFWwKM1EeaKb6tuSbNsJA" keySequence="F3" command="_RAIUhaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBGk4aM1EeaKb6tuSbNsJA" keySequence="CTRL+I" command="_RAJiuKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBHL86M1EeaKb6tuSbNsJA" keySequence="CTRL+O" command="_RAIUj6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBHzAaM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+/" command="_RAIUgaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBIaEKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+\" command="_RAI7m6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBIaEaM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+>" command="_RAJis6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJBJKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_LEFT" command="_RAIUlaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJoMKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+ARROW_DOWN" command="_RAKJxqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RA2GMaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.views.tasks" bindingContext="_RAPCNKM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RA2tQKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_DOWN" command="_RAKJt6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA5JgaM1EeaKb6tuSbNsJA" keySequence="ALT+ARROW_DOWN" command="_RAJisqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA5wkKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+ARROW_UP" command="_RAJiqKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA8M0aM1EeaKb6tuSbNsJA" keySequence="SHIFT+INSERT" command="_RAI7mqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA9a8KM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+I" command="_RAKJs6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA-pEaM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+R" command="_RAKJuKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBCTcaM1EeaKb6tuSbNsJA" keySequence="CTRL+CR" command="_RAJisKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBC6gaM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+U" command="_RAI7saM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBFWw6M1EeaKb6tuSbNsJA" keySequence="F4" command="_RAIUmqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBF90KM1EeaKb6tuSbNsJA" keySequence="INSERT" command="_RAJiw6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBIaFKM1EeaKb6tuSbNsJA" keySequence="ALT+ARROW_UP" command="_RAI7oaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJBIqM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+C" command="_RAKwz6M1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RA37YKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.java.editorScope" bindingContext="_RAPCMaM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RA37YaM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+A" command="_RAKJxaM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA5JgKM1EeaKb6tuSbNsJA" keySequence="ALT+CTRL+A" command="_RAKJxaM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RA9a8aM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.editors.task" bindingContext="_RAPCNaM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RA9a8qM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+I" command="_RAKJs6M1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RA_QIKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+R" command="_RAKJuKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBCTcKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+S" command="_RAJitKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBDhkKM1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+U" command="_RAI7saM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBF90aM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+M" command="_RAIUhKM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBHL8KM1EeaKb6tuSbNsJA" keySequence="CTRL+O" command="_RAKJwqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBJBI6M1EeaKb6tuSbNsJA" keySequence="ALT+SHIFT+C" command="_RAKwz6M1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RA9a86M1EeaKb6tuSbNsJA" elementId="org.eclipse.core.runtime.xml" bindingContext="_RAPpQaM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RA9a9KM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+D" command="_RAKwwqM1EeaKb6tuSbNsJA"/>
+ <bindings xmi:id="_RBAeQKM1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+P" command="_RAJirqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RBBFUqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.tasks.ui.markupSourceContext" bindingContext="_RAPpR6M1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RBBFU6M1EeaKb6tuSbNsJA" keySequence="CTRL+SHIFT+O" command="_RAIUiqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RBEvsKM1EeaKb6tuSbNsJA" elementId="org.eclipse.jdt.ui.classFileEditorScope" bindingContext="_RAPCMqM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RBEvsaM1EeaKb6tuSbNsJA" keySequence="CTRL+1" command="_RAKww6M1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RBGk4qM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.internal.wikitext.ui.editor.basicMarkupSourceContext" bindingContext="_RAPCNqM1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RBGk46M1EeaKb6tuSbNsJA" keySequence="F1" command="_RAHtdaM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RBHL8aM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.editor.markupSourceContext" bindingContext="_RAPCN6M1EeaKb6tuSbNsJA">
+ <bindings xmi:id="_RBHL8qM1EeaKb6tuSbNsJA" keySequence="CTRL+O" command="_RAIUiqM1EeaKb6tuSbNsJA"/>
+ </bindingTables>
+ <bindingTables xmi:id="_RWipYaM1EeaKb6tuSbNsJA" bindingContext="_RWipYKM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWjQcaM1EeaKb6tuSbNsJA" bindingContext="_RWjQcKM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWjQc6M1EeaKb6tuSbNsJA" bindingContext="_RWjQcqM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWj3gaM1EeaKb6tuSbNsJA" bindingContext="_RWj3gKM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWj3g6M1EeaKb6tuSbNsJA" bindingContext="_RWj3gqM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWkekaM1EeaKb6tuSbNsJA" bindingContext="_RWkekKM1EeaKb6tuSbNsJA"/>
+ <bindingTables xmi:id="_RWkek6M1EeaKb6tuSbNsJA" bindingContext="_RWkekqM1EeaKb6tuSbNsJA"/>
+ <rootContext xmi:id="_W0DyT-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" contributorURI="platform:/plugin/org.eclipse.platform" name="In Dialogs and Windows" description="Either a dialog or a window is open">
+ <children xmi:id="_W0DyUOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.window" contributorURI="platform:/plugin/org.eclipse.platform" name="In Windows" description="A window is open">
+ <children xmi:id="_W0DyUeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.contexts.views" contributorURI="platform:/plugin/org.eclipse.platform" name="%bindingcontext.name.bindingView"/>
+ <children xmi:id="_W0DyUuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.debugging" name="Debugging" description="Debugging programs">
+ <children xmi:id="_W0DyU-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.debugging" name="Debugging Java" description="Debugging Java programs"/>
+ <children xmi:id="_W0DyVOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.memory.abstractasynctablerendering" name="In Table Memory Rendering" description="In Table Memory Rendering"/>
+ </children>
+ <children xmi:id="_W0DyVeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.compareEditorScope" name="Comparing in an Editor" description="Comparing in an Editor"/>
+ <children xmi:id="_W0DyVuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.BreakpointView" name="In Breakpoints View" description="The breakpoints view context"/>
+ <children xmi:id="_W0DyV-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.textEditorScope" name="Editing Text" description="Editing Text Context">
+ <children xmi:id="_W0DyWOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.AntEditorScope" name="Editing Ant Buildfiles" description="Editing Ant Buildfiles Context"/>
+ <children xmi:id="_W0DyWeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.pdeEditorContext" name="PDE editor" description="The context used by PDE editors"/>
+ <children xmi:id="_W0DyWuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.propertiesEditorScope" name="Editing Properties Files" description="Editing Properties Files Context"/>
+ <children xmi:id="_W0DyW-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.javaEditorScope" name="Editing Java Source" description="Editing Java Source Context"/>
+ <children xmi:id="_RAPCMaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.java.editorScope" name="WindowBuilder Java scope"/>
+ <children xmi:id="_RAPCMqM1EeaKb6tuSbNsJA" elementId="org.eclipse.jdt.ui.classFileEditorScope" name="Browsing attached Java Source" description="Browsing attached Java Source Context"/>
+ <children xmi:id="_RAPCM6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.text.editor.context" name="Editing XSD context"/>
+ <children xmi:id="_RAPCNaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.editors.task" name="In Tasks Editor"/>
+ <children xmi:id="_RAPCNqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.internal.wikitext.ui.editor.basicMarkupSourceContext" name="WikiText Markup Source Context" description="WikiText markup editing context">
+ <children xmi:id="_RAPCN6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.editor.markupSourceContext" name="WikiText Markup Source Context" description="WikiText markup editing context"/>
+ <children xmi:id="_RAPpR6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.tasks.ui.markupSourceContext" name="Task Markup Editor Source Context"/>
+ </children>
+ <children xmi:id="_RAPCOKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structuredTextEditorScope" name="Editing in Structured Text Editors" description="Editing in Structured Text Editors">
+ <children xmi:id="_RAPCOaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.navigation" name="XML Source Navigation" description="XML Source Navigation"/>
+ <children xmi:id="_RAPCOqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.cleanup" name="XML Source Cleanup" description="XML Source Cleanup"/>
+ <children xmi:id="_RAPpQKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.comments" name="Source Comments in Structured Text Editors" description="Source Comments in Structured Text Editors"/>
+ <children xmi:id="_RAPpQaM1EeaKb6tuSbNsJA" elementId="org.eclipse.core.runtime.xml" name="Editing XML Source" description="Editing XML Source"/>
+ <children xmi:id="_RAPpQqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.occurrences" name="XML Source Occurrences" description="XML Source Occurrences"/>
+ <children xmi:id="_RAPpQ6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.grammar" name="XML Source Grammar" description="XML Source Grammar"/>
+ <children xmi:id="_RAPpRKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.comments" name="XML Source Comments" description="XML Source Comments"/>
+ <children xmi:id="_RAPpRqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.expand" name="XML Source Expand/Collapse" description="XML Source Expand/Collapse"/>
+ <children xmi:id="_RAPpSKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.hideFormat" name="Editing in Structured Text Editors" description="Editing in Structured Text Editors"/>
+ <children xmi:id="_RAPpSaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.selection" name="XML Source Selection" description="XML Source Selection"/>
+ <children xmi:id="_RAPpSqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.dependencies" name="XML Source Dependencies" description="XML Source Dependencies"/>
+ </children>
+ </children>
+ <children xmi:id="_W0DyXOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.console" name="In I/O Console" description="In I/O console"/>
+ <children xmi:id="_W0DyXeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.memoryview" name="In Memory View" description="In memory view"/>
+ <children xmi:id="_W0DyXuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesView" name="In Git Repositories View"/>
+ <children xmi:id="_W0DyX-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ReflogView" name="In Git Reflog View"/>
+ <children xmi:id="_W0DyYOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView" name="In Console View" description="In Console View"/>
+ <children xmi:id="_RAPCNKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.views.tasks" name="In Tasks View"/>
+ </children>
+ <children xmi:id="_W0DyYeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.dialog" contributorURI="platform:/plugin/org.eclipse.platform" name="In Dialogs" description="A dialog is open"/>
+ </rootContext>
+ <rootContext xmi:id="_W0DyYuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.workbenchMenu" name="Workbench Menu" description="When no Workbench windows are active"/>
+ <rootContext xmi:id="_W0DyY-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.contexts.actionSet" name="Action Set" description="Parent context for action sets"/>
+ <rootContext xmi:id="_W0DyZOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.breadcrumbEditorScope" name="Editor Breadcrumb Navigation" description="Editor Breadcrumb Navigation Context"/>
+ <rootContext xmi:id="_W0DyZeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.actions.ManageBreakpointRulerAction" name="Auto::org.eclipse.ant.ui.actions.ManageBreakpointRulerAction"/>
+ <rootContext xmi:id="_W0DyZuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" name="Auto::org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction"/>
+ <rootContext xmi:id="_W0DyZ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.SnippetExecute" name="Auto::org.eclipse.jdt.debug.ui.SnippetExecute"/>
+ <rootContext xmi:id="_W0DyaOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.SnippetDisplay" name="Auto::org.eclipse.jdt.debug.ui.SnippetDisplay"/>
+ <rootContext xmi:id="_W0DyaeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.SnippetInspect" name="Auto::org.eclipse.jdt.debug.ui.SnippetInspect"/>
+ <rootContext xmi:id="_W0DyauLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.internal.ui.javaeditor.BookmarkRulerAction" name="Auto::org.eclipse.jdt.internal.ui.javaeditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_W0Dya-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction" name="Auto::org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction"/>
+ <rootContext xmi:id="_W0DybOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.internal.ui.propertiesfileeditor.BookmarkRulerAction" name="Auto::org.eclipse.jdt.internal.ui.propertiesfileeditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_W0DybeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.internal.ui.propertiesfileeditor.SelectRulerAction" name="Auto::org.eclipse.jdt.internal.ui.propertiesfileeditor.SelectRulerAction"/>
+ <rootContext xmi:id="_W0DybuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.texteditor.BookmarkRulerAction" name="Auto::org.eclipse.ui.texteditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_W0Dyb-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.texteditor.SelectRulerAction" name="Auto::org.eclipse.ui.texteditor.SelectRulerAction"/>
+ <rootContext xmi:id="_W0DycOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.actionSet.presentation" name="Auto::org.eclipse.ant.ui.actionSet.presentation"/>
+ <rootContext xmi:id="_W0DyceLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.breakpointActionSet" name="Auto::org.eclipse.debug.ui.breakpointActionSet"/>
+ <rootContext xmi:id="_W0DycuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.debugActionSet" name="Auto::org.eclipse.debug.ui.debugActionSet"/>
+ <rootContext xmi:id="_W0Dyc-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.launchActionSet" name="Auto::org.eclipse.debug.ui.launchActionSet"/>
+ <rootContext xmi:id="_W0DydOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.profileActionSet" name="Auto::org.eclipse.debug.ui.profileActionSet"/>
+ <rootContext xmi:id="_W0DydeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.gitaction" name="Auto::org.eclipse.egit.ui.gitaction"/>
+ <rootContext xmi:id="_W0DyduLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.navigation" name="Auto::org.eclipse.egit.ui.navigation"/>
+ <rootContext xmi:id="_W0Dyd-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.JDTDebugActionSet" name="Auto::org.eclipse.jdt.debug.ui.JDTDebugActionSet"/>
+ <rootContext xmi:id="_W0DyeOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.JUnitActionSet" name="Auto::org.eclipse.jdt.junit.JUnitActionSet"/>
+ <rootContext xmi:id="_W0DyeeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.text.java.actionSet.presentation" name="Auto::org.eclipse.jdt.ui.text.java.actionSet.presentation"/>
+ <rootContext xmi:id="_W0DyeuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaElementCreationActionSet" name="Auto::org.eclipse.jdt.ui.JavaElementCreationActionSet"/>
+ <rootContext xmi:id="_W0Dye-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaActionSet" name="Auto::org.eclipse.jdt.ui.JavaActionSet"/>
+ <rootContext xmi:id="_W0DyfOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.A_OpenActionSet" name="Auto::org.eclipse.jdt.ui.A_OpenActionSet"/>
+ <rootContext xmi:id="_W0DyfeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.CodingActionSet" name="Auto::org.eclipse.jdt.ui.CodingActionSet"/>
+ <rootContext xmi:id="_W0DyfuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SearchActionSet" name="Auto::org.eclipse.jdt.ui.SearchActionSet"/>
+ <rootContext xmi:id="_W0Dyf-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.SearchActionSet" name="Auto::org.eclipse.pde.ui.SearchActionSet"/>
+ <rootContext xmi:id="_W0DygOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.actionSet" name="Auto::org.eclipse.ui.cheatsheets.actionSet"/>
+ <rootContext xmi:id="_W0DygeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.searchActionSet" name="Auto::org.eclipse.search.searchActionSet"/>
+ <rootContext xmi:id="_W0DyguLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.CVSActionSet" name="Auto::org.eclipse.team.cvs.ui.CVSActionSet"/>
+ <rootContext xmi:id="_W0Dyg-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.actionSet" name="Auto::org.eclipse.team.ui.actionSet"/>
+ <rootContext xmi:id="_W0DyhOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.actionSet.annotationNavigation" name="Auto::org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
+ <rootContext xmi:id="_W0DyheLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.actionSet.navigation" name="Auto::org.eclipse.ui.edit.text.actionSet.navigation"/>
+ <rootContext xmi:id="_W0DyhuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo" name="Auto::org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
+ <rootContext xmi:id="_W0Dyh-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.externaltools.ExternalToolsSet" name="Auto::org.eclipse.ui.externaltools.ExternalToolsSet"/>
+ <rootContext xmi:id="_W0DyiOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.NavigateActionSet" name="Auto::org.eclipse.ui.NavigateActionSet"/>
+ <rootContext xmi:id="_W0DyieLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.actionSet.keyBindings" name="Auto::org.eclipse.ui.actionSet.keyBindings"/>
+ <rootContext xmi:id="_W0DyiuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.WorkingSetModificationActionSet" name="Auto::org.eclipse.ui.WorkingSetModificationActionSet"/>
+ <rootContext xmi:id="_W0Dyi-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.WorkingSetActionSet" name="Auto::org.eclipse.ui.WorkingSetActionSet"/>
+ <rootContext xmi:id="_W0DyjOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.actionSet.openFiles" name="Auto::org.eclipse.ui.actionSet.openFiles"/>
+ <rootContext xmi:id="_W0DyjeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.actionSet.presentation" name="Auto::org.eclipse.ui.edit.text.actionSet.presentation"/>
+ <rootContext xmi:id="_RAPCMKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.editor.designView" name="XSD Editor Design View" description="XSD Editor Design View"/>
+ <rootContext xmi:id="_RAPpRaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.editor.sourceView" name="XSD Editor Source View" description="XSD Editor Source View"/>
+ <rootContext xmi:id="_RWipYKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.actionSet" name="Auto::org.eclipse.mylyn.context.ui.actionSet"/>
+ <rootContext xmi:id="_RWjQcKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.java.actionSet" name="Auto::org.eclipse.mylyn.java.actionSet"/>
+ <rootContext xmi:id="_RWjQcqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.java.actionSet.browsing" name="Auto::org.eclipse.mylyn.java.actionSet.browsing"/>
+ <rootContext xmi:id="_RWj3gKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.doc.actionSet" name="Auto::org.eclipse.mylyn.doc.actionSet"/>
+ <rootContext xmi:id="_RWj3gqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.navigation" name="Auto::org.eclipse.mylyn.tasks.ui.navigation"/>
+ <rootContext xmi:id="_RWkekKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.navigation.additions" name="Auto::org.eclipse.mylyn.tasks.ui.navigation.additions"/>
+ <rootContext xmi:id="_RWkekqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.ui.actionset" name="Auto::org.eclipse.wb.core.ui.actionset"/>
+ <descriptors xmi:id="_W0DyjuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.compatibility.editor" allowMultiple="true" category="org.eclipse.e4.primaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor">
+ <tags>Editor</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyj-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.views.AntView" label="Ant" iconURI="platform:/plugin/org.eclipse.ant.ui/icons/full/eview16/ant_view.png" tooltip="" category="Ant" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Ant</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DykOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.DebugView" label="Debug" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/debug_view.png" tooltip="" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DykeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.BreakpointView" label="Breakpoints" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/breakpoint_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DykuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.VariableView" label="Variables" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/variable_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyk-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ExpressionView" label="Expressions" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/watchlist_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DylOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.RegisterView" label="Registers" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/register_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyleLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.ModuleView" label="Modules" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/module_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyluLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.MemoryView" label="Memory" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/memory_view.png" tooltip="" allowMultiple="true" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyl-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesView" label="Git Repositories" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/repo_rep.gif" tooltip="" category="Git" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DymOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.StagingView" label="Git Staging" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/staging.png" tooltip="" category="Git" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DymeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.InteractiveRebaseView" label="Git Interactive Rebase" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/rebase_interactive.gif" tooltip="" category="Git" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DymuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.CompareTreeView" label="Git Tree Compare" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/obj16/gitrepository.gif" tooltip="" category="Git" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dym-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ReflogView" label="Git Reflog" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/reflog.gif" tooltip="" category="Git" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DynOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.HelpView" label="Help" iconURI="platform:/plugin/org.eclipse.help.ui/icons/view16/help_view.gif" tooltip="" category="Help" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyneLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.DisplayView" label="Display" iconURI="platform:/plugin/org.eclipse.jdt.debug.ui/icons/full/etool16/disp_sbook.gif" tooltip="" category="Debug" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DynuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.ResultView" label="JUnit" iconURI="platform:/plugin/org.eclipse.jdt.junit/icons/full/eview16/junit.gif" tooltip="" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyn-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackageExplorer" label="Package Explorer" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/package.png" tooltip="" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyoOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.TypeHierarchy" label="Type Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/class_hi.png" tooltip="" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyoeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.ProjectsView" label="Projects" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/projects.png" tooltip="" category="Java Browsing" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyouLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.PackagesView" label="Packages" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/packages.png" tooltip="" category="Java Browsing" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyo-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.TypesView" label="Types" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/types.png" tooltip="" category="Java Browsing" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DypOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.MembersView" label="Members" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/members.png" tooltip="" category="Java Browsing" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DypeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.callhierarchy.view" label="Call Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/call_hierarchy.png" tooltip="" allowMultiple="true" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DypuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.texteditor.TemplatesView" label="Templates" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/templates.png" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyp-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.SourceView" label="Declaration" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/source.png" tooltip="" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyqOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavadocView" label="Javadoc" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/javadoc.png" tooltip="" category="Java" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyqeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.api.tools.ui.views.apitooling.views.apitoolingview" label="API Tools" iconURI="platform:/plugin/org.eclipse.pde.api.tools.ui/icons/full/obj16/api_tools.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:API Tools</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyquLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.runtime.RegistryBrowser" label="Plug-in Registry" iconURI="platform:/plugin/org.eclipse.pde.runtime/icons/eview16/registry.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Plug-in Development</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyq-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.PluginsView" label="Plug-ins" iconURI="platform:/plugin/org.eclipse.pde.ui/icons/eview16/plugin_depend.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Plug-in Development</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyrOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.DependenciesView" label="Plug-in Dependencies" iconURI="platform:/plugin/org.eclipse.pde.ui/icons/obj16/req_plugins_obj.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Plug-in Development</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyreLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.TargetPlatformState" label="Target Platform State" iconURI="platform:/plugin/org.eclipse.pde.ui/icons/obj16/target_profile_xml_obj.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Plug-in Development</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyruLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.ImageBrowserView" label="Plug-in Image Browser" iconURI="platform:/plugin/org.eclipse.pde.ui/icons/obj16/psearch_obj.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Plug-in Development</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyr-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.SearchResultView" label="Classic Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DysOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.views.SearchView" label="Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyseLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ccvs.ui.RepositoriesView" label="CVS Repositories" iconURI="platform:/plugin/org.eclipse.team.cvs.ui/icons/full/eview16/repo_rep.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:CVS</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DysuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ccvs.ui.EditorsView" label="CVS Editors" iconURI="platform:/plugin/org.eclipse.team.cvs.ui/icons/full/eview16/rep_editors_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:CVS</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dys-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.sync.views.SynchronizeView" label="Synchronize" iconURI="platform:/plugin/org.eclipse.team.ui/icons/full/eview16/synch_synch.gif" tooltip="" allowMultiple="true" category="Team" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Team</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DytOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.GenericHistoryView" label="History" iconURI="platform:/plugin/org.eclipse.team.ui/icons/full/eview16/history_view.gif" tooltip="" allowMultiple="true" category="Team" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Team</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyteLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.internal.introview" label="Welcome" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.png" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DytuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.browser.view" label="Internal Web Browser" iconURI="platform:/plugin/org.eclipse.ui.browser/icons/obj16/internal_browser.gif" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyt-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="Cheat Sheets" iconURI="platform:/plugin/org.eclipse.ui.cheatsheets/icons/view16/cheatsheet_view.gif" tooltip="" category="Help" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyuOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.console.ConsoleView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console/icons/full/cview16/console_view.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyueLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProgressView" label="Progress" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/pview.png" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyuuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ResourceNavigator" label="Navigator" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/filenav_nav.png" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyu-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.BookmarkView" label="Bookmarks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/bkmrk_nav.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyvOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.TaskList" label="Tasks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/tasks_tsk.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyveLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ProblemView" label="Problems" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyvuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.AllMarkersView" label="Markers" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0Dyv-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources/icons/full/eview16/resource_persp.gif" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DywOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.PropertySheet" label="Properties" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/prop_ps.png" tooltip="" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DyweLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.ContentOutline" label="Outline" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/outline_co.png" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_W0DywuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.runtime.LogView" label="Error Log" iconURI="platform:/plugin/org.eclipse.ui.views.log/icons/eview16/error_log.gif" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_REkvoKM1EeaKb6tuSbNsJA" elementId="org.eclipse.gef.ui.palette_view" label="Palette" iconURI="platform:/plugin/org.eclipse.gef/icons/palette_view.gif" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE0AMKM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.views.MavenRepositoryView" label="Maven Repositories" iconURI="platform:/plugin/org.eclipse.m2e.core.ui/icons/maven_indexes.gif" tooltip="" category="Maven" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Maven</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE3qkKM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.views.MavenBuild" label="Maven Workspace Build" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.png" tooltip="" category="Maven" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Maven</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE44sKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.navigator.builds" label="Builds" iconURI="platform:/plugin/org.eclipse.mylyn.builds.ui/icons/eview16/build-view.png" tooltip="" category="Mylyn" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Mylyn</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE6t4KM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.commons.repositories.ui.navigator.Repositories" label="Team Repositories" iconURI="platform:/plugin/org.eclipse.mylyn.commons.repositories.ui/icons/eview16/repositories.gif" tooltip="" category="Mylyn" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Mylyn</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE78AKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.views.tasks" label="Task List" iconURI="platform:/plugin/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif" tooltip="" allowMultiple="true" category="Mylyn" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Mylyn</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE9xMKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.views.repositories" label="Task Repositories" iconURI="platform:/plugin/org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gif" tooltip="" category="Mylyn" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Mylyn</tags>
+ </descriptors>
+ <descriptors xmi:id="_RE-_UKM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.p2.ui.RepositoryExplorer" label="Repository Explorer" iconURI="platform:/plugin/org.eclipse.oomph.p2.ui/icons/obj16/repository.gif" tooltip="" category="Oomph" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Oomph</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFBbkKM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.apidocs.rcp.views.apidocs" label="API Docs" iconURI="platform:/plugin/org.eclipse.recommenders.apidocs.rcp/icons/view16/apidocs.png" tooltip="" category="Code Recommenders" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Code Recommenders</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFCpsKM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.models.rcp.views.projectCoordinates" label="Project Coordinates" iconURI="platform:/plugin/org.eclipse.recommenders.coordinates.rcp/icons/view16/depinsp.gif" tooltip="" category="Code Recommenders" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Code Recommenders</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFD30KM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.models.rcp.views.modelRepositories" label="Model Repositories" iconURI="platform:/plugin/org.eclipse.recommenders.models.rcp/icons/view16/depinsp.gif" tooltip="" category="Code Recommenders" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Code Recommenders</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFEe4KM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.models.rcp.views.dependencyOverview" label="Dependency Overview" iconURI="platform:/plugin/org.eclipse.recommenders.models.rcp/icons/view16/depinsp.gif" tooltip="" category="Code Recommenders" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Code Recommenders</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFFtAKM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.snipmatch.rcp.views.snippets" label="Snippets" iconURI="platform:/plugin/org.eclipse.recommenders.snipmatch.rcp/icons/view16/snippets.png" tooltip="" category="Code Recommenders" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Code Recommenders</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFLMkKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.StructureView" label="Structure" iconURI="platform:/plugin/org.eclipse.wb.core/icons/structure/properties_view.gif" tooltip="" category="WindowBuilder" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:WindowBuilder</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFO28KM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.PaletteView" label="Palette" iconURI="platform:/plugin/org.eclipse.wb.core/icons/structure/palette.png" tooltip="" category="WindowBuilder" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:WindowBuilder</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFQsIKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.common.snippets.internal.ui.SnippetsView" label="Snippets" iconURI="platform:/plugin/org.eclipse.wst.common.snippets/icons/snippets_view.gif" tooltip="" category="General" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFR6QKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.views.annotations.XMLAnnotationsView" label="Documentation" iconURI="platform:/plugin/org.eclipse.wst.xml.ui/icons/full/obj16/comment_obj.gif" tooltip="" category="XML" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:XML</tags>
+ </descriptors>
+ <descriptors xmi:id="_RFTIYKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.contentmodel.view" label="Content Model" iconURI="platform:/plugin/org.eclipse.wst.xml.ui/icons/full/view16/hierarchy.gif" tooltip="" category="XML" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:XML</tags>
+ </descriptors>
+ <trimContributions xmi:id="_2r10UF9tEeO-yojH_y4TJA" elementId="org.eclipse.ui.ide.application.trimcontribution.QuickAccess" contributorURI="platform:/plugin/org.eclipse.ui.ide.application" toBeRendered="false" parentId="org.eclipse.ui.main.toolbar" positionInParent="last">
+ <children xsi:type="menu:ToolControl" xmi:id="_76uUAF9tEeO-yojH_y4TJA" elementId="Spacer Glue" contributorURI="platform:/plugin/org.eclipse.ui.ide.application" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>glue</tags>
+ <tags>move_after:PerspectiveSpacer</tags>
+ <tags>SHOW_RESTORE_MENU</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_8tJPcF9tEeO-yojH_y4TJA" elementId="SearchField" contributorURI="platform:/plugin/org.eclipse.ui.ide.application" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.quickaccess.SearchField">
+ <tags>move_after:Spacer Glue</tags>
+ <tags>HIDEABLE</tags>
+ <tags>SHOW_RESTORE_MENU</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_9LgmcF9tEeO-yojH_y4TJA" elementId="Search-PS Glue" contributorURI="platform:/plugin/org.eclipse.ui.ide.application" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>glue</tags>
+ <tags>move_after:SearchField</tags>
+ <tags>SHOW_RESTORE_MENU</tags>
+ </children>
+ </trimContributions>
+ <commands xmi:id="_W0FARuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.command.nextpage" commandName="Next Page of Memory" description="Load next page of memory" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAR-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.project" commandName="Implementors in Project" description="Search for implementors of the selected interface in the enclosing project" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FASOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.removeTrailingWhitespace" commandName="Remove Trailing Whitespace" description="Removes the trailing whitespace of each line" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FASeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.GenerateDiff" commandName="Create Patch" description="Compare your workspace contents with the server and generate a diff file that can be used as a patch file." category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FASuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences" commandName="Toggle Mark Occurrences" description="Toggles mark occurrences in Java editors" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAS-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.runtime.spy.commands.spyCommand" commandName="Plug-in Selection Spy" description="Show the Plug-in Spy" category="_W0GOZOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FATOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.AllInstances" commandName="All Instances" description="View all instances of the selected type loaded in the target VM" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FATeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.showChangeRulerInformation" commandName="Show Quick Diff Ruler Tooltip" description="Displays quick diff or revision information for the caret line in a focused hover" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FATuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.use.supertype" commandName="Use Supertype Where Possible" description="Change occurrences of a type to use a supertype instead" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAT-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewClone" commandName="Clone a Git Repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAUOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.textStart" commandName="Select Text Start" description="Select to the beginning of the text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAUeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.openCheatSheetURL" commandName="Open Cheat Sheet from URL" description="Open a Cheat Sheet from file at a specified URL." category="_W0GOa-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FAUuLhEeWHh-AP9QZrlQ" elementId="cheatSheetId" name="Identifier" optional="false"/>
+ <parameters xmi:id="_W0FAU-LhEeWHh-AP9QZrlQ" elementId="name" name="Name" optional="false"/>
+ <parameters xmi:id="_W0FAVOLhEeWHh-AP9QZrlQ" elementId="url" name="URL" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FAVeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewRefresh" commandName="Refresh" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAVuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.navigate.open.type.in.hierarchy" commandName="Open Type in Hierarchy" description="Open a type in the type hierarchy view" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAV-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaBrowsingPerspective" commandName="Java Browsing" description="Show the Java Browsing perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAWOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.buildAll" commandName="Build All" description="Build all projects" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAWeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.lockToolBar" commandName="Lock the Toolbars" description="Lock the Toolbars" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAWuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.expandAll" commandName="Expand All" description="Expand the current tree" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAW-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.import" commandName="Import" description="Import" category="_W0GOZuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FAXOLhEeWHh-AP9QZrlQ" elementId="importWizardId" name="Import Wizard"/>
+ </commands>
+ <commands xmi:id="_W0FAXeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.lineEnd" commandName="Select Line End" description="Select to the end of the line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAXuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.helpSearch" commandName="Help Search" description="Open the help search" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAX-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.CompareWithHead" commandName="Compare with HEAD Revision" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAYOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.importFromRepository" commandName="Import Plug-in from a Repository" description="Imports a plug-in from a source repository" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAYeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.smartEnterInverse" commandName="Insert Line Above Current Line" description="Adds a new line above the current line" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAYuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations" commandName="External Tools..." description="Open external tools launch configuration dialog" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAY-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.windowEnd" commandName="Window End" description="Go to the end of the window" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAZOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.update" commandName="Update" description="Update resources with new content from the repository" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAZeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.TeamSynchronizingPerspective" commandName="Team Synchronizing" description="Open the Team Synchronizing Perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAZuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.indexcommand" commandName="Index" description="Show Keyword Index" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAZ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.StepOver" commandName="Step Over" description="Step over" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAaOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.renameInFile" commandName="Rename In File" description="Renames all references within the same buildfile" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAaeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewOpenInEditor" commandName="Open in Editor" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAauLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.RenameBranch" commandName="Rename Branch..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAa-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.quickMenu" commandName="Surround With Quick Menu" description="Shows the Surround With quick menu" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAbOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.addMemoryMonitor" commandName="Add Memory Block" description="Add memory block" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAbeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewRebase" commandName="Rebase" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAbuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.revertToSaved" commandName="Revert to Saved" description="Revert to the last saved state" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAb-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Rebase" commandName="Rebase" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAcOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.pinEditor" commandName="Pin Editor" description="Pin the current editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAceLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.encapsulateField.assist" commandName="Quick Assist - Create getter/setter for field" description="Invokes quick assist and selects 'Create getter/setter for field'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAcuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.implement.occurrences" commandName="Search Implement Occurrences in File" description="Search for implement occurrences of a selected type" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAc-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.Inspect" commandName="Inspect" description="Inspect result of evaluating selected text" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAdOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.toggle.comment" commandName="Toggle Comment" description="Toggle comment the selected lines" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAdeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.add.block.comment" commandName="Add Block Comment" description="Enclose the selection with a block comment" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAduLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.try.catch" commandName="Surround with try/catch Block" description="Surround the selected text with a try/catch block" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAd-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.convert.anonymous.to.nested" commandName="Convert Anonymous Class to Nested" description="Convert an anonymous class to a nested class" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAeOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ShowRepositoriesView" commandName="Show Git Repositories View" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAeeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Tag" commandName="Tag" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAeuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.restore" commandName="Reset Structure" description="Resets the folding structure" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAe-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.restartWorkbench" commandName="Restart" description="Restart the workbench" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAfOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.export" commandName="Export" description="Export" category="_W0GOZuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FAfeLhEeWHh-AP9QZrlQ" elementId="exportWizardId" name="Export Wizard"/>
+ </commands>
+ <commands xmi:id="_W0FAfuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewConfigurePush" commandName="Configure Push..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAf-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.occurrences.in.file.quickMenu" commandName="Show Occurrences in File Quick Menu" description="Shows the Occurrences in File quick menu" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAgOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.lineDown" commandName="Select Line Down" description="Extend the selection to the next line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAgeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.resetPerspective" commandName="Reset Perspective" description="Reset the current perspective to its default state" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAguLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.PushHeadToGerrit" commandName="Push Current Head to Gerrit" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAg-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactoring.commands.renameResource" commandName="Rename Resource" description="Rename the selected resource and notify LTK participants." category="_W0GObuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAhOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.showContextMenu" commandName="Show Context Menu" description="Show the context menu" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAheLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.stash.drop" commandName="Delete Stashed Commit..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAhuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.searchTargetRepositories" commandName="Add Artifact to Target Platform" description="Add an artifact to your target platform" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FAh-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.searchTargetRepositories.term" name="The initial search pattern for the artifact search dialog"/>
+ </commands>
+ <commands xmi:id="_W0FAiOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.savePerspective" commandName="Save Perspective As" description="Save the current perspective" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAieLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ConfigureUpstreamPush" commandName="Configure Upstream Push" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAiuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.showInformation" commandName="Show Tooltip Description" description="Displays information for the current caret location in a focused hover" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAi-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.markCompleted" commandName="Mark Completed" description="Mark the selected tasks as completed" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAjOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ConfigureFetch" commandName="Configure Upstream Fetch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAjeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.nextMemoryBlock" commandName="Next Memory Monitor" description="Show renderings from next memory monitor." category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAjuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.toggleOverwrite" commandName="Toggle Overwrite" description="Toggle overwrite mode" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAj-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.textEnd" commandName="Text End" description="Go to the end of the text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAkOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.specific_content_assist.command" commandName="Content Assist" description="A parameterizable command that invokes content assist with a single completion proposal category" category="_W0GOY-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FAkeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.specific_content_assist.category_id" name="type" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FAkuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.copy.qualified.name" commandName="Copy Qualified Name" description="Copy a fully qualified name to the system clipboard" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAk-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.project" commandName="Write Access in Project" description="Search for write references to the selected element in the enclosing project" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAlOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.showKeyAssist" commandName="Show Key Assist" description="Show the key assist dialog" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAleLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.delete" commandName="Delete" description="Delete the selection" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAluLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.saveAs" commandName="Save As" description="Save the current contents to another location" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAl-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewChangeCredentials" commandName="Change Credentials" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAmOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.try.multicatch" commandName="Surround with try/multi-catch Block" description="Surround the selected text with a try/multi-catch block" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAmeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.performTextSearchWorkspace" commandName="Find Text in Workspace" description="Searches the files in the workspace for specific text." category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAmuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.working.set" commandName="Implementors in Working Set" description="Search for implementors of the selected interface in a working set" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAm-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaPerspective" commandName="Java" description="Show the Java perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAnOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.openEditorDropDown" commandName="Quick Switch Editor" description="Open the editor drop down list" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAneLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CreateTag" commandName="Create Tag..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAnuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ProfileLast" commandName="Profile" description="Launch in profile mode" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAn-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.changeToStatic" commandName="Quick Fix - Change to static access" description="Invokes quick assist and selects 'Change to static access'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAoOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.override.methods" commandName="Override/Implement Methods" description="Override or implement methods from super types" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAoeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.workspace" commandName="References in Workspace" description="Search for references to the selected element in the workspace" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAouLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.performTextSearchFile" commandName="Find Text in File" description="Searches the files in the file for specific text." category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAo-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewPaste" commandName="Paste Repository Path or URI" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FApOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.paste" commandName="Paste" description="Paste from the clipboard" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FApeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.convertAnonymousToLocal.assist" commandName="Quick Assist - Convert anonymous to local class" description="Invokes quick assist and selects 'Convert anonymous to local class'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FApuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.EquinoxLaunchShortcut.debug" commandName="Debug OSGi Framework" description="Debug OSGi Framework" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAp-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.previous" commandName="Previous" description="Navigate to the previous item" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAqOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.source.quickMenu" commandName="Show Source Quick Menu" description="Shows the source quick menu" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAqeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Ignore" commandName="Ignore" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAquLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewCopyPath" commandName="Copy Path to Clipboard" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FAq-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.toggleBreadcrumb" commandName="Toggle Java Editor Breadcrumb" description="Toggle the Java editor breadcrumb" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FArOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.call.hierarchy" commandName="Open Call Hierarchy" description="Open a call hierarchy on the selected element" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnAOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.RemoveFromIndex" commandName="Remove from Git Index" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnAeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.extractConstant.assist" commandName="Quick Assist - Extract constant" description="Invokes quick assist and selects 'Extract constant'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnAuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.lineUp" commandName="Line Up" description="Go up one line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnA-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.newQuickMenu" commandName="New menu" description="Open the New menu" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnBOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.deleteNext" commandName="Delete Next" description="Delete the next character" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnBeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.deleteNextWord" commandName="Delete Next Word" description="Delete the next word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnBuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.working.set" commandName="Write Access in Working Set" description="Search for write references to the selected element in a working set" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnB-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.undo" commandName="Undo" description="Undo the last operation" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnCOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.back" commandName="Back" description="Navigate back" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnCeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.DebugLast" commandName="Debug" description="Launch in debug mode" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnCuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ToggleLineBreakpoint" commandName="Toggle Line Breakpoint" description="Creates or removes a line breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnC-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.lineNumberToggle" commandName="Show Line Numbers" description="Toggle display of line numbers" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnDOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ToggleStepFilters" commandName="Use Step Filters" description="Toggles enablement of debug step filters" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnDeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesLinkWithSelection" commandName="Link with Selection" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnDuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.workspace" commandName="Read Access in Workspace" description="Search for read references to the selected element in the workspace" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnD-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.renameInFile.assist" commandName="Quick Assist - Rename in file" description="Invokes quick assist and selects 'Rename in file'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnEOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.newEditor" commandName="New Editor" description="Open another editor on the active editor's input" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnEeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Fetch" commandName="Fetch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnEuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.org.eclipse.egit.ui.AbortRebase" commandName="Abort Rebase" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnE-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.SetQuickdiffBaseline" commandName="Set quickdiff baseline" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnFOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.wordPrevious" commandName="Previous Word" description="Go to the previous word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnFeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.ShowBlame" commandName="Show Annotations" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnFuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewDelete" commandName="Delete Repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnF-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.recenter" commandName="Recenter" description="Recenter the window based on the cursor" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnGOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.installationDialog" commandName="Installation Information" description="Open the installation dialog" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnGeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Pull" commandName="Pull" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnGuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.CompareWithIndex" commandName="Compare with Git Index" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnG-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.shiftRight" commandName="Shift Right" description="Shift a block of text to the right" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnHOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.tag" commandName="Tag as Version" description="Tag the resources with a CVS version tag" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnHeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.refresh" commandName="Refresh" description="Refresh the selected items" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnHuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.Merge" commandName="Merge" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnH-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.add.unimplemented.constructors" commandName="Generate Constructors from Superclass" description="Evaluate and add constructors from superclass" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnIOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.working.set" commandName="References in Working Set" description="Search for references to the selected element in a working set" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnIeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.performTextSearchWorkingSet" commandName="Find Text in Working Set" description="Searches the files in the working set for specific text." category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnIuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.delete.line.to.end" commandName="Delete to End of Line" description="Delete to the end of a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnI-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CreateBranch" commandName="Create Branch" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnJOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.move.element" commandName="Move - Refactoring " description="Move the selected element to a new location" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnJeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.nextEditor" commandName="Next Editor" description="Switch to the next editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnJuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.factory" commandName="Introduce Factory" description="Introduce a factory method to encapsulate invocation of the selected constructor" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnJ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ShowBlame" commandName="Show Annotations" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnKOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.forward" commandName="Forward" description="Navigate forward" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnKeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.pageUp" commandName="Page Up" description="Go up one page" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnKuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.updateSwitch" commandName="Switch to Another Branch or Version" description="Switch to Another Branch or Version" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnK-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.closeAllSaved" commandName="Close All Saved" description="Close all saved editors" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnLOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.replace.invocations" commandName="Replace Invocations" description="Replace invocations of the selected method" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnLeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.openManifest" commandName="Open Manifest" description="Open the plug-in manifest" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnLuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.OpenRunConfigurations" commandName="Run..." description="Open run launch configuration dialog" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnL-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.AssumeUnchanged" commandName="Assume Unchanged" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnMOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.commands.showElementInTypeHierarchyView" commandName="Show Java Element Type Hierarchy" description="Show a Java element in the Type Hierarchy view" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnMeLhEeWHh-AP9QZrlQ" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FnMuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.deletePreviousWord" commandName="Delete Previous Word" description="Delete the previous word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnM-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.deletePrevious" commandName="Delete Previous" description="Delete the previous character" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnNOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.SkipAllBreakpoints" commandName="Skip All Breakpoints" description="Sets whether or not any breakpoint should suspend execution" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnNeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.extractLocalNotReplaceOccurrences.assist" commandName="Quick Assist - Extract local variable" description="Invokes quick assist and selects 'Extract local variable'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnNuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.set.mark" commandName="Set Mark" description="Set the mark" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnN-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactor.show.refactoring.history" commandName="Open Refactoring History " description="Opens the refactoring history" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnOOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.RenameBranch" commandName="Rename Branch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnOeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.OpenCommit" commandName="Open Git Commit" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnOuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.epp.mpc.ui.command.showMarketplaceWizard" commandName="Eclipse Marketplace" description="Show the Eclipse Marketplace wizard" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnO-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.AddToIndex" commandName="Add to Git Index" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnPOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.exit" commandName="Exit" description="Exit the application" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnPeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ConfigurePush" commandName="Configure Upstream Push" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnPuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.customizePerspective" commandName="Customize Perspective" description="Customize the current perspective" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnP-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.showInQuickMenu" commandName="Show In..." description="Open the Show In menu" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnQOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.hierarchy" commandName="Read Access in Hierarchy" description="Search for read references of the selected element in its hierarchy" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnQeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.deleteCompleted" commandName="Delete Completed Tasks" description="Delete the tasks marked as completed" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnQuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.DebugPerspective" commandName="Debug" description="Open the debug perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnQ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.change.type" commandName="Generalize Declared Type" description="Change the declaration of a selected variable to a more general type consistent with usage" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnROLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.rename" commandName="Rename" description="Rename the selected item" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnReLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.CheckoutCommand" commandName="Checkout" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnRuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactoring.commands.deleteResources" commandName="Delete Resources" description="Delete the selected resources and notify LTK participants." category="_W0GObuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnR-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.next" commandName="Next" description="Navigate to the next item" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnSOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.show.outline" commandName="Quick Outline" description="Show the quick outline for the editor input" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnSeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.buildAutomatically" commandName="Build Automatically" description="Toggle the workspace build automatically function" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnSuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.project" commandName="References in Project" description="Search for references to the selected element in the enclosing project" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnS-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.occurrences.in.file" commandName="Search All Occurrences in File" description="Search for all occurrences of the selected element in its declaring file" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnTOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.implementation" commandName="Open Implementation" description="Opens the Implementations of a method in its hierarchy" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnTeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.workspace" commandName="Declaration in Workspace" description="Search for declarations of the selected element in the workspace" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnTuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.internal.reflog.OpenInCommitViewerCommand" commandName="Open in Commit Viewer" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnT-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.lineUp" commandName="Select Line Up" description="Extend the selection to the previous line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnUOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.project" commandName="Read Access in Project" description="Search for read references to the selected element in the enclosing project" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnUeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ShowHistory" commandName="Show in History" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnUuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.openDependencies" commandName="Open Plug-in Dependencies" description="Opens the plug-in dependencies view for the current plug-in" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnU-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.compareWithOther" commandName="Compare With Other Resource" description="Compare resources, clipboard contents or editors" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnVOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.replaceWithTag" commandName="Replace With Another Branch or Version" description="Replace with Branch or Version on the CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnVeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.junitShortcut.rerunFailedFirst" commandName="Rerun JUnit Test - Failures First" description="Rerun JUnit Test - Failures First" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnVuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.select.last" commandName="Restore Last Selection" description="Restore last selection" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnV-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.browser.openBundleResource" commandName="Open Resource in Browser" description="Opens a bundle resource in the default web browser." category="_W0GOXOLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnWOLhEeWHh-AP9QZrlQ" elementId="plugin" name="Plugin"/>
+ <parameters xmi:id="_W0FnWeLhEeWHh-AP9QZrlQ" elementId="path" name="Path"/>
+ </commands>
+ <commands xmi:id="_W0FnWuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.stash.apply" commandName="Apply Stashed Changes" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnW-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ContinueRebase" commandName="Continue Rebase" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnXOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Push" commandName="Push" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnXeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.copyAllLeftToRight" commandName="Copy All from Left to Right" description="Copy All Changes from Left to Right" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnXuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.toggleShowWhitespaceCharacters" commandName="Show Whitespace Characters" description="Shows whitespace characters in current text editor" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnX-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.preferences" commandName="Preferences" description="Open the preferences dialog" category="_W0GOXOLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnYOLhEeWHh-AP9QZrlQ" elementId="preferencePageId" name="Preference Page"/>
+ </commands>
+ <commands xmi:id="_W0FnYeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.selectAll" commandName="Select All" description="Select all" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnYuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.close" commandName="Close" description="Close the active editor" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnY-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.internal.reflog.CopyCommand" commandName="Copy SHA-1" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnZOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.newWizard" commandName="New" description="Open the New item wizard" category="_W0GOZuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnZeLhEeWHh-AP9QZrlQ" elementId="newWizardId" name="New Wizard"/>
+ </commands>
+ <commands xmi:id="_W0FnZuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.ignoreMissingPlaceholders" commandName="Do not warn of missing documentation" description="Sets the help preferences to no longer report a warning about the current set of missing documents." category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnZ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.inline" commandName="Inline" description="Inline a constant, local variable or method" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnaOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.tipsAndTricksAction" commandName="Tips and Tricks" description="Open the tips and tricks help page" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnaeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.showHistory" commandName="Show History" description="Show History" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnauLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.copy" commandName="Copy" description="Copy the selection to the clipboard" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fna-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.Revert" commandName="Revert Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnbOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.project" commandName="Declaration in Project" description="Search for declarations of the selected element in the enclosing project" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnbeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewCreateBranch" commandName="Create Branch..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnbuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.RunToLine" commandName="Run to Line" description="Resume and break when execution reaches the current line" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnb-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.openExternalDoc" commandName="Open External Documentation" description="Open the External documentation for the current task in the Ant editor" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FncOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.JavaHierarchyPerspective" commandName="Java Type Hierarchy" description="Show the Java Type Hierarchy perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnceLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.infer.type.arguments" commandName="Infer Generic Type Arguments" description="Infer type arguments for references to generic classes and remove unnecessary casts" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FncuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.copyConfigCommand" commandName="Copy Configuration Data To Clipboard" description="Copies the configuration data (system properties, installed bundles, etc) to the clipboard." category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnc-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.Restart" commandName="Restart" description="Restart a process or debug target without terminating and re-launching" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FndOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.indent" commandName="Correct Indentation" description="Corrects the indentation of the selected lines" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FndeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.exception.occurrences" commandName="Search Exception Occurrences in File" description="Search for exception occurrences of a selected exception type" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnduLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.part.previousPage" commandName="Previous Page" description="Switch to the previous page" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnd-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.openResource" commandName="Open Resource" description="Open an editor on a particular resource" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FneOLhEeWHh-AP9QZrlQ" elementId="filePath" name="File Path" typeId="org.eclipse.ui.ide.resourcePath"/>
+ </commands>
+ <commands xmi:id="_W0FneeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Synchronize" commandName="Synchronize" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FneuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.InstanceCount" commandName="Instance Count" description="View the instance count of the selected type loaded in the target VM" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fne-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy" commandName="Quick Hierarchy" description="Show the quick hierarchy of the selected element" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnfOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.helpContents" commandName="Help Contents" description="Open the help contents" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnfeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.qualifyField" commandName="Quick Fix - Qualify field access" description="Invokes quick assist and selects 'Qualify field access'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnfuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.saveAll" commandName="Save All" description="Save all current contents" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnf-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.externalizeStrings" commandName="Externalize Strings in Plug-ins" description="Extract translatable strings from plug-in files" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FngOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.GarbageCollect" commandName="Collect Garbage" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FngeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.assignToLocal.assist" commandName="Quick Assist - Assign to local variable" description="Invokes quick assist and selects 'Assign to local variable'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnguLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.hierarchy" commandName="References in Hierarchy" description="Search for references of the selected element in its hierarchy" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fng-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.runtimeWorkbenchShortcut.debug" commandName="Debug Eclipse Application" description="Debug Eclipse Application" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnhOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.textEnd" commandName="Select Text End" description="Select to the end of the text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnheLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.delete.line" commandName="Delete Line" description="Delete a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnhuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.showViewMenu" commandName="Show View Menu" description="Show the view menu" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnh-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.PushBranch" commandName="Push Branch..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FniOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.folding.collapseComments" commandName="Collapse Comments" description="Collapse all comments" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnieLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.findIncremental" commandName="Incremental Find" description="Incremental find" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FniuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.performTextSearchProject" commandName="Find Text in Project" description="Searches the files in the project for specific text." category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fni-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.edit.text.format" commandName="Format Source" description="Format a PDE Source Page" category="_W0GOaeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnjOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.previousEditor" commandName="Previous Editor" description="Switch to the previous editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnjeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.DeleteBranch" commandName="Delete Branch..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnjuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.commands.openElementInEditor" commandName="Open Java Element" description="Open a Java element in its editor" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fnj-LhEeWHh-AP9QZrlQ" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FnkOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.maximizePart" commandName="Maximize Active View or Editor" description="Toggles maximize/restore state of active view or editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnkeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.configureColumns" commandName="Configure Columns..." description="Configure the columns in the markers view" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnkuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.AddClassPrepareBreakpoint" commandName="Add Class Load Breakpoint" description="Add a class load breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnk-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.revisions.id.toggle" commandName="Toggle Revision Id Display" description="Toggles the display of the revision id" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnlOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.collapse_all" commandName="Collapse All" description="Collapses all folded regions" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnleLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commit.CherryPick" commandName="Cherry Pick" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnluLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.EquinoxLaunchShortcut.run" commandName="Run OSGi Framework" description="Run OSGi Framework" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnl-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.perspectives.showPerspective" commandName="Show Perspective" description="Show a particular perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnmOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.perspectives.showPerspective.perspectiveId" name="Parameter"/>
+ <parameters xmi:id="_W0FnmeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.perspectives.showPerspective.newWindow" name="In New Window"/>
+ </commands>
+ <commands xmi:id="_W0FnmuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.eof" commandName="EOF" description="Send end of file" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnm-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.goto.matching.bracket" commandName="Go to Matching Bracket" description="Moves the cursor to the matching bracket" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnnOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.quickdiff.revert" commandName="Revert Lines" description="Revert the current selection, block or deleted lines" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnneLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.previousSubTab" commandName="Previous Sub-Tab" description="Switch to the previous sub-tab" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnnuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.method.exits" commandName="Search Method Exit Occurrences in File" description="Search for method exit occurrences of a selected return type" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnn-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.smartEnter" commandName="Insert Line Below Current Line" description="Adds a new line below the current line" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnoOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.pageDown" commandName="Page Down" description="Go down one page" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnoeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Reset" commandName="Reset..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnouLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.windowStart" commandName="Window Start" description="Go to the start of the window" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fno-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.goInto" commandName="Go Into" description="Navigate into the selected item" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnpOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.contentAssist.proposals" commandName="Content Assist" description="Content Assist" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnpeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.expand_all" commandName="Expand All" description="Expands all folded regions" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnpuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.nextTab" commandName="Next Tab" description="Switch to the next tab" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnp-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Discard" commandName="Replace with File in Git Index" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnqOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.OpenMarkersView" commandName="Open Another" description="Open another view" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnqeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.Terminate" commandName="Terminate" description="Terminate" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnquLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.createAntBuildFile" commandName="Create Ant Build File" description="Creates an Ant build file for the current project" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnq-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.NoAssumeUnchanged" commandName="No Assume Unchanged" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnrOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.runtime.spy.commands.menuSpyCommand" commandName="Plug-in Menu Spy" description="Show the Plug-in Spy" category="_W0GOZOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnreLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.windowEnd" commandName="Select Window End" description="Select to the end of the window" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnruLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.command.gotoaddress" commandName="Go to Address" description="Go to Address" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnr-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.switchToEditor" commandName="Switch to Editor" description="Switch to an editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnsOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.Suspend" commandName="Suspend" description="Suspend" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnseLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.command.shareProject" commandName="Share with Git" description="Share the project using Git" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnsuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.command.projectNameParameter" name="Project" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0Fns-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.previousView" commandName="Previous View" description="Switch to the previous view" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FntOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.hierarchy" commandName="Write Access in Hierarchy" description="Search for write references of the selected element in its hierarchy" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnteLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.linkWithEditor" commandName="Toggle Link with Editor " description="Toggles linking of a view's selection with the active editor's selection" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FntuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.closeRendering" commandName="Close Rendering" description="Close the selected rendering." category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnt-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.commands.showElementInPackageView" commandName="Show Java Element in Package Explorer" description="Select Java element in the Package Explorer view" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FnuOLhEeWHh-AP9QZrlQ" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FnueLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.synchronizeAll" commandName="Synchronize..." description="Synchronize resources in the workspace with another location" category="_W0GOauLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnuuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.displayHelp" commandName="Display Help" description="Display a Help topic" category="_W0GOa-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fnu-LhEeWHh-AP9QZrlQ" elementId="href" name="Help topic href"/>
+ </commands>
+ <commands xmi:id="_W0FnvOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.navigate.open.type" commandName="Open Type" description="Open a type in a Java editor" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnveLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.previousPerspective" commandName="Previous Perspective" description="Switch to the previous perspective" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnvuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.junitShortcut.debug" commandName="Debug JUnit Test" description="Debug JUnit Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnv-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Branch" commandName="Branch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnwOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.closeProject" commandName="Close Project" description="Close the selected project" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnweLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Disconnect" commandName="Disconnect" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnwuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.assignParamToField.assist" commandName="Quick Assist - Assign parameter to field" description="Invokes quick assist and selects 'Assign parameter to field'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnw-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.commitAll" commandName="Commit All Outgoing Changes" description="Commit all outgoing changes to the repository" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnxOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.cvsPerspective" commandName="CVS Repository Exploring" description="Open the CVS Repository Exploring Perspective" category="_W0GOWuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnxeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.FetchGerritChange" commandName="Fetch From Gerrit" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnxuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.expand" commandName="Expand" description="Expands the folded region at the current selection" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnx-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.junitShortcut.rerunLast" commandName="Rerun JUnit Test" description="Rerun JUnit Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnyOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewRemove" commandName="Remove Repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnyeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.PushTags" commandName="Push Tags..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnyuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.navigate.java.open.structure" commandName="Open Structure" description="Show the structure of the selected element" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fny-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.lineStart" commandName="Line Start" description="Go to the start of the line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnzOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.gotoTest" commandName="Referring Tests" description="Referring Tests" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnzeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.help.ui.closeTray" commandName="Close User Assistance Tray" description="Close the user assistance tray containing context help information and cheat sheets." category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FnzuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.properties" commandName="Properties" description="Display the properties of the selected item's project " category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fnz-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.toggleBlockSelectionMode" commandName="Toggle Block Selection" description="Toggle block / column selection in the current text editor" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn0OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.save" commandName="Save" description="Save the current contents" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn0eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CompareWithWorkingTree" commandName="Compare with Working Directory" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn0uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.checkout" commandName="Checkout from CVS" description="Checkout from CVS" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn0-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.open.declaration.command" commandName="Open Declaration" description="Opens the Ant editor on the referenced element" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn1OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.closePart" commandName="Close Part" description="Close the active workbench part" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn1eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ToggleWatchpoint" commandName="Toggle Watchpoint" description="Creates or removes a watchpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn1uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureBranch" commandName="Configure Branch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn1-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.compareWithRemote" commandName="Compare With Latest from Repository" description="Compare with Content on CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn2OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.OpenInCommitViewerCommand" commandName="Open in Commit Viewer" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn2eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.type.hierarchy" commandName="Open Type Hierarchy" description="Open a type hierarchy on the selected element" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn2uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactor.apply.refactoring.script" commandName="Apply Script" description="Perform refactorings from a refactoring script on the local workspace" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn2-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.correction.assist.proposals" commandName="Quick Fix" description="Suggest possible fixes for a problem" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn3OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.revisions.rendering.cycle" commandName="Cycle Revision Coloring Mode" description="Cycles through the available coloring modes for revisions" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn3eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.Watch" commandName="Watch" description="Create new watch expression" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn3uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.showRulerContextMenu" commandName="Show Ruler Context Menu" description="Show the context menu for the ruler" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn3-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.minimizePart" commandName="Minimize Active View or Editor" description="Minimizes the active view or editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn4OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ToggleMethodBreakpoint" commandName="Toggle Method Breakpoint" description="Creates or removes a method breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn4eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Untrack" commandName="Untrack" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn4uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.part.nextPage" commandName="Next Page" description="Switch to the next page" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn4-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ReplaceWithRef" commandName="Replace with branch, tag, or reference" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn5OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.delete.line.to.beginning" commandName="Delete to Beginning of Line" description="Delete to the beginning of a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn5eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.backwardHistory" commandName="Backward History" description="Move backward in the editor navigation history" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn5uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.swap.mark" commandName="Swap Mark" description="Swap the mark with the cursor position" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn5-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.goto.previous.member" commandName="Go to Previous Member" description="Move the caret to the previous member of the compilation unit" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn6OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.replaceWithRevision" commandName="Replace With Revision" description="Replace with Revision on CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn6eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.buildProject" commandName="Build Project" description="Build the selected project" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn6uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.antShortcut.run" commandName="Run Ant Build" description="Run Ant Build" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn6-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.compareWithRevision" commandName="Compare With Revision" description="Compare with Revision on CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn7OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.showSystemMenu" commandName="Show System Menu" description="Show the system menu" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn7eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.select.enclosing" commandName="Select Enclosing Element" description="Expand selection to include enclosing element" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn7uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.lowerCase" commandName="To Lower Case" description="Changes the selection to lower case" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn7-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.self.encapsulate.field" commandName="Encapsulate Field" description="Create getting and setting methods for the field and use only those to access the field" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn8OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.pageDown" commandName="Select Page Down" description="Select to the bottom of the page" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn8eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.newRendering" commandName="New Rendering" description="Add a new rendering." category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn8uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.discovery.commands.ShowBundleCatalog" commandName="Show Bundle Catalog" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fn8-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.discovery.commands.DirectoryParameter" name="Directory URL"/>
+ <parameters xmi:id="_W0Fn9OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.discovery.commands.TagsParameter" name="Tags"/>
+ </commands>
+ <commands xmi:id="_W0Fn9eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.MergeTool" commandName="Merge Tool" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn9uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.SimplePush" commandName="Push to Upstream" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn9-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.open.hyperlink" commandName="Open Hyperlink" description="Opens the hyperlink at the caret location or opens a chooser if more than one hyperlink is available" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn-OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.OpenInTextEditorCommand" commandName="Open in Text Editor" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn-eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.openLocalFile" commandName="Open File..." description="Open a file" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn-uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.selectPreviousChange" commandName="Select Previous Change" description="Select Previous Change" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn--LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly" commandName="Show Selected Element Only" description="Show Selected Element Only" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn_OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.wordPrevious" commandName="Select Previous Word" description="Select the previous word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn_eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ToggleCoolbarAction" commandName="Toggle Toolbar Visibility" description="Toggles the visibility of the window toolbar" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fn_uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.Reset" commandName="Reset..." category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fn_-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.ResetMode" name="Reset mode" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FoAOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.rename.element" commandName="Rename - Refactoring " description="Rename the selected element" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoAeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.addAllPluginsToJavaSearch" commandName="Add All Plug-ins to Java Search" description="Adds all plug-ins in the target platform to java search" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoAuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RebaseInteractiveCurrent" commandName="%RebaseInteractiveCurrentHandler.name" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoA-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.AddExceptionBreakpoint" commandName="Add Java Exception Breakpoint" description="Add a Java exception breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoBOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.branch" commandName="Branch" description="Branch" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoBeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CompareVersionsInTree" commandName="Compare in Tree" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoBuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.openProject" commandName="Open Project" description="Open a project" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoB-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.cut" commandName="Cut" description="Cut the selection to the clipboard" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoCOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.moveLineDown" commandName="Move Lines Down" description="Moves the selected lines down" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoCeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.findReplace" commandName="Find and Replace" description="Find and replace text" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoCuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.StepIntoSelection" commandName="Step Into Selection" description="Step into the current selected statement" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoC-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.quickdiff.toggle" commandName="Quick Diff Toggle" description="Toggles quick diff information display on the line number ruler" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoDOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.applyPatch" commandName="Apply Patch..." description="Apply a patch to one or more workspace projects." category="_W0GOauLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoDeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.copyLeftToRight" commandName="Copy from Left to Right" description="Copy Current Change from Left to Right" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoDuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactoring.commands.moveResources" commandName="Move Resources" description="Move the selected resources and notify LTK participants." category="_W0GObuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoD-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewRenameBranch" commandName="Rename Branch..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoEOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.toggleInsertMode" commandName="Toggle Insert Mode" description="Toggle insert mode" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoEeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.editor" commandName="Open Declaration" description="Open an editor on the selected element" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoEuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.generate.constructor.using.fields" commandName="Generate Constructor using Fields" description="Choose fields to initialize and constructor from superclass to call " category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoE-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.line" commandName="Go to Line" description="Go to a specified line of text" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoFOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.nextSubTab" commandName="Next Sub-Tab" description="Switch to the next sub-tab" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoFeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.stash.create" commandName="Stash Changes" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoFuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewRemoveRemote" commandName="Delete Remote" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoF-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.columnPrevious" commandName="Previous Column" description="Go to the previous column" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoGOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar" commandName="Run Last Launched External Tool" description="Runs the last launched external Tool" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoGeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Commit" commandName="Commit..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoGuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.openPluginArtifact" commandName="Open Plug-in Artifact" description="Open a plug-in artifact in the manifest editor" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoG-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.quick.format" commandName="Format Element" description="Format enclosing text element" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoHOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.addBookmark" commandName="Add Bookmark" description="Add a bookmark" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoHeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.lineStart" commandName="Select Line Start" description="Select to the beginning of the line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoHuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CheckoutCommand" commandName="Checkout" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoH-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.cut.line.to.end" commandName="Cut to End of Line" description="Cut to the end of a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoIOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewAddRepository" commandName="Add a Git Repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoIeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.sdk.update" commandName="Check for Updates" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoIuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.findIncrementalReverse" commandName="Incremental Find Reverse" description="Incremental find reverse" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoI-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.rebuildAll" commandName="Rebuild All" description="Rebuild all projects" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoJOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.activateEditor" commandName="Activate Editor" description="Activate the editor" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoJeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.organize.imports" commandName="Organize Imports" description="Evaluate all required imports and replace the current imports" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoJuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.copyAllRightToLeft" commandName="Copy All from Right to Left" description="Copy All Changes from Right to Left" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoJ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.PushCommit" commandName="Push Commit..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoKOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.generate.javadoc" commandName="Generate Javadoc" description="Generates Javadoc for a selectable set of Java resources" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoKeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.working.set" commandName="Declaration in Working Set" description="Search for declarations of the selected element in a working set" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoKuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.closeUnrelatedProjects" commandName="Close Unrelated Projects" description="Close unrelated projects" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoK-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.lineDown" commandName="Line Down" description="Go down one line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoLOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.ToggleBreakpoint" commandName="Toggle Breakpoint" description="Creates or removes a breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoLeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.ignoreWhiteSpace" commandName="Ignore White Space" description="Ignore white space where applicable" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoLuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureGerritRemote" commandName="Gerrit Configuration..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoL-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.previousTab" commandName="Previous Tab" description="Switch to the previous tab" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoMOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.gotoLastEditPosition" commandName="Last Edit Location" description="Last edit location" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoMeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.SkipRebase" commandName="Skip commit and continue" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoMuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RebaseCurrent" commandName="Rebase" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoM-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.toggleMemoryMonitorsPane" commandName="Toggle Memory Monitors Pane" description="Toggle visibility of the Memory Monitors Pane" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoNOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.ignore" commandName="Add to .cvsignore" description="Ignore the Selected Resources when Synchronizing" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoNeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.copyBuildIdCommand" commandName="Copy Build Id To Clipboard" description="Copies the build id to the clipboard." category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoNuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.dialogs.openInputDialog" commandName="Open Input Dialog" description="Open an Input Dialog" category="_W0GOXuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FoN-LhEeWHh-AP9QZrlQ" elementId="title" name="Title"/>
+ <parameters xmi:id="_W0FoOOLhEeWHh-AP9QZrlQ" elementId="message" name="Message"/>
+ <parameters xmi:id="_W0FoOeLhEeWHh-AP9QZrlQ" elementId="initialValue" name="Initial Value"/>
+ <parameters xmi:id="_W0FoOuLhEeWHh-AP9QZrlQ" elementId="cancelReturns" name="Return Value on Cancel"/>
+ </commands>
+ <commands xmi:id="_W0FoO-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.ShowVersions" commandName="Open" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FoPOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CompareMode" name="Compare mode"/>
+ </commands>
+ <commands xmi:id="_W0FoPeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.hierarchy" commandName="Declaration in Hierarchy" description="Search for declarations of the selected element in its hierarchy" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoPuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.properties.NewPropertySheetCommand" commandName="Properties" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoP-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.antShortcut.debug" commandName="Debug Ant Build" description="Debug Ant Build" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoQOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.return.continue.targets" commandName="Search break/continue Target Occurrences in File" description="Search for break/continue target occurrences of a selected target name" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoQeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.workspace" commandName="Implementors in Workspace" description="Search for implementors of the selected interface" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoQuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.collapseAll" commandName="Collapse All" description="Collapse the current tree" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoQ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.inlineLocal.assist" commandName="Quick Assist - Inline local variable" description="Invokes quick assist and selects 'Inline local variable'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoROLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.toggle" commandName="Toggle Folding" description="Toggles folding in the current editor" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoReLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.submodule.update" commandName="Update Submodule" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoRuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.move.inner.to.top.level" commandName="Move Type to New File" description="Move Type to New File" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoR-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commit.Revert" commandName="Revert Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoSOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.comment" commandName="Comment" description="Turn the selected lines into Java comments" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoSeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addNonNLS" commandName="Quick Fix - Add non-NLS tag" description="Invokes quick assist and selects 'Add non-NLS tag'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoSuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.format" commandName="Format" description="Format the selected text" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoS-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.Display" commandName="Display" description="Display result of evaluating selected text" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoTOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewCreateRepository" commandName="Create a Repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoTeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.revert" commandName="Revert" description="Revert to the last saved state" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoTuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.folding.collapseMembers" commandName="Collapse Members" description="Collapse all members" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoT-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.gotoBreadcrumb" commandName="Show In Breadcrumb" description="Shows the Java editor breadcrumb and sets the keyboard focus into it" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoUOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.scroll.lineDown" commandName="Scroll Line Down" description="Scroll down one line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoUeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.clean.up" commandName="Clean Up" description="Solve problems and improve code style on selected resources" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoUuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.redo" commandName="Redo" description="Redo the last operation" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoU-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.StepInto" commandName="Step Into" description="Step into" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoVOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.SimpleFetch" commandName="Fetch from Upstream" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoVeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commit.Checkout" commandName="Checkout" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoVuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.join.lines" commandName="Join Lines" description="Join lines of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoV-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.scroll.lineUp" commandName="Scroll Line Up" description="Scroll up one line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoWOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.TerminateAndRelaunch" commandName="Terminate and Relaunch" description="Terminate and Relaunch" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoWeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.externalize.strings" commandName="Externalize Strings" description="Finds all strings that are not externalized and moves them into a separate property file" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoWuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.print" commandName="Print" description="Print" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoW-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.forwardHistory" commandName="Forward History" description="Move forward in the editor navigation history" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoXOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.breakpoint.properties" commandName="Java Breakpoint Properties" description="View and edit the properties for a given Java breakpoint" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoXeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.pageUp" commandName="Select Page Up" description="Select to the top of the page" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoXuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.internationalize" commandName="Internationalize Plug-ins" description="Sets up internationalization for a plug-in" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoX-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.add.import" commandName="Add Import" description="Create import statement on selection" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoYOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.CompareWithPrevious" commandName="Compare with Previous Revision" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoYeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.interface" commandName="Extract Interface" description="Extract a set of members into a new interface and try to use the new interface" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoYuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.dynamicHelp" commandName="Dynamic Help" description="Open the dynamic help" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoY-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.commit" commandName="Commit" description="Commit resources to the repository" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoZOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.working.set" commandName="Read Access in Working Set" description="Search for read references to the selected element in a working set" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoZeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.RunLast" commandName="Run" description="Launch in run mode" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoZuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.copyLineUp" commandName="Duplicate Lines" description="Duplicates the selected lines and leaves the selection unchanged" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoZ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addCast" commandName="Quick Fix - Add cast" description="Invokes quick assist and selects 'Add cast'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoaOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commit.CreateBranch" commandName="Create Branch..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoaeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu" commandName="Show Refactor Quick Menu" description="Shows the refactor quick menu" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoauLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.removeFromWorkingSet" commandName="Remove From Working Set" description="Removes the selected object from a working set." category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foa-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.javaAppletShortcut.debug" commandName="Debug Java Applet" description="Debug Java Applet" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FobOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.localJavaShortcut.run" commandName="Run Java Application" description="Run Java Application" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FobeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ReplaceWithCommit" commandName="Replace with commit" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FobuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.DeleteBranch" commandName="Delete Branch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fob-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesToggleBranchHierarchy" commandName="Toggle Branch Representation" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FocOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ApplyPatch" commandName="Apply Patch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoceLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.showRulerAnnotationInformation" commandName="Show Ruler Annotation Tooltip" description="Displays annotation information for the caret line in a focused hover" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FocuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.folding.collapse" commandName="Collapse" description="Collapses the folded region at the current selection" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foc-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.navigate.gotopackage" commandName="Go to Package" description="Go to Package" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FodOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.sdk.install" commandName="Install New Software..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FodeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.junitWorkbenchShortcut.run" commandName="Run JUnit Plug-in Test" description="Run JUnit Plug-in Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoduLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.nextView" commandName="Next View" description="Switch to the next view" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fod-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.buildLast" commandName="Repeat Working Set Build" description="Repeat the last working set build" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoeOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.textStart" commandName="Text Start" description="Go to the beginning of the text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoeeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.junit.junitShortcut.run" commandName="Run JUnit Test" description="Run JUnit Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoeuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.properties" commandName="Properties" description="Display the properties of the selected item" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foe-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.openSearchDialog" commandName="Open Search Dialog" description="Open the Search dialog" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FofOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.actions.WatchCommand" commandName="Watch" description="Create a watch expression from the current selection and add it to the Expressions view" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FofeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.openWorkspace" commandName="Switch Workspace" description="Open the workspace selection dialog" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FofuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.pull.up" commandName="Pull Up" description="Move members to a superclass" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fof-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.moveLineUp" commandName="Move Lines Up" description="Moves the selected lines up" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FogOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.configureFilters" commandName="Configure Contents..." description="Configure the filters to apply to the markers view" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FogeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.assignToField.assist" commandName="Quick Assist - Assign to field" description="Invokes quick assist and selects 'Assign to field'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoguLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.modify.method.parameters" commandName="Change Method Signature" description="Change method signature includes parameter names and parameter order" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fog-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.copyLineDown" commandName="Copy Lines" description="Duplicates the selected lines and moves the selection to the copy" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FohOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.find.broken.nls.keys" commandName="Find Broken Externalized Strings" description="Finds undefined, duplicate and unused externalized string keys in property files" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoheLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.uncomment" commandName="Uncomment" description="Uncomment the selected Java comment lines" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FohuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.remove.occurrence.annotations" commandName="Remove Occurrence Annotations" description="Removes the occurrence annotations from the current editor" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foh-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addBlock.assist" commandName="Quick Assist - Replace statement with block" description="Invokes quick assist and selects 'Replace statement with block'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoiOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.wordNext" commandName="Next Word" description="Go to the next word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoieLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CherryPick" commandName="Cherry Pick" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoiuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.addLocation" commandName="Add Repository Location" description="Add a new CVS repository location" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foi-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.ConfigureUpstreamFetch" commandName="Configure Upstream Fetch" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FojOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.Merge" commandName="Merge" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FojeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.up" commandName="Up" description="Navigate up one level" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FojuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.parameter" commandName="Introduce Parameter" description="Introduce a new method parameter based on the selected expression" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foj-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.splitJoinVariableDeclaration.assist" commandName="Quick Assist - Split/Join variable declaration" description="Invokes quick assist and selects 'Split/Join variable declaration'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FokOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.ResetQuickdiffBaseline" commandName="Reset quickdiff baseline" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FokeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.ResetQuickdiffBaselineTarget" name="Reset target (HEAD, HEAD^1)" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FokuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.submodule.add" commandName="Add Submodule" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fok-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.hideShowEditors" commandName="Toggle Editor Area Visibility" description="Toggles the visibility of the editor area" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FolOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.closePerspective" commandName="Close Perspective" description="Close the current perspective" category="_W0GOXOLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FoleLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.closePerspective.perspectiveId" name="Perspective Id"/>
+ </commands>
+ <commands xmi:id="_W0FoluLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.rebuildProject" commandName="Rebuild Project" description="Rebuild the selected projects" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fol-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.organizeManifest" commandName="Organize Manifests" description="Cleans up plug-in manifest files" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FomOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.move" commandName="Move..." description="Move the selected item" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FomeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.clear.mark" commandName="Clear Mark" description="Clear the mark" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FomuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.updateAll" commandName="Update All Incoming Changes" description="Update all incoming changes with new content from the repository" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fom-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.generate.tostring" commandName="Generate toString()" description="Generates the toString() method for the type" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FonOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.updateClasspath" commandName="Update Classpath" description="Updates the plug-in classpath from latest settings" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoneLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.ReplaceWithHead" commandName="Replace with HEAD revision" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FonuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.OpenProfileConfigurations" commandName="Profile..." description="Open profile launch configuration dialog" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fon-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.external.javadoc" commandName="Open Attached Javadoc" description="Open the attached Javadoc of the selected element in a browser" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FooOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.cheatsheets.openCheatSheet" commandName="Open Cheat Sheet" description="Open a Cheat Sheet." category="_W0GOa-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FooeLhEeWHh-AP9QZrlQ" elementId="cheatSheetId" name="Identifier"/>
+ </commands>
+ <commands xmi:id="_W0FoouLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewOpen" commandName="Open" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foo-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesToggleBranchCommit" commandName="Toggle Latest Branch Commit" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FopOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.contentAssist.contextInformation" commandName="Context Information" description="Show Context Information" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FopeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CompareVersions" commandName="Compare with each other" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FopuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.browser.openBrowser" commandName="Open Browser" description="Opens the default web browser." category="_W0GOXOLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fop-LhEeWHh-AP9QZrlQ" elementId="url" name="URL"/>
+ <parameters xmi:id="_W0FoqOLhEeWHh-AP9QZrlQ" elementId="browserId" name="Browser Id"/>
+ <parameters xmi:id="_W0FoqeLhEeWHh-AP9QZrlQ" elementId="name" name="Browser Name"/>
+ <parameters xmi:id="_W0FoquLhEeWHh-AP9QZrlQ" elementId="tooltip" name="Browser Tooltip"/>
+ </commands>
+ <commands xmi:id="_W0Foq-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.generate.hashcode.equals" commandName="Generate hashCode() and equals()" description="Generates hashCode() and equals() methods for the type" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0ForOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.indirection" commandName="Introduce Indirection" description="Introduce an indirection to encapsulate invocations of a selected method" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0ForeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.navigate.gototype" commandName="Go to Type" description="Go to Type" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0ForuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.columnNext" commandName="Select Next Column" description="Select the next column" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0For-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.merge" commandName="Merge" description="Merge" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FosOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.upperCase" commandName="To Upper Case" description="Changes the selection to upper case" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoseLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.localJavaShortcut.debug" commandName="Debug Java Application" description="Debug Java Application" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FosuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.DropToFrame" commandName="Drop to Frame" description="Drop to Frame" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fos-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewNewRemote" commandName="Create Remote..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FotOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.openFileSearchPage" commandName="File Search" description="Open the Search dialog's file search page" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoteLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.synchronizeLast" commandName="Repeat last synchronization" description="Repeat the last synchronization" category="_W0GOauLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FotuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.local.variable" commandName="Extract Local Variable" description="Extracts an expression into a new local variable and uses the new local variable" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fot-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.history.CreatePatch" commandName="Create Patch" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FouOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.clean" commandName="Clean..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoueLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.select.previous" commandName="Select Previous Element" description="Expand selection to include previous sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FouuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.columnNext" commandName="Next Column" description="Go to the next column" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fou-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.class" commandName="Extract Class..." description="Extracts fields into a new class" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FovOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.selectWorkingSets" commandName="Select Working Sets" description="Select the working sets that are applicable for this window." category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoveLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.aboutAction" commandName="About" description="Open the about dialog" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FovuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.copyRightToLeft" commandName="Copy from Right to Left" description="Copy Current Change from Right to Left" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fov-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.command.configureTrace" commandName="Configure Git Debug Trace" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FowOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.method" commandName="Extract Method" description="Extract a set of statements or an expression into a new method and use the new method" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoweLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.quickOutline" commandName="Quick Outline" description="Open a quick outline popup dialog for a given editor input" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FowuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.selectNextChange" commandName="Select Next Change" description="Select Next Change" category="_W0GObOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fow-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.newWindow" commandName="New Window" description="Open another window" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoxOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.RemoveAllBreakpoints" commandName="Remove All Breakpoints" description="Removes all breakpoints" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoxeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.showResourceByPath" commandName="Show Resource in Navigator" description="Show a resource in the Navigator given its path" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FoxuLhEeWHh-AP9QZrlQ" elementId="resourcePath" name="Resource Path" typeId="org.eclipse.ui.ide.resourcePath" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0Fox-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addImport" commandName="Quick Fix - Add import" description="Invokes quick assist and selects 'Add import'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoyOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.extractLocal.assist" commandName="Quick Assist - Extract local variable (replace all occurrences)" description="Invokes quick assist and selects 'Extract local variable (replace all occurrences)'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoyeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.parameter.object" commandName="Introduce Parameter Object" description="Introduce a parameter object to a selected method" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FoyuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.shiftLeft" commandName="Shift Left" description="Shift a block of text to the left" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foy-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.create.delegate.methods" commandName="Generate Delegate Methods" description="Add delegate methods for a type's fields" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FozOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.showAnnotation" commandName="Show Annotation" description="Show Annotation" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FozeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.project.cleanAction" commandName="Build Clean" description="Discard old built state" category="_W0GOYOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FozuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addThrowsDecl" commandName="Quick Fix - Add throws declaration" description="Invokes quick assist and selects 'Add throws declaration'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Foz-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.activeContextInfo" commandName="Show activeContext Info" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo0OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.replace" commandName="Replace With Latest from Repository" description="Replace with last committed content from CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo0eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.compareWithTag" commandName="Compare With Another Branch or Version" description="Compare with a Branch or a Version on the CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo0uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.findNext" commandName="Find Next" description="Find next item" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo0-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.imagebrowser.saveToWorkspace" commandName="Save Image" description="Save the selected image into a project in the workspace" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo1OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.Disconnect" commandName="Disconnect" description="Disconnect" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo1eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.addSuppressWarnings" commandName="Quick Fix - Add @SuppressWarnings" description="Invokes quick fix and selects 'Add @SuppressWarnings' " category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo1uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commit.CreateTag" commandName="Create Tag..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo1-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.junitWorkbenchShortcut.debug" commandName="Debug JUnit Plug-in Test" description="Debug JUnit Plug-in Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo2OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.create.getter.setter" commandName="Generate Getters and Setters" description="Generate Getter and Setter methods for type's fields" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo2eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.setKeywordSubstitution" commandName="Change ASCII/Binary Property" description="Change whether the selected resources should be treated as ASCII or binary on the CVS Server" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo2uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.windowStart" commandName="Select Window Start" description="Select to the start of the window" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo2-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.internal.reflog.CheckoutCommand" commandName="Checkout" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo3OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.refactor.migrate.jar" commandName="Migrate JAR File" description="Migrate a JAR File to a new version" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo3eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.open.super.implementation" commandName="Open Super Implementation" description="Open the Implementation in the Super Type" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo3uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.help.quickStartAction" commandName="Welcome" description="Show help for beginning users" category="_W0GOa-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo3-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.addTask" commandName="Add Task..." description="Add a task" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo4OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.closeAllPerspectives" commandName="Close All Perspectives" description="Close all open perspectives" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo4eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.quickdiff.revertLine" commandName="Revert Line" description="Revert the current line" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo4uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.command.prevpage" commandName="Previous Page of Memory" description="Load previous page of memory" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo4-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.findPrevious" commandName="Find Previous" description="Find previous item" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo5OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.push.down" commandName="Push Down" description="Move members to subclasses" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo5eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ant.ui.toggleMarkOccurrences" commandName="Toggle Ant Mark Occurrences" description="Toggles mark occurrences in Ant editors" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo5uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView" commandName="Show View" description="Shows a particular view" category="_W0GOYuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0Fo5-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.viewId" name="View"/>
+ <parameters xmi:id="_W0Fo6OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.secondaryId" name="Secondary Id"/>
+ <parameters xmi:id="_W0Fo6eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.views.showView.makeFast" name="As FastView"/>
+ </commands>
+ <commands xmi:id="_W0Fo6uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.superclass" commandName="Extract Superclass" description="Extract a set of members into a new superclass and try to use the new superclass" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo6-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.refactor.create.refactoring.script" commandName="Create Script" description="Create a refactoring script from refactorings on the local workspace" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo7OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.delimiter.windows" commandName="Convert Line Delimiters to Windows (CRLF, \r\n, 0D0A, &#xa4;&#xb6;)" description="Converts the line delimiters to Windows (CRLF, \r\n, 0D0A, &#xa4;&#xb6;)" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo7eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.cut.line" commandName="Cut Line" description="Cut a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo7uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.columnPrevious" commandName="Select Previous Column" description="Select the previous column" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo7-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.closeAll" commandName="Close All" description="Close all editors" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo8OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.cut.line.to.beginning" commandName="Cut to Beginning of Line" description="Cut to the beginning of a line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo8eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.promote.local.variable" commandName="Convert Local Variable to Field" description="Convert a local variable to a field" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo8uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.select.wordNext" commandName="Select Next Word" description="Select the next word" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo8-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.goToResource" commandName="Go to" description="Go to a particular resource in the active view" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo9OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.spy" commandName="Show Contributing Plug-in" description="Shows contribution information for the currently selected element" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo9eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.submodule.sync" commandName="Sync Submodule" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo9uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.quickAccess" commandName="Quick Access" description="Quickly access UI elements" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo9-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.CompareIndexWithHead" commandName="Compare File in Git Index with HEAD Revision" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo-OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.StepReturn" commandName="Step Return" description="Step return" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo-eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.addToWorkingSet" commandName="Add to Working Set" description="Adds the selected object to a working set." category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo-uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.goto.next.member" commandName="Go to Next Member" description="Move the caret to the next member of the compilation unit" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo--LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.select.next" commandName="Select Next Element" description="Expand selection to include next sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo_OLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.goto.lineEnd" commandName="Line End" description="Go to the end of the line of text" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo_eLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.ForceReturn" commandName="Force Return" description="Forces return from method with value of selected expression " category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo_uLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.runtimeWorkbenchShortcut.run" commandName="Run Eclipse Application" description="Run Eclipse Application" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0Fo_-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.remove.block.comment" commandName="Remove Block Comment" description="Remove the block comment enclosing the selection" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpAOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.workspace" commandName="Write Access in Workspace" description="Search for write references to the selected element in the workspace" category="_W0GOYeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpAeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.team.CreatePatch" commandName="Create Patch" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpAuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewImportProjects" commandName="Import Projects..." description="Import or create in local Git repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpA-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.delimiter.unix" commandName="Convert Line Delimiters to Unix (LF, \n, 0A, &#xb6;)" description="Converts the line delimiters to Unix (LF, \n, 0A, &#xb6;)" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpBOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.showIn" commandName="Show In" category="_W0GObeLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FpBeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.navigate.showIn.targetId" name="Show In Target Id" optional="false"/>
+ </commands>
+ <commands xmi:id="_W0FpBuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.javaAppletShortcut.run" commandName="Run Java Applet" description="Run Java Applet" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpB-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.correction.convertLocalToField.assist" commandName="Quick Assist - Convert local variable to field" description="Invokes quick assist and selects 'Convert local variable to field'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpCOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.dialogs.openMessageDialog" commandName="Open Message Dialog" description="Open a Message Dialog" category="_W0GOXuLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FpCeLhEeWHh-AP9QZrlQ" elementId="title" name="Title"/>
+ <parameters xmi:id="_W0FpCuLhEeWHh-AP9QZrlQ" elementId="message" name="Message"/>
+ <parameters xmi:id="_W0FpC-LhEeWHh-AP9QZrlQ" elementId="imageType" name="Image Type Constant" typeId="org.eclipse.ui.dialogs.Integer"/>
+ <parameters xmi:id="_W0FpDOLhEeWHh-AP9QZrlQ" elementId="defaultIndex" name="Default Button Index" typeId="org.eclipse.ui.dialogs.Integer"/>
+ <parameters xmi:id="_W0FpDeLhEeWHh-AP9QZrlQ" elementId="buttonLabel0" name="First Button Label"/>
+ <parameters xmi:id="_W0FpDuLhEeWHh-AP9QZrlQ" elementId="buttonLabel1" name="Second Button Label"/>
+ <parameters xmi:id="_W0FpD-LhEeWHh-AP9QZrlQ" elementId="buttonLabel2" name="Third Button Label"/>
+ <parameters xmi:id="_W0FpEOLhEeWHh-AP9QZrlQ" elementId="buttonLabel3" name="Fourth Button Label"/>
+ <parameters xmi:id="_W0FpEeLhEeWHh-AP9QZrlQ" elementId="cancelReturns" name="Return Value on Cancel"/>
+ </commands>
+ <commands xmi:id="_W0FpEuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.AllReferences" commandName="All References" description="Inspect all references to the selected object" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpE-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.command.OpenFromClipboard" commandName="Open from Clipboard" description="Opens a Java element or a Java stack trace from clipboard" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpFOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.discovery.commands.ShowRepositoryCatalog" commandName="Show Repository Catalog" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_W0FpFeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.equinox.p2.ui.discovery.commands.RepositoryParameter" name="P2 Repository URI"/>
+ </commands>
+ <commands xmi:id="_W0FpFuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.window.nextPerspective" commandName="Next Perspective" description="Switch to the next perspective" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpF-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.OpenDebugConfigurations" commandName="Debug..." description="Open debug launch configuration dialog" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpGOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.edit.text.hippieCompletion" commandName="Word Completion" description="Context insensitive completion" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpGeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewClearCredentials" commandName="Clear Credentials" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpGuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.extract.constant" commandName="Extract Constant" description="Extracts a constant into a new static field and uses the new static field" category="_W0GOcOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpG-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.add" commandName="Add to Version Control" description="Add the Selected Resources to Version Control" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpHOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.sync" commandName="Synchronize with Repository" description="Synchronize the workspace resources with those in the repository" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpHeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.file.closeOthers" commandName="Close Others" description="Close all editors except the one that is active" category="_W0GOZuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpHuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.add.javadoc.comment" commandName="Add Javadoc Comment" description="Add a Javadoc comment stub to the member element" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpH-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.editors.revisions.author.toggle" commandName="Toggle Revision Author Display" description="Toggles the display of the revision author" category="_W0GOX-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpIOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.edit.text.java.sort.members" commandName="Sort Members" description="Sort all members using the member order preference" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpIeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.replaceWithBase" commandName="Revert to Base" description="Revert to Base revisions" category="_W0GOW-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpIuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureFetch" commandName="Configure Fetch..." category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpI-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.debug.ui.commands.Execute" commandName="Execute" description="Evaluate selected text" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpJOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.commands.Resume" commandName="Resume" description="Resume" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpJeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetExecute" commandName="E&amp;xecute"/>
+ <commands xmi:id="_W0FpJuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetDisplay" commandName="Displa&amp;y"/>
+ <commands xmi:id="_W0FpJ-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetInspect" commandName="Insp&amp;ect"/>
+ <commands xmi:id="_W0FpKOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ant.ui.actionSet.presentation/org.eclipse.ant.ui.toggleAutoReconcile" commandName="Toggle Ant Editor Auto Reconcile" description="Toggle Ant Editor Auto Reconcile" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpKeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.RunWithConfigurationAction" commandName="Run As" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpKuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.RunHistoryMenuAction" commandName="Run History" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpK-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.RunDropDownAction" commandName="Run" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpLOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.DebugWithConfigurationAction" commandName="Debug As" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpLeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.DebugHistoryMenuAction" commandName="Debug History" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0FpLuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.launchActionSet/org.eclipse.debug.internal.ui.actions.DebugDropDownAction" commandName="Debug" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOEOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.profileActionSet/org.eclipse.debug.internal.ui.actions.ProfileDropDownAction" commandName="Profile" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOEeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.profileActionSet/org.eclipse.debug.internal.ui.actions.ProfileWithConfigurationAction" commandName="Profile As" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOEuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.profileActionSet/org.eclipse.debug.internal.ui.actions.ProfileHistoryMenuAction" commandName="Profile History" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOE-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.ui.JavaElementCreationActionSet/org.eclipse.jdt.ui.actions.NewTypeDropDown" commandName="Class..." description="New Java Class" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOFOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.ui.JavaElementCreationActionSet/org.eclipse.jdt.ui.actions.OpenPackageWizard" commandName="Package..." description="New Java Package" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOFeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.ui.JavaElementCreationActionSet/org.eclipse.jdt.ui.actions.OpenProjectWizard" commandName="Java Project..." description="New Java Project" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOFuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.ui.SearchActionSet/org.eclipse.jdt.ui.actions.OpenJavaSearchPage" commandName="Java..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOF-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.pde.ui.SearchActionSet/org.eclipse.pde.ui.actions.OpenPluginSearchPage" commandName="Plug-in..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOGOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ui.cheatsheets.actionSet/org.eclipse.ui.cheatsheets.actions.CheatSheetHelpMenuAction" commandName="Cheat Sheets..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOGeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.search.searchActionSet/org.eclipse.search.OpenSearchDialogPage" commandName="Search..." description="Search" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOGuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.team.ui.actionSet/org.eclipse.team.ui.synchronizeAll" commandName="Synchronize..." description="Synchronize..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOG-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.team.ui.actionSet/org.eclipse.team.ui.ConfigureProject" commandName="Share Project..." description="Share the project with others using a version and configuration management system." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOHOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ui.externaltools.ExternalToolsSet/org.eclipse.ui.externaltools.ExternalToolMenuDelegateMenu" commandName="External Tools" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOHeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ant.ui.BreakpointRulerActions/org.eclipse.ant.ui.actions.ManageBreakpointRulerAction" commandName="Toggle Breakpoint" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOHuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.CompilationUnitEditor.BreakpointRulerActions/org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" commandName="Toggle Breakpoint" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOH-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ClassFileEditor.BreakpointRulerActions/org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" commandName="Toggle Breakpoint" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOIOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.internal.ui.CompilationUnitEditor.ruler.actions/org.eclipse.jdt.internal.ui.javaeditor.BookmarkRulerAction" commandName="Java Editor Bookmark Ruler Action" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOIeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.internal.ui.CompilationUnitEditor.ruler.actions/org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction" commandName="Java Editor Ruler Single-Click" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOIuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.internal.ui.ClassFileEditor.ruler.actions/org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction" commandName="Java Editor Ruler Single-Click" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOI-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.internal.ui.PropertiesFileEditor.ruler.actions/org.eclipse.jdt.internal.ui.propertiesfileeditor.BookmarkRulerAction" commandName="Java Editor Bookmark Ruler Action" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOJOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.internal.ui.PropertiesFileEditor.ruler.actions/org.eclipse.jdt.internal.ui.propertiesfileeditor.SelectRulerAction" commandName="Java Editor Ruler Single-Click" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOJeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ui.texteditor.ruler.actions/org.eclipse.ui.texteditor.BookmarkRulerAction" commandName="Text Editor Bookmark Ruler Action" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOJuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.ui.texteditor.ruler.actions/org.eclipse.ui.texteditor.SelectRulerAction" commandName="Text Editor Ruler Single-Click" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOJ-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.PulldownActions/org.eclipse.debug.ui.debugview.pulldown.ViewManagementAction" commandName="View Management..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOKOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.debugview.toolbar/org.eclipse.debug.ui.debugview.toolbar.removeAllTerminated" commandName="Remove All Terminated" description="Remove All Terminated Launches" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOKeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.removeAll" commandName="Remove All" description="Remove All Breakpoints" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOKuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.linkWithDebugView" commandName="Link with Debug View" description="Link with Debug View" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOK-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.workingSets" commandName="Working Sets..." description="Manage Working Sets" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOLOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.clearDefaultBreakpointGroup" commandName="Deselect Default Working Set" description="Deselect Default Working Set" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOLeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.setDefaultBreakpointGroup" commandName="Select Default Working Set..." description="Select Default Working Set" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOLuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.breakpointsview.toolbar/org.eclipse.debug.ui.breakpointsView.toolbar.groupByAction" commandName="Group By" description="Show" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOL-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.expressionsView.toolbar/org.eclipse.debug.ui.expresssionsView.toolbar.removeAll" commandName="Remove All" description="Remove All Expressions" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOMOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.expressionsView.toolbar/org.eclipse.debug.ui.expresssionsView.toolbar.AddWatchExpression" commandName="Add Watch Expression..." description="Create a new watch expression" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOMeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.PinMemoryBlockAction" commandName="Pin Memory Monitor" description="Pin Memory Monitor" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOMuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.NewMemoryViewAction" commandName="New Memory View" description="New Memory View" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOM-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.togglemonitors" commandName="Toggle Memory Monitors Pane" description="Toggle Memory Monitors Pane" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GONOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.linkrenderingpanes" commandName="Link Memory Rendering Panes" description="Link Memory Rendering Panes" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GONeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.tablerendering.preferencesaction" commandName="Table Renderings Preferences..." description="&amp;Table Renderings Preferences..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GONuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.togglesplitpane" commandName="Toggle Split Pane" description="Toggle Split Pane" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GON-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.switchMemoryBlock" commandName="Switch Memory Monitor" description="Switch Memory Monitor" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOOOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.debug.ui.memoryView.toolbar/org.eclipse.debug.ui.memoryViewPreferencesAction" commandName="Preferences..." description="&amp;Preferences..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOOeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variableViewActions.Preferences" commandName="Java Preferences..." description="Opens preferences for Java variables" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOOuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variablesViewActions.AllReferencesInView" commandName="Show References" description="Shows references to each object in the variables view as an array of objects." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOO-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variableViewActions.ShowNullEntries" commandName="Show Null Array Entries" description="Show Null Array Entries" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOPOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variableViewActions.ShowQualified" commandName="Show Qualified Names" description="Show Qualified Names" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOPeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variableViewActions.ShowStatic" commandName="Show Static Variables" description="Show Static Variables" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOPuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.VariableViewActions/org.eclipse.jdt.debug.ui.variableViewActions.ShowConstants" commandName="Show Constants" description="Show Constants" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOP-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.variableViewActions.Preferences" commandName="Java Preferences..." description="Opens preferences for Java variables" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOQOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.expressionViewActions.AllReferencesInView" commandName="Show References" description="Show &amp;References" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOQeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.variableViewActions.ShowNullEntries" commandName="Show Null Array Entries" description="Show Null Array Entries" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOQuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.expressionViewActions.ShowQualified" commandName="Show Qualified Names" description="Show Qualified Names" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOQ-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.expressionViewActions.ShowStatic" commandName="Show Static Variables" description="Show Static Variables" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOROLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.ExpressionViewActions/org.eclipse.jdt.debug.ui.expressionViewActions.ShowConstants" commandName="Show Constants" description="Show Constants" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOReLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.BreakpointViewActions/org.eclipse.jdt.debug.ui.actions.AddException" commandName="Add Java Exception Breakpoint" description="Add Java Exception Breakpoint" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GORuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.BreakpointViewActions/org.eclipse.jdt.debug.ui.breakpointViewActions.ShowQualified" commandName="Show Qualified Names" description="Show Qualified Names" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOR-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.LaunchViewActions/org.eclipse.jdt.debug.ui.launchViewActions.ShowThreadGroups" commandName="Show Thread Groups" description="Show Thread Groups" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOSOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.LaunchViewActions/org.eclipse.jdt.debug.ui.launchViewActions.ShowQualified" commandName="Show Qualified Names" description="Show Qualified Names" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOSeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.LaunchViewActions/org.eclipse.jdt.debug.ui.launchViewActions.ShowSystemThreads" commandName="Show System Threads" description="Show System Threads" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOSuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.LaunchViewActions/org.eclipse.jdt.debug.ui.launchViewActions.ShowMonitorThreadInfo" commandName="Show Monitors" description="Show the Thread &amp; Monitor Information" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOS-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.DisplayViewActions/org.eclipse.jdt.debug.ui.displayViewToolbar.Watch" commandName="Watch" description="Create a Watch Expression from the Selected Text" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOTOLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.DisplayViewActions/org.eclipse.jdt.debug.ui.displayViewToolbar.Execute" commandName="Execute" description="Execute the Selected Text" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOTeLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.DisplayViewActions/org.eclipse.jdt.debug.ui.displayViewToolbar.Display" commandName="Display" description="Display Result of Evaluating Selected Text" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOTuLhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.DisplayViewActions/org.eclipse.jdt.debug.ui.displayViewToolbar.Inspect" commandName="Inspect" description="Inspect Result of Evaluating Selected Text" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_W0GOT-LhEeWHh-AP9QZrlQ" elementId="AUTOGEN:::org.eclipse.pde.ui.logViewActions/org.eclipse.jdt.debug.ui.LogViewActions.showStackTrace" commandName="Show Stack Trace in Console View" description="Show Stack Trace in Console View" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAHtcKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.commands.switch" commandName="Switch Source/Design Views" description="Switch between the Source and Design views." category="_RAGfUKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAHtcaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.task.clearActiveTime" commandName="Clear Active Time" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAHtcqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.task.attachContext" commandName="Attach Context" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAHtc6M1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.Squash" commandName="Squash Commits" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAHtdKM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.history.Edit" commandName="Edit Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAHtdaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.editor.showCheatSheetCommand" commandName="Show Markup Cheat Sheet" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAHtdqM1EeaKb6tuSbNsJA" elementId="org.eclipse.gef.ui.palette_view" commandName="Palette" category="_W0GOYuLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUgKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.task.clearContext" commandName="Clear Context" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUgaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.add.block.comment" commandName="Add Block Comment" description="Add Block Comment" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUgqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.searchForTask" commandName="Search Repository for Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUg6M1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.actions.LifeCycleTest.run" commandName="Run Maven Test" description="Run Maven Test" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUhKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.maximizePart" commandName="Maximize Part" description="Maximize Part" category="_RAGfUqM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUhaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.open.file.from.source" commandName="Open Selection" description="Open an editor on the selected link" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUhqM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.importProjects" commandName="Import Projects" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUh6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.command.ShowTestResults" commandName="Show Test Results" category="_RAGfU6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUiKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.goto.matching.bracket" commandName="Matching Character" description="Go to Matching Character" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUiaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.disable.grammar.constraints" commandName="Turn off Grammar Constraints" description="Turn off grammar Constraints" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUiqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.quickOutlineCommand" commandName="Quick Outline" description="Open a popup dialog with a quick outline of the current document" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUi6M1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.snipmatch.rcp.commands.completion" commandName="Snipmatch Snippet Completion" description="Open a dialog to search for and insert code snippets" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUjKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.discoveryWizardCommand" commandName="%command.name" description="%command.description" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUjaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.convertToDocbookCommand" commandName="Generate Docbook" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUjqM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.refreshCache" commandName="Referehs Remote Cache" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUj6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.quick_outline" commandName="Quick Outline" description="Show the quick outline for the editor input" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUkKM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.snipmatch.rcp.commands.createSnippet" commandName="Create Snippet..." description="Creates a new Snipmatch code snippet from the current editor&#x2019;s text selection" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUkaM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.commands.openBrowser" commandName="Open a Web browser" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAIUkqM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.linkContribution.href" name="URI" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAIUk6M1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.actions.LifeCycleGenerateSources.run" commandName="Run Maven Generate Sources" description="Run Maven Generate Sources" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUlKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.open.context.dialog" commandName="Show Context Quick View" description="Show Context Quick View" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUlaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structure.select.previous" commandName="Select Previous Element" description="Expand selection to include previous sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUlqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.attachment.retrieveContext" commandName="Retrieve Context Attachment" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAIUl6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.convertToMarkupCommand" commandName="Generate Markup" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAIUmKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.targetLanguage" name="TargetLanguage" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAIUmaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.RefreshRepositoryTasks" commandName="Synchronize Changed" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAIUmqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.showToolTip" commandName="Show Tooltip Description" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7kKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.task.copyContext" commandName="Copy Context" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7kaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.interest.increment" commandName="Make Landmark" description="Make Landmark" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7kqM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.ImportChangedProjectsCommandId" commandName="Import Changed Projects" description="Import or create in local Git repository" category="_W0GOXeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7k6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structure.select.next" commandName="Select Next Element" description="Expand selection to include next sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7lKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.command.ShowBuildOutput" commandName="Show Build Output" category="_RAGfU6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7laM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.performDropdown" commandName="Perform Dropdown" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7lqM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.commands.openBrowserDialog" commandName="Open a Web browser" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAI7l6M1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.linkContribution.href" name="URI" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAI7mKM1EeaKb6tuSbNsJA" elementId="org.eclipse.equinox.p2.ui.sdk.installationDetails" commandName="Installation Details" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7maM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.profiles.ui.commands.selectMavenProfileCommand" commandName="Select Maven Profiles" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7mqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.new.subtask" commandName="New Subtask" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7m6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.remove.block.comment" commandName="Remove Block Comment" description="Remove Block Comment" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7nKM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.ui.command.openPom" commandName="Open Maven POM" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7naM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.StashDrop" commandName="Delete Stashed Commit..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7nqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.openTask" commandName="Open Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7n6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.refactor.rename.element" commandName="&amp;Rename XSD element" description="Rename XSD element" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7oKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.java.ui.editor.folding.auto" commandName="Toggle Active Folding" description="Toggle Active Folding" category="_RAHGYaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7oaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.goToPreviousUnread" commandName="Go To Previous Unread Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7oqM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.Edit" commandName="Edit Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7o6M1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.ui.ToggleOfflineMode" commandName="Toggle Offline Mode" category="_RAHGZqM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7pKM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.openLog" commandName="Open Setup Log" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7paM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.addTaskRepository" commandName="Add Task Repository..." category="_RAHGYKM1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RAI7pqM1EeaKb6tuSbNsJA" elementId="connectorKind" name="Repository Type"/>
+ </commands>
+ <commands xmi:id="_RAI7p6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.activateTask" commandName="Activate Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7qKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.commands.OpenBuildElementWithBrowser" commandName="Open Build with Browser" category="_RAGfU6M1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RAI7qaM1EeaKb6tuSbNsJA" elementId="element" name="Element"/>
+ </commands>
+ <commands xmi:id="_RAI7qqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structure.select.enclosing" commandName="Select Enclosing Element" description="Expand selection to include enclosing element" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7q6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.viewSource.command" commandName="View Unformatted Text" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7rKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.commands.OpenBuildElement" commandName="Open Build Element" category="_RAGfU6M1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RAI7raM1EeaKb6tuSbNsJA" elementId="element" name="Element"/>
+ </commands>
+ <commands xmi:id="_RAI7rqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.previousSibling" commandName="Previous Sibling" description="Go to Previous Sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7r6M1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.commands.openPreferences" commandName="Open the preferences dialog" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAI7sKM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.linkContribution.href" name="URI" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAI7saM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskUnread" commandName="Mark Task Unread" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7sqM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.history.Squash" commandName="Squash Commits" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7s6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.structure.select.last" commandName="Restore Last Selection" description="Restore last selection" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7tKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.command.NewTaskFromBuild" commandName="New Task From Build" category="_RAGfU6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7taM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.refactor.makeElementGlobal" commandName="Make Local Element &amp;Global" description="Promotes local element to global level and replaces its references" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7tqM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.openEditorDropdown" commandName="Open Setup Editor" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7t6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.SynchronizeAll" commandName="Synchronize Changed" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7uKM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.history.Reword" commandName="Reword Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAI7uaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.context.ui.editor.folding.auto" commandName="Toggle Active Folding" description="Toggle Active Folding" category="_RAHGYqM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAI7uqM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.p2.ui.ExploreRepository" commandName="Explore Repository" category="_RAHGY6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJioKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.UpdateRepositoryConfiguration" commandName="Update Repository Configuration" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJioaM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.StashApply" commandName="Apply Stashed Changes" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJioqM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.history.DeleteTag" commandName="&amp;Delete Tag" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJio6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.attachment.open" commandName="Open Attachment" category="_RAGfUqM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJipKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.command.NewTaskFromTest" commandName="New Task From Test" category="_RAGfU6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJipaM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.perform.startup" commandName="Perform Setup Tasks (Startup)" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJipqM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.ShowInHistory" commandName="Show in History" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJip6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.previousTask" commandName="Previous Task Command" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiqKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskReadGoToPreviousUnread" commandName="Mark Task Read and Go To Previous Unread Task" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJiqaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.cleanup.document" commandName="Cleanup Document..." description="Cleanup document" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiqqM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.window.splitEditor" commandName="Toggle Split Editor" description="Split or join the currently active editor." category="_W0GOXOLhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAJiq6M1EeaKb6tuSbNsJA" elementId="Splitter.isHorizontal" name="Orientation" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAJirKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.deactivateSelectedTask" commandName="Deactivate Selected Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiraM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.format" commandName="Format" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJirqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.ui.command.addPlugin" commandName="Add Maven Plugin" description="Add Maven Plugin" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJir6M1EeaKb6tuSbNsJA" elementId="sed.tabletree.expandAll" commandName="Expand All" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJisKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.openSelectedTask" commandName="Open Selected Task" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJisaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.toggle.focus.active.view" commandName="Focus on Active Task" description="Toggle the focus on active task for the active view" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJisqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.goToNextUnread" commandName="Go To Next Unread Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJis6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.gotoMatchingTag" commandName="Matching Tag" description="Go to Matching Tag" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJitKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.submitTask" commandName="Submit Task" description="Submits the currently open task" category="_RAGfUqM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJitaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.reload.dependencies" commandName="Reload Dependencies" description="Reload Dependencies" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJitqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.generate.xml" commandName="&amp;XML File..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJit6M1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.refactor.makeTypeGlobal" commandName="Make &amp;Anonymous Type Global" description="Promotes anonymous type to global level and replaces its references" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiuKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.format.active.elements" commandName="Format Active Elements" description="Format active elements" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiuaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.task.clearOutgoing" commandName="Clear Outgoing Changes" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJiuqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.actions.LifeCycleClean.run" commandName="Run Maven Clean" description="Run Maven Clean" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiu6M1EeaKb6tuSbNsJA" elementId="org.eclipse.gef.zoom_in" commandName="Zoom In" description="Zoom In" category="_RAHGZKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJivKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.convertToEclipseHelpCommand" commandName="Generate Eclipse Help (*.html and *-toc.xml)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJivaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.referencedFileErrors" commandName="Show Details..." description="Show Details..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJivqM1EeaKb6tuSbNsJA" elementId="org.eclipse.jdt.ui.correction.extractMethodInplace.assist" commandName="Quick Assist - Extract method" description="Invokes quick assist and selects 'Extract to method'" category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiv6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.disconnected" commandName="Disconnected" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiwKM1EeaKb6tuSbNsJA" elementId="org.eclipse.egit.ui.commit.Reword" commandName="Reword Commit" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiwaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.index.ui.command.ResetIndex" commandName="Refresh Search Index" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJiwqM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.ide.showInSystemExplorer" commandName="Show In (System Explorer)" description="Show in system's explorer (file manager)" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAJiw6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.new.local.task" commandName="New Local Task" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAJixKM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.navigator.resources.nested.changeProjectPresentation" commandName="P&amp;rojects Presentation" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAKJsKM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.navigator.resources.nested.enabled" name="&amp;Hierarchical"/>
+ <parameters xmi:id="_RAKJsaM1EeaKb6tuSbNsJA" elementId="org.eclipse.ui.commands.radioStateParameter" name="Nested Project view - Radio State" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAKJsqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.discovery.ui" commandName="m2e Marketplace" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJs6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskIncomplete" commandName="Mark Task Incomplete" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJtKM1EeaKb6tuSbNsJA" elementId="org.eclipse.gef.zoom_out" commandName="Zoom Out" description="Zoom Out" category="_RAHGZKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJtaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.discovery.ui.discoveryWizardCommand" commandName="Discovery Wizard" description="shows the connector discovery wizard" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJtqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.toggle.comment" commandName="Toggle Comment" description="Toggle Comment" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJt6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskReadGoToNextUnread" commandName="Mark Task Read and Go To Next Unread Task" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJuKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskRead" commandName="Mark Task Read" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJuaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.cmnd.contentmodel.sych" commandName="Synch" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJuqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xsd.ui.refactor.renameTargetNamespace" commandName="Rename Target Namespace" description="Changes the target namespace of the schema" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJu6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.deactivateAllTasks" commandName="Deactivate Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJvKM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.ui.command.updateProject" commandName="Update Project" description="Update Maven Project configuration and dependencies" category="_W0GOXOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJvaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.convertToHtmlCommand" commandName="Generate HTML" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJvqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.pomFileAction.run" commandName="Run Maven Build" description="Run Maven Build" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJv6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.openRemoteTask" commandName="Open Remote Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJwKM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.actions.LifeCycleInstall.run" commandName="Run Maven Install" description="Run Maven Install" category="_W0GOaOLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJwaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.task.retrieveContext" commandName="Retrieve Context" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJwqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.task.ui.editor.QuickOutline" commandName="Quick Outline" description="Show the quick outline for the editor input" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJw6M1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.editor.perform" commandName="Perform Setup Tasks" category="_RAGfVKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJxKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.commons.ui.command.AddRepository" commandName="Add Repository" category="_RAHGZaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJxaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.commands.empty" commandName="Empty command" description="Command which does nothing" category="_RAGfUKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKJxqM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.xml.ui.nextSibling" commandName="Next Sibling" description="Go to Next Sibling" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKJx6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.bugs.commands.newTaskFromMarker" commandName="New Task from Marker..." description="Report as Bug from Marker" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwwKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.focus.view" commandName="Focus View" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAKwwaM1EeaKb6tuSbNsJA" elementId="viewId" name="View ID to Focus" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAKwwqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.core.ui.command.addDependency" commandName="Add Maven Dependency" description="Add Maven Dependency" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKww6M1EeaKb6tuSbNsJA" elementId="org.eclipse.jdt.ui.edit.text.java.annotate.classFile" commandName="Annotate Class File" description="Externally add Annotations to a Class File." category="_W0GOb-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwxKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.activateSelectedTask" commandName="Activate Selected Task" category="_W0GObeLhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwxaM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.format.document" commandName="Format" description="Format selection" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwxqM1EeaKb6tuSbNsJA" elementId="org.eclipse.m2e.editor.RenameArtifactAction" commandName="Rename Maven Artifact..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwx6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.commands.CopyDetails" commandName="Copy Details" category="_RAGfU6M1EeaKb6tuSbNsJA">
+ <parameters xmi:id="_RAKwyKM1EeaKb6tuSbNsJA" elementId="kind" name="Kind"/>
+ <parameters xmi:id="_RAKwyaM1EeaKb6tuSbNsJA" elementId="element" name="Element"/>
+ </commands>
+ <commands xmi:id="_RAKwyqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.command.RunBuild" commandName="Run Build" category="_RAGfU6M1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKwy6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands.interest.decrement" commandName="Make Less Interesting" description="Make Less Interesting" category="_RAGfVaM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKwzKM1EeaKb6tuSbNsJA" elementId="sed.tabletree.collapseAll" commandName="Collapse All" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKwzaM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.commands.extensionDiscovery" commandName="Discover New Extensions" category="_W0GOZ-LhEeWHh-AP9QZrlQ">
+ <parameters xmi:id="_RAKwzqM1EeaKb6tuSbNsJA" elementId="org.eclipse.recommenders.rcp.linkContribution.href" name="URI" optional="false"/>
+ </commands>
+ <commands xmi:id="_RAKwz6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.command.markTaskComplete" commandName="Mark Task Complete" category="_RAHGYKM1EeaKb6tuSbNsJA"/>
+ <commands xmi:id="_RAKw0KM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.search.find.occurrences" commandName="Occurrences in File" description="Find occurrences of the selection in the file" category="_W0GOY-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RAKw0aM1EeaKb6tuSbNsJA" elementId="org.eclipse.wst.sse.ui.outline.customFilter" commandName="&amp;Filters" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVgHkKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.java.actionSet.browsing/org.eclipse.mylyn.java.ui.actions.ApplyMylynToBrowsingPerspectiveAction" commandName="Focus Browsing Perspective" description="Focus Java Browsing Views on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVguoKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.doc.actionSet/org.eclipse.mylyn.tasks.ui.bug.report" commandName="Report Bug or Enhancement..." description="Report Bug or Enhancement" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVhVsKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.navigation.additions/org.eclipse.mylyn.tasks.ui.navigate.task.history" commandName="Activate Previous Task" description="Activate Previous Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVij0KM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.wb.core.ui.actionset/org.eclipse.wb.core.wizards.actions.NewDesignerTypeDropDownAction" commandName="New Visual Class" description="Create new visual classes" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVjx8KM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.m2e.jdt.ui.downloadSourcesContribution/org.eclipse.m2e.jdt.ui.downloadSourcesAction" commandName="label" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVkZAKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.m2e.jdt.ui.downloadSourcesContribution_38/org.eclipse.m2e.jdt.ui.downloadSourcesAction_38" commandName="label" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVkZAaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.ui.texteditor.ruler.actions/org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction" commandName="label" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVlAEKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.wst.dtd.core.dtdsource.ruler.actions/org.eclipse.ui.texteditor.BookmarkRulerAction" commandName="Add Bookmark..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVlAEaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.wst.dtd.core.dtdsource.ruler.actions/org.eclipse.ui.texteditor.SelectRulerAction" commandName="Select Ruler" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVlnIKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.core.runtime.xml.source.ruler.actions/org.eclipse.ui.texteditor.BookmarkRulerAction" commandName="Add Bookmark..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVlnIaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.core.runtime.xml.source.ruler.actions/org.eclipse.ui.texteditor.SelectRulerAction" commandName="Select Ruler" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVlnIqM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.wst.xsd.core.xsdsource.ruler.actions/org.eclipse.ui.texteditor.BookmarkRulerAction" commandName="Add Bookmark..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVmOMKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.wst.xsd.core.xsdsource.ruler.actions/org.eclipse.ui.texteditor.SelectRulerAction" commandName="Select Ruler" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVoDYKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.context.ui.outline.contribution/org.eclipse.mylyn.context.ui.contentOutline.focus" commandName="Focus on Active Task" description="Focus on Active Task (Alt+click to reveal filtered elements)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVoDYaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.java.ui.markers.breakpoints.contribution/org.eclipse.mylyn.java.ui.actions.focus.markers.breakpoints" commandName="Focus on Active Task" description="Focus on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVoqcKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.ui.debug.view.contribution/org.eclipse.mylyn.ui.actions.FilterResourceNavigatorAction" commandName="Focus on Active Task (Experimental)" description="Focus on Active Task (Experimental)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVoqcaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.ui.projectexplorer.filter/org.eclipse.mylyn.ide.ui.actions.focus.projectExplorer" commandName="Focus on Active Task" description="Focus on Active Task (Alt+click to reveal filtered elements)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVpRgKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.ui.resource.navigator.filter/org.eclipse.mylyn.ide.ui.actions.focus.resourceNavigator" commandName="Focus on Active Task" description="Focus on Active Task (Alt+click to reveal filtered elements)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVpRgaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.problems.contribution/org.eclipse.mylyn.ide.ui.actions.focus.markers.problems" commandName="Focus on Active Task" description="Focus on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVp4kKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.markers.all.contribution/org.eclipse.mylyn.ide.ui.actions.focus.markers.all" commandName="Focus on Active Task" description="Focus on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVp4kaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.markers.tasks.contribution/org.eclipse.mylyn.ide.ui.actions.focus.markers.tasks" commandName="Focus on Active Task" description="Focus on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVqfoKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.markers.bookmarks.contribution/org.eclipse.mylyn.ide.ui.actions.focus.markers.bookmarks" commandName="Focus on Active Task" description="Focus on Active Task" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVqfoaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.java.explorer.contribution/org.eclipse.mylyn.java.actions.focus.packageExplorer" commandName="Focus on Active Task" description="Focus on Active Task (Alt+click to reveal filtered elements)" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVrGsKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.tasks.ui.search.open" commandName="Search Repository..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVrGsaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.tasks.ui.synchronize.changed" commandName="Synchronize Changed" description="Synchronize Changed" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVrGsqM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.tasks.ui.tasks.restore" commandName="Restore Tasks from History..." category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVrtwKM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.tasks.ui.open.repositories.view" commandName="Show Task Repositories View" description="Show Task Repositories View" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVrtwaM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.doc.legend.show.action" commandName="Show UI Legend" description="Show Tasks UI Legend" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <commands xmi:id="_RVsU0KM1EeaKb6tuSbNsJA" elementId="AUTOGEN:::org.eclipse.mylyn.tasks.ui.actions.view/org.eclipse.mylyn.context.ui.actions.tasklist.focus" commandName="Focus on Workweek" description="Focus on Workweek" category="_W0GOZ-LhEeWHh-AP9QZrlQ"/>
+ <addons xmi:id="_W0GOUOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.core.commands.service" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_W0GOUeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.contexts.service" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_W0GOUuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.bindings.service" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_W0GOU-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_W0GOVOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_W0GOVeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+ <addons xmi:id="_W0GOVuLhEeWHh-AP9QZrlQ" elementId="Cleanup Addon" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon"/>
+ <addons xmi:id="_W0GOV-LhEeWHh-AP9QZrlQ" elementId="DnD Addon" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.dndaddon.DnDAddon"/>
+ <addons xmi:id="_W0GOWOLhEeWHh-AP9QZrlQ" elementId="MinMax Addon" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon"/>
+ <addons xmi:id="_W0GOWeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.workbench.addon.0" contributorURI="platform:/plugin/org.eclipse.platform" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+ <addons xmi:id="_Q_olQaM1EeaKb6tuSbNsJA" elementId="SplitterAddon" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.splitteraddon.SplitterAddon"/>
+ <addons xmi:id="_dz0JgGOlEeSMMaPQU2nlzw" elementId="org.eclipse.ui.ide.application.addon.0" contributorURI="platform:/plugin/org.eclipse.ui.ide.application" contributionURI="bundleclass://org.eclipse.ui.ide.application/org.eclipse.ui.internal.ide.application.addons.ModelCleanupAddon"/>
+ <categories xmi:id="_W0GOWuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.perspectives" name="Perspectives" description="Commands for opening perspectives"/>
+ <categories xmi:id="_W0GOW-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.cvs.ui.actionSet" name="CVS" description="Actions that apply when working with CVS repositories"/>
+ <categories xmi:id="_W0GOXOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.window" name="Window"/>
+ <categories xmi:id="_W0GOXeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.egit.ui.commandCategory" name="Git"/>
+ <categories xmi:id="_W0GOXuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.dialogs" name="Dialogs" description="Commands for opening dialogs"/>
+ <categories xmi:id="_W0GOX-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.textEditor" name="Text Editing" description="Text Editing Commands"/>
+ <categories xmi:id="_W0GOYOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.project" name="Project"/>
+ <categories xmi:id="_W0GOYeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.search.ui.category.search" name="Search" description="Search command category"/>
+ <categories xmi:id="_W0GOYuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.views" name="Views" description="Commands for opening views"/>
+ <categories xmi:id="_W0GOY-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.edit" name="Edit"/>
+ <categories xmi:id="_W0GOZOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.runtime.spy.commands.category" name="Spy"/>
+ <categories xmi:id="_W0GOZeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.ide.markerContents" name="Contents" description="The category for menu contents"/>
+ <categories xmi:id="_W0GOZuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.file" name="File"/>
+ <categories xmi:id="_W0GOZ-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.core.commands.categories.autogenerated" name="Uncategorized" description="Commands that were either auto-generated or have no category"/>
+ <categories xmi:id="_W0GOaOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.debug.ui.category.run" name="Run/Debug" description="Run/Debug command category"/>
+ <categories xmi:id="_W0GOaeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.pde.ui.category.source" name="Manifest Editor Source" description="PDE Source Page actions"/>
+ <categories xmi:id="_W0GOauLhEeWHh-AP9QZrlQ" elementId="org.eclipse.team.ui.category.team" name="Team" description="Actions that apply when working with a Team"/>
+ <categories xmi:id="_W0GOa-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.help" name="Help"/>
+ <categories xmi:id="_W0GObOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.compare.ui.category.compare" name="Compare" description="Compare command category"/>
+ <categories xmi:id="_W0GObeLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ui.category.navigate" name="Navigate"/>
+ <categories xmi:id="_W0GObuLhEeWHh-AP9QZrlQ" elementId="org.eclipse.ltk.ui.category.refactoring" name="Refactoring"/>
+ <categories xmi:id="_W0GOb-LhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.category.source" name="Source" description="Java Source Actions"/>
+ <categories xmi:id="_W0GOcOLhEeWHh-AP9QZrlQ" elementId="org.eclipse.jdt.ui.category.refactoring" name="Refactor - Java" description="Java Refactoring Actions"/>
+ <categories xmi:id="_RAGfUKM1EeaKb6tuSbNsJA" elementId="org.eclipse.wb.core.actions.category" name="WindowBuilder Pro" description="WindowBuilder Pro actions"/>
+ <categories xmi:id="_RAGfUaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.ui.editor.category" name="WikiText Markup Editing Commands" description="commands for editing lightweight markup"/>
+ <categories xmi:id="_RAGfUqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.category.editor" name="Task Editor"/>
+ <categories xmi:id="_RAGfU6M1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.builds.ui.category.Commands" name="Builds"/>
+ <categories xmi:id="_RAGfVKM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.setup.category" name="Oomph Setup"/>
+ <categories xmi:id="_RAGfVaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.context.ui.commands" name="Focused UI" description="Task-Focused Interface"/>
+ <categories xmi:id="_RAHGYKM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.tasks.ui.commands" name="Task Repositories"/>
+ <categories xmi:id="_RAHGYaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.java.ui.commands" name="Java Context" description="Java Task-Focused Interface Commands"/>
+ <categories xmi:id="_RAHGYqM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.wikitext.context.ui.commands" name="%commands.category.name" description="%commands.category.description"/>
+ <categories xmi:id="_RAHGY6M1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph" name="Oomph"/>
+ <categories xmi:id="_RAHGZKM1EeaKb6tuSbNsJA" elementId="org.eclipse.gef.category.view" name="View" description="View"/>
+ <categories xmi:id="_RAHGZaM1EeaKb6tuSbNsJA" elementId="org.eclipse.mylyn.commons.repositories.ui.category.Team" name="Team"/>
+ <categories xmi:id="_RAHGZqM1EeaKb6tuSbNsJA" elementId="org.eclipse.oomph.commands" name="Oomph"/>
+</application:Application>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdt b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdt
new file mode 100644
index 0000000..d5abf41
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdt
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdx b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdx
new file mode 100644
index 0000000..b8ee809
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fdx
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fnm b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fnm
new file mode 100644
index 0000000..523c92e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.fnm
@@ -0,0 +1 @@
+ýÿÿÿversion \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.frq b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.frq
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.frq
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.nrm b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.nrm
new file mode 100644
index 0000000..cf8dc75
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.nrm
@@ -0,0 +1 @@
+NRMÿ \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tii b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tii
new file mode 100644
index 0000000..ebd518d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tii
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tis b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tis
new file mode 100644
index 0000000..ebd518d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/_0.tis
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments.gen b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments.gen
new file mode 100644
index 0000000..63a7ec9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments.gen
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments_1 b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments_1
new file mode 100644
index 0000000..0ffed7b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/history/segments_1
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdt b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdt
new file mode 100644
index 0000000..d5abf41
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdt
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdx b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdx
new file mode 100644
index 0000000..b8ee809
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fdx
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fnm b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fnm
new file mode 100644
index 0000000..523c92e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.fnm
@@ -0,0 +1 @@
+ýÿÿÿversion \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.frq b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.frq
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.frq
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.nrm b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.nrm
new file mode 100644
index 0000000..cf8dc75
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.nrm
@@ -0,0 +1 @@
+NRMÿ \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tii b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tii
new file mode 100644
index 0000000..ebd518d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tii
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tis b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tis
new file mode 100644
index 0000000..ebd518d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/_0.tis
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments.gen b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments.gen
new file mode 100644
index 0000000..63a7ec9
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments.gen
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments_1 b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments_1
new file mode 100644
index 0000000..0c498e0
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.epp.logging.aeri.ui/remote-index/segments_1
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml
new file mode 100644
index 0000000..89a9784
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.equinox.internal.p2.ui.dialogs.InstallWizard.WizardSettings">
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache
new file mode 100644
index 0000000..593f470
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache
new file mode 100644
index 0000000..593f470
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps
new file mode 100644
index 0000000..10e105f
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt
new file mode 100644
index 0000000..68a85ef
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt
@@ -0,0 +1 @@
+INDEX VERSION 1.126
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
new file mode 100644
index 0000000..593f470
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt
new file mode 100644
index 0000000..8586397
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt
@@ -0,0 +1 @@
+java \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
new file mode 100644
index 0000000..917db33
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
new file mode 100644
index 0000000..e2e8d79
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
@@ -0,0 +1,66 @@
+INDEX VERSION 1.126+/home/foghrye4/Programs/Forge 1.7.10/eclipse/.metadata/.plugins/org.eclipse.jdt.core
+3046902022.index
+4120319570.index
+281449128.index
+866804943.index
+1378081998.index
+3957341899.index
+1070717376.index
+3157227259.index
+3875248338.index
+1198206356.index
+2303258084.index
+1359712097.index
+1769112742.index
+1734602489.index
+1189007535.index
+2424439981.index
+3119809884.index
+1721267593.index
+3634299467.index
+1611075087.index
+2350366299.index
+365746132.index
+89072084.index
+1928036885.index
+2305881512.index
+718386263.index
+3829351191.index
+1022003584.index
+3188207552.index
+1847729490.index
+664202523.index
+2264959299.index
+3998409534.index
+1568666669.index
+208370467.index
+4267884898.index
+4217538243.index
+1791498496.index
+1877060153.index
+149203752.index
+2896310024.index
+2281424657.index
+2501865248.index
+1514218975.index
+1714592054.index
+2454880698.index
+3673728484.index
+3657879174.index
+2409005450.index
+936311843.index
+1199027344.index
+1729742098.index
+1737441395.index
+1468360981.index
+2119276847.index
+1989682271.index
+2691718362.index
+2241609340.index
+1207630805.index
+686465974.index
+3803692344.index
+2159999914.index
+2095122793.index
+2464122576.index
+3765020915.index
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
new file mode 100644
index 0000000..7a4faa6
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml
new file mode 100644
index 0000000..423694d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<dirs>
+<entry loc="/usr/lib/jvm/java-7-oracle" stamp="1457892465000"/>
+</dirs>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml
new file mode 100644
index 0000000..013f6aa
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<libraryInfos>
+<libraryInfo home="/usr/lib/jvm/java-7-oracle/jre" version="1.7.0_80">
+<bootpath>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/resources.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/sunrsasign.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jsse.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jce.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/charsets.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jfr.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/classes"/>
+</bootpath>
+<extensionDirs>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/ext"/>
+<entry path="/usr/java/packages/lib/ext"/>
+</extensionDirs>
+<endorsedDirs>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/endorsed"/>
+</endorsedDirs>
+</libraryInfo>
+<libraryInfo home="/usr/lib/jvm/java-7-oracle" version="1.7.0_80">
+<bootpath>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/resources.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/sunrsasign.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jsse.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jce.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/charsets.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/jfr.jar"/>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/classes"/>
+</bootpath>
+<extensionDirs>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/ext"/>
+<entry path="/usr/java/packages/lib/ext"/>
+</extensionDirs>
+<endorsedDirs>
+<entry path="/usr/lib/jvm/java-7-oracle/jre/lib/endorsed"/>
+</endorsedDirs>
+</libraryInfo>
+</libraryInfos>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
new file mode 100644
index 0000000..a4ee3cb
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<typeInfoHistroy/>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
new file mode 100644
index 0000000..3faedf1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<qualifiedTypeNameHistroy>
+<fullyQualifiedTypeName name="net.minecraft.util.MovingObjectPosition.MovingObjectType"/>
+<fullyQualifiedTypeName name="net.minecraft.client.multiplayer.WorldClient"/>
+<fullyQualifiedTypeName name="org.lwjgl.opengl.GL11"/>
+<fullyQualifiedTypeName name="net.minecraft.client.renderer.OpenGlHelper"/>
+<fullyQualifiedTypeName name="net.minecraft.util.MovingObjectPosition"/>
+<fullyQualifiedTypeName name="net.minecraft.client.renderer.RenderGlobal"/>
+<fullyQualifiedTypeName name="net.minecraft.client.Minecraft"/>
+<fullyQualifiedTypeName name="ihl.IHLMod"/>
+<fullyQualifiedTypeName name="ihl.interfaces.ISelectionBoxSpecialRenderer"/>
+<fullyQualifiedTypeName name="net.minecraft.util.AxisAlignedBB"/>
+<fullyQualifiedTypeName name="java.lang.Math"/>
+<fullyQualifiedTypeName name="ic2.api.energy.tile.IEnergyTile"/>
+<fullyQualifiedTypeName name="net.minecraft.init.Blocks"/>
+<fullyQualifiedTypeName name="ihl.flexible_cable.AnchorTileEntity"/>
+<fullyQualifiedTypeName name="ihl.interfaces.ICableHolder"/>
+<fullyQualifiedTypeName name="net.minecraftforge.common.util.ForgeDirection"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.eventhandler.SubscribeEvent"/>
+<fullyQualifiedTypeName name="net.minecraftforge.event.entity.player.PlayerEvent"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent"/>
+<fullyQualifiedTypeName name="net.minecraft.server.MinecraftServer"/>
+<fullyQualifiedTypeName name="net.minecraft.world.WorldServer"/>
+<fullyQualifiedTypeName name="net.minecraftforge.event.entity.living.LivingDeathEvent"/>
+<fullyQualifiedTypeName name="net.minecraft.client.renderer.entity.RenderManager"/>
+<fullyQualifiedTypeName name="net.minecraft.client.model.ModelRenderer"/>
+<fullyQualifiedTypeName name="ihl.items_blocks.IHLTool"/>
+<fullyQualifiedTypeName name="ihl.recipes.RecipeInputDie"/>
+<fullyQualifiedTypeName name="net.minecraft.util.StatCollector"/>
+<fullyQualifiedTypeName name="net.minecraftforge.fluids.IFluidContainerItem"/>
+<fullyQualifiedTypeName name="net.minecraft.nbt.NBTTagCompound"/>
+<fullyQualifiedTypeName name="ihl.interfaces.IEnergyNetNode"/>
+<fullyQualifiedTypeName name="net.minecraft.tileentity.TileEntity"/>
+<fullyQualifiedTypeName name="ihl.flexible_cable.RectifierTransformerUnitTileEntity"/>
+<fullyQualifiedTypeName name="ic2.core.block.TileEntityInventory"/>
+<fullyQualifiedTypeName name="ic2.api.energy.tile.IEnergyConductor"/>
+<fullyQualifiedTypeName name="ic2.api.energy.tile.IEnergySource"/>
+<fullyQualifiedTypeName name="ic2.api.energy.tile.IEnergySink"/>
+<fullyQualifiedTypeName name="ihl.utils.IHLUtils"/>
+<fullyQualifiedTypeName name="ihl.interfaces.IMultiPowerCableHolder"/>
+<fullyQualifiedTypeName name="ic2.core.IC2"/>
+<fullyQualifiedTypeName name="net.minecraft.client.renderer.Tessellator"/>
+<fullyQualifiedTypeName name="ihl.items_blocks.FlexibleCableItem"/>
+<fullyQualifiedTypeName name="ihl.datanet.DataCableItem"/>
+<fullyQualifiedTypeName name="net.minecraft.inventory.Slot"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.Mod"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.Mod.EventHandler"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.event.FMLPostInitializationEvent"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.event.FMLPreInitializationEvent"/>
+<fullyQualifiedTypeName name="ic2.core.Ic2Items"/>
+<fullyQualifiedTypeName name="net.minecraft.item.ItemBlock"/>
+<fullyQualifiedTypeName name="ic2.core.item.block.ItemBlockIC2"/>
+<fullyQualifiedTypeName name="ic2.core.block.BlockBase"/>
+<fullyQualifiedTypeName name="ic2.core.init.InternalName"/>
+<fullyQualifiedTypeName name="ic2.core.item.block.ItemCable"/>
+<fullyQualifiedTypeName name="net.minecraft.item.ItemStack"/>
+<fullyQualifiedTypeName name="net.minecraft.entity.player.EntityPlayer"/>
+<fullyQualifiedTypeName name="net.minecraft.world.World"/>
+<fullyQualifiedTypeName name="net.minecraft.item.Item"/>
+<fullyQualifiedTypeName name="net.minecraft.creativetab.CreativeTabs"/>
+<fullyQualifiedTypeName name="java.util.List"/>
+<fullyQualifiedTypeName name="cpw.mods.fml.common.event.FMLConstructionEvent"/>
+</qualifiedTypeNameHistroy>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
new file mode 100644
index 0000000..41c8d27
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <item value="/home/foghrye4/Programs/Forge 1.7.10/lib" key="org.eclipse.jdt.ui.lastextjar"/>
+ <section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
+ <item value="2" key="layout"/>
+ <item value="true" key="group_libraries"/>
+ <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1447493118918&quot;&gt;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0A;&lt;xmlDefinedFilters&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.mylyn.java.ui.MembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.m2e.MavenModuleFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0A;&lt;/customFilters&gt;&#x0A;&lt;/packageExplorer&gt;" key="memento"/>
+ <item value="false" key="linkWithEditor"/>
+ <item value="1" key="rootMode"/>
+ </section>
+ <section name="org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog">
+ <item value="true" key="ShowStatusLine"/>
+ <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;History/&gt;" key="History"/>
+ <section name="DialogBoundsSettings">
+ <item value="600" key="DIALOG_WIDTH"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="500" key="DIALOG_HEIGHT"/>
+ <item value="33" key="DIALOG_Y_ORIGIN"/>
+ <item value="50" key="DIALOG_X_ORIGIN"/>
+ </section>
+ </section>
+ <section name="NewClassWizardPage">
+ <item value="false" key="create_constructor"/>
+ <item value="true" key="create_unimplemented"/>
+ </section>
+ <section name="OptionalMessageDialog.hide.">
+ <item value="true" key="org.eclipse.jdt.ui.typecomment.deprecated"/>
+ </section>
+ <section name="org.eclipse.jdt.internal.ui.typehierarchy.QuickHierarchy">
+ <item value="true" key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_USE_PERSISTED_SIZE"/>
+ <item value="354" key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_HEIGHT"/>
+ <item value="400" key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_WIDTH"/>
+ <item value="false" key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_USE_PERSISTED_LOCATION"/>
+ </section>
+ <section name="org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog2">
+ <item value="true" key="ShowStatusLine"/>
+ <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;workingSet workingSetName=&quot;&quot;/&gt;" key="WorkingSet"/>
+ <item value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;History/&gt;" key="History"/>
+ <section name="DialogBoundsSettings">
+ <item value="600" key="DIALOG_WIDTH"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="500" key="DIALOG_HEIGHT"/>
+ <item value="181" key="DIALOG_Y_ORIGIN"/>
+ <item value="340" key="DIALOG_X_ORIGIN"/>
+ </section>
+ </section>
+ <section name="org.eclipse.jdt.internal.ui.wizards.buildpaths.NewVariableEntryDialog">
+ <item value="723" key="DIALOG_WIDTH"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="388" key="DIALOG_HEIGHT"/>
+ <item value="-4" key="DIALOG_Y_ORIGIN"/>
+ <item value="52" key="DIALOG_X_ORIGIN"/>
+ </section>
+ <section name="ClasspathContainerSelectionPage">
+ <item value="3" key="index"/>
+ </section>
+ <section name="BuildPathsPropertyPage">
+ <item value="2" key="pageIndex"/>
+ </section>
+ <section name="quick_assist_proposal_size">
+ </section>
+ <section name="NewPackageWizardPage">
+ <item value="false" key="create_package_info_java"/>
+ </section>
+ <section name="completion_proposal_size">
+ <item value="348" key="size.y"/>
+ <item value="636" key="size.x"/>
+ </section>
+ <section name="JavaElementSearchActions">
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover b/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover
new file mode 100644
index 0000000..62434b4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover b/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover
new file mode 100644
index 0000000..c7dd073
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover
Binary files differ
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.history
new file mode 100644
index 0000000..7c1281c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.history
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">
+<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.utils.Sizeof.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.utils{Sizeof.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1448204447895" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.index
new file mode 100644
index 0000000..b3ed11b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/47/refactorings.index
@@ -0,0 +1 @@
+1448204447895 Delete element
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.history
new file mode 100644
index 0000000..e27cba4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;ImpregnatingMachineBlockRender.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.ImpregnatingMachineBlockRender.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model{ImpregnatingMachineBlockRender.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1448783302497" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;ImpregnatingMachineBlockRender.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.ImpregnatingMachineBlockRender.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model{ImpregnatingMachineBlockRender.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1448812448612" units="1" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.index
new file mode 100644
index 0000000..f493475
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/11/48/refactorings.index
@@ -0,0 +1,2 @@
+1448783302497 Copy compilation unit
+1448812448612 Copy compilation unit
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.history
new file mode 100644
index 0000000..cb52d08
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.history
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">
+<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.utils.XMLParser.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.utils{XMLParser.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1449317466925" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.index
new file mode 100644
index 0000000..f581331
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/49/refactorings.index
@@ -0,0 +1 @@
+1449317466925 Delete element
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.history
new file mode 100644
index 0000000..2652cca
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;CrucibleInventory.java&apos; to &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original element: &apos;ihl.processing.metallurgy.CrucibleInventory.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.guidebook" element1="/src\/main\/java&lt;ihl.processing.metallurgy{CrucibleInventory.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1449902899827" units="1" version="1.0"/>&#x0A;<refactoring comment="Move element &apos;IHLGuidebookItem.java&apos; to &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original element: &apos;ihl.items_blocks.IHLGuidebookItem.java&apos;&#x0A;- Update references to refactored element" description="Move compilation unit" destination="/src\/main\/java&lt;ihl.guidebook" element1="/src\/main\/java&lt;ihl.items_blocks{IHLGuidebookItem.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.move" patterns="*" policy="org.eclipse.jdt.ui.moveResources" qualified="false" references="true" stamp="1449904995458" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy 5 elements to &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.guidebook&apos;&#x0A;- Original elements:&#x0A; ihl.processing.metallurgy.CrucibleInventory.java&#x0A; ihl.processing.metallurgy.CrucibleSlot.java&#x0A; ihl.processing.metallurgy.CrucibleGui.java&#x0A; ihl.processing.metallurgy.Crucible.java&#x0A; ihl.processing.metallurgy.CrucibleContainer.java" description="Copy compilation units" destination="/src\/main\/java&lt;ihl.guidebook" element1="/src\/main\/java&lt;ihl.processing.metallurgy{CrucibleInventory.java" element2="/src\/main\/java&lt;ihl.processing.metallurgy{CrucibleSlot.java" element3="/src\/main\/java&lt;ihl.processing.metallurgy{CrucibleGui.java" element4="/src\/main\/java&lt;ihl.processing.metallurgy{Crucible.java" element5="/src\/main\/java&lt;ihl.processing.metallurgy{CrucibleContainer.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1449907814319" units="5" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;IHLGuidebookGui.txt&apos;" description="Delete element" element1="src/main/java/ihl/guidebook/IHLGuidebookGui.txt" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1449909203262" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete 3 elements from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original elements:&#x0A; IHLGuidebookContainer.txt&#x0A; IHLGuidebookInventory.txt&#x0A; IHLGuidebookItem.txt" description="Delete elements" element1="src/main/java/ihl/guidebook/IHLGuidebookContainer.txt" element2="src/main/java/ihl/guidebook/IHLGuidebookInventory.txt" element3="src/main/java/ihl/guidebook/IHLGuidebookItem.txt" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="3" stamp="1449910163426" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.index
new file mode 100644
index 0000000..451e649
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/50/refactorings.index
@@ -0,0 +1,5 @@
+1449902899827 Copy compilation unit
+1449904995458 Move compilation unit
+1449907814319 Copy compilation units
+1449909203262 Delete element
+1449910163426 Delete elements
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.history
new file mode 100644
index 0000000..9ce171f
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete 2 elements from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original elements:&#x0A; ihl.flexible_cable.GroundingModel.java&#x0A; ihl.flexible_cable.GroundingTileEntity.java" description="Delete elements" element1="/src\/main\/java&lt;ihl.flexible_cable{GroundingTileEntity.java" element2="/src\/main\/java&lt;ihl.flexible_cable{GroundingModel.java" elements="2" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450089654434" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;EntityDropEventHandler.java&apos; to &apos;Minecraft/src/main/java/ihl.utils&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.utils&apos;&#x0A;- Original element: &apos;ihl.utils.EntityDropEventHandler.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.utils" element1="/src\/main\/java&lt;ihl.utils{EntityDropEventHandler.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450174627972" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;Details.java&apos; to &apos;Minecraft/src/main/java/ihl.metallurgy.constants&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.metallurgy.constants&apos;&#x0A;- Original element: &apos;ihl.metallurgy.constants.Details.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.metallurgy.constants" element1="/src\/main\/java&lt;ihl.metallurgy.constants{Details.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450270525061" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.items_blocks.WireItem.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.items_blocks{WireItem.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450294261175" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.IHLCable.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{IHLCable.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450295155109" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.IHLCableSet.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{IHLCableSet.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450295891020" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;BatterySwitchUnitTileEntity.java&apos; to &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.BatterySwitchUnitTileEntity.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.flexible_cable" element1="/src\/main\/java&lt;ihl.flexible_cable{BatterySwitchUnitTileEntity.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450345641065" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;ElectricConductor.java&apos; to &apos;Minecraft/src/main/java/ihl.metallurgy.constants&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.metallurgy.constants&apos;&#x0A;- Original element: &apos;ihl.metallurgy.constants.ElectricConductor.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.metallurgy.constants" element1="/src\/main\/java&lt;ihl.metallurgy.constants{ElectricConductor.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450347077852" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.items_blocks.CopyOfIHLTool.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.items_blocks{CopyOfIHLTool.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450376384778" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy 4 elements to &apos;Minecraft/src/main/java/ihl.processing.metallurgy&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.processing.metallurgy&apos;&#x0A;- Original elements:&#x0A; ihl.processing.chemistry.LoomTileEntity.java&#x0A; ihl.processing.chemistry.LoomModel.java&#x0A; ihl.processing.chemistry.LoomGui.java&#x0A; ihl.processing.chemistry.LoomContainer.java" description="Copy compilation units" destination="/src\/main\/java&lt;ihl.processing.metallurgy" element1="/src\/main\/java&lt;ihl.processing.chemistry{LoomTileEntity.java" element2="/src\/main\/java&lt;ihl.processing.chemistry{LoomModel.java" element3="/src\/main\/java&lt;ihl.processing.chemistry{LoomGui.java" element4="/src\/main\/java&lt;ihl.processing.chemistry{LoomContainer.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450388733267" units="4" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;RecipeInputWire.java&apos; to &apos;Minecraft/src/main/java/ihl.recipes&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.recipes&apos;&#x0A;- Original element: &apos;ihl.recipes.RecipeInputWire.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.recipes" element1="/src\/main\/java&lt;ihl.recipes{RecipeInputWire.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450434282814" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;RecipeInputFluidStack.java&apos; to &apos;Minecraft/src/main/java/ihl.recipes&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.recipes&apos;&#x0A;- Original element: &apos;ihl.recipes.RecipeInputFluidStack.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.recipes" element1="/src\/main\/java&lt;ihl.recipes{RecipeInputFluidStack.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450440067213" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.recipes.RecipeInputAnything.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.recipes{RecipeInputAnything.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450558419236" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.NodeModel.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{NodeModel.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450612747529" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.index
new file mode 100644
index 0000000..cd92db1
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/51/refactorings.index
@@ -0,0 +1,14 @@
+1450089654434 Delete elements
+1450174627972 Copy compilation unit
+1450270525061 Copy compilation unit
+1450294261175 Delete element
+1450295155109 Delete element
+1450295891020 Delete element
+1450345641065 Copy compilation unit
+1450347077852 Copy compilation unit
+1450376384778 Delete element
+1450388733267 Copy compilation units
+1450434282814 Copy compilation unit
+1450440067213 Copy compilation unit
+1450558419236 Delete element
+1450612747529 Delete element
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.history
new file mode 100644
index 0000000..f9ae7f4
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;NodeEntity.java&apos; to &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.NodeEntity.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.flexible_cable" element1="/src\/main\/java&lt;ihl.flexible_cable{NodeEntity.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450729504655" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;FlameEntityFX.java&apos; to &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original element: &apos;ihl.servitor.FlameEntityFX.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.flexible_cable" element1="/src\/main\/java&lt;ihl.servitor{FlameEntityFX.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1450813916101" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.utils.PacketIHLParticle.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.utils{PacketIHLParticle.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450911766204" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.utils.IHLNetworkHandlerClient.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.utils{IHLNetworkHandlerClient.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1450913996903" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.index
new file mode 100644
index 0000000..986a905
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2015/12/52/refactorings.index
@@ -0,0 +1,4 @@
+1450729504655 Copy compilation unit
+1450813916101 Copy compilation unit
+1450911766204 Delete element
+1450913996903 Delete element
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.history
new file mode 100644
index 0000000..56f2b18
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;ImpregnatingMachineBlockRender.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.ImpregnatingMachineBlockRender.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model{ImpregnatingMachineBlockRender.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1454794641320" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete 6 elements from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original elements:&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.client.MCAClientLibrary&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.common&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.common.animations.RectifierTransformerUnit&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.common.MCACommonLibrary&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.common.MCACommonLibrary.animation&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.common.MCACommonLibrary.math" description="Delete elements" element1="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common.animations.RectifierTransformerUnit" element2="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common.animations" element3="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common.MCACommonLibrary.math" element4="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common.MCACommonLibrary.animation" element5="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common.MCACommonLibrary" element6="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.common" element7="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.client.MCAClientLibrary" elements="7" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1454839182853" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Move element &apos;ModelRectifierTransformerUnit.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.RectifierTransformerUnit.client.ModelRectifierTransformerUnit.java&apos;&#x0A;- Update references to refactored element" description="Move compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.client{ModelRectifierTransformerUnit.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.move" patterns="*" policy="org.eclipse.jdt.ui.moveResources" qualified="false" references="true" stamp="1454839307200" units="1" version="1.0"/>&#x0A;&#x0A;<refactoring accessors="true" comment="Delete 2 elements from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original elements:&#x0A; ihl.model.ModelRectifierTransformerUnit.java&#x0A; Minecraft/src/main/java/ihl.model.RectifierTransformerUnit.client" description="Delete elements" element1="/src\/main\/java&lt;ihl.model{ModelRectifierTransformerUnit.java" element2="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit.client" element3="/src\/main\/java&lt;ihl.model.RectifierTransformerUnit" elements="3" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1454839499885" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.index
new file mode 100644
index 0000000..40c1fd8
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/6/refactorings.index
@@ -0,0 +1,4 @@
+1454794641320 Copy compilation unit
+1454839182853 Delete elements
+1454839307200 Move compilation unit
+1454839499885 Delete elements
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.history
new file mode 100644
index 0000000..5e64637
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;CableHolderSelectionBoxSpecialRenderer.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.CableHolderSelectionBoxSpecialRenderer.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model{CableHolderSelectionBoxSpecialRenderer.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1455451728915" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;SubAnchorEnergyNetNode.java&apos; to &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.flexible_cable&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.SubAnchorEnergyNetNode.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.flexible_cable" element1="/src\/main\/java&lt;ihl.flexible_cable{SubAnchorEnergyNetNode.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1455467158802" units="1" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.index
new file mode 100644
index 0000000..b59744c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/7/refactorings.index
@@ -0,0 +1,2 @@
+1455451728915 Copy compilation unit
+1455467158802 Copy compilation unit
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.history
new file mode 100644
index 0000000..11c233d
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.RectifierTransformerUnitModel.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{RectifierTransformerUnitModel.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1456166941479" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.FrequencyGeneratorTileEntity.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{FrequencyGeneratorTileEntity.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1456166946635" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;BlockItemRender.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.tunneling_shield.BlockItemRender.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.tunneling_shield{BlockItemRender.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1456410677609" units="1" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.index
new file mode 100644
index 0000000..d18072c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/2/9/refactorings.index
@@ -0,0 +1,3 @@
+1456166941479 Delete element
+1456166946635 Delete element
+1456410677609 Copy compilation unit
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.history
new file mode 100644
index 0000000..33aa95b
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring comment="Copy element &apos;IItemMiniGUI.java&apos; to &apos;Minecraft/src/main/java/ihl.interfaces&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.interfaces&apos;&#x0A;- Original element: &apos;ihl.interfaces.IItemMiniGUI.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.interfaces" element1="/src\/main\/java&lt;ihl.interfaces{IItemMiniGUI.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1456923738044" units="1" version="1.0"/>&#x0A;<refactoring comment="Copy element &apos;RectifierTransformerUnitBlockRender.java&apos; to &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/ihl.model&apos;&#x0A;- Original element: &apos;ihl.model.RectifierTransformerUnitBlockRender.java&apos;" description="Copy compilation unit" destination="/src\/main\/java&lt;ihl.model" element1="/src\/main\/java&lt;ihl.model{RectifierTransformerUnitBlockRender.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1457183209471" units="1" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original element: &apos;ihl.flexible_cable.IronWorkbenchBlock.java&apos;" description="Delete element" element1="/src\/main\/java&lt;ihl.flexible_cable{IronWorkbenchBlock.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1457184376264" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Copy 2 elements to &apos;Minecraft/src/main/java/rapid_electric_grid_setup&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Destination element: &apos;Minecraft/src/main/java/rapid_electric_grid_setup&apos;&#x0A;- Original elements:&#x0A; ihl.IHLModInfo.java&#x0A; ihl.IHLMod.java" description="Copy compilation units" destination="/src\/main\/java&lt;rapid_electric_grid_setup" element1="/src\/main\/java&lt;ihl{IHLModInfo.java" element2="/src\/main\/java&lt;ihl{IHLMod.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1457201899287" units="2" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.index
new file mode 100644
index 0000000..8196144
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/10/refactorings.index
@@ -0,0 +1,4 @@
+1456923738044 Copy compilation unit
+1457183209471 Copy compilation unit
+1457184376264 Delete element
+1457201899287 Copy compilation units
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.history b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.history
new file mode 100644
index 0000000..beaab63
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.history
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">
+<refactoring accessors="true" comment="Delete 2 elements from project &apos;Minecraft&apos;&#x0A;- Original project: &apos;Minecraft&apos;&#x0A;- Original elements:&#x0A; Minecraft/src/main/java/rapid_electric_grid_setup&#x0A; Minecraft/src/main/java/utils" description="Delete elements" element1="/src\/main\/java&lt;utils" element2="/src\/main\/java&lt;rapid_electric_grid_setup" elements="2" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1457973342866" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.index b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.index
new file mode 100644
index 0000000..e1296c8
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Minecraft/2016/3/12/refactorings.index
@@ -0,0 +1 @@
+1457973342866 Delete elements
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
new file mode 100644
index 0000000..8534ef6
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="RefactoringWizard.preview">
+ <item value="600" key="width"/>
+ <item value="400" key="height"/>
+ </section>
+ <section name="org.eclipse.ltk.ui.refactoring.settings">
+ <item value="false" key="deleteSubPackages"/>
+ <item value="false" key="moveWizard.updateQualifiedNames"/>
+ <item value="*" key="patterns"/>
+ </section>
+ <section name="RefactoringStatusDialog">
+ <item value="800" key="DIALOG_WIDTH"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="487" key="DIALOG_HEIGHT"/>
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log
diff --git a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.0.20150526-2032.xml b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.0.20150526-2032.xml
new file mode 100644
index 0000000..e33758c
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.0.20150526-2032.xml
@@ -0,0 +1,43 @@
+<configuration scan="true">
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
+ </encoder>
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>OFF</level> <!-- change to DEBUG to mimic '-consolelog' behaviour -->
+ </filter>
+ </appender>
+
+ <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <File>${org.eclipse.m2e.log.dir}/0.log</File>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <FileNamePattern>${org.eclipse.m2e.log.dir}/%i.log</FileNamePattern>
+ <MinIndex>1</MinIndex>
+ <MaxIndex>10</MaxIndex>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>100MB</MaxFileSize>
+ </triggeringPolicy>
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="EclipseLog" class="org.eclipse.m2e.logback.appender.EclipseLogAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>WARN</level>
+ </filter>
+ </appender>
+
+ <appender name="MavenConsoleLog" class="org.eclipse.m2e.logback.appender.MavenConsoleAppender">
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="FILE" />
+ <appender-ref ref="STDOUT" />
+ <appender-ref ref="EclipseLog" />
+ <appender-ref ref="MavenConsoleLog" />
+ </root>
+
+ <logger name="com.ning.http.client" level="INFO" />
+</configuration>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/eclipse/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup
new file mode 100644
index 0000000..1f73e14
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<setup:Workspace
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:setup="http://www.eclipse.org/oomph/setup/1.0"
+ name="workspace"/>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties b/eclipse/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties
new file mode 100644
index 0000000..a4be163
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties
@@ -0,0 +1,2 @@
+#Cached timestamps
+#Sat Mar 05 22:55:54 MSK 2016
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.core/.log b/eclipse/.metadata/.plugins/org.eclipse.rse.core/.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.core/.log
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark b/eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/FP.local.files_0/node.properties b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/FP.local.files_0/node.properties
new file mode 100644
index 0000000..b0ccf2e
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/FP.local.files_0/node.properties
@@ -0,0 +1,57 @@
+# RSE DOM Node
+00-name=foghrye4-GA-A75-D3H\:local.files
+01-type=FilterPool
+03-attr.default=true
+03-attr.deletable=true
+03-attr.id=local.files
+03-attr.nonRenamable=false
+03-attr.owningParentName=null
+03-attr.release=200
+03-attr.singleFilterStringOnly=false
+03-attr.singleFilterStringOnlyESet=false
+03-attr.stringsCaseSensitive=true
+03-attr.supportsDuplicateFilterStrings=false
+03-attr.supportsNestedFilters=true
+03-attr.type=default
+06-child.00000.00-name=My Home
+06-child.00000.01-type=Filter
+06-child.00000.03-attr.default=false
+06-child.00000.03-attr.filterType=default
+06-child.00000.03-attr.id=My Home
+06-child.00000.03-attr.nonChangable=false
+06-child.00000.03-attr.nonDeletable=false
+06-child.00000.03-attr.nonRenamable=false
+06-child.00000.03-attr.promptable=false
+06-child.00000.03-attr.relativeOrder=0
+06-child.00000.03-attr.release=200
+06-child.00000.03-attr.singleFilterStringOnly=false
+06-child.00000.03-attr.stringsCaseSensitive=true
+06-child.00000.03-attr.stringsNonChangable=false
+06-child.00000.03-attr.supportsDuplicateFilterStrings=false
+06-child.00000.03-attr.supportsNestedFilters=true
+06-child.00000.06-child.00000.00-name=/home/foghrye4/*
+06-child.00000.06-child.00000.01-type=FilterString
+06-child.00000.06-child.00000.03-attr.default=false
+06-child.00000.06-child.00000.03-attr.string=/home/foghrye4/*
+06-child.00000.06-child.00000.03-attr.type=default
+06-child.00001.00-name=Root
+06-child.00001.01-type=Filter
+06-child.00001.03-attr.default=false
+06-child.00001.03-attr.filterType=default
+06-child.00001.03-attr.id=Root
+06-child.00001.03-attr.nonChangable=false
+06-child.00001.03-attr.nonDeletable=false
+06-child.00001.03-attr.nonRenamable=false
+06-child.00001.03-attr.promptable=false
+06-child.00001.03-attr.relativeOrder=0
+06-child.00001.03-attr.release=200
+06-child.00001.03-attr.singleFilterStringOnly=false
+06-child.00001.03-attr.stringsCaseSensitive=true
+06-child.00001.03-attr.stringsNonChangable=false
+06-child.00001.03-attr.supportsDuplicateFilterStrings=false
+06-child.00001.03-attr.supportsNestedFilters=true
+06-child.00001.06-child.00000.00-name=/*
+06-child.00001.06-child.00000.01-type=FilterString
+06-child.00001.06-child.00000.03-attr.default=false
+06-child.00001.06-child.00000.03-attr.string=/*
+06-child.00001.06-child.00000.03-attr.type=default
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/H.local_16/node.properties b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/H.local_16/node.properties
new file mode 100644
index 0000000..b12a67f
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/H.local_16/node.properties
@@ -0,0 +1,25 @@
+# RSE DOM Node
+00-name=Local
+01-type=Host
+03-attr.description=
+03-attr.hostname=LOCALHOST
+03-attr.offline=false
+03-attr.promptable=false
+03-attr.systemType=org.eclipse.rse.systemtype.local
+03-attr.type=Local
+06-child.00000.00-name=Local Connector Service
+06-child.00000.01-type=ConnectorService
+06-child.00000.03-attr.group=Local Connector Service
+06-child.00000.03-attr.port=0
+06-child.00000.03-attr.useSSL=false
+06-child.00000.06-child.00000.00-name=Local Files
+06-child.00000.06-child.00000.01-type=SubSystem
+06-child.00000.06-child.00000.03-attr.hidden=false
+06-child.00000.06-child.00000.03-attr.type=local.files
+06-child.00000.06-child.00000.06-child.00000.00-name=foghrye4-GA-A75-D3H___foghrye4-GA-A75-D3H\:local.files
+06-child.00000.06-child.00000.06-child.00000.01-type=FilterPoolReference
+06-child.00000.06-child.00000.06-child.00000.03-attr.refID=local.files
+06-child.00000.06-child.00001.00-name=Local Shells
+06-child.00000.06-child.00001.01-type=SubSystem
+06-child.00000.06-child.00001.03-attr.hidden=false
+06-child.00000.06-child.00001.03-attr.type=local.shells
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/node.properties b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/node.properties
new file mode 100644
index 0000000..7194ec7
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.foghrye4-ga-a75-d3h_837/node.properties
@@ -0,0 +1,7 @@
+# RSE DOM Node
+00-name=foghrye4-GA-A75-D3H
+01-type=Profile
+03-attr.defaultPrivate=true
+03-attr.isActive=true
+05-ref.00000=FP.local.files_0
+05-ref.00001=H.local_16
diff --git a/eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log b/eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log
diff --git a/eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml
new file mode 100644
index 0000000..8675219
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="">
+ <item value="1000" key="org.eclipse.search.resultpage.limit"/>
+ </section>
+ <section name="">
+ <item value="1000" key="org.eclipse.search.resultpage.limit"/>
+ </section>
+ <section name="DialogBounds_SearchDialog">
+ <item value="641" key="DIALOG_WIDTH"/>
+ <item value="185" key="DIALOG_Y_ORIGIN"/>
+ <item value="633" key="DIALOG_HEIGHT"/>
+ <item value="305" key="DIALOG_X_ORIGIN"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ </section>
+ <section name="Search">
+ <list key="Search.processedPageIds">
+ <item value="org.eclipse.search.internal.ui.text.TextSearchPage"/>
+ <item value="org.eclipse.egit.ui.commitSearchPage"/>
+ <item value="org.eclipse.jdt.ui.JavaSearchPage"/>
+ <item value="org.eclipse.pde.internal.ui.search.SearchPage"/>
+ </list>
+ <list key="Search.enabledPageIds">
+ <item value="org.eclipse.search.internal.ui.text.TextSearchPage"/>
+ <item value="org.eclipse.egit.ui.commitSearchPage"/>
+ <item value="org.eclipse.jdt.ui.JavaSearchPage"/>
+ <item value="org.eclipse.pde.internal.ui.search.SearchPage"/>
+ </list>
+ </section>
+ <section name="org.eclipse.search.text.FileSearchResultPage">
+ <item value="1000" key="org.eclipse.search.resultpage.limit"/>
+ </section>
+ <section name="SearchDialog">
+ <item value="org.eclipse.search.internal.ui.text.TextSearchPage" key="PREVIOUS_PAGE"/>
+ </section>
+ <section name="TextSearchPage">
+ <item value="false" key="CASE_SENSITIVE"/>
+ <item value="false" key="REG_EX_SEARCH"/>
+ <item value="false" key="SEARCH_DERIVED"/>
+ <item value="false" key="WHOLE_WORD"/>
+ <item value="10" key="HISTORY_SIZE"/>
+ <section name="HISTORY2">
+ <item value="false" key="isRegExSearch"/>
+ <item value="GL_ONE_MI" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="EXTENSIONS">
+ <item value="*" key="0"/>
+ </section>
+ <section name="HISTORY3">
+ <item value="false" key="isRegExSearch"/>
+ <item value="setVirtualNodePos" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY0">
+ <item value="false" key="isRegExSearch"/>
+ <item value="Shape_Empty" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY1">
+ <item value="false" key="isRegExSearch"/>
+ <item value="&quot;resistance&quot;" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY9">
+ <item value="false" key="isRegExSearch"/>
+ <item value="System.out" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY8">
+ <item value="false" key="isRegExSearch"/>
+ <item value="setGrid(" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY5">
+ <item value="false" key="isRegExSearch"/>
+ <item value="virtualNodePosX" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY4">
+ <item value="false" key="isRegExSearch"/>
+ <item value="removeAttachedChains" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY7">
+ <item value="false" key="isRegExSearch"/>
+ <item value="startDrawingQuads()" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ <section name="HISTORY6">
+ <item value="false" key="isRegExSearch"/>
+ <item value="switch(direction)" key="textPattern"/>
+ <item value="0" key="scope"/>
+ <item value="true" key="ignoreCase"/>
+ <item value="false" key="isWholeWord"/>
+ <list key="fileNamePatterns">
+ <item value="*"/>
+ </list>
+ <list key="workingSets">
+ </list>
+ </section>
+ </section>
+ <section name="SearchDialog.ScopePart">
+ <item value="0" key="scope"/>
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.team.ui/syncParticipants.xml b/eclipse/.metadata/.plugins/org.eclipse.team.ui/syncParticipants.xml
new file mode 100644
index 0000000..f7e3799
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.team.ui/syncParticipants.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<syncparticipants/> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml
new file mode 100644
index 0000000..50f1edb
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="quick_assist_proposal_size">
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml
new file mode 100644
index 0000000..93fbe49
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.ui.texteditor.FindReplaceDialog_dialogBounds">
+ <item value="447" key="DIALOG_WIDTH"/>
+ <item value="0" key="DIALOG_Y_ORIGIN"/>
+ <item value="56" key="DIALOG_X_ORIGIN"/>
+ <item value="992" key="DIALOG_HEIGHT"/>
+ <item value="1|Ubuntu|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ </section>
+ <section name="org.eclipse.ui.texteditor.FindReplaceDialog">
+ <item value="true" key="wrap"/>
+ <item value="false" key="casesensitive"/>
+ <item value="false" key="isRegEx"/>
+ <item value="false" key="incremental"/>
+ <item value="false" key="wholeword"/>
+ <item value="hull_mv" key="selection"/>
+ <list key="findhistory">
+ <item value="Once upon a time there was a surgeon. He was a really kind man. So, when amputation was inevitable, he made it gently and very-very slowly."/>
+ <item value="Hull_MV"/>
+ <item value="getEmptyCell"/>
+ <item value="GT_ModHandler.getAirCell"/>
+ <item value="GT_ModHandler.getAirCell(5)"/>
+ <item value="IL.Shape_Empty.get(1, (Object) null)"/>
+ <item value="Shape_Empty."/>
+ <item value="ItemList.Shape_Empty.get(1L, new Object[]{null})"/>
+ </list>
+ <list key="replacehistory">
+ <item value="OreDictManager.INSTANCE.getStack(OP.cell,MT.Air, 5)"/>
+ <item value="OreDictManager.INSTANCE.getStack(OP.cell,MT.Air, 1)"/>
+ <item value="OP.plate.get(MT.Steel)"/>
+ <item value="OP.stick.get(MT.Steel)"/>
+ <item value="OrePrefixes.plate.get(Materials.Steel)"/>
+ <item value="FlexibleCableItemRender"/>
+ <item value="yStart"/>
+ <item value="this."/>
+ </list>
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
new file mode 100644
index 0000000..144e476
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="WorkbenchPreferenceDialogSettings">
+ <item value="-56" key="DIALOG_Y_ORIGIN"/>
+ <item value="-32" key="DIALOG_X_ORIGIN"/>
+ </section>
+ <section name="org.eclipse.ui.internal.QuickAccess">
+ <item value="634" key="dialogHeight"/>
+ <item value="794" key="dialogWidth"/>
+ <list key="textEntries">
+ </list>
+ <list key="orderedElements">
+ </list>
+ <list key="orderedProviders">
+ </list>
+ <list key="textArray">
+ </list>
+ </section>
+ <section name="ImportExportAction">
+ </section>
+</section>
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
new file mode 100644
index 0000000..20e3e05
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workbench progressCount="13" version="2.0">
+<workbenchAdvisor/>
+<window height="767" maximized="true" width="1018" x="0" y="24">
+<fastViewData fastViewLocation="1024"/>
+<perspectiveBar>
+<itemSize x="160"/>
+</perspectiveBar>
+<coolbarLayout>
+<coolItem id="group.file" itemType="typeGroupMarker"/>
+<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="144" y="30"/>
+<coolItem id="additions" itemType="typeGroupMarker"/>
+<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="60" y="30"/>
+<coolItem id="org.eclipse.oomph.ui.toolbars.offline" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.oomph.setup.toolbar" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.linuxtools.systemtap.ui.ide.toolbar" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.linuxtools.rpm.ui.rpmBuildMenu" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.debug.ui.launch.toolbar" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.debug.ui.main.toolbar" itemType="typeToolBarContribution" x="-1" y="-1"/>
+<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="60" y="30"/>
+<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="124" y="30"/>
+<coolItem id="group.nav" itemType="typeGroupMarker"/>
+<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="232" y="30"/>
+<coolItem id="group.editor" itemType="typeGroupMarker"/>
+<coolItem id="org.eclipse.jdt.ui.CompilationUnitEditor" itemType="typePlaceholder" x="-1" y="-1"/>
+<coolItem id="group.help" itemType="typeGroupMarker"/>
+<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
+</coolbarLayout>
+<page aggregateWorkingSetId="Aggregate for window 1459575357342" focus="true" label="Workspace - Resource">
+<editors>
+<editorArea activeWorkbook="DefaultEditorWorkbook">
+<info part="DefaultEditorWorkbook">
+<folder appearance="1" expanded="2">
+<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
+</folder>
+</info>
+</editorArea>
+</editors>
+<views>
+<view id="org.eclipse.ui.views.ContentOutline" partName="Outline">
+<viewState/>
+</view>
+<view id="org.eclipse.ui.views.TaskList" partName="Tasks">
+<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.completionField" categoryGroup="none" markerContentGenerator="org.eclipse.ui.ide.tasksGenerator" partName="Tasks">
+<columnWidths org.eclipse.ui.ide.completionField="40" org.eclipse.ui.ide.descriptionField="350" org.eclipse.ui.ide.locationField="105" org.eclipse.ui.ide.markerType="226" org.eclipse.ui.ide.pathField="140" org.eclipse.ui.ide.priorityField="35" org.eclipse.ui.ide.resourceField="105"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.completionField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.priorityField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.descriptionField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
+<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
+</viewState>
+</view>
+<view id="org.eclipse.ui.navigator.ProjectExplorer" partName="Project Explorer">
+<viewState CommonNavigator.LINKING_ENABLED="0" org.eclipse.ui.navigator.resources.workingSets.showTopLevelWorkingSets="0"/>
+</view>
+</views>
+<perspectives activePart="org.eclipse.ui.navigator.ProjectExplorer" activePerspective="org.eclipse.ui.resourcePerspective">
+<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
+<descriptor class="org.eclipse.ui.internal.ide.application.ResourcePerspective" id="org.eclipse.ui.resourcePerspective" label="Resource"/>
+<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
+<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
+<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
+<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
+<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
+<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
+<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
+<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
+<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
+<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
+<show_view_action id="org.eclipse.ui.views.BookmarkView"/>
+<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
+<show_view_action id="org.eclipse.ui.views.PropertySheet"/>
+<show_view_action id="org.eclipse.ui.views.ProblemView"/>
+<show_view_action id="org.eclipse.ui.views.ProgressView"/>
+<show_view_action id="org.eclipse.ui.views.TaskList"/>
+<show_view_action id="org.eclipse.ant.ui.views.AntView"/>
+<show_view_action id="org.eclipse.mylyn.tasks.ui.views.tasks"/>
+<new_wizard_action id="org.eclipse.ui.wizards.new.folder"/>
+<new_wizard_action id="org.eclipse.ui.wizards.new.file"/>
+<new_wizard_action id="org.eclipse.mylyn.tasks.ui.wizards.new.repository.task"/>
+<new_wizard_action id="org.eclipse.ui.editors.wizards.UntitledTextFileWizard"/>
+<perspective_action id="org.eclipse.cdt.ui.CPerspective"/>
+<perspective_action id="org.eclipse.jdt.ui.JavaPerspective"/>
+<perspective_action id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
+<perspective_action id="org.eclipse.team.cvs.ui.cvsPerspective"/>
+<perspective_action id="org.eclipse.team.ui.TeamSynchronizingPerspective"/>
+<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
+<hide_toolbar_item_id id="org.eclipse.debug.ui.commands.RunToLine"/>
+<hide_toolbar_item_id id="org.eclipse.jdt.ui.actions.OpenProjectWizard"/>
+<view id="org.eclipse.ui.navigator.ProjectExplorer"/>
+<view id="org.eclipse.ui.views.ContentOutline"/>
+<view id="org.eclipse.ui.views.TaskList"/>
+<fastViewBars/>
+<layout>
+<mainWindow>
+<info folder="true" part="topLeft">
+<folder activePageID="org.eclipse.ui.navigator.ProjectExplorer" appearance="2" expanded="2">
+<page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/>
+<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
+<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
+<page content="org.eclipse.team.ccvs.ui.RepositoriesView" label="LabelNotFound"/>
+<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
+<part id="0"/>
+</presentation>
+</folder>
+</info>
+<info folder="true" part="stickyFolderRight" ratio="0.7495049" ratioLeft="757" ratioRight="253" relationship="2" relative="topLeft">
+<folder appearance="2" expanded="2">
+<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
+<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
+<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
+</folder>
+</info>
+<info part="org.eclipse.ui.editorss" ratio="0.25940594" ratioLeft="262" ratioRight="748" relationship="2" relative="topLeft"/>
+<info folder="true" part="bottomRight" ratio="0.6596386" ratioLeft="438" ratioRight="226" relationship="4" relative="org.eclipse.ui.editorss">
+<folder activePageID="org.eclipse.ui.views.TaskList" appearance="2" expanded="2">
+<page content="org.eclipse.ui.views.TaskList" label="Tasks"/>
+<page content="org.eclipse.team.ui.GenericHistoryView" label="LabelNotFound"/>
+<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
+<part id="0"/>
+</presentation>
+</folder>
+</info>
+<info folder="true" part="bottomLeft" ratio="0.8590022" ratioLeft="792" ratioRight="130" relationship="4" relative="topLeft">
+<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
+<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
+<page content="org.eclipse.mylyn.tasks.ui.views.tasks" label="LabelNotFound"/>
+<page content="org.eclipse.ant.ui.views.AntView" label="LabelNotFound"/>
+<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
+<part id="0"/>
+</presentation>
+</folder>
+</info>
+</mainWindow>
+</layout>
+</perspective>
+</perspectives>
+<workingSets/>
+<navigationHistory/>
+<input factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/" type="8"/>
+</page>
+<workbenchWindowAdvisor/>
+<actionBarAdvisor/>
+<trimLayout>
+<trimArea IMemento.internal.id="128">
+<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
+</trimArea>
+<trimArea IMemento.internal.id="1024">
+<trimItem IMemento.internal.id="org.eclise.ui.internal.FastViewBar"/>
+<trimItem IMemento.internal.id="org.eclipse.jface.action.StatusLineManager"/>
+<trimItem IMemento.internal.id="org.eclipse.ui.internal.progress.ProgressRegion"/>
+</trimArea>
+</trimLayout>
+</window>
+<mruList>
+<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" name="IHLModConfig.java" tooltip="Minecraft/src/main/java/ihl/IHLModConfig.java">
+<persistable path="/Minecraft/src/main/java/ihl/IHLModConfig.java"/>
+</file>
+<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" name="IHLMod.java" tooltip="Minecraft/src/main/java/ihl/IHLMod.java">
+<persistable path="/Minecraft/src/main/java/ihl/IHLMod.java"/>
+</file>
+</mruList>
+</workbench> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
new file mode 100644
index 0000000..b04ab55
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workingSetManager>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1447493118919_0" label="Window Working Set" name="Aggregate for window 1447493118918"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1459575357342_1" label="Window Working Set" name="Aggregate for window 1459575357342"/>
+</workingSetManager> \ No newline at end of file
diff --git a/eclipse/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties b/eclipse/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties
new file mode 100644
index 0000000..1ddeeab
--- /dev/null
+++ b/eclipse/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties
@@ -0,0 +1,3 @@
+#
+#Tue Nov 29 20:02:33 MSK 2016
+task-tag-projects-already-scanned=RemoteSystemsTempFiles