diff --git a/README.md b/README.md
index 4170816..2fc6b0c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# WenjaPVP-is-skid
\ No newline at end of file
+WenjaPVP
diff --git a/WenjaPvP - HCFactions/.classpath b/WenjaPvP - HCFactions/.classpath
new file mode 100644
index 0000000..48ce420
--- /dev/null
+++ b/WenjaPvP - HCFactions/.classpath
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WenjaPvP - HCFactions/.idea/artifacts/HCFactions_jar.xml b/WenjaPvP - HCFactions/.idea/artifacts/HCFactions_jar.xml
new file mode 100644
index 0000000..7a9f962
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/artifacts/HCFactions_jar.xml
@@ -0,0 +1,8 @@
+
+
+ $PROJECT_DIR$/classes/artifacts/HCFactions_jar
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/compiler.xml b/WenjaPvP - HCFactions/.idea/compiler.xml
new file mode 100644
index 0000000..43b000d
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/compiler.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/copyright/profiles_settings.xml b/WenjaPvP - HCFactions/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/kotlinc.xml b/WenjaPvP - HCFactions/.idea/kotlinc.xml
new file mode 100644
index 0000000..1c24f9a
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/kotlinc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/misc.xml b/WenjaPvP - HCFactions/.idea/misc.xml
new file mode 100644
index 0000000..36ceb17
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/misc.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/modules.xml b/WenjaPvP - HCFactions/.idea/modules.xml
new file mode 100644
index 0000000..e15f7ea
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.idea/workspace.xml b/WenjaPvP - HCFactions/.idea/workspace.xml
new file mode 100644
index 0000000..87b3349
--- /dev/null
+++ b/WenjaPvP - HCFactions/.idea/workspace.xml
@@ -0,0 +1,1072 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ timer
+ gopple
+ private <Location> void generateAsync
+ �
+ Conquest
+ blue
+
+
+ »
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Abstraction issuesJava
+
+
+ Android
+
+
+ Android > Lint > Correctness
+
+
+ Android > Lint > Performance
+
+
+ Android > Lint > Security
+
+
+ Android Lint for Kotlin
+
+
+ Annotations verifyingGroovy
+
+
+ Class structureJava
+
+
+ Code maturity issuesJava
+
+
+ Code style issuesJava
+
+
+ Concurrency annotation issuesJava
+
+
+ Data flow issuesJava
+
+
+ Declaration redundancyJava
+
+
+ Encapsulation issuesJava
+
+
+ General
+
+
+ GeneralJava
+
+
+ Groovy
+
+
+ Inheritance issuesJava
+
+
+ Initialization issuesJava
+
+
+ Internationalization issuesJava
+
+
+ JUnit issuesJava
+
+
+ Java
+
+
+ Java 7Java language level migration aidsJava
+
+
+ Java language level issuesJava
+
+
+ Java language level migration aidsJava
+
+
+ JavaFX
+
+
+ Javadoc issuesJava
+
+
+ Kotlin
+
+
+ Language Injection
+
+
+ Logging issuesJava
+
+
+ Naming ConventionsGroovy
+
+
+ Naming conventionsJava
+
+
+ Pattern Validation
+
+
+ Plugin DevKit
+
+
+ Potentially confusing code constructsGroovy
+
+
+ Probable bugsJava
+
+
+ Properties FilesJava
+
+
+ Serialization issuesJava
+
+
+ TestNGJava
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1491856420572
+
+
+ 1491856420572
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HCFactions:jar
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ HCFactions
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/.project b/WenjaPvP - HCFactions/.project
new file mode 100644
index 0000000..bbf1928
--- /dev/null
+++ b/WenjaPvP - HCFactions/.project
@@ -0,0 +1,17 @@
+
+
+ WenjaPvP - HCFactions
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/WenjaPvP - HCFactions/.settings/org.eclipse.jdt.core.prefs b/WenjaPvP - HCFactions/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/WenjaPvP - HCFactions/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/WenjaPvP - HCFactions/HCFactions.iml b/WenjaPvP - HCFactions/HCFactions.iml
new file mode 100644
index 0000000..9db3aee
--- /dev/null
+++ b/WenjaPvP - HCFactions/HCFactions.iml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/WenjaPvP - Factions.iml b/WenjaPvP - HCFactions/WenjaPvP - Factions.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/WenjaPvP - HCFactions/WenjaPvP - Factions.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/bin/balances.yml b/WenjaPvP - HCFactions/bin/balances.yml
new file mode 100644
index 0000000..18e0854
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/balances.yml
@@ -0,0 +1 @@
+balances: {}
diff --git a/WenjaPvP - HCFactions/bin/config.yml b/WenjaPvP - HCFactions/bin/config.yml
new file mode 100644
index 0000000..cd06e93
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/config.yml
@@ -0,0 +1,87 @@
+death-signs: true
+diamond-ore-notifications: true
+death-lightning: true
+map-number: 1
+kit-map: false
+prevent-ally-damage: true
+exp-multiplier:
+ global: 2.0
+ fishing: 2.0
+ smelting: 2.0
+ looting-per-level: 1.5
+ luck-per-level: 1.5
+ fortune-per-level: 1.5
+roads:
+ allow-claims-besides: true
+scoreboard:
+ sidebar:
+ title: "&a&lHCF &c[Map {MAP_NUMBER}]"
+ enabled: true
+ nametags:
+ enabled: true
+combatlog:
+ enabled: true
+ despawn-delay-ticks: 600
+conquest:
+ point-loss-per-death: 20
+ victory-points: 300
+ allow-negative-points: true
+warzone:
+ radius: 800
+factions:
+ disallowed-faction-names:
+ - EOTW
+ min-name-characters: 3
+ max-name-characters: 16
+ max-members: 25
+ max-allies: 1
+subclaims:
+ min-name-characters: 3
+ max-name-characters: 16
+relation-colours:
+ wilderness: DARK_GREEN
+ warzone: LIGHT_PURPLE
+ teammate: GREEN
+ ally: GOLD
+ enemy: RED
+ road: GOLD
+deaths-till-raidable:
+ maximum: 6
+ millis-between-updates: 45000
+ increment-between-updates: 0.1
+deathban:
+ base-duration-minutes: 120
+ respawn-screen-seconds-before-kick: 15
+enchantment-limits:
+ PROTECTION_ENVIRONMENTAL: 3
+ PROTECTION_FIRE: 3
+ SILK_TOUCH: 1
+ DURABILITY: 3
+ PROTECTION_EXPLOSIONS: 3
+ LOOT_BONUS_BLOCKS: 3
+ PROTECTION_PROJECTILE: 3
+ OXYGEN: 3
+ WATER_WORKER: 1
+ THORNS: 0
+ DAMAGE_ALL: 3
+ ARROW_KNOCKBACK: 1
+ KNOCKBACK: 1
+ FIRE_ASPECT: 1
+ LOOT_BONUS_MOBS: 3
+ LUCK: 3
+ LURE: 3
+end:
+ open: true
+ exit: world,0.5,75,0.5,0,0
+eotw:
+ chat-symbol-prefix: ""
+ chat-symbol-suffix: ""
+ last-map-cappers: []
+potion-limits:
+ STRENGTH: 0
+ INVISIBILITY: 0
+ REGEN: 0
+ WEAKNESS: 0
+ INSTANT_DAMAGE: 0
+ SLOWNESS: 1
+ POISON: 1
diff --git a/WenjaPvP - HCFactions/bin/coords.txt b/WenjaPvP - HCFactions/bin/coords.txt
new file mode 100644
index 0000000..e69de29
diff --git a/WenjaPvP - HCFactions/bin/enderdragon-art-old.png b/WenjaPvP - HCFactions/bin/enderdragon-art-old.png
new file mode 100644
index 0000000..e33ffd6
Binary files /dev/null and b/WenjaPvP - HCFactions/bin/enderdragon-art-old.png differ
diff --git a/WenjaPvP - HCFactions/bin/enderdragon-art.png b/WenjaPvP - HCFactions/bin/enderdragon-art.png
new file mode 100644
index 0000000..31c18b3
Binary files /dev/null and b/WenjaPvP - HCFactions/bin/enderdragon-art.png differ
diff --git a/WenjaPvP - HCFactions/bin/event-schedules.txt b/WenjaPvP - HCFactions/bin/event-schedules.txt
new file mode 100644
index 0000000..3ee09a6
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/event-schedules.txt
@@ -0,0 +1,2 @@
+# year, month, day, hour, minute: eventName (24 hour clock)
+# 2015,1,1,2,0:Example This would run event named 'Example' at 2AM on the 1st of January, 2015.
diff --git a/WenjaPvP - HCFactions/bin/faction-users.yml b/WenjaPvP - HCFactions/bin/faction-users.yml
new file mode 100644
index 0000000..bf82e98
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/faction-users.yml
@@ -0,0 +1 @@
+users: {}
diff --git a/WenjaPvP - HCFactions/bin/factions.yml b/WenjaPvP - HCFactions/bin/factions.yml
new file mode 100644
index 0000000..10bc293
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/factions.yml
@@ -0,0 +1 @@
+factions: {}
diff --git a/WenjaPvP - HCFactions/bin/gnu/trove/impl/package.html b/WenjaPvP - HCFactions/bin/gnu/trove/impl/package.html
new file mode 100644
index 0000000..c803363
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/gnu/trove/impl/package.html
@@ -0,0 +1,24 @@
+
+
+This package (and its sub-packages) contain internal implementations used in Trove. These
+classes should not be accessed directly (treat them like com.sun
+classes.
+
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/bin/gopple-art.png b/WenjaPvP - HCFactions/bin/gopple-art.png
new file mode 100644
index 0000000..08c061a
Binary files /dev/null and b/WenjaPvP - HCFactions/bin/gopple-art.png differ
diff --git a/WenjaPvP - HCFactions/bin/help.txt b/WenjaPvP - HCFactions/bin/help.txt
new file mode 100644
index 0000000..e69de29
diff --git a/WenjaPvP - HCFactions/bin/items.csv b/WenjaPvP - HCFactions/bin/items.csv
new file mode 100644
index 0000000..49dd25c
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/items.csv
@@ -0,0 +1,7451 @@
+#This file belongs to Essentials.
+#version: TeamCity
+#If you change this file, it will not be automatically updated after the next release.
+#item,id,metadata
+stone,1,0
+sstone,1,0
+smoothstone,1,0
+rock,1,0
+grass,2,0
+greendirt,2,0
+greenearth,2,0
+greenland,2,0
+dirt,3,0
+earth,3,0
+land,3,0
+grasslessdirt,3,1
+grasslessearth,3,1
+grasslessland,3,1
+podzol,3,2
+cobblestone,4,0
+cstone,4,0
+cobble,4,0
+wood,5,0
+plank,5,0
+woodenplank,5,0
+woodplank,5,0
+wplank,5,0
+plankwooden,5,0
+plankwood,5,0
+plankw,5,0
+oakplank,5,0
+oakwoodenplank,5,0
+oakwoodplank,5,0
+oakwplank,5,0
+oakplankwooden,5,0
+oakplankwood,5,0
+oakplankw,5,0
+oplank,5,0
+owoodenplank,5,0
+owoodplank,5,0
+owplank,5,0
+oplankwooden,5,0
+oplankwood,5,0
+oplankw,5,0
+pineplank,5,1
+pinewoodenplank,5,1
+pinewoodplank,5,1
+pinewplank,5,1
+pineplankwooden,5,1
+pineplankwood,5,1
+pineplankw,5,1
+pplank,5,1
+pwoodenplank,5,1
+pwoodplank,5,1
+pwplank,5,1
+pplankwooden,5,1
+pplankwood,5,1
+pplankw,5,1
+darkplank,5,1
+darkwoodenplank,5,1
+darkwoodplank,5,1
+darkwplank,5,1
+darkplankwooden,5,1
+darkplankwood,5,1
+darkplankw,5,1
+dplank,5,1
+dwoodenplank,5,1
+dwoodplank,5,1
+dwplank,5,1
+dplankwooden,5,1
+dplankwood,5,1
+dplankw,5,1
+spruceplank,5,1
+sprucewoodenplank,5,1
+sprucewoodplank,5,1
+sprucewplank,5,1
+spruceplankwooden,5,1
+spruceplankwood,5,1
+spruceplankw,5,1
+splank,5,1
+swoodenplank,5,1
+swoodplank,5,1
+swplank,5,1
+splankwooden,5,1
+splankwood,5,1
+splankw,5,1
+birchplank,5,2
+birchwoodenplank,5,2
+birchwoodplank,5,2
+birchwplank,5,2
+birchplankwooden,5,2
+birchplankwood,5,2
+birchplankw,5,2
+bplank,5,2
+bwoodenplank,5,2
+bwoodplank,5,2
+bwplank,5,2
+bplankwooden,5,2
+bplankwood,5,2
+bplankw,5,2
+lightplank,5,2
+lightwoodenplank,5,2
+lightwoodplank,5,2
+lightwplank,5,2
+lightplankwooden,5,2
+lightplankwood,5,2
+lightplankw,5,2
+lplank,5,2
+lwoodenplank,5,2
+lwoodplank,5,2
+lwplank,5,2
+lplankwooden,5,2
+lplankwood,5,2
+lplankw,5,2
+whiteplank,5,2
+whitewoodenplank,5,2
+whitewoodplank,5,2
+whitewplank,5,2
+whiteplankwooden,5,2
+whiteplankwood,5,2
+whiteplankw,5,2
+wwoodenplank,5,2
+wwoodplank,5,2
+wwplank,5,2
+wplankwooden,5,2
+wplankwood,5,2
+wplankw,5,2
+jungleplank,5,3
+junglewoodenplank,5,3
+junglewoodplank,5,3
+junglewplank,5,3
+jungleplankwooden,5,3
+jungleplankwood,5,3
+jungleplankw,5,3
+jplank,5,3
+jwoodenplank,5,3
+jwoodplank,5,3
+jwplank,5,3
+jplankwooden,5,3
+jplankwood,5,3
+jplankw,5,3
+forestplank,5,3
+forestwoodenplank,5,3
+forestwoodplank,5,3
+forestwplank,5,3
+forestplankwooden,5,3
+forestplankwood,5,3
+forestplankw,5,3
+fplank,5,3
+fwoodenplank,5,3
+fwoodplank,5,3
+fwplank,5,3
+fplankwooden,5,3
+fplankwood,5,3
+fplankw,5,3
+acaciaplank,5,4
+acaciawoodenplank,5,4
+acaciawoodplank,5,4
+acaciawplank,5,4
+acaciaplankwooden,5,4
+acaciaplankwood,5,4
+acaciaplankw,5,4
+aplank,5,4
+awoodenplank,5,4
+awoodplank,5,4
+awplank,5,4
+aplankwooden,5,4
+aplankwood,5,4
+aplankw,5,4
+darkoakplank,5,5
+darkoakwoodenplank,5,5
+darkoakwoodplank,5,5
+darkoakwplank,5,5
+darkoakplankwooden,5,5
+darkoakplankwood,5,5
+darkoakplankw,5,5
+doakplank,5,5
+doakwoodenplank,5,5
+doakwoodplank,5,5
+doakwplank,5,5
+doakplankwooden,5,5
+doakplankwood,5,5
+doakplankw,5,5
+doplank,5,5
+dowoodenplank,5,5
+dowoodplank,5,5
+dowplank,5,5
+doplankwooden,5,5
+doplankwood,5,5
+doplankw,5,5
+sapling,6,0
+treesapling,6,0
+logsapling,6,0
+trunksapling,6,0
+woodsapling,6,0
+oaktreesapling,6,0
+oaklogsapling,6,0
+oaktrunksapling,6,0
+oakwoodsapling,6,0
+osapling,6,0
+otreesapling,6,0
+ologsapling,6,0
+otrunksapling,6,0
+owoodsapling,6,0
+darksapling,6,1
+darktreesapling,6,1
+darklogsapling,6,1
+darktrunksapling,6,1
+darkwoodsapling,6,1
+sprucesapling,6,1
+sprucetreesapling,6,1
+sprucelogsapling,6,1
+sprucetrunksapling,6,1
+sprucewoodsapling,6,1
+pinesapling,6,1
+pinetreesapling,6,1
+pinelogsapling,6,1
+pinetrunksapling,6,1
+pinewoodsapling,6,1
+dsapling,6,1
+dtreesapling,6,1
+dlogsapling,6,1
+dtrunksapling,6,1
+dwoodsapling,6,1
+ssapling,6,1
+streesapling,6,1
+slogsapling,6,1
+strunksapling,6,1
+swoodsapling,6,1
+psapling,6,1
+ptreesapling,6,1
+plogsapling,6,1
+ptrunksapling,6,1
+pwoodsapling,6,1
+birchsapling,6,2
+birchtreesapling,6,2
+birchlogsapling,6,2
+birchtrunksapling,6,2
+birchwoodsapling,6,2
+lightsapling,6,2
+lighttreesapling,6,2
+lightlogsapling,6,2
+lighttrunksapling,6,2
+lightwoodsapling,6,2
+whitesapling,6,2
+whitetreesapling,6,2
+whitelogsapling,6,2
+whitetrunksapling,6,2
+whitewoodsapling,6,2
+bsapling,6,2
+btreesapling,6,2
+blogsapling,6,2
+btrunksapling,6,2
+bwoodsapling,6,2
+lsapling,6,2
+ltreesapling,6,2
+llogsapling,6,2
+ltrunksapling,6,2
+lwoodsapling,6,2
+wsapling,6,2
+wtreesapling,6,2
+wlogsapling,6,2
+wtrunksapling,6,2
+wwoodsapling,6,2
+junglesapling,6,3
+jungletreesapling,6,3
+junglelogsapling,6,3
+jungletrunksapling,6,3
+junglewoodsapling,6,3
+forestsapling,6,3
+foresttreesapling,6,3
+forestlogsapling,6,3
+foresttrunksapling,6,3
+forestwoodsapling,6,3
+jsapling,6,3
+jtreesapling,6,3
+jlogsapling,6,3
+jtrunksapling,6,3
+jwoodsapling,6,3
+fsapling,6,3
+ftreesapling,6,3
+flogsapling,6,3
+ftrunksapling,6,3
+fwoodsapling,6,3
+acaciasapling,6,4
+acaciatreesapling,6,4
+acacialogsapling,6,4
+acaciatrunksapling,6,4
+acaciawoodsapling,6,4
+asapling,6,4
+atreesapling,6,4
+alogsapling,6,4
+atrunksapling,6,4
+awoodsapling,6,4
+darkoaksapling,6,5
+darkoaktreesapling,6,5
+darkoaklogsapling,6,5
+darkoaktrunksapling,6,5
+darkoakwoodsapling,6,5
+doaksapling,6,5
+doaktreesapling,6,5
+doaklogsapling,6,5
+doaktrunksapling,6,5
+dosapling,6,5
+dowoodsapling,6,5
+dotreesapling,6,5
+dologsapling,6,5
+dotrunksapling,6,5
+bedrock,7,0
+oprock,7,0
+opblock,7,0
+adminblock,7,0
+adminrock,7,0
+adminium,7,0
+water,8,0
+stationarywater,9,0
+stillwater,9,0
+swater,9,0
+lava,10,0
+stationarylava,11,0
+stilllava,11,0
+slava,11,0
+sand,12,0
+redsand,12,1
+rsand,12,1
+gravel,13,0
+goldore,14,0
+oregold,14,0
+gore,14,0
+oreg,14,0
+ogold,14,0
+goldo,14,0
+ironore,15,0
+oreiron,15,0
+irono,15,0
+oiron,15,0
+steelore,15,0
+oresteel,15,0
+steelo,15,0
+osteel,15,0
+iore,15,0
+orei,15,0
+sore,15,0
+ores,15,0
+coalore,16,0
+orecoal,16,0
+coalo,16,0
+ocoal,16,0
+core,16,0
+tree,17,0
+log,17,0
+trunk,17,0
+oak,17,0
+oaktree,17,0
+oaklog,17,0
+oaktrunk,17,0
+oakwood,17,0
+otree,17,0
+olog,17,0
+otrunk,17,0
+owood,17,0
+pine,17,1
+pinetree,17,1
+pinelog,17,1
+pinetrunk,17,1
+pinewood,17,1
+darktree,17,1
+darklog,17,1
+darktrunk,17,1
+darkwood,17,1
+spruce,17,1
+sprucetree,17,1
+sprucelog,17,1
+sprucetrunk,17,1
+sprucewood,17,1
+dtree,17,1
+dlog,17,1
+dtrunk,17,1
+dwood,17,1
+stree,17,1
+slog,17,1
+strunk,17,1
+swood,17,1
+ptree,17,1
+plog,17,1
+ptrunk,17,1
+pwood,17,1
+birch,17,2
+birchtree,17,2
+birchlog,17,2
+birchtrunk,17,2
+birchwood,17,2
+whitetree,17,2
+whitelog,17,2
+whitetrunk,17,2
+whitewood,17,2
+lighttree,17,2
+lightlog,17,2
+lighttrunk,17,2
+lightwood,17,2
+btree,17,2
+blog,17,2
+btrunk,17,2
+bwood,17,2
+wtree,17,2
+wlog,17,2
+wtrunk,17,2
+wwood,17,2
+ltree,17,2
+llog,17,2
+ltrunk,17,2
+lwood,17,2
+jungletree,17,3
+junglelog,17,3
+jungletrunk,17,3
+junglewood,17,3
+jungle,17,3
+forest,17,3
+foresttree,17,3
+forestlog,17,3
+foresttrunk,17,3
+forestwood,17,3
+jtree,17,3
+jlog,17,3
+jtrunk,17,3
+jwood,17,3
+ftree,17,3
+flog,17,3
+ftrunk,17,3
+fwood,17,3
+leaves,18,0
+leaf,18,0
+treeleaves,18,0
+logleaves,18,0
+trunkleaves,18,0
+woodleaves,18,0
+oakleaves,18,0
+oakleaf,18,0
+oleaves,18,0
+oleaf,18,0
+oaktreeleaves,18,0
+oaklogleaves,18,0
+oaktrunkleaves,18,0
+oakwoodleaves,18,0
+otreeleaves,18,0
+ologleaves,18,0
+otrunkleaves,18,0
+owoodleaves,18,0
+treeleaf,18,0
+logleaf,18,0
+trunkleaf,18,0
+woodleaf,18,0
+oaktreeleaf,18,0
+oaklogleaf,18,0
+oaktrunkleaf,18,0
+oakwoodleaf,18,0
+otreeleaf,18,0
+ologleaf,18,0
+otrunkleaf,18,0
+owoodleaf,18,0
+pineleaves,18,1
+pineleaf,18,1
+pleaves,18,1
+pleaf,18,1
+pinetreeleaves,18,1
+pinelogleaves,18,1
+pinetrunkleaves,18,1
+pinewoodleaves,18,1
+ptreeleaves,18,1
+plogleaves,18,1
+ptrunkleaves,18,1
+pwoodleaves,18,1
+spruceleaves,18,1
+spruceleaf,18,1
+sleaves,18,1
+sleaf,18,1
+sprucetreeleaves,18,1
+sprucelogleaves,18,1
+sprucetrunkleaves,18,1
+sprucewoodleaves,18,1
+streeleaves,18,1
+slogleaves,18,1
+strunkleaves,18,1
+swoodleaves,18,1
+darkleaves,18,1
+darkleaf,18,1
+dleaves,18,1
+dleaf,18,1
+darktreeleaves,18,1
+darklogleaves,18,1
+darktrunkleaves,18,1
+darkwoodleaves,18,1
+dtreeleaves,18,1
+dlogleaves,18,1
+dtrunkleaves,18,1
+dwoodleaves,18,1
+sprucetreeleaf,18,1
+sprucelogleaf,18,1
+sprucetrunkleaf,18,1
+sprucewoodleaf,18,1
+streeleaf,18,1
+slogleaf,18,1
+strunkleaf,18,1
+swoodleaf,18,1
+pinetreeleaf,18,1
+pinelogleaf,18,1
+pinetrunkleaf,18,1
+pinewoodleaf,18,1
+ptreeleaf,18,1
+plogleaf,18,1
+ptrunkleaf,18,1
+pwoodleaf,18,1
+darktreeleaf,18,1
+darklogleaf,18,1
+darktrunkleaf,18,1
+darkwoodleaf,18,1
+dtreeleaf,18,1
+dlogleaf,18,1
+dtrunkleaf,18,1
+dwoodleaf,18,1
+birchleaves,18,2
+birchleaf,18,2
+bleaves,18,2
+bleaf,18,2
+birchtreeleaves,18,2
+birchlogleaves,18,2
+birchtrunkleaves,18,2
+birchwoodleaves,18,2
+btreeleaves,18,2
+blogleaves,18,2
+btrunkleaves,18,2
+bwoodleaves,18,2
+lightleaves,18,2
+lightleaf,18,2
+lleaves,18,2
+lleaf,18,2
+lighttreeleaves,18,2
+lightlogleaves,18,2
+lighttrunkleaves,18,2
+lightwoodleaves,18,2
+ltreeleaves,18,2
+llogleaves,18,2
+ltrunkleaves,18,2
+lwoodleaves,18,2
+whiteleaves,18,2
+whiteleaf,18,2
+wleaves,18,2
+wleaf,18,2
+whitetreeleaves,18,2
+whitelogleaves,18,2
+whitetrunkleaves,18,2
+whitewoodleaves,18,2
+wtreeleaves,18,2
+wlogleaves,18,2
+wtrunkleaves,18,2
+wwoodleaves,18,2
+birchtreeleaf,18,2
+birchlogleaf,18,2
+birchtrunkleaf,18,2
+birchwoodleaf,18,2
+btreeleaf,18,2
+blogleaf,18,2
+btrunkleaf,18,2
+bwoodleaf,18,2
+lighttreeleaf,18,2
+lightlogleaf,18,2
+lighttrunkleaf,18,2
+lightwoodleaf,18,2
+ltreeleaf,18,2
+llogleaf,18,2
+ltrunkleaf,18,2
+lwoodleaf,18,2
+whitetreeleaf,18,2
+whitelogleaf,18,2
+whitetrunkleaf,18,2
+whitewoodleaf,18,2
+wtreeleaf,18,2
+wlogleaf,18,2
+wtrunkleaf,18,2
+wwoodleaf,18,2
+jungleleaves,18,3
+jungleleaf,18,3
+jleaves,18,3
+jleaf,18,3
+jungletreeleaves,18,3
+junglelogleaves,18,3
+jungletrunkleaves,18,3
+junglewoodleaves,18,3
+jtreeleaves,18,3
+jlogleaves,18,3
+jtrunkleaves,18,3
+jwoodleaves,18,3
+forestleaves,18,3
+forestleaf,18,3
+fleaves,18,3
+fleaf,18,3
+foresttreeleaves,18,3
+forestlogleaves,18,3
+foresttrunkleaves,18,3
+forestwoodleaves,18,3
+ftreeleaves,18,3
+flogleaves,18,3
+ftrunkleaves,18,3
+fwoodleaves,18,3
+jungletreeleaf,18,3
+junglelogleaf,18,3
+jungletrunkleaf,18,3
+junglewoodleaf,18,3
+jtreeleaf,18,3
+jlogleaf,18,3
+jtrunkleaf,18,3
+jwoodleaf,18,3
+foresttreeleaf,18,3
+forestlogleaf,18,3
+foresttrunkleaf,18,3
+forestwoodleaf,18,3
+ftreeleaf,18,3
+flogleaf,18,3
+ftrunkleaf,18,3
+fwoodleaf,18,3
+sponge,19,0
+glass,20,0
+blockglass,20,0
+glassblock,20,0
+lapislazuliore,21,0
+lapislazulio,21,0
+orelapislazuli,21,0
+olapislazuli,21,0
+lapisore,21,0
+lapiso,21,0
+orelapis,21,0
+olapis,21,0
+lore,21,0
+orel,21,0
+lapislazuliblock,22,0
+blocklapislazuli,22,0
+lapisblock,22,0
+blocklapis,22,0
+lblock,22,0
+blockl,22,0
+dispenser,23,0
+dispense,23,0
+sandstone,24,0
+sastone,24,0
+creepersandstone,24,1
+creepersastone,24,1
+creepsandstone,24,1
+creepsastone,24,1
+csandstone,24,1
+csastone,24,1
+hieroglyphicsandstone,24,1
+hieroglyphicsastone,24,1
+hieroglyphsandstone,24,1
+hieroglyphsastone,24,1
+hsandstone,24,1
+hsastone,24,1
+pyramidsandstone,24,1
+pyramidsastone,24,1
+psandstone,24,1
+psastone,24,1
+chiseledsandstone,24,1
+chiseledsastone,24,1
+chiselsandstone,24,1
+chiselsastone,24,1
+smoothsandstone,24,2
+smoothsastone,24,2
+ssandstone,24,2
+smsastone,24,2
+ssastone,24,2
+noteblock,25,0
+musicblock,25,0
+nblock,25,0
+mblock,25,0
+poweredtrack,27,0
+poweredrails,27,0
+poweredrail,27,0
+boostertrack,27,0
+boosterrails,27,0
+boosterrail,27,0
+powertrack,27,0
+powerrails,27,0
+powerrail,27,0
+boosttrack,27,0
+boostrails,27,0
+boostrail,27,0
+ptrack,27,0
+prails,27,0
+prail,27,0
+btrack,27,0
+brails,27,0
+brail,27,0
+detectortrack,28,0
+detectorrails,28,0
+detectorrail,28,0
+detectingtrack,28,0
+detectingrails,28,0
+detectingrail,28,0
+detecttrack,28,0
+detectrails,28,0
+detectrail,28,0
+dtrack,28,0
+drails,28,0
+drail,28,0
+stickypistonbase,29,0
+stickypiston,29,0
+stickpistonbase,29,0
+stickpiston,29,0
+stickyp,29,0
+spistonbase,29,0
+spiston,29,0
+pistonstickybase,29,0
+pistonsticky,29,0
+pistonstickbase,29,0
+pistonstick,29,0
+pistonsbase,29,0
+pistons,29,0
+psticky,29,0
+pstick,29,0
+spiderweb,30,0
+cobweb,30,0
+sweb,30,0
+cweb,30,0
+web,30,0
+longgrass,31,1
+tallgrass,31,1
+wildgrass,31,1
+grasslong,31,1
+grasstall,31,1
+grasswild,31,1
+lgrass,31,1
+tgrass,31,1
+wgrass,31,1
+fern,31,2
+bush,31,2
+deadshrub,32,0
+dshrub,32,0
+deadbush,32,0
+dbush,32,0
+deadsapling,32,0
+piston,33,0
+pistonbase,33,0
+pistonblock,33,0
+whitewool,35,0
+whitecloth,35,0
+whitecotton,35,0
+wcloth,35,0
+wwool,35,0
+wcotton,35,0
+cloth,35,0
+wool,35,0
+cotton,35,0
+orangewool,35,1
+orangecloth,35,1
+orangecotton,35,1
+ocloth,35,1
+owool,35,1
+ocotton,35,1
+magentawool,35,2
+magentacloth,35,2
+magentacotton,35,2
+mcloth,35,2
+mwool,35,2
+mcotton,35,2
+lightbluewool,35,3
+lightbluecloth,35,3
+lightbluecotton,35,3
+lbluecloth,35,3
+lbluewool,35,3
+lbluecotton,35,3
+lightblucloth,35,3
+lightbluwool,35,3
+lightblucotton,35,3
+lblucloth,35,3
+lbluwool,35,3
+lblucotton,35,3
+lbcloth,35,3
+lbwool,35,3
+lbcotton,35,3
+yellowwool,35,4
+yellowcloth,35,4
+yellowcotton,35,4
+ycloth,35,4
+ywool,35,4
+ycotton,35,4
+lightgreenwool,35,5
+lightgreencloth,35,5
+lightgreencotton,35,5
+lgreencloth,35,5
+lgreenwool,35,5
+lgreencotton,35,5
+lightgrecloth,35,5
+lightgrewool,35,5
+lightgrecotton,35,5
+lgrecloth,35,5
+lgrewool,35,5
+lgrecotton,35,5
+limecloth,35,5
+limewool,35,5
+limecotton,35,5
+lcloth,35,5
+lwool,35,5
+lcotton,35,5
+pinkwool,35,6
+pinkcloth,35,6
+pinkcotton,35,6
+picloth,35,6
+piwool,35,6
+picotton,35,6
+darkgraywool,35,7
+darkgraycloth,35,7
+darkgraycotton,35,7
+darkgreywool,35,7
+darkgreycloth,35,7
+darkgreycotton,35,7
+dgraycloth,35,7
+dgraywool,35,7
+dgraycotton,35,7
+dgreycloth,35,7
+dgreywool,35,7
+dgreycotton,35,7
+darkgracloth,35,7
+darkgrawool,35,7
+darkgracotton,35,7
+dgracloth,35,7
+dgrawool,35,7
+dgracotton,35,7
+graycloth,35,7
+graywool,35,7
+graycotton,35,7
+greycloth,35,7
+greywool,35,7
+greycotton,35,7
+gracloth,35,7
+grawool,35,7
+gracotton,35,7
+lightgraywool,35,8
+lightgraycloth,35,8
+lightgraycotton,35,8
+lgraycloth,35,8
+lgraywool,35,8
+lgraycotton,35,8
+lightgreywool,35,8
+lightgreycloth,35,8
+lightgreycotton,35,8
+lgreycloth,35,8
+lgreywool,35,8
+lgreycotton,35,8
+lightgracloth,35,8
+lightgrawool,35,8
+lightgracotton,35,8
+lgracloth,35,8
+lgrawool,35,8
+lgracotton,35,8
+silvercloth,35,8
+silverwool,35,8
+silvercotton,35,8
+sicloth,35,8
+siawool,35,8
+siacotton,35,8
+cyanwool,35,9
+cyancloth,35,9
+cyancotton,35,9
+ccloth,35,9
+cwool,35,9
+ccotton,35,9
+purplewool,35,10
+purplecloth,35,10
+purplecotton,35,10
+pucloth,35,10
+puwool,35,10
+pucotton,35,10
+bluewool,35,11
+bluecloth,35,11
+bluecotton,35,11
+blucloth,35,11
+bluwool,35,11
+blucotton,35,11
+brownwool,35,12
+browncloth,35,12
+browncotton,35,12
+brocloth,35,12
+browool,35,12
+brocotton,35,12
+darkgreenwool,35,13
+darkgreencloth,35,13
+darkgreencotton,35,13
+dgreencloth,35,13
+dgreenwool,35,13
+dgreencotton,35,13
+greencloth,35,13
+greenwool,35,13
+greencotton,35,13
+darkgrecloth,35,13
+darkgrewool,35,13
+darkgrecotton,35,13
+dgrecloth,35,13
+dgrewool,35,13
+dgrecotton,35,13
+grecloth,35,13
+grewool,35,13
+grecotton,35,13
+redwool,35,14
+redcloth,35,14
+redcotton,35,14
+rcloth,35,14
+rwool,35,14
+rcotton,35,14
+blackwool,35,15
+blackcloth,35,15
+blackcotton,35,15
+blacloth,35,15
+blawool,35,15
+blacotton,35,15
+dandelion,37,0
+yellowdandelion,37,0
+ydandelion,37,0
+yellowflower,37,0
+yflower,37,0
+flower,37,0
+rose,38,0
+redrose,38,0
+rrose,38,0
+redflower,38,0
+rflower,38,0
+poppy,38,0
+redpoppy,38,0
+blueorchid,38,1
+cyanorchid,38,1
+lightblueorchid,38,1
+lblueorchid,38,1
+orchid,38,1
+allium,38,2
+magentaallium,38,2
+azurebluet,38,3
+whiteazurebluet,38,3
+abluet,38,3
+azureb,38,3
+houstonia,38,3
+redtulip,38,4
+tulipred,38,4
+rtulip,38,4
+tulipr,38,4
+orangetulip,38,5
+tuliporange,38,5
+otulip,38,5
+tulipo,38,5
+whitetulip,38,6
+tulipwhite,38,6
+wtulip,38,6
+tulipw,38,6
+pinktulip,38,7
+tulippink,38,7
+ptulip,38,7
+tulipp,38,7
+oxeye,38,8
+daisy,38,8
+oxeyedaisy,38,8
+daisyoxeye,38,8
+moondaisy,38,8
+daisymoon,38,8
+lightgrayoxeye,38,8
+lgrayoxeye,38,8
+lightgreyoxeye,38,8
+lgreyoxeye,38,8
+brownmushroom,39,0
+brownshroom,39,0
+brownmush,39,0
+bmushroom,39,0
+bshroom,39,0
+bmush,39,0
+redmushroom,40,0
+redshroom,40,0
+redmush,40,0
+rmushroom,40,0
+rshroom,40,0
+rmush,40,0
+goldblock,41,0
+blockgold,41,0
+gblock,41,0
+blockg,41,0
+ironblock,42,0
+steelblock,42,0
+blockiron,42,0
+blocksteel,42,0
+iblock,42,0
+stblock,42,0
+blocki,42,0
+blockst,42,0
+stonedoublestep,43,0
+stonedstep,43,0
+sdoublestep,43,0
+sdstep,43,0
+doublestonestep,43,0
+dstonestep,43,0
+doublesstep,43,0
+doublestep,43,0
+dstep,43,0
+stonedoubleslab,43,0
+stonedslab,43,0
+sdoubleslab,43,0
+sdslab,43,0
+doublestoneslab,43,0
+dstoneslab,43,0
+doublesslab,43,0
+doubleslab,43,0
+dslab,43,0
+stonedoublehalfblock,43,0
+stonedhalfblock,43,0
+sdoublehalfblock,43,0
+sdhalfblock,43,0
+doublestonehalfblock,43,0
+dstonehalfblock,43,0
+doubleshalfblock,43,0
+doublehalfblock,43,0
+dhalfblock,43,0
+sandstonedoublestep,43,1
+sandstonedstep,43,1
+sstonedoublestep,43,1
+sstonedstep,43,1
+ssdoublestep,43,1
+ssdstep,43,1
+doublesandstonestep,43,1
+dsandstonestep,43,1
+doublesstonestep,43,1
+dsstonestep,43,1
+doublessstep,43,1
+dsstep,43,1
+sandstonedoubleslab,43,1
+sandstonedslab,43,1
+sstonedoubleslab,43,1
+sstonedslab,43,1
+ssdoubleslab,43,1
+ssdslab,43,1
+doublesandstoneslab,43,1
+dsandstoneslab,43,1
+doublesstoneslab,43,1
+dsstoneslab,43,1
+doublessslab,43,1
+dsslab,43,1
+sandstonedoublehalfblock,43,1
+sandstonedhalfblock,43,1
+sstonedoublehalfblock,43,1
+sstonedhalfblock,43,1
+ssdoublehalfblock,43,1
+ssdhalfblock,43,1
+doublesandstonehalfblock,43,1
+dsandstonehalfblock,43,1
+doublesstonehalfblock,43,1
+dsstonehalfblock,43,1
+doublesshalfblock,43,1
+dsshalfblock,43,1
+plankstonedoublestep,43,2
+woodenstonedoublestep,43,2
+woodenstonedstep,43,2
+woodstonedoublestep,43,2
+woodstonedstep,43,2
+wstonedoublestep,43,2
+wstonedstep,43,2
+doublewoodenstonestep,43,2
+dwoodenstonestep,43,2
+doublewoodstonestep,43,2
+dwoodstonestep,43,2
+doublewstonestep,43,2
+dwstonestep,43,2
+woodenstonedoubleslab,43,2
+woodenstonedslab,43,2
+woodstonedoubleslab,43,2
+woodstonedslab,43,2
+wstonedoubleslab,43,2
+wstonedslab,43,2
+doublewoodenstoneslab,43,2
+dwoodenstoneslab,43,2
+doublewoodstoneslab,43,2
+dwoodstoneslab,43,2
+doublewstoneslab,43,2
+dwstoneslab,43,2
+woodenstonedoublehalfblock,43,2
+woodenstonedhalfblock,43,2
+woodstonedoublehalfblock,43,2
+woodstonedhalfblock,43,2
+wstonedoublehalfblock,43,2
+wstonedhalfblock,43,2
+doublewoodenstonehalfblock,43,2
+dwoodenstonehalfblock,43,2
+doublewoodstonehalfblock,43,2
+dwoodstonehalfblock,43,2
+doublewstonehalfblock,43,2
+dwstonehalfblock,43,2
+cobblestonedoublestep,43,3
+cobblestonedstep,43,3
+cobbledoublestep,43,3
+cobbledstep,43,3
+cstonedoublestep,43,3
+cstonedstep,43,3
+csdoublestep,43,3
+csdstep,43,3
+doublecobblestonestep,43,3
+dcobblestonestep,43,3
+doublecobblestep,43,3
+dcobblestep,43,3
+doublecstonestep,43,3
+dcstonestep,43,3
+doublecsstep,43,3
+dcsstep,43,3
+cobblestonedoubleslab,43,3
+cobblestonedslab,43,3
+cobbledoubleslab,43,3
+cobbledslab,43,3
+cstonedoubleslab,43,3
+cstonedslab,43,3
+csdoubleslab,43,3
+csdslab,43,3
+doublecobblestoneslab,43,3
+dcobblestoneslab,43,3
+doublecobbleslab,43,3
+dcobbleslab,43,3
+doublecstoneslab,43,3
+dcstoneslab,43,3
+doublecsslab,43,3
+dcsslab,43,3
+cobblestonedoublehalfblock,43,3
+cobblestonedhalfblock,43,3
+cobbledoublehalfblock,43,3
+cobbledhalfblock,43,3
+cstonedoublehalfblock,43,3
+cstonedhalfblock,43,3
+csdoublehalfblock,43,3
+csdhalfblock,43,3
+doublecobblestonehalfblock,43,3
+dcobblestonehalfblock,43,3
+doublecobblehalfblock,43,3
+dcobblehalfblock,43,3
+doublecstonehalfblock,43,3
+dcstonehalfblock,43,3
+doublecshalfblock,43,3
+dcshalfblock,43,3
+brickdoublestep,43,4
+brickdstep,43,4
+bdoublestep,43,4
+bdstep,43,4
+brickdoubleslab,43,4
+brickdslab,43,4
+bdoubleslab,43,4
+bdslab,43,4
+doublebrickstep,43,4
+dbrickstep,43,4
+doublebstep,43,4
+dbstep,43,4
+doublebrickslab,43,4
+dbrickslab,43,4
+doublebslab,43,4
+dbslab,43,4
+brickdoublehalfblock,43,4
+brickdhalfblock,43,4
+bdoublehalfblock,43,4
+bdhalfblock,43,4
+doublebrickhalfblock,43,4
+dbrickhalfblock,43,4
+doublebhalfblock,43,4
+dbhalfblock,43,4
+stonebrickdoublestep,43,5
+stonebrickdstep,43,5
+stonebdoublestep,43,5
+stonebdstep,43,5
+sbrickdoublestep,43,5
+sbrickdstep,43,5
+sbdoublestep,43,5
+sbdstep,43,5
+stonebrickdoubleslab,43,5
+stonebrickdslab,43,5
+stonebdoubleslab,43,5
+stonebdslab,43,5
+sbrickdoubleslab,43,5
+sbrickdslab,43,5
+sbdoubleslab,43,5
+sbdslab,43,5
+doublestonebrickstep,43,5
+dstonebrickstep,43,5
+doublestonebstep,43,5
+dstonebstep,43,5
+doublesbrickstep,43,5
+dsbrickstep,43,5
+doublesbstep,43,5
+dsbstep,43,5
+doublestonebrickslab,43,5
+dstonebrickslab,43,5
+doublestonebslab,43,5
+dstonebslab,43,5
+doublesbrickslab,43,5
+dsbrickdslab,43,5
+doublesbslab,43,5
+dsbslab,43,5
+stonebrickdoublehalfblock,43,5
+stonebrickdhalfblock,43,5
+stonebdoublehalfblock,43,5
+stonebdhalfblock,43,5
+sbrickdoublehalfblock,43,5
+sbrickdhalfblock,43,5
+sbdoublehalfblock,43,5
+sbdhalfblock,43,5
+doublestonebrickhalfblock,43,5
+dstonebrickhalfblock,43,5
+doublestonebhalfblock,43,5
+dstonebhalfblock,43,5
+doublesbrickhalfblock,43,5
+dsbrickhalfblock,43,5
+doublesbhalfblock,43,5
+dsbhalfblock,43,5
+netherbrickdoubleslab,43,6
+hellbrickdoubleslab,43,6
+nbrickdoubleslab,43,6
+hbrickdoubleslab,43,6
+netherdoubleslab,43,6
+helldoubleslab,43,6
+nbdoubleslab,43,6
+hbdoubleslab,43,6
+hdoubleslab,43,6
+ndoubleslab,43,6
+netherbrickdoublestep,43,6
+hellbrickdoublestep,43,6
+nbrickdoublestep,43,6
+hbrickdoublestep,43,6
+netherdoublestep,43,6
+helldoublestep,43,6
+nbdoublestep,43,6
+hbdoublestep,43,6
+ndoublestep,43,6
+hdoublestep,43,6
+netherbrickdoublehalfblock,43,6
+hellbrickdoublehalfblock,43,6
+nbrickdoublehalfblock,43,6
+hbrickdoublehalfblock,43,6
+netherdoublehalfblock,43,6
+helldoublehalfblock,43,6
+nbdoublehalfblock,43,6
+hbdoublehalfblock,43,6
+ndoublehalfblock,43,6
+hdoublehalfblock,43,6
+netherbrickdslab,43,6
+hellbrickdslab,43,6
+nbrickdslab,43,6
+hbrickdslab,43,6
+netherdslab,43,6
+helldslab,43,6
+nbdslab,43,6
+hbdslab,43,6
+hdslab,43,6
+ndslab,43,6
+netherbrickdstep,43,6
+hellbrickdstep,43,6
+nbrickdstep,43,6
+hbrickdstep,43,6
+netherdstep,43,6
+helldstep,43,6
+nbdstep,43,6
+hbdstep,43,6
+ndstep,43,6
+hdstep,43,6
+netherbrickdhalfblock,43,6
+hellbrickdhalfblock,43,6
+nbrickdhalfblock,43,6
+hbrickdhalfblock,43,6
+netherdhalfblock,43,6
+helldhalfblock,43,6
+nbdhalfblock,43,6
+hbdhalfblock,43,6
+ndhalfblock,43,6
+hdhalfblock,43,6
+doublenetherbrickslab,43,6
+doublehellbrickslab,43,6
+doublenbrickslab,43,6
+doublehbrickslab,43,6
+doublenetherslab,43,6
+doublehellslab,43,6
+doublenbslab,43,6
+doublehbslab,43,6
+doublehslab,43,6
+doublenslab,43,6
+doublenetherbrickstep,43,6
+doublehellbrickstep,43,6
+doublenbrickstep,43,6
+doublehbrickstep,43,6
+doublenetherstep,43,6
+doublehellstep,43,6
+doublenbstep,43,6
+doublehbstep,43,6
+doublenstep,43,6
+doublehstep,43,6
+doublenetherbrickhalfblock,43,6
+doublehellbrickhalfblock,43,6
+doublenbrickhalfblock,43,6
+doublehbrickhalfblock,43,6
+doublenetherhalfblock,43,6
+doublehellhalfblock,43,6
+doublenbhalfblock,43,6
+doublehbhalfblock,43,6
+doublenhalfblock,43,6
+doublehhalfblock,43,6
+dnetherbrickslab,43,6
+dhellbrickslab,43,6
+dnbrickslab,43,6
+dhbrickslab,43,6
+dnetherslab,43,6
+dhellslab,43,6
+dnbslab,43,6
+dhbslab,43,6
+dhslab,43,6
+dnslab,43,6
+dnetherbrickstep,43,6
+dhellbrickstep,43,6
+dnbrickstep,43,6
+dhbrickstep,43,6
+dnetherstep,43,6
+dhellstep,43,6
+dnbstep,43,6
+dhbstep,43,6
+dnstep,43,6
+dhstep,43,6
+dnetherbrickhalfblock,43,6
+dhellbrickhalfblock,43,6
+dnbrickhalfblock,43,6
+dhbrickhalfblock,43,6
+dnetherhalfblock,43,6
+dhellhalfblock,43,6
+dnbhalfblock,43,6
+dhbhalfblock,43,6
+dnhalfblock,43,6
+dhhalfblock,43,6
+netherquartzdoublestep,43,7
+hellquartzdoublestep,43,7
+deathquartzdoublestep,43,7
+nquartzdoublestep,43,7
+hquartzdoublestep,43,7
+dquartzdoublestep,43,7
+quartzdoublestep,43,7
+nqdoublestep,43,7
+hqdoublestep,43,7
+dqdoublestep,43,7
+qdoublestep,43,7
+netherquartzdoubleslab,43,7
+hellquartzdoubleslab,43,7
+deathquartzdoubleslab,43,7
+nquartzdoubleslab,43,7
+hquartzdoubleslab,43,7
+dquartzdoubleslab,43,7
+quartzdoubleslab,43,7
+nqdoubleslab,43,7
+hqdoubleslab,43,7
+dqdoubleslab,43,7
+qdoubleslab,43,7
+netherquartzdoublehalfblock,43,7
+hellquartzdoublehalfblock,43,7
+deathquartzdoublehalfblock,43,7
+nquartzdoublehalfblock,43,7
+hquartzdoublehalfblock,43,7
+dquartzdoublehalfblock,43,7
+quartzdoublehalfblock,43,7
+nqdoublehalfblock,43,7
+hqdoublehalfblock,43,7
+dqdoublehalfblock,43,7
+qdoublehalfblock,43,7
+netherquartzdslab,43,7
+hellquartzdslab,43,7
+deathquartzdslab,43,7
+nquartzdslab,43,7
+hquartzdslab,43,7
+dquartzdslab,43,7
+quartzdslab,43,7
+nqdslab,43,7
+hqdslab,43,7
+dqdslab,43,7
+qdslab,43,7
+netherquartzdstep,43,7
+hellquartzdstep,43,7
+deathquartzdstep,43,7
+nquartzdstep,43,7
+hquartzdstep,43,7
+dquartzdstep,43,7
+quartzdstep,43,7
+nqdstep,43,7
+hqdstep,43,7
+dqdstep,43,7
+qdstep,43,7
+netherquartzdhalfblock,43,7
+hellquartzdhalfblock,43,7
+deathquartzdhalfblock,43,7
+nquartzdhalfblock,43,7
+hquartzdhalfblock,43,7
+dquartzdhalfblock,43,7
+quartzdhalfblock,43,7
+nqdhalfblock,43,7
+hqdhalfblock,43,7
+dqdhalfblock,43,7
+qdhalfblock,43,7
+doublenetherquartzslab,43,7
+doublehellquartzslab,43,7
+doubledeathquartzslab,43,7
+doublenquartzslab,43,7
+doublehquartzslab,43,7
+doubledquartzslab,43,7
+doublequartzslab,43,7
+doublenqslab,43,7
+doublehqslab,43,7
+doubledqslab,43,7
+doubleqslab,43,7
+doublenetherquartzstep,43,7
+doublehellquartzstep,43,7
+doubledeathquartzstep,43,7
+doublenquartzstep,43,7
+doublehquartzstep,43,7
+doubledquartzstep,43,7
+doublequartzstep,43,7
+doublenqstep,43,7
+doublehqstep,43,7
+doubledqstep,43,7
+doubleqstep,43,7
+doublenetherquartzhalfblock,43,7
+doublehellquartzhalfblock,43,7
+doubledeathquartzhalfblock,43,7
+doublenquartzhalfblock,43,7
+doublehquartzhalfblock,43,7
+doubledquartzhalfblock,43,7
+doublequartzhalfblock,43,7
+doublenqhalfblock,43,7
+doublehqhalfblock,43,7
+doubledqhalfblock,43,7
+doubleqhalfblock,43,7
+dnetherquartzslab,43,7
+dhellquartzslab,43,7
+ddeathquartzslab,43,7
+dnquartzslab,43,7
+dhquartzslab,43,7
+ddquartzslab,43,7
+dnqslab,43,7
+dhqslab,43,7
+ddqslab,43,7
+dnetherquartzstep,43,7
+dhellquartzstep,43,7
+ddeathquartzstep,43,7
+dnquartzstep,43,7
+dhquartzstep,43,7
+ddquartzstep,43,7
+dnqstep,43,7
+dhqstep,43,7
+ddqstep,43,7
+dnetherquartzhalfblock,43,7
+dhellquartzhalfblock,43,7
+ddeathquartzhalfblock,43,7
+dnquartzhalfblock,43,7
+dhquartzhalfblock,43,7
+ddquartzhalfblock,43,7
+dnqhalfblock,43,7
+dhqhalfblock,43,7
+ddqhalfblock,43,7
+smoothstonedoubleslab,43,8
+smoothstonedoublestep,43,8
+smoothstonedoublehalfblock,43,8
+smoothstonedslab,43,8
+smoothstonedstep,43,8
+smoothstonedhalfblock,43,8
+doublesmoothstoneslab,43,8
+doublesmoothstonestep,43,8
+doublesmoothstonehalfblock,43,8
+dsmoothstoneslab,43,8
+dsmoothstonestep,43,8
+dsmoothstonehalfblock,43,8
+smoothsandstonedoubleslab,43,9
+ssandstonedoubleslab,43,9
+ssstonedoubleslab,43,9
+sssdoubleslab,43,9
+smoothsandstonedoublestep,43,9
+ssandstonedoublestep,43,9
+ssstonedoublestep,43,9
+sssdoublestep,43,9
+smoothsandstonedoublehalfblock,43,9
+ssandstonedoublehalfblock,43,9
+ssstonedoublehalfblock,43,9
+sssdoublehalfblock,43,9
+smoothsandstonedslab,43,9
+ssandstonedslab,43,9
+ssstonedslab,43,9
+sssdslab,43,9
+smoothsandstonedstep,43,9
+ssandstonedstep,43,9
+ssstonedstep,43,9
+sssdstep,43,9
+smoothsandstonedhalfblock,43,9
+ssandstonedhalfblock,43,9
+ssstonedhalfblock,43,9
+sssdhalfblock,43,9
+doublesmoothsandstoneslab,43,9
+doublessandstoneslab,43,9
+doublessstoneslab,43,9
+doublesssslab,43,9
+doublesmoothsandstonestep,43,9
+doublessandstonestep,43,9
+doublessstonestep,43,9
+doublesssstep,43,9
+doublesmoothsandstonehalfblock,43,9
+doublessandstonehalfblock,43,9
+doublessstonehalfblock,43,9
+doublessshalfblock,43,9
+dsmoothsandstoneslab,43,9
+dssandstoneslab,43,9
+dssstoneslab,43,9
+dsssslab,43,9
+dsmoothsandstonestep,43,9
+dssandstonestep,43,9
+dssstonestep,43,9
+dsssstep,43,9
+dsmoothsandstonehalfblock,43,9
+dssandstonehalfblock,43,9
+dssstonehalfblock,43,9
+dssshalfblock,43,9
+smoothstonestep,44,0
+stonestep,44,0
+sstep,44,0
+step,44,0
+smoothstoneslab,44,0
+stoneslab,44,0
+sslab,44,0
+slab,44,0
+smoothstonehalfblock,44,0
+stonehalfblock,44,0
+shalfblock,44,0
+halfblock,44,0
+sandstonestep,44,1
+sstonestep,44,1
+ssstep,44,1
+sandstoneslab,44,1
+sstoneslab,44,1
+ssslab,44,1
+sandstonehalfblock,44,1
+sstonehalfblock,44,1
+sshalfblock,44,1
+woodenstonestep,44,2
+woodstonestep,44,2
+wstonestep,44,2
+woodenstoneslab,44,2
+woodstoneslab,44,2
+wstoneslab,44,2
+woodenstonehalfblock,44,2
+woodstonehalfblock,44,2
+wstonehalfblock,44,2
+cobblestonestep,44,3
+cobblestep,44,3
+cstonestep,44,3
+csstep,44,3
+cobblestoneslab,44,3
+cobbleslab,44,3
+cstoneslab,44,3
+csslab,44,3
+cobblestonehalfblock,44,3
+cobblehalfblock,44,3
+cstonehalfblock,44,3
+cshalfblock,44,3
+brickstep,44,4
+bstep,44,4
+brickslab,44,4
+bslab,44,4
+brickhalfblock,44,4
+bhalfblock,44,4
+stonebrickstep,44,5
+stonebstep,44,5
+sbrickstep,44,5
+sbstep,44,5
+stonebrickslab,44,5
+stonebslab,44,5
+sbrickslab,44,5
+sbslab,44,5
+stonebrickhalfblock,44,5
+stonebhalfblock,44,5
+sbrickhalfblock,44,5
+sbhalfblock,44,5
+netherbrickslab,44,6
+hellbrickslab,44,6
+nbrickslab,44,6
+hbrickslab,44,6
+netherslab,44,6
+hellslab,44,6
+nbslab,44,6
+hbslab,44,6
+hslab,44,6
+nslab,44,6
+netherbrickstep,44,6
+hellbrickstep,44,6
+nbrickstep,44,6
+hbrickstep,44,6
+netherstep,44,6
+hellstep,44,6
+nbstep,44,6
+hbstep,44,6
+nstep,44,6
+hstep,44,6
+netherbrickhalfblock,44,6
+hellbrickhalfblock,44,6
+nbrickhalfblock,44,6
+hbrickhalfblock,44,6
+netherhalfblock,44,6
+hellhalfblock,44,6
+nbhalfblock,44,6
+hbhalfblock,44,6
+nhalfblock,44,6
+hhalfblock,44,6
+netherquartzstep,44,7
+hellquartzstep,44,7
+deathquartzstep,44,7
+nquartzstep,44,7
+hquartzstep,44,7
+dquartzstep,44,7
+quartzstep,44,7
+nqstep,44,7
+hqstep,44,7
+dqstep,44,7
+qstep,44,7
+netherquartzslab,44,7
+hellquartzslab,44,7
+deathquartzslab,44,7
+nquartzslab,44,7
+hquartzslab,44,7
+dquartzslab,44,7
+quartzslab,44,7
+nqslab,44,7
+hqslab,44,7
+dqslab,44,7
+qslab,44,7
+netherquartzhalfblock,44,7
+hellquartzhalfblock,44,7
+deathquartzhalfblock,44,7
+nquartzhalfblock,44,7
+hquartzhalfblock,44,7
+dquartzhalfblock,44,7
+quartzhalfblock,44,7
+nqhalfblock,44,7
+hqhalfblock,44,7
+dqhalfblock,44,7
+qhalfblock,44,7
+brickblock,45,0
+blockbrick,45,0
+bblock,45,0
+blockb,45,0
+tnt,46,0
+tntblock,46,0
+blocktnt,46,0
+bombblock,46,0
+blockbomb,46,0
+dynamiteblock,46,0
+blockdynamite,46,0
+bomb,46,0
+dynamite,46,0
+bookcase,47,0
+casebook,47,0
+bookshelf,47,0
+shelfbook,47,0
+bookblock,47,0
+blockbook,47,0
+mossycobblestone,48,0
+mosscobblestone,48,0
+mcobblestone,48,0
+mossycobble,48,0
+mosscobble,48,0
+mcobble,48,0
+mossstone,48,0
+mossystone,48,0
+mstone,48,0
+obsidian,49,0
+obsi,49,0
+obby,49,0
+torch,50,0
+burningstick,50,0
+burnstick,50,0
+fire,51,0
+flame,51,0
+flames,51,0
+mobspawner,52,0
+mobcage,52,0
+monsterspawner,52,0
+monstercage,52,0
+mspawner,52,0
+mcage,52,0
+spawner,52,0
+cage,52,0
+woodenstairs,53,0
+woodstairs,53,0
+wstairs,53,0
+woodenstair,53,0
+woodstair,53,0
+wstair,53,0
+chest,54,0
+container,54,0
+diamondore,56,0
+crystalore,56,0
+orediamond,56,0
+orecrystal,56,0
+dore,56,0
+ored,56,0
+diamondblock,57,0
+blockdiamond,57,0
+crystalblock,57,0
+blockcrystal,57,0
+dblock,57,0
+blockd,57,0
+workbench,58,0
+craftingbench,58,0
+crafterbench,58,0
+craftbench,58,0
+worktable,58,0
+craftingtable,58,0
+craftertable,58,0
+crafttable,58,0
+wbench,58,0
+cbench,58,0
+soil,60,0
+furnace,61,0
+litfurnace,62,0
+lfurnace,62,0
+burningfurnace,62,0
+burnfurnace,62,0
+bfurnace,62,0
+ladder,65,0
+minecarttrack,66,0
+minecartrails,66,0
+minecartrail,66,0
+mcarttrack,66,0
+mcartrails,66,0
+mcartrail,66,0
+mctrack,66,0
+mcrails,66,0
+mcrail,66,0
+track,66,0
+rails,66,0
+rail,66,0
+cobblestonestairs,67,0
+cstonestairs,67,0
+stonestairs,67,0
+cobblestairs,67,0
+csstairs,67,0
+sstairs,67,0
+cstairs,67,0
+cobblestonestair,67,0
+cstonestair,67,0
+stonestair,67,0
+cobblestair,67,0
+csstair,67,0
+sstair,67,0
+cstair,67,0
+lever,69,0
+stonepressureplate,70,0
+stonepressplate,70,0
+stonepplate,70,0
+stoneplate,70,0
+spressureplate,70,0
+spressplate,70,0
+spplate,70,0
+splate,70,0
+smoothstonepressureplate,70,0
+smoothstonepressplate,70,0
+smoothstonepplate,70,0
+smoothstoneplate,70,0
+sstonepressureplate,70,0
+sstonepressplate,70,0
+sstonepplate,70,0
+sstoneplate,70,0
+woodenpressureplate,72,0
+woodenpressplate,72,0
+woodenpplate,72,0
+woodenplate,72,0
+woodpressureplate,72,0
+woodpressplate,72,0
+woodpplate,72,0
+woodplate,72,0
+wpressureplate,72,0
+wpressplate,72,0
+wpplate,72,0
+wplate,72,0
+redstoneore,73,0
+redsore,73,0
+redore,73,0
+rstoneore,73,0
+rsore,73,0
+rore,73,0
+oreredstone,73,0
+orereds,73,0
+orered,73,0
+orerstone,73,0
+orers,73,0
+orer,73,0
+redstonetorch,76,0
+rstonetorch,76,0
+redstorch,76,0
+redtorch,76,0
+rstorch,76,0
+stonebutton,77,0
+smoothstonebutton,77,0
+sstonebutton,77,0
+sbutton,77,0
+button,77,0
+snowcover,78,0
+snowcovering,78,0
+scover,78,0
+ice,79,0
+frozenwater,79,0
+waterfrozen,79,0
+freezewater,79,0
+waterfreeze,79,0
+snowblock,80,0
+blocksnow,80,0
+sblock,80,0
+blocks,80,0
+cactus,81,0
+cactuses,81,0
+cacti,81,0
+clayblock,82,0
+blockclay,82,0
+cblock,82,0
+blockc,82,0
+jukebox,84,0
+jbox,84,0
+woodenfence,85,0
+fence,85,0
+woodfence,85,0
+wfence,85,0
+fencewooden,85,0
+fencewood,85,0
+fencew,85,0
+pumpkin,86,0
+netherrack,87,0
+netherrock,87,0
+netherstone,87,0
+hellrack,87,0
+hellrock,87,0
+hellstone,87,0
+deathrack,87,0
+deathrock,87,0
+deathstone,87,0
+nrack,87,0
+nrock,87,0
+nstone,87,0
+hrack,87,0
+hrock,87,0
+hstone,87,0
+drack,87,0
+drock,87,0
+dstone,87,0
+soulsand,88,0
+slowsand,88,0
+slowmud,88,0
+ssand,88,0
+smud,88,0
+mud,88,0
+glowstone,89,0
+glowingstoneblock,89,0
+lightstoneblock,89,0
+glowstoneblock,89,0
+blockglowingstone,89,0
+blocklightstone,89,0
+blockglowstone,89,0
+glowingstone,89,0
+lightstone,89,0
+glowingblock,89,0
+lightblock,89,0
+glowblock,89,0
+lstone,89,0
+gstone,89,0
+portal,90,0
+jackolantern,91,0
+pumpkinlantern,91,0
+glowingpumpkin,91,0
+lightpumpkin,91,0
+jpumpkin,91,0
+plantren,91,0
+glowpumpkin,91,0
+gpumpkin,91,0
+lpumpkin,91,0
+lockedchest,95,0
+lockchest,95,0
+jokechest,95,0
+whiteglass,95,0
+whitesglass,95,0
+whitestainedglass,95,0
+wglass,95,0
+wsglass,95,0
+wstainedglass,95,0
+sglass,95,0
+stainedglass,95,0
+orangeglass,95,1
+orangesglass,95,1
+orangestainedglass,95,1
+oglass,95,1
+osglass,95,1
+ostainedglass,95,1
+magentaglass,95,2
+magentasglass,95,2
+magentastainedglass,95,2
+mglass,95,2
+msglass,95,2
+mstainedglass,95,2
+lightblueglass,95,3
+lightbluesglass,95,3
+lightbluestainedglass,95,3
+lblueglass,95,3
+lbluesglass,95,3
+lbluestainedglass,95,3
+lightbluglass,95,3
+lightblusglass,95,3
+lightblustainedglass,95,3
+lbluglass,95,3
+lblusglass,95,3
+lblustainedglass,95,3
+lbglass,95,3
+lbsglass,95,3
+lbstainedglass,95,3
+yellowglass,95,4
+yellowsglass,95,4
+yellowstainedglass,95,4
+yglass,95,4
+ysglass,95,4
+ystainedglass,95,4
+lightgreenglass,95,5
+lightgreensglass,95,5
+lightgreenstainedglass,95,5
+lgreenglass,95,5
+lgreensglass,95,5
+lgreenstainedglass,95,5
+lightgreglass,95,5
+lightgresglass,95,5
+lightgrestainedglass,95,5
+lgreglass,95,5
+lgresglass,95,5
+lgrestainedglass,95,5
+limeglass,95,5
+limesglass,95,5
+limestainedglass,95,5
+lglass,95,5
+lsglass,95,5
+lstainedglass,95,5
+pinkglass,95,6
+pinksglass,95,6
+pinkstainedglass,95,6
+piglass,95,6
+pisglass,95,6
+pistainedglass,95,6
+darkgrayglass,95,7
+darkgraysglass,95,7
+darkgraystainedglass,95,7
+dgrayglass,95,7
+dgraysglass,95,7
+dgraystainedglass,95,7
+darkgreyglass,95,7
+darkgreysglass,95,7
+darkgreystainedglass,95,7
+dgreyglass,95,7
+dgreysglass,95,7
+dgreystainedglass,95,7
+darkgraglass,95,7
+darkgrasglass,95,7
+darkgrastainedglass,95,7
+dgraglass,95,7
+dgrasglass,95,7
+dgrastainedglass,95,7
+grayglass,95,7
+graysglass,95,7
+graystainedglass,95,7
+greyglass,95,7
+greysglass,95,7
+greystainedglass,95,7
+graglass,95,7
+grasglass,95,7
+grastainedglass,95,7
+lightgrayglass,95,8
+lightgraysglass,95,8
+lightgraystainedglass,95,8
+lgrayglass,95,8
+lgraysglass,95,8
+lgraystainedglass,95,8
+lightgreyglass,95,8
+lightgreysglass,95,8
+lightgreystainedglass,95,8
+lgreyglass,95,8
+lgreysglass,95,8
+lgreystainedglass,95,8
+lightgraglass,95,8
+lightgrasglass,95,8
+lightgrastainedglass,95,8
+lgraglass,95,8
+lgrasglass,95,8
+lgrastainedglass,95,8
+silverglass,95,8
+silversglass,95,8
+silverstainedglass,95,8
+siglass,95,8
+siasglass,95,8
+siastainedglass,95,8
+cyanglass,95,9
+cyansglass,95,9
+cyanstainedglass,95,9
+cglass,95,9
+csglass,95,9
+cstainedglass,95,9
+purpleglass,95,10
+purplesglass,95,10
+purplestainedglass,95,10
+puglass,95,10
+pusglass,95,10
+pustainedglass,95,10
+blueglass,95,11
+bluesglass,95,11
+bluestainedglass,95,11
+bluglass,95,11
+blusglass,95,11
+blustainedglass,95,11
+brownglass,95,12
+brownsglass,95,12
+brownstainedglass,95,12
+broglass,95,12
+brosglass,95,12
+brostainedglass,95,12
+darkgreenglass,95,13
+darkgreensglass,95,13
+darkgreenstainedglass,95,13
+dgreenglass,95,13
+dgreensglass,95,13
+dgreenstainedglass,95,13
+greenglass,95,13
+greensglass,95,13
+greenstainedglass,95,13
+darkgreglass,95,13
+darkgresglass,95,13
+darkgrestainedglass,95,13
+dgreglass,95,13
+dgresglass,95,13
+dgrestainedglass,95,13
+greglass,95,13
+gresglass,95,13
+grestainedglass,95,13
+redglass,95,14
+redsglass,95,14
+redstainedglass,95,14
+rglass,95,14
+rsglass,95,14
+rstainedglass,95,14
+blackglass,95,15
+blacksglass,95,15
+blackstainedglass,95,15
+blaglass,95,15
+blasglass,95,15
+blastainedglass,95,15
+trapdoor,96,0
+doortrap,96,0
+hatch,96,0
+tdoor,96,0
+doort,96,0
+trapd,96,0
+dtrap,96,0
+silverfish,97,0
+silverfishsmoothstone,97,0
+silverfishsstone,97,0
+sfishsmoothstone,97,0
+sfishsstone,97,0
+fishsmoothstone,97,0
+fishsstone,97,0
+sfsmoothstone,97,0
+sfsstone,97,0
+trapsmoothstone,97,0
+trapsstone,97,0
+monsteregg,97,0
+monstereggsmoothstone,97,0
+monstereggsstone,97,0
+meggsmoothstone,97,0
+meggsstone,97,0
+mesmoothstone,97,0
+messtone,97,0
+silverfishcobblestone,97,1
+silverfishcstone,97,1
+sfishcobblestone,97,1
+sfishcstone,97,1
+fishcobblestone,97,1
+fishcstone,97,1
+sfcobblestone,97,1
+sfcstone,97,1
+trapcobblestone,97,1
+trapcstone,97,1
+monstereggcobblestone,97,1
+monstereggcstone,97,1
+meggcobblestone,97,1
+meggcstone,97,1
+mecobblestone,97,1
+mecstone,97,1
+silverfishstonebrick,97,2
+silverfishsbrick,97,2
+sfishstonebrick,97,2
+sfishsbrick,97,2
+fishstonebrick,97,2
+fishsbrick,97,2
+sfstonebrick,97,2
+sfsbrick,97,2
+trapstonebrick,97,2
+trapsbrick,97,2
+monstereggstonebrick,97,2
+monstereggsbrick,97,2
+meggstonebrick,97,2
+meggsbrick,97,2
+mestonebrick,97,2
+mesbrick,97,2
+silverfishmossystonebrick,97,3
+silverfishmossstonebrick,97,3
+silverfishmstonebrick,97,3
+silverfishmsbrick,97,3
+sfishmossystonebrick,97,3
+sfishmossstonebrick,97,3
+sfishmstonebrick,97,3
+sfishmsbrick,97,3
+fishmossystonebrick,97,3
+fishmossstonebrick,97,3
+fishmstonebrick,97,3
+fishmsbrick,97,3
+sfmossystonebrick,97,3
+sfmossstonebrick,97,3
+sfmstonebrick,97,3
+sfmsbrick,97,3
+trapmossystonebrick,97,3
+trapmossstonebrick,97,3
+trapmstonebrick,97,3
+trapmsbrick,97,3
+monstereggmossystonebrick,97,3
+monstereggmossstonebrick,97,3
+monstereggmstonebrick,97,3
+monstereggmsbrick,97,3
+meggmossystonebrick,97,3
+meggmossstonebrick,97,3
+meggmstonebrick,97,3
+meggmsbrick,97,3
+memossystonebrick,97,3
+memossstonebrick,97,3
+memstonebrick,97,3
+memsbrick,97,3
+silverfishcrackedstonebrick,97,4
+silverfishcrackstonebrick,97,4
+silverfishcrstonebrick,97,4
+silverfishcrsbrick,97,4
+sfishcrackedstonebrick,97,4
+sfishcrackstonebrick,97,4
+sfishcrstonebrick,97,4
+sfishcrsbrick,97,4
+fishcrackedstonebrick,97,4
+fishcrackstonebrick,97,4
+fishcrstonebrick,97,4
+fishcrsbrick,97,4
+sfcrackedstonebrick,97,4
+sfcrackstonebrick,97,4
+sfcrstonebrick,97,4
+sfcrsbrick,97,4
+trapcrackedstonebrick,97,4
+trapcrackstonebrick,97,4
+trapcrstonebrick,97,4
+trapcrsbrick,97,4
+monstereggcrackedstonebrick,97,4
+monstereggcrackstonebrick,97,4
+monstereggcrstonebrick,97,4
+monstereggcrsbrick,97,4
+meggcrackedstonebrick,97,4
+meggcrackstonebrick,97,4
+meggcrstonebrick,97,4
+meggcrsbrick,97,4
+mecrackedstonebrick,97,4
+mecrackstonebrick,97,4
+mecrstonebrick,97,4
+mecrsbrick,97,4
+silverfishcirclestonebrick,97,5
+silverfishcistonebrick,97,5
+silverfishcisbrick,97,5
+sfishcirclestonebrick,97,5
+sfishcistonebrick,97,5
+sfishcisbrick,97,5
+fishcirclestonebrick,97,5
+fishcistonebrick,97,5
+fishcisbrick,97,5
+sfcirclestonebrick,97,5
+sfcistonebrick,97,5
+sfcisbrick,97,5
+trapcirclestonebrick,97,5
+trapcistonebrick,97,5
+trapcisbrick,97,5
+monstereggcirclestonebrick,97,5
+monstereggcistonebrick,97,5
+monstereggcisbrick,97,5
+meggcirclestonebrick,97,5
+meggcistonebrick,97,5
+meggcisbrick,97,5
+mecirclestonebrick,97,5
+mecistonebrick,97,5
+mecisbrick,97,5
+stonebrick,98,0
+stonebricks,98,0
+stonebrickblock,98,0
+stonebb,98,0
+sbrick,98,0
+mossystonebrick,98,1
+mossystonebricks,98,1
+mossystonebrickblock,98,1
+mossystonebb,98,1
+mossstonebrick,98,1
+mossstonebricks,98,1
+mossstonebrickblock,98,1
+mossstonebb,98,1
+mstonebrick,98,1
+mstonebricks,98,1
+mstonebrickblock,98,1
+mstonebb,98,1
+mosssbrick,98,1
+mosssbricks,98,1
+mosssbrickblock,98,1
+mosssbb,98,1
+msbrick,98,1
+msbricks,98,1
+msbrickblock,98,1
+crackedstone,98,2
+crackedstonebrick,98,2
+crackedstonebricks,98,2
+crackedstonebrickblock,98,2
+crackedstonebb,98,2
+crackstonebrick,98,2
+crackstonebricks,98,2
+crackstonebrickblock,98,2
+crackstonebb,98,2
+crstonebrick,98,2
+crstonebricks,98,2
+crstonebrickblock,98,2
+crstonebb,98,2
+cracksbrick,98,2
+cracksbricks,98,2
+cracksbrickblock,98,2
+cracksbb,98,2
+crsbrick,98,2
+crsbricks,98,2
+crsbrickblock,98,2
+circlestone,98,3
+circlestonebrick,98,3
+circlestonebricks,98,3
+circlestonebrickblock,98,3
+circlestonebb,98,3
+cistonebrick,98,3
+cistonebricks,98,3
+cistonebrickblock,98,3
+cistonebb,98,3
+circlesbrick,98,3
+circlesbricks,98,3
+circlesbrickblock,98,3
+circlesbb,98,3
+cisbrick,98,3
+cisbricks,98,3
+cisbrickblock,98,3
+giantredmushroom,99,0
+hugeredmushroom,99,0
+bigredmushroom,99,0
+gredmushroom,99,0
+hredmushroom,99,0
+bredmushroom,99,0
+giantrmushroom,99,0
+hugermushroom,99,0
+bigrmushroom,99,0
+grmushroom,99,0
+hrmushroom,99,0
+brmushroom,99,0
+giantredmush,99,0
+hugeredmush,99,0
+bigredmush,99,0
+gredmush,99,0
+hredmush,99,0
+bredmush,99,0
+giantrmush,99,0
+hugermush,99,0
+bigrmush,99,0
+grmush,99,0
+hrmush,99,0
+brmush,99,0
+giantbrownmushroom,100,0
+hugebrownmushroom,100,0
+bigbrownmushroom,100,0
+gbrownmushroom,100,0
+hbrownmushroom,100,0
+bbrownmushroom,100,0
+giantbmushroom,100,0
+hugebmushroom,100,0
+bigbmushroom,100,0
+gbmushroom,100,0
+hbmushroom,100,0
+bbmushroom,100,0
+giantbrownmush,100,0
+hugebrownmush,100,0
+bigbrownmush,100,0
+gbrownmush,100,0
+hbrownmush,100,0
+bbrownmush,100,0
+giantbmush,100,0
+hugebmush,100,0
+bigbmush,100,0
+gbmush,100,0
+hbmush,100,0
+bbmush,100,0
+ironbars,101,0
+ironbarsb,101,0
+ironbarsblock,101,0
+ironfence,101,0
+metalbars,101,0
+metalbarsb,101,0
+metalbarsblock,101,0
+metalfence,101,0
+jailbars,101,0
+jailbarsb,101,0
+jailbarsblock,101,0
+jailfence,101,0
+mbars,101,0
+mbarsb,101,0
+mbarsblock,101,0
+mfence,101,0
+jbars,101,0
+jbarsb,101,0
+jbarsblock,101,0
+jfence,101,0
+ibars,101,0
+ibarsb,101,0
+ibarsblock,101,0
+ifence,101,0
+glasspane,102,0
+glassp,102,0
+paneglass,102,0
+pglass,102,0
+flatglass,102,0
+fglass,102,0
+skinnyglass,102,0
+glassflat,102,0
+glassf,102,0
+glassskinny,102,0
+glasss,102,0
+melon,103,0
+watermelon,103,0
+greenmelon,103,0
+melongreen,103,0
+melonblock,103,0
+watermelonblock,103,0
+greenmelonblock,103,0
+vines,106,0
+vine,106,0
+greenvines,106,0
+greenvine,106,0
+gardenvines,106,0
+gardenvine,106,0
+vinesgreen,106,0
+vinegreen,106,0
+vinesgarden,106,0
+vinegarden,106,0
+vinesg,106,0
+vineg,106,0
+gvines,106,0
+gvine,106,0
+woodgate,107,0
+woodenfencegate,107,0
+wfencegate,107,0
+woodfencegate,107,0
+woodengate,107,0
+wgate,107,0
+gate,107,0
+gardengate,107,0
+ggate,107,0
+fencegate,107,0
+fgate,107,0
+brickstairs,108,0
+redbrickstairs,108,0
+redbstairs,108,0
+rbrickstairs,108,0
+bstairs,108,0
+redstairs,108,0
+brickstair,108,0
+redbrickstair,108,0
+redbstair,108,0
+rbrickstair,108,0
+bstair,108,0
+redstair,108,0
+stonebrickstairs,109,0
+stonebstairs,109,0
+sbstairs,109,0
+cementbrickstairs,109,0
+cementstairs,109,0
+cementbstairs,109,0
+cbstairs,109,0
+greybrickstairs,109,0
+greybstairs,109,0
+greystairs,109,0
+mycelium,110,0
+purplegrass,110,0
+pinkgrass,110,0
+mycel,110,0
+swampgrass,110,0
+sgrass,110,0
+mushroomgrass,110,0
+mushgrass,110,0
+lilypad,111,0
+waterlily,111,0
+lily,111,0
+swamppad,111,0
+lpad,111,0
+wlily,111,0
+netherbrickblock,112,0
+hellbrickblock,112,0
+deathbrickblock,112,0
+nbrickblock,112,0
+hbrickblock,112,0
+dbrickblock,112,0
+netherbblock,112,0
+hellbblock,112,0
+deathbblock,112,0
+nbblock,112,0
+hbblock,112,0
+dbblock,112,0
+netherbrickfence,113,0
+hellbrickfence,113,0
+nbrickfence,113,0
+hbrickfence,113,0
+netherbfence,113,0
+hellbfence,113,0
+netherfence,113,0
+hellfence,113,0
+nbfence,113,0
+hbfence,113,0
+nfence,113,0
+hfence,113,0
+netherbrickstairs,114,0
+hellbrickstairs,114,0
+nbrickstairs,114,0
+hbrickstairs,114,0
+netherbstairs,114,0
+hellbstairs,114,0
+netherstairs,114,0
+hellstairs,114,0
+nbstairs,114,0
+hbstairs,114,0
+nstairs,114,0
+hstairs,114,0
+netherbrickstair,114,0
+hellbrickstair,114,0
+nbrickstair,114,0
+hbrickstair,114,0
+netherbstair,114,0
+hellbstair,114,0
+netherstair,114,0
+hellstair,114,0
+nbstair,114,0
+hbstair,114,0
+nstair,114,0
+hstair,114,0
+enchantmenttable,116,0
+enchantingtable,116,0
+enchanttable,116,0
+etable,116,0
+magicaltable,116,0
+magictable,116,0
+mtable,116,0
+enchantmentdesk,116,0
+enchantingdesk,116,0
+enchantdesk,116,0
+edesk,116,0
+magicaldesk,116,0
+magicdesk,116,0
+mdesk,116,0
+booktable,116,0
+bookdesk,116,0
+btable,116,0
+bdesk,116,0
+enderportal,119,0
+endergoo,119,0
+endgoo,119,0
+endportal,119,0
+egoo,119,0
+eportal,119,0
+enderportalframe,120,0
+endportalframe,120,0
+endgooframe,120,0
+endergooframe,120,0
+egooframe,120,0
+eportalframe,120,0
+enderframe,120,0
+endframe,120,0
+enderstone,121,0
+endstone,121,0
+endrock,121,0
+enderrock,121,0
+erock,121,0
+estone,121,0
+enderdragonegg,122,0
+endegg,122,0
+dragonegg,122,0
+degg,122,0
+bossegg,122,0
+begg,122,0
+redstonelamp,123,0
+redlamp,123,0
+rslamp,123,0
+woodendoublestep,125,0
+woodendstep,125,0
+wooddoublestep,125,0
+wooddstep,125,0
+wdoublestep,125,0
+wdstep,125,0
+doublewoodenstep,125,0
+dwoodenstep,125,0
+doublewoodstep,125,0
+dwoodstep,125,0
+doublewstep,125,0
+dwstep,125,0
+woodendoubleslab,125,0
+woodendslab,125,0
+wooddoubleslab,125,0
+wooddslab,125,0
+wdoubleslab,125,0
+wdslab,125,0
+doublewoodenslab,125,0
+dwoodenslab,125,0
+doublewoodslab,125,0
+dwoodslab,125,0
+doublewslab,125,0
+dwslab,125,0
+woodendoublehalfblock,125,0
+woodendhalfblock,125,0
+wooddoublehalfblock,125,0
+wooddhalfblock,125,0
+wdoublehalfblock,125,0
+wdhalfblock,125,0
+doublewoodenhalfblock,125,0
+dwoodenhalfblock,125,0
+doublewoodhalfblock,125,0
+dwoodhalfblock,125,0
+doublewhalfblock,125,0
+dwhalfblock,125,0
+oakwoodendoublehalfblock,125,0
+oakwoodendhalfblock,125,0
+oakwooddoublehalfblock,125,0
+oakwooddhalfblock,125,0
+oakwdoublehalfblock,125,0
+oakwdhalfblock,125,0
+oakdoublewoodenhalfblock,125,0
+oakdwoodenhalfblock,125,0
+oakdoublewoodhalfblock,125,0
+oakdwoodhalfblock,125,0
+oakdoublewhalfblock,125,0
+oakdwhalfblock,125,0
+oakdoublehalfblock,125,0
+oakdhalfblock,125,0
+odhalfblock,125,0
+oakwoodendoublestep,125,0
+oakwoodendstep,125,0
+oakwooddoublestep,125,0
+oakwooddstep,125,0
+oakwdoublestep,125,0
+oakwdstep,125,0
+oakdoublewoodenstep,125,0
+oakdwoodenstep,125,0
+oakdoublewoodstep,125,0
+oakdwoodstep,125,0
+oakdoublewstep,125,0
+oakdwstep,125,0
+oakdoublestep,125,0
+oakdstep,125,0
+odstep,125,0
+oakwoodendoubleslab,125,0
+oakwoodendslab,125,0
+oakwooddoubleslab,125,0
+oakwooddslab,125,0
+oakwdoubleslab,125,0
+oakwdslab,125,0
+oakdoublewoodenslab,125,0
+oakdwoodenslab,125,0
+oakdoublewoodslab,125,0
+oakdwoodslab,125,0
+oakdoublewslab,125,0
+oakdwslab,125,0
+oakdoubleslab,125,0
+oakdslab,125,0
+odslab,125,0
+sprucewoodendoublestep,125,1
+sprucewoodendstep,125,1
+sprucewooddoublestep,125,1
+sprucewooddstep,125,1
+sprucewdoublestep,125,1
+sprucewdstep,125,1
+sprucedoublewoodenstep,125,1
+sprucedwoodenstep,125,1
+sprucedoublewoodstep,125,1
+sprucedwoodstep,125,1
+sprucedoublewstep,125,1
+sprucedwstep,125,1
+sprucedoublestep,125,1
+sprucedstep,125,1
+sprucewoodendoubleslab,125,1
+sprucewoodendslab,125,1
+sprucewooddoubleslab,125,1
+sprucewooddslab,125,1
+sprucewdoubleslab,125,1
+sprucewdslab,125,1
+sprucedoublewoodenslab,125,1
+sprucedwoodenslab,125,1
+sprucedoublewoodslab,125,1
+sprucedwoodslab,125,1
+sprucedoublewslab,125,1
+sprucedwslab,125,1
+sprucedoubleslab,125,1
+sprucedslab,125,1
+sprucewoodendoublehalfblock,125,1
+sprucewoodendhalfblock,125,1
+sprucewooddoublehalfblock,125,1
+sprucewooddhalfblock,125,1
+sprucewdoublehalfblock,125,1
+sprucewdhalfblock,125,1
+sprucedoublewoodenhalfblock,125,1
+sprucedwoodenhalfblock,125,1
+sprucedoublewoodhalfblock,125,1
+sprucedwoodhalfblock,125,1
+sprucedoublewhalfblock,125,1
+sprucedwhalfblock,125,1
+sprucedoublehalfblock,125,1
+sprucedhalfblock,125,1
+darkwoodendoublestep,125,1
+darkwoodendstep,125,1
+darkwooddoublestep,125,1
+darkwooddstep,125,1
+darkwdoublestep,125,1
+darkwdstep,125,1
+darkdoublewoodenstep,125,1
+darkdwoodenstep,125,1
+darkdoublewoodstep,125,1
+darkdwoodstep,125,1
+darkdoublewstep,125,1
+darkdwstep,125,1
+darkdoublestep,125,1
+darkdstep,125,1
+ddstep,125,1
+darkwoodendoubleslab,125,1
+darkwoodendslab,125,1
+darkwooddoubleslab,125,1
+darkwooddslab,125,1
+darkwdoubleslab,125,1
+darkwdslab,125,1
+darkdoublewoodenslab,125,1
+darkdwoodenslab,125,1
+darkdoublewoodslab,125,1
+darkdwoodslab,125,1
+darkdoublewslab,125,1
+darkdwslab,125,1
+darkdoubleslab,125,1
+darkdslab,125,1
+ddslab,125,1
+darkwoodendoublehalfblock,125,1
+darkwoodendhalfblock,125,1
+darkwooddoublehalfblock,125,1
+darkwooddhalfblock,125,1
+darkwdoublehalfblock,125,1
+darkwdhalfblock,125,1
+darkdoublewoodenhalfblock,125,1
+darkdwoodenhalfblock,125,1
+darkdoublewoodhalfblock,125,1
+darkdwoodhalfblock,125,1
+darkdoublewhalfblock,125,1
+darkdwhalfblock,125,1
+darkdoublehalfblock,125,1
+darkdhalfblock,125,1
+ddhalfblock,125,1
+birchwoodendoublestep,125,2
+birchwoodendstep,125,2
+birchwooddoublestep,125,2
+birchwooddstep,125,2
+birchwdoublestep,125,2
+birchwdstep,125,2
+birchdoublewoodenstep,125,2
+birchdwoodenstep,125,2
+birchdoublewoodstep,125,2
+birchdwoodstep,125,2
+birchdoublewstep,125,2
+birchdwstep,125,2
+birchdoublestep,125,2
+birchdstep,125,2
+birchwoodendoubleslab,125,2
+birchwoodendslab,125,2
+birchwooddoubleslab,125,2
+birchwooddslab,125,2
+birchwdoubleslab,125,2
+birchwdslab,125,2
+birchdoublewoodenslab,125,2
+birchdwoodenslab,125,2
+birchdoublewoodslab,125,2
+birchdwoodslab,125,2
+birchdoublewslab,125,2
+birchdwslab,125,2
+birchdoubleslab,125,2
+birchdslab,125,2
+birchwoodendoublehalfblock,125,2
+birchwoodendhalfblock,125,2
+birchwooddoublehalfblock,125,2
+birchwooddhalfblock,125,2
+birchwdoublehalfblock,125,2
+birchwdhalfblock,125,2
+birchdoublewoodenhalfblock,125,2
+birchdwoodenhalfblock,125,2
+birchdoublewoodhalfblock,125,2
+birchdwoodhalfblock,125,2
+birchdoublewhalfblock,125,2
+birchdwhalfblock,125,2
+birchdoublehalfblock,125,2
+birchdhalfblock,125,2
+lightwoodendoublehalfblock,125,2
+lightwoodendhalfblock,125,2
+lightwooddoublehalfblock,125,2
+lightwooddhalfblock,125,2
+lightwdoublehalfblock,125,2
+lightwdhalfblock,125,2
+lightdoublewoodenhalfblock,125,2
+lightdwoodenhalfblock,125,2
+lightdoublewoodhalfblock,125,2
+lightdwoodhalfblock,125,2
+lightdoublewhalfblock,125,2
+lightdwhalfblock,125,2
+lightdoublehalfblock,125,2
+lightdhalfblock,125,2
+ldhalfblock,125,2
+lightwoodendoublestep,125,2
+lightwoodendstep,125,2
+lightwooddoublestep,125,2
+lightwooddstep,125,2
+lightwdoublestep,125,2
+lightwdstep,125,2
+lightdoublewoodenstep,125,2
+lightdwoodenstep,125,2
+lightdoublewoodstep,125,2
+lightdwoodstep,125,2
+lightdoublewstep,125,2
+lightdwstep,125,2
+lightdoublestep,125,2
+lightdstep,125,2
+ldstep,125,2
+lightwoodendoubleslab,125,2
+lightwoodendslab,125,2
+lightwooddoubleslab,125,2
+lightwooddslab,125,2
+lightwdoubleslab,125,2
+lightwdslab,125,2
+lightdoublewoodenslab,125,2
+lightdwoodenslab,125,2
+lightdoublewoodslab,125,2
+lightdwoodslab,125,2
+lightdoublewslab,125,2
+lightdwslab,125,2
+lightdoubleslab,125,2
+lightdslab,125,2
+ldslab,125,2
+junglewoodendoublestep,125,3
+junglewoodendstep,125,3
+junglewooddoublestep,125,3
+junglewooddstep,125,3
+junglewdoublestep,125,3
+junglewdstep,125,3
+jungledoublewoodenstep,125,3
+jungledwoodenstep,125,3
+jungledoublewoodstep,125,3
+jungledwoodstep,125,3
+jungledoublewstep,125,3
+jungledwstep,125,3
+jungledoublestep,125,3
+jungledstep,125,3
+jdstep,125,3
+junglewoodendoubleslab,125,3
+junglewoodendslab,125,3
+junglewooddoubleslab,125,3
+junglewooddslab,125,3
+junglewdoubleslab,125,3
+junglewdslab,125,3
+jungledoublewoodenslab,125,3
+jungledwoodenslab,125,3
+jungledoublewoodslab,125,3
+jungledwoodslab,125,3
+jungledoublewslab,125,3
+jungledwslab,125,3
+jungledoubleslab,125,3
+jungledslab,125,3
+jdslab,125,3
+junglewoodendoublehalfblock,125,3
+junglewoodendhalfblock,125,3
+junglewooddoublehalfblock,125,3
+junglewooddhalfblock,125,3
+junglewdoublehalfblock,125,3
+junglewdhalfblock,125,3
+jungledoublewoodenhalfblock,125,3
+jungledwoodenhalfblock,125,3
+jungledoublewoodhalfblock,125,3
+jungledwoodhalfblock,125,3
+jungledoublewhalfblock,125,3
+jungledwhalfblock,125,3
+jungledoublehalfblock,125,3
+jungledhalfblock,125,3
+jdhalfblock,125,3
+forestwoodendoublehalfblock,125,3
+forestwoodendhalfblock,125,3
+forestwooddoublehalfblock,125,3
+forestwooddhalfblock,125,3
+forestwdoublehalfblock,125,3
+forestwdhalfblock,125,3
+forestdoublewoodenhalfblock,125,3
+forestdwoodenhalfblock,125,3
+forestdoublewoodhalfblock,125,3
+forestdwoodhalfblock,125,3
+forestdoublewhalfblock,125,3
+forestdwhalfblock,125,3
+forestdoublehalfblock,125,3
+forestdhalfblock,125,3
+fdhalfblock,125,3
+forestwoodendoublestep,125,3
+forestwoodendstep,125,3
+forestwooddoublestep,125,3
+forestwooddstep,125,3
+forestwdoublestep,125,3
+forestwdstep,125,3
+forestdoublewoodenstep,125,3
+forestdwoodenstep,125,3
+forestdoublewoodstep,125,3
+forestdwoodstep,125,3
+forestdoublewstep,125,3
+forestdwstep,125,3
+forestdoublestep,125,3
+forestdstep,125,3
+fdstep,125,3
+forestwoodendoubleslab,125,3
+forestwoodendslab,125,3
+forestwooddoubleslab,125,3
+forestwooddslab,125,3
+forestwdoubleslab,125,3
+forestwdslab,125,3
+forestdoublewoodenslab,125,3
+forestdwoodenslab,125,3
+forestdoublewoodslab,125,3
+forestdwoodslab,125,3
+forestdoublewslab,125,3
+forestdwslab,125,3
+forestdoubleslab,125,3
+forestdslab,125,3
+fdslab,125,3
+acaciawoodendoublestep,125,4
+acaciawoodendstep,125,4
+acaciawooddoublestep,125,4
+acaciawooddstep,125,4
+acaciawdoublestep,125,4
+acaciawdstep,125,4
+acaciadoublewoodenstep,125,4
+acaciadwoodenstep,125,4
+acaciadoublewoodstep,125,4
+acaciadwoodstep,125,4
+acaciadoublewstep,125,4
+acaciadwstep,125,4
+acaciadoublestep,125,4
+acaciadstep,125,4
+adstep,125,4
+acaciawoodendoubleslab,125,4
+acaciawoodendslab,125,4
+acaciawooddoubleslab,125,4
+acaciawooddslab,125,4
+acaciawdoubleslab,125,4
+acaciawdslab,125,4
+acaciadoublewoodenslab,125,4
+acaciadwoodenslab,125,4
+acaciadoublewoodslab,125,4
+acaciadwoodslab,125,4
+acaciadoublewslab,125,4
+acaciadwslab,125,4
+acaciadoubleslab,125,4
+acaciadslab,125,4
+adslab,125,4
+acaciawoodendoublehalfblock,125,4
+acaciawoodendhalfblock,125,4
+acaciawooddoublehalfblock,125,4
+acaciawooddhalfblock,125,4
+acaciawdoublehalfblock,125,4
+acaciawdhalfblock,125,4
+acaciadoublewoodenhalfblock,125,4
+acaciadwoodenhalfblock,125,4
+acaciadoublewoodhalfblock,125,4
+acaciadwoodhalfblock,125,4
+acaciadoublewhalfblock,125,4
+acaciadwhalfblock,125,4
+acaciadoublehalfblock,125,4
+acaciadhalfblock,125,4
+adhalfblock,125,4
+darkoakwoodendoublehalfblock,125,5
+darkoakwoodendhalfblock,125,5
+darkoakwooddoublehalfblock,125,5
+darkoakwooddhalfblock,125,5
+darkoakwdoublehalfblock,125,5
+darkoakwdhalfblock,125,5
+darkoakdoublewoodenhalfblock,125,5
+darkoakdwoodenhalfblock,125,5
+darkoakdoublewoodhalfblock,125,5
+darkoakdwoodhalfblock,125,5
+darkoakdoublewhalfblock,125,5
+darkoakdwhalfblock,125,5
+darkoakdoublehalfblock,125,5
+darkoakdhalfblock,125,5
+dodhalfblock,125,5
+darkoakwoodendoublestep,125,5
+darkoakwoodendstep,125,5
+darkoakwooddoublestep,125,5
+darkoakwooddstep,125,5
+darkoakwdoublestep,125,5
+darkoakwdstep,125,5
+darkoakdoublewoodenstep,125,5
+darkoakdwoodenstep,125,5
+darkoakdoublewoodstep,125,5
+darkoakdwoodstep,125,5
+darkoakdoublewstep,125,5
+darkoakdwstep,125,5
+darkoakdoublestep,125,5
+darkoakdstep,125,5
+dodstep,125,5
+darkoakwoodendoubleslab,125,5
+darkoakwoodendslab,125,5
+darkoakwooddoubleslab,125,5
+darkoakwooddslab,125,5
+darkoakwdoubleslab,125,5
+darkoakwdslab,125,5
+darkoakdoublewoodenslab,125,5
+darkoakdwoodenslab,125,5
+darkoakdoublewoodslab,125,5
+darkoakdwoodslab,125,5
+darkoakdoublewslab,125,5
+darkoakdwslab,125,5
+darkoakdoubleslab,125,5
+darkoakdslab,125,5
+dodslab,125,5
+woodenstep,126,0
+woodstep,126,0
+wstep,126,0
+woodenslab,126,0
+woodslab,126,0
+wslab,126,0
+woodenhalfblock,126,0
+woodhalfblock,126,0
+whalfblock,126,0
+oakwoodenstep,126,0
+oakwoodstep,126,0
+oakwstep,126,0
+oakstep,126,0
+ostep,126,0
+oakwoodenslab,126,0
+oakwoodslab,126,0
+oakwslab,126,0
+oakslab,126,0
+oslab,126,0
+oakwoodenhalfblock,126,0
+oakwoodhalfblock,126,0
+oakwhalfblock,126,0
+oakhalfblock,126,0
+ohalfblock,126,0
+sprucewoodenstep,126,1
+sprucewoodstep,126,1
+sprucewstep,126,1
+sprucestep,126,1
+sprucewoodenslab,126,1
+sprucewoodslab,126,1
+sprucewslab,126,1
+spruceslab,126,1
+sprucewoodenhalfblock,126,1
+sprucewoodhalfblock,126,1
+sprucewhalfblock,126,1
+sprucehalfblock,126,1
+darkwoodenstep,126,1
+darkwoodstep,126,1
+darkwstep,126,1
+darkstep,126,1
+darkwoodenslab,126,1
+darkwoodslab,126,1
+darkwslab,126,1
+darkslab,126,1
+darkwoodenhalfblock,126,1
+darkwoodhalfblock,126,1
+darkwhalfblock,126,1
+darkhalfblock,126,1
+birchwoodenstep,126,2
+birchwoodstep,126,2
+birchwstep,126,2
+birchstep,126,2
+birchwoodenslab,126,2
+birchwoodslab,126,2
+birchwslab,126,2
+birchslab,126,2
+birchwoodenhalfblock,126,2
+birchwoodhalfblock,126,2
+birchwhalfblock,126,2
+birchhalfblock,126,2
+lightwoodenstep,126,2
+lightwoodstep,126,2
+lightwstep,126,2
+lightstep,126,2
+lstep,126,2
+lightwoodenslab,126,2
+lightwoodslab,126,2
+lightwslab,126,2
+lightslab,126,2
+lslab,126,2
+lightwoodenhalfblock,126,2
+lightwoodhalfblock,126,2
+lightwhalfblock,126,2
+lighthalfblock,126,2
+lhalfblock,126,2
+junglewoodenstep,126,3
+junglewoodstep,126,3
+junglewstep,126,3
+junglestep,126,3
+jstep,126,3
+junglewoodenslab,126,3
+junglewoodslab,126,3
+junglewslab,126,3
+jungleslab,126,3
+jslab,126,3
+junglewoodenhalfblock,126,3
+junglewoodhalfblock,126,3
+junglewhalfblock,126,3
+junglehalfblock,126,3
+jhalfblock,126,3
+forestwoodenstep,126,3
+forestwoodstep,126,3
+forestwstep,126,3
+foreststep,126,3
+fstep,126,3
+forestwoodenslab,126,3
+forestwoodslab,126,3
+forestwslab,126,3
+forestslab,126,3
+fslab,126,3
+forestwoodenhalfblock,126,3
+forestwoodhalfblock,126,3
+forestwhalfblock,126,3
+foresthalfblock,126,3
+fhalfblock,126,3
+acaciawoodenstep,126,4
+acaciawoodstep,126,4
+acaciawstep,126,4
+acaciastep,126,4
+astep,126,4
+acaciawoodenslab,126,4
+acaciawoodslab,126,4
+acaciawslab,126,4
+acaciaslab,126,4
+aslab,126,4
+acaciawoodenhalfblock,126,4
+acaciawoodhalfblock,126,4
+acaciawhalfblock,126,4
+acaciahalfblock,126,4
+ahalfblock,126,4
+darkoakwoodenstep,126,5
+darkoakwoodstep,126,5
+darkoakwstep,126,5
+darkoakstep,126,5
+dostep,126,5
+darkoakwoodenslab,126,5
+darkoakwoodslab,126,5
+darkoakwslab,126,5
+darkoakslab,126,5
+doslab,126,5
+darkoakwoodenhalfblock,126,5
+darkoakwoodhalfblock,126,5
+darkoakwhalfblock,126,5
+darkoakhalfblock,126,5
+dohalfblock,126,5
+cocoaplant,127,0
+cocoplant,127,0
+cplant,127,0
+cocoafruit,127,0
+cocofruit,127,0
+cfruit,127,0
+cocoapod,127,0
+cocopod,127,0
+cpod,127,0
+sandstonestairs,128,0
+sandstairs,128,0
+sandsstairs,128,0
+sstonestairs,128,0
+ssstairs,128,0
+sandstair,128,0
+sandstonestair,128,0
+sandsstair,128,0
+sstonestair,128,0
+ssstair,128,0
+emeraldore,129,0
+eore,129,0
+oreemerald,129,0
+oree,129,0
+enderchest,130,0
+endchest,130,0
+echest,130,0
+chestender,130,0
+chestend,130,0
+cheste,130,0
+endercontainer,130,0
+endcontainer,130,0
+econtainer,130,0
+tripwirehook,131,0
+tripwire,131,0
+trip,131,0
+tripwirelever,131,0
+triphook,131,0
+emeraldblock,133,0
+blockemerald,133,0
+eblock,133,0
+blocke,133,0
+sprucewoodenstairs,134,0
+sprucewoodstairs,134,0
+sprucewstairs,134,0
+sprucestairs,134,0
+darkwoodenstairs,134,0
+darkwoodstairs,134,0
+darkwstairs,134,0
+darkstairs,134,0
+dstairs,134,0
+sprucewoodenstair,134,0
+sprucewoodstair,134,0
+sprucewstair,134,0
+sprucestair,134,0
+darkwoodenstair,134,0
+darkwoodstair,134,0
+darkwstair,134,0
+darkstair,134,0
+dstair,134,0
+birchwoodenstairs,135,0
+birchwoodstairs,135,0
+birchwstairs,135,0
+birchstairs,135,0
+lightwoodenstairs,135,0
+lightwoodstairs,135,0
+lightwstairs,135,0
+lightstairs,135,0
+lstairs,135,0
+birchwoodenstair,135,0
+birchwoodstair,135,0
+birchwstair,135,0
+birchstair,135,0
+lightwoodenstair,135,0
+lightwoodstair,135,0
+lightwstair,135,0
+lightstair,135,0
+lstair,135,0
+junglewoodenstairs,136,0
+junglewoodstairs,136,0
+junglewstairs,136,0
+junglestairs,136,0
+jstairs,136,0
+forestwoodenstairs,136,0
+forestwoodstairs,136,0
+forestwstairs,136,0
+foreststairs,136,0
+fstairs,136,0
+junglewoodenstair,136,0
+junglewoodstair,136,0
+junglewstair,136,0
+junglestair,136,0
+jstair,136,0
+forestwoodenstair,136,0
+forestwoodstair,136,0
+forestwstair,136,0
+foreststair,136,0
+fstair,136,0
+commandblock,137,0
+blockcommand,137,0
+cmdblock,137,0
+blockcmd,137,0
+macroblock,137,0
+blockmacro,137,0
+beacon,138,0
+beaconblock,138,0
+cobblestonewall,139,0
+cstonewall,139,0
+cobblewall,139,0
+cobblestonefence,139,0
+cstonefence,139,0
+cobblefence,139,0
+cswall,139,0
+csfence,139,0
+cwall,139,0
+cfence,139,0
+mosscobblestonewall,139,1
+mosscstonewall,139,1
+mosscobblewall,139,1
+mcobblestonewall,139,1
+mcstonewall,139,1
+mcobblewall,139,1
+mosscobblestonefence,139,1
+mosscstonefence,139,1
+mosscobblefence,139,1
+mcobblestonefence,139,1
+mcstonefence,139,1
+mcobblefence,139,1
+mcswall,139,0
+mcsfence,139,0
+mcwall,139,0
+mcfence,139,0
+plantedcarrot,141,0
+plantcarrot,141,0
+carrots,141,0
+growingcarrot,141,0
+potatoplant,142,0
+potatoes,142,0
+plantedpotato,142,0
+plantpotato,142,0
+growingpotato,142,0
+woodenbutton,143,0
+woodenplankbutton,143,0
+woodplankbutton,143,0
+wplankbutton,143,0
+plankbutton,143,0
+woodbutton,143,0
+wbutton,143,0
+anvil,145,0
+slightlydamagedanvil,145,1
+slightdamageanvil,145,1
+damagedanvil,145,1
+verydamagedanvil,145,2
+trapchest,146,0
+trappedchest,146,0
+chesttrapped,146,0
+chesttrap,146,0
+goldpressureplate,147,0
+weightedgoldpressureplate,147,0
+weightgoldpressureplate,147,0
+wgoldpressureplate,147,0
+weightedgoldpressplate,147,0
+weightgoldpressplate,147,0
+wgoldpressplate,147,0
+goldpressplate,147,0
+weightedgoldpplate,147,0
+weightgoldpplate,147,0
+wgoldpplate,147,0
+goldpplate,147,0
+weightedgoldplate,147,0
+weightgoldplate,147,0
+wgoldplate,147,0
+goldplate,147,0
+weightedgpressureplate,147,0
+weightgpressureplate,147,0
+wgpressureplate,147,0
+gpressureplate,147,0
+weightedgpressplate,147,0
+weightgpressplate,147,0
+wgpressplate,147,0
+gpressplate,147,0
+weightedgpplate,147,0
+weightgpplate,147,0
+wgpplate,147,0
+gpplate,147,0
+weightedgplate,147,0
+weightgplate,147,0
+wgplate,147,0
+gplate,147,0
+ironpressureplate,148,0
+weightedironpressureplate,148,0
+weightironpressureplate,148,0
+wironpressureplate,148,0
+weightedironpressplate,148,0
+weightironpressplate,148,0
+wironpressplate,148,0
+ironpressplate,148,0
+weightedironpplate,148,0
+weightironpplate,148,0
+wironpplate,148,0
+ironpplate,148,0
+weightedironplate,148,0
+weightironplate,148,0
+wironplate,148,0
+ironplate,148,0
+weightedipressureplate,148,0
+weightipressureplate,148,0
+wipressureplate,148,0
+ipressureplate,148,0
+weightedipressplate,148,0
+weightipressplate,148,0
+wipressplate,148,0
+ipressplate,148,0
+weightedipplate,148,0
+weightipplate,148,0
+wipplate,148,0
+ipplate,148,0
+weightediplate,148,0
+weightiplate,148,0
+wiplate,148,0
+iplate,148,0
+daylightsensor,151,0
+daylightsense,151,0
+lightsensor,151,0
+lightsense,151,0
+daysensor,151,0
+daysense,151,0
+timesensor,151,0
+timesense,151,0
+redstoneblock,152,0
+rstoneblock,152,0
+redsblock,152,0
+rsblock,152,0
+blockredstone,152,0
+blockrstone,152,0
+blockreds,152,0
+blockrs,152,0
+netherquartzore,153,0
+hellquartzore,153,0
+deathquartzore,153,0
+nquartzore,153,0
+hquartzore,153,0
+dquartzore,153,0
+quartzore,153,0
+netherqore,153,0
+hellqore,153,0
+deathqore,153,0
+nqore,153,0
+hqore,153,0
+dqore,153,0
+qore,153,0
+hopper,154,0
+chestpuller,154,0
+chestpull,154,0
+cheststorer,154,0
+cheststore,154,0
+itempuller,154,0
+itempull,154,0
+itemstorer,154,0
+itemstore,154,0
+quartzblock,155,0
+netherquartzblock,155,0
+nqblock,155,0
+qblock,155,0
+chiseledquartzblock,155,1
+chiselquartzblock,155,1
+cquartzblock,155,1
+cqblock,155,1
+pillarquartzblock,155,2
+pquartzblock,155,2
+pqblock,155,2
+quartzstairs,156,0
+qstairs,156,0
+quartzstair,156,0
+qstair,156,0
+activatorrails,157,0
+activaterails,157,0
+triggerrails,157,0
+arails,157,0
+trails,157,0
+activatorrail,157,0
+activaterail,157,0
+triggerrail,157,0
+arail,157,0
+trail,157,0
+activatortrack,157,0
+activatetrack,157,0
+triggertrack,157,0
+atrack,157,0
+ttrack,157,0
+dropper,158,0
+drop,158,0
+chestdispenser,158,0
+chestdispense,158,0
+chestdropper,158,0
+chestdrop,158,0
+whiteclay,159,0
+whitesclay,159,0
+whitestainedclay,159,0
+wclay,159,0
+wsclay,159,0
+wstainedclay,159,0
+sclay,159,0
+stainedclay,159,0
+orangeclay,159,1
+orangesclay,159,1
+orangestainedclay,159,1
+oclay,159,1
+osclay,159,1
+ostainedclay,159,1
+magentaclay,159,2
+magentasclay,159,2
+magentastainedclay,159,2
+mclay,159,2
+msclay,159,2
+mstainedclay,159,2
+lightblueclay,159,3
+lightbluesclay,159,3
+lightbluestainedclay,159,3
+lblueclay,159,3
+lbluesclay,159,3
+lbluestainedclay,159,3
+lightbluclay,159,3
+lightblusclay,159,3
+lightblustainedclay,159,3
+lbluclay,159,3
+lblusclay,159,3
+lblustainedclay,159,3
+lbclay,159,3
+lbsclay,159,3
+lbstainedclay,159,3
+yellowclay,159,4
+yellowsclay,159,4
+yellowstainedclay,159,4
+yclay,159,4
+ysclay,159,4
+ystainedclay,159,4
+lightgreenclay,159,5
+lightgreensclay,159,5
+lightgreenstainedclay,159,5
+lgreenclay,159,5
+lgreensclay,159,5
+lgreenstainedclay,159,5
+lightgreclay,159,5
+lightgresclay,159,5
+lightgrestainedclay,159,5
+lgreclay,159,5
+lgresclay,159,5
+lgrestainedclay,159,5
+limeclay,159,5
+limesclay,159,5
+limestainedclay,159,5
+lclay,159,5
+lsclay,159,5
+lstainedclay,159,5
+pinkclay,159,6
+pinksclay,159,6
+pinkstainedclay,159,6
+piclay,159,6
+pisclay,159,6
+pistainedclay,159,6
+darkgrayclay,159,7
+darkgraysclay,159,7
+darkgraystainedclay,159,7
+dgrayclay,159,7
+dgraysclay,159,7
+dgraystainedclay,159,7
+darkgreyclay,159,7
+darkgreeysclay,159,7
+darkgreystainedclay,159,7
+dgreyclay,159,7
+dgreysclay,159,7
+dgreystainedclay,159,7
+darkgraclay,159,7
+darkgrasclay,159,7
+darkgrastainedclay,159,7
+dgraclay,159,7
+dgrasclay,159,7
+dgrastainedclay,159,7
+grayclay,159,7
+graysclay,159,7
+graystainedclay,159,7
+greyclay,159,7
+greysclay,159,7
+greystainedclay,159,7
+graclay,159,7
+grasclay,159,7
+grastainedclay,159,7
+lightgrayclay,159,8
+lightgraysclay,159,8
+lightgraystainedclay,159,8
+lgrayclay,159,8
+lgraysclay,159,8
+lgraystainedclay,159,8
+lightgreyclay,159,8
+lightgreysclay,159,8
+lightgreystainedclay,159,8
+lgreyclay,159,8
+lgreysclay,159,8
+lgreystainedclay,159,8
+lightgraclay,159,8
+lightgrasclay,159,8
+lightgrastainedclay,159,8
+lgraclay,159,8
+lgrasclay,159,8
+lgrastainedclay,159,8
+silverclay,159,8
+silversclay,159,8
+silverstainedclay,159,8
+siclay,159,8
+siasclay,159,8
+siastainedclay,159,8
+cyanclay,159,9
+cyansclay,159,9
+cyanstainedclay,159,9
+cclay,159,9
+csclay,159,9
+cstainedclay,159,9
+purpleclay,159,10
+purplesclay,159,10
+purplestainedclay,159,10
+puclay,159,10
+pusclay,159,10
+pustainedclay,159,10
+blueclay,159,11
+bluesclay,159,11
+bluestainedclay,159,11
+bluclay,159,11
+blusclay,159,11
+blustainedclay,159,11
+brownclay,159,12
+brownsclay,159,12
+brownstainedclay,159,12
+broclay,159,12
+brosclay,159,12
+brostainedclay,159,12
+darkgreenclay,159,13
+darkgreensclay,159,13
+darkgreenstainedclay,159,13
+dgreenclay,159,13
+dgreensclay,159,13
+dgreenstainedclay,159,13
+greenclay,159,13
+greensclay,159,13
+greenstainedclay,159,13
+darkgreclay,159,13
+darkgresclay,159,13
+darkgrestainedclay,159,13
+dgreclay,159,13
+dgresclay,159,13
+dgrestainedclay,159,13
+greclay,159,13
+gresclay,159,13
+grestainedclay,159,13
+redclay,159,14
+redsclay,159,14
+redstainedclay,159,14
+rclay,159,14
+rsclay,159,14
+rstainedclay,159,14
+blackclay,159,15
+blacksclay,159,15
+blackstainedclay,159,15
+blaclay,159,15
+blasclay,159,15
+blastainedclay,159,15
+whiteglasspane,160,0
+whitesglasspane,160,0
+whitestainedglasspane,160,0
+wglasspane,160,0
+wsglasspane,160,0
+wstainedglasspane,160,0
+sglasspane,160,0
+stainedglasspane,160,0
+orangeglasspane,160,1
+orangesglasspane,160,1
+orangestainedglasspane,160,1
+oglasspane,160,1
+osglasspane,160,1
+ostainedglasspane,160,1
+magentaglasspane,160,2
+magentasglasspane,160,2
+magentastainedglasspane,160,2
+mglasspane,160,2
+msglasspane,160,2
+mstainedglasspane,160,2
+lightblueglasspane,160,3
+lightbluesglasspane,160,3
+lightbluestainedglasspane,160,3
+lblueglasspane,160,3
+lbluesglasspane,160,3
+lbluestainedglasspane,160,3
+lightbluglasspane,160,3
+lightblusglasspane,160,3
+lightblustainedglasspane,160,3
+lbluglasspane,160,3
+lblusglasspane,160,3
+lblustainedglasspane,160,3
+lbglasspane,160,3
+lbsglasspane,160,3
+lbstainedglasspane,160,3
+yellowglasspane,160,4
+yellowsglasspane,160,4
+yellowstainedglasspane,160,4
+yglasspane,160,4
+ysglasspane,160,4
+ystainedglasspane,160,4
+lightgreenglasspane,160,5
+lightgreensglasspane,160,5
+lightgreenstainedglasspane,160,5
+lgreenglasspane,160,5
+lgreensglasspane,160,5
+lgreenstainedglasspane,160,5
+lightgreglasspane,160,5
+lightgresglasspane,160,5
+lightgrestainedglasspane,160,5
+lgreglasspane,160,5
+lgresglasspane,160,5
+lgrestainedglasspane,160,5
+limeglasspane,160,5
+limesglasspane,160,5
+limestainedglasspane,160,5
+lglasspane,160,5
+lsglasspane,160,5
+lstainedglasspane,160,5
+pinkglasspane,160,6
+pinksglasspane,160,6
+pinkstainedglasspane,160,6
+piglasspane,160,6
+pisglasspane,160,6
+pistainedglasspane,160,6
+darkgrayglasspane,160,7
+darkgraysglasspane,160,7
+darkgraystainedglasspane,160,7
+dgrayglasspane,160,7
+dgraysglasspane,160,7
+dgraystainedglasspane,160,7
+darkgreyglasspane,160,7
+darkgreysglasspane,160,7
+darkgreystainedglasspane,160,7
+dgreyglasspane,160,7
+dgreysglasspane,160,7
+dgreystainedglasspane,160,7
+darkgraglasspane,160,7
+darkgrasglasspane,160,7
+darkgrastainedglasspane,160,7
+dgraglasspane,160,7
+dgrasglasspane,160,7
+dgrastainedglasspane,160,7
+grayglasspane,160,7
+graysglasspane,160,7
+graystainedglasspane,160,7
+greyglasspane,160,7
+greysglasspane,160,7
+greystainedglasspane,160,7
+graglasspane,160,7
+grasglasspane,160,7
+grastainedglasspane,160,7
+lightgrayglasspane,160,8
+lightgraysglasspane,160,8
+lightgraystainedglasspane,160,8
+lgrayglasspane,160,8
+lgraysglasspane,160,8
+lgraystainedglasspane,160,8
+lightgreyglasspane,160,8
+lightgreysglasspane,160,8
+lightgreystainedglasspane,160,8
+lgreyglasspane,160,8
+lgreysglasspane,160,8
+lgreystainedglasspane,160,8
+lightgraglasspane,160,8
+lightgrasglasspane,160,8
+lightgrastainedglasspane,160,8
+lgraglasspane,160,8
+lgrasglasspane,160,8
+lgrastainedglasspane,160,8
+silverglasspane,160,8
+silversglasspane,160,8
+silverstainedglasspane,160,8
+siglasspane,160,8
+siasglasspane,160,8
+siastainedglasspane,160,8
+cyanglasspane,160,9
+cyansglasspane,160,9
+cyanstainedglasspane,160,9
+cglasspane,160,9
+csglasspane,160,9
+cstainedglasspane,160,9
+purpleglasspane,160,10
+purplesglasspane,160,10
+purplestainedglasspane,160,10
+puglasspane,160,10
+pusglasspane,160,10
+pustainedglasspane,160,10
+blueglasspane,160,11
+bluesglasspane,160,11
+bluestainedglasspane,160,11
+bluglasspane,160,11
+blusglasspane,160,11
+blustainedglasspane,160,11
+brownglasspane,160,12
+brownsglasspane,160,12
+brownstainedglasspane,160,12
+broglasspane,160,12
+brosglasspane,160,12
+brostainedglasspane,160,12
+darkgreenglasspane,160,13
+darkgreensglasspane,160,13
+darkgreenstainedglasspane,160,13
+dgreenglasspane,160,13
+dgreensglasspane,160,13
+dgreenstainedglasspane,160,13
+greenglasspane,160,13
+greensglasspane,160,13
+greenstainedglasspane,160,13
+darkgreglasspane,160,13
+darkgresglasspane,160,13
+darkgrestainedglasspane,160,13
+dgreglasspane,160,13
+dgresglasspane,160,13
+dgrestainedglasspane,160,13
+greglasspane,160,13
+gresglasspane,160,13
+grestainedglasspane,160,13
+redglasspane,160,14
+redsglasspane,160,14
+redstainedglasspane,160,14
+rglasspane,160,14
+rsglasspane,160,14
+rstainedglasspane,160,14
+blackglasspane,160,15
+blacksglasspane,160,15
+blackstainedglasspane,160,15
+blaglasspane,160,15
+blasglasspane,160,15
+blastainedglasspane,160,15
+acacialeaves,161,0
+acaciatreeleaves,161,0
+acacialogleaves,161,0
+acaciatrunkleaves,161,0
+acaciawoodleaves,161,0
+aleaves,161,0
+atreeleaves,161,0
+alogleaves,161,0
+atrunkleaves,161,0
+awoodleaves,161,0
+acacialeave,161,0
+acaciatreeleave,161,0
+acacialogleave,161,0
+acaciatrunkleave,161,0
+acaciawoodleave,161,0
+aleave,161,0
+atreeleave,161,0
+alogleave,161,0
+atrunkleave,161,0
+awoodleave,161,0
+acaciatreeleaf,161,0
+acacialogleaf,161,0
+acaciatrunkleaf,161,0
+acaciawoodleaf,161,0
+aleaf,161,0
+atreeleaf,161,0
+alogleaf,161,0
+atrunkleaf,161,0
+awoodleaf,161,0
+darkoakleaves,161,1
+darkoaktreeleaves,161,1
+darkoaklogleaves,161,1
+darkoaktrunkleaves,161,1
+darkoakwoodleaves,161,1
+doakleaves,161,1
+doaktreeleaves,161,1
+doaklogleaves,161,1
+doaktrunkleaves,161,1
+doakwoodleaves,161,1
+doleaves,161,1
+dotreeleaves,161,1
+dologleaves,161,1
+dotrunkleaves,161,1
+dowoodleaves,161,1
+darkoakleave,161,1
+darkoaktreeleave,161,1
+darkoaklogleave,161,1
+darkoaktrunkleave,161,1
+darkoakwoodleave,161,1
+doakleave,161,1
+doaktreeleave,161,1
+doaklogleave,161,1
+doaktrunkleave,161,1
+doakwoodleave,161,1
+doleave,161,1
+dotreeleave,161,1
+dologleave,161,1
+dotrunkleave,161,1
+dowoodleave,161,1
+darkoaktreeleaf,161,1
+darkoaklogleaf,161,1
+darkoaktrunkleaf,161,1
+darkoakwoodleaf,161,1
+doakleaf,161,1
+doaktreeleaf,161,1
+doaklogleaf,161,1
+doaktrunkleaf,161,1
+doakwoodleaf,161,1
+doleaf,161,1
+dotreeleaf,161,1
+dologleaf,161,1
+dotrunkleaf,161,1
+dowoodleaf,161,1
+acacia,162,0
+acaciatree,162,0
+acacialog,162,0
+acaciatrunk,162,0
+acaciawood,162,0
+atree,162,0
+alog,162,0
+atrunk,162,0
+awood,162,0
+darkoak,162,1
+darkoaktree,162,1
+darkoaklog,162,1
+darkoaktrunk,162,1
+darkoakwood,162,1
+doak,162,1
+doaktree,162,1
+doaklog,162,1
+doaktrunk,162,1
+doakwood,162,1
+dotree,162,1
+dolog,162,1
+dotrunk,162,1
+dowood,162,1
+acaciawoodenstairs,163,0
+acaciawoodstairs,163,0
+acaciawstairs,163,0
+acaciastairs,163,0
+awoodenstairs,163,0
+awoodstairs,163,0
+awstairs,163,0
+astairs,163,0
+acaciawoodenstair,163,0
+acaciawoodstair,163,0
+acaciawstair,163,0
+acaciastair,163,0
+awoodenstair,163,0
+awoodstair,163,0
+awstair,163,0
+astair,163,0
+darkoakwoodenstairs,164,0
+darkoakwoodstairs,164,0
+darkoakwstairs,164,0
+darkoakstairs,164,0
+doakwoodenstairs,164,0
+doakwoodstairs,164,0
+doakwstairs,164,0
+doakstairs,164,0
+dowoodenstairs,164,0
+dowoodstairs,164,0
+dowstairs,164,0
+dostairs,164,0
+darkoakwoodenstair,164,0
+darkoakwoodstair,164,0
+darkoakwstair,164,0
+darkoakstair,164,0
+doakwoodenstair,164,0
+doakwoodstair,164,0
+doakwstair,164,0
+doakstair,164,0
+dowoodenstair,164,0
+dowoodstair,164,0
+dowstair,164,0
+dostair,164,0
+hay,170,0
+hayblock,170,0
+haybale,170,0
+baleofhay,170,0
+hayofbale,170,0
+whitecarpet,171,0
+whitefloor,171,0
+wcarpet,171,0
+wfloor,171,0
+carpet,171,0
+floor,171,0
+orangecarpet,171,1
+orangefloor,171,1
+ocarpet,171,1
+ofloor,171,1
+magentacarpet,171,2
+magentafloor,171,2
+mcarpet,171,2
+mfloor,171,2
+lightbluecarpet,171,3
+lightbluefloor,171,3
+lbluecarpet,171,3
+lbluefloor,171,3
+lbcarpet,171,3
+lbfloor,171,3
+lightblucarpet,171,3
+lightblufloor,171,3
+lblucarpet,171,3
+lblufloor,171,3
+yellowcarpet,171,4
+yellowfloor,171,4
+ycarpet,171,4
+yfloor,171,4
+lightgreencarpet,171,5
+lightgreenfloor,171,5
+lgreencarpet,171,5
+lgreenfloor,171,5
+lightgrecarpet,171,5
+lightgrefloor,171,5
+lgrecarpet,171,5
+lgrefloor,171,5
+limecarpet,171,5
+limefloor,171,5
+lcarpet,171,5
+lfloor,171,5
+pinkcarpet,171,6
+pinkfloor,171,6
+picarpet,171,6
+pifloor,171,6
+darkgraycarpet,171,7
+darkgrayfloor,171,7
+dgraycarpet,171,7
+dgrayfloor,171,7
+darkgreycarpet,171,7
+darkgreyfloor,171,7
+dgreycarpet,171,7
+dgreyfloor,171,7
+darkgracarpet,171,7
+darkgrafloor,171,7
+dgracarpet,171,7
+dgrafloor,171,7
+graycarpet,171,7
+grayfloor,171,7
+greycarpet,171,7
+greyfloor,171,7
+gracarpet,171,7
+grafloor,171,7
+lightgraycarpet,171,8
+lightgrayfloor,171,8
+lgraycarpet,171,8
+lgrayfloor,171,8
+lightgreycarpet,171,8
+lightgreyfloor,171,8
+lgreycarpet,171,8
+lgreyfloor,171,8
+lightgracarpet,171,8
+lightgrafloor,171,8
+lgracarpet,171,8
+lgrafloor,171,8
+silvercarpet,171,8
+silverfloor,171,8
+sicarpet,171,8
+siafloor,171,8
+cyancarpet,171,9
+cyanfloor,171,9
+ccarpet,171,9
+cfloor,171,9
+purplecarpet,171,10
+purplefloor,171,10
+pucarpet,171,10
+pufloor,171,10
+bluecarpet,171,11
+bluefloor,171,11
+blucarpet,171,11
+blufloor,171,11
+browncarpet,171,12
+brownfloor,171,12
+brocarpet,171,12
+brofloor,171,12
+darkgreencarpet,171,13
+darkgreenfloor,171,13
+dgreencarpet,171,13
+dgreenfloor,171,13
+greencarpet,171,13
+greenfloor,171,13
+darkgrecarpet,171,13
+darkgrefloor,171,13
+dgrecarpet,171,13
+dgrefloor,171,13
+grecarpet,171,13
+grefloor,171,13
+redcarpet,171,14
+redfloor,171,14
+rcarpet,171,14
+rfloor,171,14
+blackcarpet,171,15
+blackfloor,171,15
+blacarpet,171,15
+blafloor,171,15
+hardenedclay,172,0
+hardclay,172,0
+hclay,172,0
+coalblock,173,0
+blockcoal,173,0
+coblock,173,0
+blockco,173,0
+coalb,173,0
+bcoal,173,0
+packedice,174,0
+packice,174,0
+solidice,174,0
+sunflower,175,0
+yellowsunflower,175,0
+lilac,175,1
+magentalilac,175,1
+syringa,175,1
+longtallgrass,175,2
+extratallgrass,175,2
+doubletallgrass,175,2
+largetallgrass,175,2
+longtgrass,175,2
+extratgrass,175,2
+doubletgrass,175,2
+largetgrass,175,2
+ltgrass,175,2
+etgrass,175,2
+dtgrass,175,2
+bigfern,175,3
+largefern,175,3
+doublefern,175,3
+bfern,175,3
+lfern,175,3
+dfern,175,3
+rosebush,175,4
+redrosebush,175,4
+peony,175,5
+pinkpeony,175,5
+paeonia,175,5
+ironshovel,256,0
+ironspade,256,0
+ishovel,256,0
+ispade,256,0
+steelshovel,256,0
+steelspade,256,0
+ironpickaxe,257,0
+ironpick,257,0
+steelpickaxe,257,0
+steelpick,257,0
+ipickaxe,257,0
+ipick,257,0
+ironaxe,258,0
+iaxe,258,0
+steelaxe,258,0
+flintandsteel,259,0
+flintandiron,259,0
+flintandtinder,259,0
+flintnsteel,259,0
+flintniron,259,0
+flintntinder,259,0
+flintsteel,259,0
+flintiron,259,0
+flinttinder,259,0
+lighter,259,0
+apple,260,0
+normalapple,260,0
+redapple,260,0
+bow,261,0
+arrow,262,0
+coal,263,0
+charcoal,263,1
+ccoal,263,1
+diamond,264,0
+crystal,264,0
+ironingot,265,0
+ironbar,265,0
+ironi,265,0
+steelingot,265,0
+steelbar,265,0
+steeli,265,0
+iingot,265,0
+ibar,265,0
+ingotiron,265,0
+bariron,265,0
+iiron,265,0
+ingotsteel,265,0
+barsteel,265,0
+isteel,265,0
+ingoti,265,0
+bari,265,0
+goldingot,266,0
+goldbar,266,0
+goldi,266,0
+gingot,266,0
+gbar,266,0
+ingotgold,266,0
+bargold,266,0
+igold,266,0
+ingotg,266,0
+barg,266,0
+ironsword,267,0
+steelsword,267,0
+isword,267,0
+woodensword,268,0
+woodsword,268,0
+wsword,268,0
+woodenshovel,269,0
+woodenspade,269,0
+woodshovel,269,0
+woodspade,269,0
+wshovel,269,0
+wspade,269,0
+woodenpickaxe,270,0
+woodenpick,270,0
+woodpickaxe,270,0
+woodpick,270,0
+wpickaxe,270,0
+wpick,270,0
+woodenaxe,271,0
+woodaxe,271,0
+waxe,271,0
+stonesword,272,0
+cobblestonesword,272,0
+cstonesword,272,0
+cssword,272,0
+ssword,272,0
+stoneshovel,273,0
+cobblestoneshovel,273,0
+cobblestonespade,273,0
+cstoneshovel,273,0
+cstonespade,273,0
+stonespade,273,0
+csshovel,273,0
+csspade,273,0
+sshovel,273,0
+sspade,273,0
+stonepickaxe,274,0
+cobblestonepickaxe,274,0
+cobblestonepick,274,0
+cstonepickaxe,274,0
+cstonepick,274,0
+stonepick,274,0
+cspickaxe,274,0
+cspick,274,0
+spickaxe,274,0
+spick,274,0
+stoneaxe,275,0
+cobblestoneaxe,275,0
+cstoneaxe,275,0
+csaxe,275,0
+saxe,275,0
+diamondsword,276,0
+crystalsword,276,0
+dsword,276,0
+diamondshovel,277,0
+diamondspade,277,0
+crystalshovel,277,0
+crystalspade,277,0
+dshovel,277,0
+dspade,277,0
+diamondpickaxe,278,0
+diamondpick,278,0
+crystalpickaxe,278,0
+crystalpick,278,0
+dpickaxe,278,0
+dpick,278,0
+diamondaxe,279,0
+crystalaxe,279,0
+daxe,279,0
+stick,280,0
+twig,280,0
+branch,280,0
+bowl,281,0
+woodenbowl,281,0
+woodbowl,281,0
+mushroomsoup,282,0
+mrsoup,282,0
+soup,282,0
+goldsword,283,0
+gsword,283,0
+goldshovel,284,0
+goldspade,284,0
+gshovel,284,0
+gspade,284,0
+goldpickaxe,285,0
+goldpick,285,0
+gpickaxe,285,0
+gpick,285,0
+goldaxe,286,0
+gaxe,286,0
+string,287,0
+thread,287,0
+feather,288,0
+gunpowder,289,0
+sulfur,289,0
+woodenhoe,290,0
+woodhoe,290,0
+whoe,290,0
+stonehoe,291,0
+cobblestonehoe,291,0
+cstonehoe,291,0
+cshoe,291,0
+shoe,291,0
+ironhoe,292,0
+steelhoe,292,0
+ihoe,292,0
+diamondhoe,293,0
+crystalhoe,293,0
+dhoe,293,0
+goldhoe,294,0
+ghoe,294,0
+seeds,295,0
+seed,295,0
+wheat,296,0
+crops,296,0
+crop,296,0
+bread,297,0
+leatherhelmet,298,0
+leatherhelm,298,0
+leatherhat,298,0
+leathercoif,298,0
+lhelmet,298,0
+lhelm,298,0
+lhat,298,0
+lcoif,298,0
+leatherchestplate,299,0
+leatherplatebody,299,0
+leatherplate,299,0
+leathershirt,299,0
+leathertunic,299,0
+lchestplate,299,0
+lplatebody,299,0
+lplate,299,0
+lshirt,299,0
+ltunic,299,0
+leatherleggings,300,0
+leatherlegs,300,0
+leatherpants,300,0
+lleggings,300,0
+llegs,300,0
+lpants,300,0
+leatherboots,301,0
+leathershoes,301,0
+lboots,301,0
+lshoes,301,0
+chainmailhelmet,302,0
+chainmailhelm,302,0
+chainmailhat,302,0
+chainmailcoif,302,0
+chainmhelmet,302,0
+chainmhelm,302,0
+chainmhat,302,0
+chainmcoif,302,0
+cmailhelmet,302,0
+cmailhelm,302,0
+cmailhat,302,0
+cmailcoif,302,0
+chainhelmet,302,0
+chainhelm,302,0
+chainhat,302,0
+chaincoif,302,0
+cmhelmet,302,0
+cmhelm,302,0
+cmhat,302,0
+cmcoif,302,0
+chainmailchestplate,303,0
+chainmailplatebody,303,0
+chainmailplate,303,0
+chainmailshirt,303,0
+chainmailtunic,303,0
+chainmchestplate,303,0
+chainmplatebody,303,0
+chainmplate,303,0
+chainmshirt,303,0
+chainmtunic,303,0
+cmailchestplate,303,0
+cmailplatebody,303,0
+cmailplate,303,0
+cmailshirt,303,0
+cmailtunic,303,0
+chainchestplate,303,0
+chainplatebody,303,0
+chainplate,303,0
+chainshirt,303,0
+chaintunic,303,0
+cmchestplate,303,0
+cmplatebody,303,0
+cmplate,303,0
+cmshirt,303,0
+cmtunic,303,0
+chainmailleggings,304,0
+chainmaillegs,304,0
+chainmailpants,304,0
+chainmleggings,304,0
+chainmlegs,304,0
+chainmpants,304,0
+cmailleggings,304,0
+cmaillegs,304,0
+cmailpants,304,0
+chainleggings,304,0
+chainlegs,304,0
+chainpants,304,0
+cmleggings,304,0
+cmlegs,304,0
+cmpants,304,0
+chainmailboots,305,0
+chainmailshoes,305,0
+chainmboots,305,0
+chainmshoes,305,0
+cmailboots,305,0
+cmailshoes,305,0
+chainboots,305,0
+chainshoes,305,0
+cmboots,305,0
+cmshoes,305,0
+ironhelmet,306,0
+ironhelm,306,0
+ironhat,306,0
+ironcoif,306,0
+ihelmet,306,0
+ihelm,306,0
+ihat,306,0
+icoif,306,0
+steelhelmet,306,0
+steelhelm,306,0
+steelhat,306,0
+steelcoif,306,0
+shelmet,306,0
+shelm,306,0
+shat,306,0
+scoif,306,0
+ironchestplate,307,0
+ironplatebody,307,0
+ironshirt,307,0
+irontunic,307,0
+ichestplate,307,0
+iplatebody,307,0
+ishirt,307,0
+itunic,307,0
+steelchestplate,307,0
+steelplatebody,307,0
+steelplate,307,0
+steelshirt,307,0
+steeltunic,307,0
+schestplate,307,0
+splatebody,307,0
+sshirt,307,0
+stunic,307,0
+ironleggings,308,0
+ironlegs,308,0
+ironpants,308,0
+ileggings,308,0
+ilegs,308,0
+ipants,308,0
+steelleggings,308,0
+steellegs,308,0
+steelpants,308,0
+sleggings,308,0
+slegs,308,0
+spants,308,0
+ironboots,309,0
+ironshoes,309,0
+iboots,309,0
+ishoes,309,0
+steelboots,309,0
+steelshoes,309,0
+sboots,309,0
+sshoes,309,0
+diamondhelmet,310,0
+diamondhelm,310,0
+diamondhat,310,0
+diamondcoif,310,0
+dhelmet,310,0
+dhelm,310,0
+dhat,310,0
+dcoif,310,0
+crystalhelmet,310,0
+crystalhelm,310,0
+crystalhat,310,0
+crystalcoif,310,0
+chelmet,310,0
+chelm,310,0
+chat,310,0
+ccoif,310,0
+diamondchestplate,311,0
+diamondplatebody,311,0
+diamondplate,311,0
+diamondshirt,311,0
+diamondtunic,311,0
+dchestplate,311,0
+dplatebody,311,0
+dplate,311,0
+dshirt,311,0
+dtunic,311,0
+crystalchestplate,311,0
+crystalplatebody,311,0
+crystalplate,311,0
+crystalshirt,311,0
+crystaltunic,311,0
+cchestplate,311,0
+cplatebody,311,0
+cplate,311,0
+cshirt,311,0
+ctunic,311,0
+diamondleggings,312,0
+diamondlegs,312,0
+diamondpants,312,0
+dleggings,312,0
+dlegs,312,0
+dpants,312,0
+crystalleggings,312,0
+crystallegs,312,0
+crystalpants,312,0
+cleggings,312,0
+clegs,312,0
+cpants,312,0
+diamondboots,313,0
+diamondshoes,313,0
+dboots,313,0
+dshoes,313,0
+crystalboots,313,0
+crystalshoes,313,0
+cboots,313,0
+cshoes,313,0
+goldhelmet,314,0
+goldhelm,314,0
+goldhat,314,0
+goldcoif,314,0
+ghelmet,314,0
+ghelm,314,0
+ghat,314,0
+gcoif,314,0
+goldchestplate,315,0
+goldplatebody,315,0
+goldshirt,315,0
+goldtunic,315,0
+gchestplate,315,0
+gplatebody,315,0
+gplateplate,315,0
+gshirt,315,0
+gtunic,315,0
+goldleggings,316,0
+goldlegs,316,0
+goldpants,316,0
+gleggings,316,0
+glegs,316,0
+gpants,316,0
+goldboots,317,0
+goldshoes,317,0
+gboots,317,0
+gshoes,317,0
+flint,318,0
+pork,319,0
+porkchop,319,0
+rawpork,319,0
+rpork,319,0
+rawporkchop,319,0
+rporkchop,319,0
+cookedpork,320,0
+grilledpork,320,0
+grillpork,320,0
+gpork,320,0
+cookpork,320,0
+cpork,320,0
+grilledporkchop,320,0
+grillporkchop,320,0
+gporkchop,320,0
+cookedporkchop,320,0
+cookporkchop,320,0
+cporkchop,320,0
+bacon,320,0
+painting,321,0
+picture,321,0
+goldenapple,322,0
+goldapple,322,0
+gapple,322,0
+enchantedgoldenapple,322,1
+enchantedgoldapple,322,1
+enchantedgapple,322,1
+supergoldenapple,322,1
+supergoldapple,322,1
+supergapple,322,1
+magicalgoldenapple,322,1
+magicalgoldapple,322,1
+magicalgapple,322,1
+magicgoldenapple,322,1
+magicgoldapple,322,1
+magicgapple,322,1
+egoldenapple,322,1
+egoldapple,322,1
+egapple,322,1
+sgoldenapple,322,1
+sgoldapple,322,1
+sgapple,322,1
+mgoldenapple,322,1
+mgoldapple,322,1
+mgapple,322,1
+sign,323,0
+woodendoor,324,0
+wooddoor,324,0
+wdoor,324,0
+door,324,0
+bucket,325,0
+bukkit,325,0
+waterbucket,326,0
+waterbukkit,326,0
+wbucket,326,0
+wbukkit,326,0
+magmabucket,327,0
+magmabukkit,327,0
+lavabucket,327,0
+lavabukkit,327,0
+lbucket,327,0
+lbukkit,327,0
+minecart,328,0
+mcart,328,0
+cart,328,0
+saddle,329,0
+irondoor,330,0
+idoor,330,0
+steeldoor,330,0
+sdoor,330,0
+dooriron,330,0
+doori,330,0
+doorsteel,330,0
+doors,330,0
+redstonedust,331,0
+redstone,331,0
+rstonedust,331,0
+rstone,331,0
+redsdust,331,0
+reddust,331,0
+rsdust,331,0
+rdust,331,0
+snow,332,0
+snowball,332,0
+snball,332,0
+sball,332,0
+boat,333,0
+leather,334,0
+cowhide,334,0
+hide,334,0
+milkbucket,335,0
+milkbukkit,335,0
+mbucket,335,0
+mbukkit,335,0
+claybrick,336,0
+brick,336,0
+redbrick,336,0
+rbrick,336,0
+clayball,337,0
+cball,337,0
+clay,337,0
+reeds,338,0
+reed,338,0
+sugarcane,338,0
+scane,338,0
+bamboo,338,0
+paper,339,0
+papyrus,339,0
+book,340,0
+slimeball,341,0
+slball,341,0
+chestminecart,342,0
+storageminecart,342,0
+storagemcart,342,0
+chestmcart,342,0
+storagecart,342,0
+chestcart,342,0
+sminecart,342,0
+cminecart,342,0
+smcart,342,0
+cmcart,342,0
+scart,342,0
+ccart,342,0
+furnaceminecart,343,0
+engineminecart,343,0
+poweredminecart,343,0
+powerminecart,343,0
+enginemcart,343,0
+poweredmcart,343,0
+powermcart,343,0
+furnacemcart,343,0
+enginecart,343,0
+poweredcart,343,0
+powercart,343,0
+furnacecart,343,0
+eminecart,343,0
+pminecart,343,0
+fminecart,343,0
+emcart,343,0
+pmcart,343,0
+fmcart,343,0
+ecart,343,0
+pcart,343,0
+fcart,343,0
+egg,344,0
+compass,345,0
+fishingrod,346,0
+fishrod,346,0
+frod,346,0
+rod,346,0
+watch,347,0
+goldwatch,347,0
+goldclock,347,0
+gwatch,347,0
+gclock,347,0
+clock,347,0
+glowstonedust,348,0
+glowingstonedust,348,0
+lightstonedust,348,0
+lbdust,348,0
+gbdust,348,0
+lsdust,348,0
+gsdust,348,0
+rawfish,349,0
+rafish,349,0
+fish,349,0
+rawsalmonfish,349,1
+rasalmonfish,349,1
+salmonfish,349,1
+rawsalmon,349,1
+rasalmon,349,1
+salmon,349,1
+sfish,349,1
+fishs,349,1
+rawclownfish,349,2
+raclownfish,349,2
+clownfish,349,2
+rawnemo,349,2
+ranemo,349,2
+nemo,349,2
+nemofish,349,2
+fishnemo,349,2
+clfish,349,2
+fishcl,349,2
+nfish,349,2
+fishn,349,2
+rawpufferfish,349,3
+rapufferfish,349,3
+pufferfish,349,3
+pufffish,349,3
+fishpuff,349,3
+pfish,349,3
+fishp,349,3
+cookedfish,350,0
+cookfish,350,0
+cfish,350,0
+grilledfish,350,0
+grillfish,350,0
+gfish,350,0
+roastedfish,350,0
+roastfish,350,0
+rofish,350,0
+cookedsalmonfish,350,1
+cooksalmonfish,350,1
+csalmonfish,350,1
+grilledsalmonfish,350,1
+grillsalmonfish,350,1
+gsalmonfish,350,1
+roastedsalmonfish,350,1
+roastsalmonfish,350,1
+rosalmonfish,350,1
+cookedsalmon,350,1
+cooksalmon,350,1
+csalmon,350,1
+grilledsalmon,350,1
+grillsalmon,350,1
+gsalmon,350,1
+roastedsalmon,350,1
+roastsalmon,350,1
+rosalmon,350,1
+dye,351,0
+inksack,351,0
+inksac,351,0
+isack,351,0
+isac,351,0
+sack,351,0
+sac,351,0
+blackinksack,351,0
+blackinksac,351,0
+blackisack,351,0
+blackisac,351,0
+blacksack,351,0
+blacksac,351,0
+inksackblack,351,0
+inksacblack,351,0
+isackblack,351,0
+isacblack,351,0
+sackblack,351,0
+sacblack,351,0
+blackinksackcolour,351,0
+blackinksaccolour,351,0
+blackisackcolour,351,0
+blackisaccolour,351,0
+blacksackcolour,351,0
+blacksaccolour,351,0
+inksackblackcolour,351,0
+inksacblackcolour,351,0
+isackblackcolour,351,0
+isacclackcolour,351,0
+sackblackcolour,351,0
+sacblackcolour,351,0
+blackinksackcolor,351,0
+blackinksaccolor,351,0
+blackisackcolor,351,0
+blackisaccolor,351,0
+blacksackcolor,351,0
+blacksaccolor,351,0
+inksackblackcolor,351,0
+inksacblackcolor,351,0
+isackblackcolor,351,0
+isacblackcolor,351,0
+sackblackcolor,351,0
+sacblackcolor,351,0
+blackinksackdye,351,0
+blackinksacdye,351,0
+blackisackdye,351,0
+blackisacdye,351,0
+blacksackdye,351,0
+blacksacdye,351,0
+inksackblackdye,351,0
+inksacblackdye,351,0
+isackblackdye,351,0
+isacclackdye,351,0
+sackblackdye,351,0
+sacblackdye,351,0
+blackcolor,351,0
+blackdye,351,0
+rosered,351,1
+roseredcolor,351,1
+roseredcolour,351,1
+rosereddye,351,1
+redrosecolor,351,1
+redrosecolour,351,1
+redrosedye,351,1
+redr,351,1
+redrcolor,351,1
+redrcolour,351,1
+redrdye,351,1
+redcolor,351,1
+redcolour,351,1
+reddye,351,1
+cactusgreen,351,2
+greencactus,351,2
+cactusgreencolour,351,2
+greencactuscolour,351,2
+cactusgreencolor,351,2
+greencactuscolor,351,2
+cactusgreendye,351,2
+greencactusdye,351,2
+greencolour,351,2
+greencolor,351,2
+greendye,351,2
+cocoabeans,351,3
+cocoabean,351,3
+cocobeans,351,3
+cocobean,351,3
+cbeans,351,3
+cbean,351,3
+beans,351,3
+bean,351,3
+browncocoabeans,351,3
+browncocoabean,351,3
+browncocobeans,351,3
+browncocobean,351,3
+browncbeans,351,3
+browncbean,351,3
+brownbeans,351,3
+brownbean,351,3
+brownb,351,3
+cocoabeanscolour,351,3
+cocoabeancolour,351,3
+cocobeanscolour,351,3
+cocobeancolour,351,3
+cbeanscolour,351,3
+cbeancolour,351,3
+beanscolour,351,3
+beancolour,351,3
+browncocoabeanscolour,351,3
+browncocoabeancolour,351,3
+browncocobeanscolour,351,3
+browncocobeancolour,351,3
+browncbeanscolour,351,3
+browncbeancolour,351,3
+brownbeanscolour,351,3
+brownbeancolour,351,3
+brownbcolour,351,3
+cocoabeanscolor,351,3
+cocoabeancolor,351,3
+cocobeanscolor,351,3
+cocobeancolor,351,3
+cbeanscolor,351,3
+cbeancolor,351,3
+beanscolor,351,3
+beancolor,351,3
+browncocoabeanscolor,351,3
+browncocoabeancolor,351,3
+browncocobeanscolor,351,3
+browncocobeancolor,351,3
+browncbeanscolor,351,3
+browncbeancolor,351,3
+brownbeanscolor,351,3
+brownbeancolor,351,3
+brownbcolor,351,3
+cocoabeansdye,351,3
+cocoabeandye,351,3
+cocobeansdye,351,3
+cocobeandye,351,3
+cbeansdye,351,3
+cbeandye,351,3
+beansdye,351,3
+beandye,351,3
+browncocoabeansdye,351,3
+browncocoabeandye,351,3
+browncocobeansdye,351,3
+browncocobeandye,351,3
+browncbeansdye,351,3
+browncbeandye,351,3
+brownbeansdye,351,3
+brownbeandye,351,3
+brownbdye,351,3
+browncolour,351,3
+browncolor,351,3
+browndye,351,3
+lapislazuli,351,4
+bluelapislazuli,351,4
+bluelapisl,351,4
+bluelapis,351,4
+bluel,351,4
+lapislazuliblue,351,4
+lapislblue,351,4
+lapisblue,351,4
+lapisl,351,4
+lapis,351,4
+bluelapislazulicolour,351,4
+bluelapislcolour,351,4
+bluelapiscolour,351,4
+lapislazulibluecolour,351,4
+lapislbluecolour,351,4
+lapisbluecolour,351,4
+lapislazulicolour,351,4
+lapislcolour,351,4
+lapiscolour,351,4
+bluelapislazulicolor,351,4
+bluelapislcolor,351,4
+bluelapiscolor,351,4
+lapislazulibluecolor,351,4
+lapislbluecolor,351,4
+lapisbluecolor,351,4
+lapislazulicolor,351,4
+lapislcolor,351,4
+lapiscolor,351,4
+bluelapislazulidye,351,4
+bluelapisldye,351,4
+bluelapisdye,351,4
+lapislazulibluedye,351,4
+lapislbluedye,351,4
+lapisbluedye,351,4
+lapislazulidye,351,4
+lapisldye,351,4
+lapisdye,351,4
+bluecolour,351,4
+bluecolor,351,4
+bluedye,351,4
+purpledye,351,5
+purplecolour,351,5
+purplecolor,351,5
+cyandye,351,6
+cyancolour,351,6
+cyancolor,351,6
+lightgraydye,351,7
+lightgraycolour,351,7
+lightgraycolor,351,7
+lgraycolour,351,7
+lgraycolor,351,7
+lgraydye,351,7
+lightgreydye,351,7
+lightgreycolour,351,7
+lightgreycolor,351,7
+lgreycolour,351,7
+lgreycolor,351,7
+lgreydye,351,7
+silvercolour,351,7
+silvercolor,351,7
+silverdye,351,7
+darkgraydye,351,8
+darkgraycolour,351,8
+darkgraycolor,351,8
+dgraycolour,351,8
+dgraycolor,351,8
+dgraydye,351,8
+graycolour,351,8
+graycolor,351,8
+graydye,351,8
+darkgreydye,351,8
+darkgreycolour,351,8
+darkgreycolor,351,8
+dgreycolour,351,8
+dgreycolor,351,8
+dgreydye,351,8
+greycolour,351,8
+greycolor,351,8
+greydye,351,8
+pinkdye,351,9
+pinkcolour,351,9
+pinkcolor,351,9
+limedye,351,10
+limecolour,351,10
+limecolor,351,10
+dandelionyellow,351,11
+dandelionyellowcolour,351,11
+dandelionyellowcolor,351,11
+dandelionyellowdye,351,11
+yellowdandelioncolour,351,11
+yellowdandelioncolor,351,11
+yellowdandeliondye,351,11
+yellowd,351,11
+yellowdcolour,351,11
+yellowdcolor,351,11
+yellowddye,351,11
+dyellow,351,11
+dyellowcolour,351,11
+dyellowcolor,351,11
+dyellowdye,351,11
+yellowcolour,351,11
+yellowcolor,351,11
+yellowdye,351,11
+lightbluecolour,351,12
+lightbluecolor,351,12
+lightbluedye,351,12
+lbluecolour,351,12
+lbluecolor,351,12
+lbluedye,351,12
+magentacolour,351,13
+magentacolor,351,13
+magentadye,351,13
+orangecolour,351,14
+orangecolor,351,14
+orangedye,351,14
+bonemeal,351,15
+whitebonemeal,351,15
+whitebonemealcolour,351,15
+whitebonemealcolor,351,15
+whitebonemealdye,351,15
+bonemealwhite,351,15
+bonemealwhitecolour,351,15
+bonemealwhitecolor,351,15
+bonemealwhitedye,351,15
+whitebonem,351,15
+whitebonemcolour,351,15
+whitebonemcolor,351,15
+whitebonemdye,351,15
+bonemwhite,351,15
+bonemwhitecolour,351,15
+bonemwhitecolor,351,15
+bonemwhitedye,351,15
+bonemealcolour,351,15
+bonemealcolor,351,15
+bonemealdye,351,15
+bonem,351,15
+bonemcolour,351,15
+bonemcolor,351,15
+bonemdye,351,15
+whitecolour,351,15
+whitecolor,351,15
+whitedye,351,15
+bone,352,0
+sugar,353,0
+whitedust,353,0
+cake,354,0
+bed,355,0
+redstonerepeater,356,0
+redstonerepeat,356,0
+redstonedelayer,356,0
+redstonedelay,356,0
+redstonedioder,356,0
+redstonediode,356,0
+rstonerepeater,356,0
+rstonerepeat,356,0
+rstonedelayer,356,0
+rstonedelay,356,0
+rstonedioder,356,0
+rstonediode,356,0
+redsrepeater,356,0
+redsrepeat,356,0
+redsdelayer,356,0
+redsdelay,356,0
+redsdioder,356,0
+redsdiode,356,0
+rsrepeater,356,0
+rsrepeat,356,0
+rsdelayer,356,0
+rsdelay,356,0
+rsdioder,356,0
+rsdiode,356,0
+repeater,356,0
+repeat,356,0
+delayer,356,0
+delay,356,0
+dioder,356,0
+diode,356,0
+cookie,357,0
+chart,358,0
+map0,358,0
+map1,358,1
+map2,358,2
+map3,358,3
+map4,358,4
+map5,358,5
+map6,358,6
+map7,358,7
+map8,358,8
+map9,358,9
+map10,358,10
+map11,358,11
+map12,358,12
+map13,358,13
+map14,358,14
+map15,358,15
+shears,359,0
+shear,359,0
+sheers,359,0
+sheer,359,0
+woolcutters,359,0
+woolcutter,359,0
+cutterswool,359,0
+cutterwool,359,0
+melonslice,360,0
+mslice,360,0
+slicemelon,360,0
+watermelonslice,360,0
+greenmelonslice,360,0
+melongreenslice,360,0
+pumpkinseeds,361,0
+pseeds,361,0
+seedsp,361,0
+seedspumpkin,361,0
+pumpseeds,361,0
+seedspump,361,0
+melonseeds,362,0
+mseeds,362,0
+watermelonseeds,362,0
+greenmelonseeds,362,0
+gmelonseeds,362,0
+seedsmelon,362,0
+seedswatermelon,362,0
+rawbeef,363,0
+rawsteak,363,0
+uncookedbeef,363,0
+uncookedsteak,363,0
+cowmeat,363,0
+plainbeef,363,0
+beef,364,0
+steak,364,0
+cookedbeef,364,0
+grilledbeef,364,0
+cookedsteak,364,0
+grilledsteak,364,0
+cookedcowmeat,364,0
+rawchicken,365,0
+uncookedchicken,365,0
+plainchicken,365,0
+chickenplain,365,0
+chickenuncooked,365,0
+chickenraw,365,0
+cookedchicken,366,0
+grilledchicken,366,0
+toastedchicken,366,0
+gchicken,366,0
+bbqchicken,366,0
+friedchicken,366,0
+cchicken,366,0
+rottenflesh,367,0
+zombieflesh,367,0
+rottenmeat,367,0
+zombiemeat,367,0
+badflesh,367,0
+poisonflesh,367,0
+zombieremains,367,0
+enderpearl,368,0
+endpearl,368,0
+pearl,368,0
+epearl,368,0
+bluepearl,368,0
+endergem,368,0
+blazerod,369,0
+goldenrod,369,0
+goldrod,369,0
+blazestick,369,0
+goldstick,369,0
+brod,369,0
+grod,369,0
+bstick,369,0
+gstick,369,0
+ghasttear,370,0
+ghastdrop,370,0
+ghosttear,370,0
+ghostdrop,370,0
+gtear,370,0
+gdrop,370,0
+tear,370,0
+goldnugget,371,0
+gnugget,371,0
+goldpebble,371,0
+gpebble,371,0
+goldball,371,0
+gball,371,0
+netherstalk,372,0
+deathstalk,372,0
+hellstalk,372,0
+nstalk,372,0
+dstalk,372,0
+hstalk,372,0
+netherwarts,372,0
+netherwart,372,0
+netherplant,372,0
+nethercrop,372,0
+hellwarts,372,0
+hellwart,372,0
+hellplant,372,0
+hellcrop,372,0
+deathwarts,372,0
+deathwart,372,0
+deathplant,372,0
+deathcrop,372,0
+nwarts,372,0
+nwart,372,0
+ncrop,372,0
+nplant,372,0
+hwarts,372,0
+hwart,372,0
+hplant,372,0
+hcrop,372,0
+dwarts,372,0
+dwart,372,0
+dplant,372,0
+dcrop,372,0
+potion,373,0
+mixture,373,0
+potions,373,0
+waterbottle,373,0
+fullbottle,373,0
+watervase,373,0
+fullvase,373,0
+clearpotion,373,6
+clearpot,373,6
+clearextendedpotion,373,7
+clearexpotion,373,7
+clear2potion,373,7
+clearextendedpot,373,7
+clearexpot,373,7
+clear2pot,373,7
+diffusepotion,373,11
+diffusepot,373,11
+artlesspotion,373,13
+artlesspot,373,13
+thinpotion,373,14
+thinpot,373,14
+thinextendedpotion,373,15
+thinexpotion,373,15
+thin2potion,373,15
+thinextendedpot,373,15
+thinexpot,373,15
+thin2pot,373,15
+awkwardpotion,373,16
+awkwardpot,373,16
+bunglingpotion,373,22
+bunglingpot,373,22
+bunglingextendedpotion,373,23
+bunglingexpotion,373,23
+bungling2potion,373,23
+bunglingextendedpot,373,23
+bunglingexpot,373,23
+bungling2pot,373,23
+smoothpotion,373,27
+smoothpot,373,27
+suavepotion,373,29
+suavepot,373,29
+debonairpotion,373,30
+debonairpot,373,30
+debonairextendedpotion,373,31
+debonairexpotion,373,31
+debonair2potion,373,31
+debonairextendedpot,373,31
+debonairexpot,373,31
+debonair2pot,373,31
+thickpotion,373,32
+thickpot,373,32
+charmingpotion,373,38
+charmingpot,373,38
+charmingextendedpotion,373,39
+charmingexpotion,373,39
+charming2potion,373,39
+charmingextendedpot,373,39
+charmingexpot,373,39
+charming2pot,373,39
+refinedpotion,373,43
+refinedpot,373,43
+cordialpotion,373,45
+cordialpot,373,45
+sparklingpotion,373,46
+sparklingpot,373,46
+sparklingextendedpotion,373,47
+sparklingexpotion,373,47
+sparkling2potion,373,47
+sparklingextendedpot,373,47
+sparklingexpot,373,47
+sparkling2pot,373,47
+potentpotion,373,48
+potentpot,373,48
+rankpotion,373,54
+rankpot,373,54
+rankextendedpotion,373,55
+rankexpotion,373,55
+rank2potion,373,55
+rankextendedpot,373,55
+rankexpot,373,55
+rank2pot,373,55
+acridpotion,373,59
+acridpot,373,59
+grosspotion,373,61
+grosspot,373,61
+stinkypotion,373,62
+stinkypot,373,62
+stinkyextendedpotion,373,63
+stinkyexpotion,373,63
+stinky2potion,373,63
+stinkyextendedpot,373,63
+stinkyexpot,373,63
+stinky2pot,373,63
+mundaneextendedpotion,373,64
+mundaneexpotion,373,64
+mundane2potion,373,64
+mundaneextendedpot,373,64
+mundaneexpot,373,64
+mundane2pot,373,64
+mundanepotion,373,8192
+mundanepot,373,8192
+regenerationpotion,373,8193
+regeneratepotion,373,8193
+regenpotion,373,8193
+regenerationpot,373,8193
+regeneratepot,373,8193
+regenpot,373,8193
+rpot,373,8193
+swiftnesspotion,373,8194
+swiftpotion,373,8194
+speedpotion,373,8194
+swiftnesspot,373,8194
+swiftpot,373,8194
+speedpot,373,8194
+swpot,373,8194
+fireresistancepotion,373,8195
+fireresistpotion,373,8195
+firerespotion,373,8195
+fireresistancepot,373,8195
+fireresistpot,373,8195
+firerespot,373,8195
+fpot,373,8195
+poisonpotion,373,8196
+acidpotion,373,8196
+poisonpot,373,8196
+acidpot,373,8196
+ppot,373,8196
+healingpotion,373,8197
+healpotion,373,8197
+lifepotion,373,8197
+healingpot,373,8197
+healpot,373,8197
+lifepot,373,8197
+hpot,373,8197
+nightvisionpotion,373,8198
+nvisionpotion,373,8198
+nightvpotion,373,8198
+darkvisionpotion,373,8198
+dvisionpotion,373,8198
+darkvpotion,373,8198
+nightvisionpot,373,8198
+nvisionpot,373,8198
+nightvpot,373,8198
+darkvisionpot,373,8198
+dvisionpot,373,8198
+darkvpot,373,8198
+npot,373,8198
+weaknesspotion,373,8200
+weakpotion,373,8200
+weaknesspot,373,8200
+weakpot,373,8200
+wpot,373,8200
+strengthpotion,373,8201
+strongpotion,373,8201
+strpotion,373,8201
+strengthpot,373,8201
+strongpot,373,8201
+strpot,373,8201
+stpot,373,8201
+slownesspotion,373,8202
+slowpotion,373,8202
+slownesspot,373,8202
+slowpot,373,8202
+slpot,373,8202
+harmingpotion,373,8204
+damagepotion,373,8204
+dmgpotion,373,8204
+harmingpot,373,8204
+damagepot,373,8204
+dmgpot,373,8204
+dpot,373,8204
+waterbreathingpotion,373,8205
+waterbreathpotion,373,8205
+breathingpotion,373,8205
+breathpotion,373,8205
+waterbreathingpot,373,8205
+waterbreathpot,373,8205
+breathingpot,373,8205
+breathpot,373,8205
+wbpot,373,8205
+invisibilitypotion,373,8206
+invisiblepotion,373,8206
+invpotion,373,8206
+invisibilitypot,373,8206
+invisiblepot,373,8206
+invpot,373,8206
+ipot,373,8206
+regenerationleveliipotion,373,8225
+regenerateleveliipotion,373,8225
+regenleveliipotion,373,8225
+regenerationlevel2potion,373,8225
+regeneratelevel2potion,373,8225
+regenlevel2potion,373,8225
+regenerationiipotion,373,8225
+regenerateiipotion,373,8225
+regeniipotion,373,8225
+regenerationleveliipot,373,8225
+regenerateleveliipot,373,8225
+regenleveliipot,373,8225
+regenerationlevel2pot,373,8225
+regeneratelevel2pot,373,8225
+regenlevel2pot,373,8225
+regenerationiipot,373,8225
+regenerateiipot,373,8225
+regeniipot,373,8225
+r2pot,373,8225
+swiftnessleveliipotion,373,8226
+swiftleveliipotion,373,8226
+speedleveliipotion,373,8226
+swiftnesslevel2potion,373,8226
+swiftlevel2potion,373,8226
+speedlevel2potion,373,8226
+swiftnessiipotion,373,8226
+swiftiipotion,373,8226
+speediipotion,373,8226
+swiftnessleveliipot,373,8226
+swiftleveliipot,373,8226
+speedleveliipot,373,8226
+swiftnesslevel2pot,373,8226
+swiftlevel2pot,373,8226
+speedlevel2pot,373,8226
+swiftnessiipot,373,8226
+swiftiipot,373,8226
+speediipot,373,8226
+sw2pot,373,8226
+poisonleveliipotion,373,8228
+acidleveliipotion,373,8228
+poisonlevel2potion,373,8228
+acidlevel2potion,373,8228
+poisoniipotion,373,8228
+acidiipotion,373,8228
+poisonleveliipot,373,8228
+acidleveliipot,373,8228
+poisonlevel2pot,373,8228
+acidlevel2pot,373,8228
+poisoniipot,373,8228
+acidiipot,373,8228
+p2pot,373,8228
+healingleveliipotion,373,8229
+healleveliipotion,373,8229
+healinglevel2potion,373,8229
+heallevel2potion,373,8229
+healingiipotion,373,8229
+healiipotion,373,8229
+healingleveliipot,373,8229
+healleveliipot,373,8229
+healinglevel2pot,373,8229
+heallevel2pot,373,8229
+healingiipot,373,8229
+healiipot,373,8229
+h2pot,373,8229
+strengthleveliipotion,373,8233
+strongleveliipotion,373,8233
+strleveliipotion,373,8233
+strengthlevel2potion,373,8233
+stronglevel2potion,373,8233
+strlevel2potion,373,8233
+strengthiipotion,373,8233
+strongiipotion,373,8233
+striipotion,373,8233
+strengthleveliipot,373,8233
+strongleveliipot,373,8233
+strleveliipot,373,8233
+strengthlevel2pot,373,8233
+stronglevel2pot,373,8233
+strlevel2pot,373,8233
+strengthiipot,373,8233
+strongiipot,373,8233
+striipot,373,8233
+st2pot,373,8233
+harmingleveliipotion,373,8236
+damageleveliipotion,373,8236
+dmgleveliipotion,373,8236
+harminglevel2potion,373,8236
+damagelevel2potion,373,8236
+dmglevel2potion,373,8236
+harmingiipotion,373,8236
+damageiipotion,373,8236
+dmgiipotion,373,8236
+harmingleveliipot,373,8236
+damageleveliipot,373,8236
+dmgleveliipot,373,8236
+harminglevel2pot,373,8236
+damagelevel2pot,373,8236
+dmglevel2pot,373,8236
+harmingiipot,373,8236
+damageiipot,373,8236
+dmgiipot,373,8236
+d2pot,373,8236
+regenerationextendedpotion,373,8257
+regenerateextendedpotion,373,8257
+regenextendepotion,373,8257
+regenerationexpotion,373,8257
+regenerateexpotion,373,8257
+regenexpotion,373,8257
+regenerationextendedpot,373,8257
+regenerateextendedpot,373,8257
+regenextendepot,373,8257
+regenerationexpot,373,8257
+regenerateexpot,373,8257
+regenexpot,373,8257
+repot,373,8257
+swiftnessextendedpotion,373,8258
+swiftextendedpotion,373,8258
+speedextendedpotion,373,8258
+swiftnessexpotion,373,8258
+swiftexpotion,373,8258
+speedexpotion,373,8258
+swiftnessextendedpot,373,8258
+swiftextendedpot,373,8258
+speedextendedpot,373,8258
+swiftnessexpot,373,8258
+swiftexpot,373,8258
+speedexpot,373,8258
+swepot,373,8258
+fireresistanceextendedpotion,373,8259
+fireresistextendedpotion,373,8259
+fireresextendedpotion,373,8259
+fireresistanceexpotion,373,8259
+fireresistexpotion,373,8259
+fireresexpotion,373,8259
+fireresistanceextendedpot,373,8259
+fireresistextendedpot,373,8259
+fireresextendedpot,373,8259
+fireresistanceexpot,373,8259
+fireresistexpot,373,8259
+fireresexpot,373,8259
+fepot,373,8259
+poisonextendedpotion,373,8260
+acidextendedpotion,373,8260
+poisonexpotion,373,8260
+acidexpotion,373,8260
+poisonextendedpot,373,8260
+acidextendedpot,373,8260
+poisonexpot,373,8260
+acidexpot,373,8260
+pepot,373,8260
+nightvisionextendedpotion,373,8262
+nvisionextendedpotion,373,8262
+nightvextendedpotion,373,8262
+darkvisionextendedpotion,373,8262
+dvisionextendedpotion,373,8262
+darkvextendedpotion,373,8262
+nightvisionexpotion,373,8262
+nvisionexpotion,373,8262
+nightvexpotion,373,8262
+darkvisionexpotion,373,8262
+dvisionexpotion,373,8262
+darkvexpotion,373,8262
+nightvisionextendedpot,373,8262
+nvisionextendedpot,373,8262
+nightvextendedpot,373,8262
+darkvisionextendedpot,373,8262
+dvisionextendedpot,373,8262
+darkvextendedpot,373,8262
+nightvisionexpot,373,8262
+nvisionexpot,373,8262
+nightvexpot,373,8262
+darkvisionexpot,373,8262
+dvisionexpot,373,8262
+darkvexpot,373,8262
+nepot,373,8262
+weaknessextendedpotion,373,8264
+weakextendedpotion,373,8264
+weaknessexpotion,373,8264
+weakexpotion,373,8264
+weaknessextendedpot,373,8264
+weakextendedpot,373,8264
+weaknessexpot,373,8264
+weakexpot,373,8264
+wepot,373,8264
+strengthextendedpotion,373,8265
+strongextendedpotion,373,8265
+strextendedpotion,373,8265
+strengthexpotion,373,8265
+strongexpotion,373,8265
+strexpotion,373,8265
+strengthextendedpot,373,8265
+strongextendedpot,373,8265
+strextendedpot,373,8265
+strengthexpot,373,8265
+strongexpot,373,8265
+strexpot,373,8265
+stepot,373,8265
+slownessextendedpotion,373,8266
+slowextenedpotion,373,8266
+slownessexpotion,373,8266
+slowexpotion,373,8266
+slownessextendedpot,373,8266
+slowextenedpot,373,8266
+slownessexpot,373,8266
+slowexpot,373,8266
+slepot,373,8266
+waterbreathingextendedpotion,373,8269
+waterbreathextendedpotion,373,8269
+breathingextendedpotion,373,8269
+breathextendedpotion,373,8269
+waterbreathingextendedpot,373,8269
+waterbreathextendedpot,373,8269
+breathingextendedpot,373,8269
+breathextendedpot,373,8269
+waterbreathingexpotion,373,8269
+waterbreathexpotion,373,8269
+breathingexpotion,373,8269
+breathexpotion,373,8269
+waterbreathingexpot,373,8269
+waterbreathexpot,373,8269
+breathingexpot,373,8269
+breathexpot,373,8269
+wbepot,373,8269
+invisibilityextendedpotion,373,8270
+invisibleextendedpotion,373,8270
+invextendedpotion,373,8270
+invisibilityexpotion,373,8270
+invisibleexpotion,373,8270
+invexpotion,373,8270
+invisibilityextendedpot,373,8270
+invisibleextendedpot,373,8270
+invextendedpot,373,8270
+invisibilityexpot,373,8270
+invisibleexpot,373,8270
+invexpot,373,8270
+iepot,373,8270
+regenerationdualbitpotion,373,8289
+regeneratedualbitpotion,373,8289
+regendualbitpotion,373,8289
+regenerationdbpotion,373,8289
+regeneratedbpotion,373,8289
+regendbpotion,373,8289
+regenerationdualbitpot,373,8289
+regeneratedualbitpot,373,8289
+regendualbitpot,373,8289
+regenerationdbpot,373,8289
+regeneratedbpot,373,8289
+regendbpot,373,8289
+rdbpot,373,8289
+swiftnessdualbitpotion,373,8290
+swiftdualbitpotion,373,8290
+speeddualbitpotion,373,8290
+swiftnessdualbitpot,373,8290
+swiftdualbitpot,373,8290
+speeddualbitpot,373,8290
+swiftnessdbpotion,373,8290
+swiftdbpotion,373,8290
+speeddbpotion,373,8290
+swiftnessdbpot,373,8290
+swiftdbpot,373,8290
+speeddbpot,373,8290
+swdbpot,373,8290
+poisondualbitpotion,373,8292
+aciddualbitpotion,373,8292
+poisondualbitpot,373,8292
+aciddualbitpot,373,8292
+poisondbpotion,373,8292
+aciddbpotion,373,8292
+poisondbpot,373,8292
+aciddbpot,373,8292
+pdbpot,373,8292
+strengthdualbitpotion,373,8297
+strongdualbitpotion,373,8297
+strdualbitpotion,373,8297
+strengthdualbitpot,373,8297
+strongdualbitpot,373,8297
+strdualbitpot,373,8297
+strengthdbpotion,373,8297
+strongdbpotion,373,8297
+strdbpotion,373,8297
+strengthdbpot,373,8297
+strongdbpot,373,8297
+strdbpot,373,8297
+stdbpot,373,8297
+splashmundanepotion,373,16384
+splmundanepotion,373,16384
+splashregenerationpotion,373,16385
+splashregeneratepotion,373,16385
+splashregenpotion,373,16385
+splashregenerationpot,373,16385
+splashregeneratepot,373,16385
+splashregenpot,373,16385
+regenerationsplashpotion,373,16385
+regeneratesplashpotion,373,16385
+regensplashpotion,373,16385
+splregenerationpotion,373,16385
+splregeneratepotion,373,16385
+splregenpotion,373,16385
+splregenerationpot,373,16385
+splregeneratepot,373,16385
+splregenpot,373,16385
+sprpot,373,16385
+splashswiftnesspotion,373,16386
+splashswiftpotion,373,16386
+splashspeedpotion,373,16386
+splashswiftnesspot,373,16386
+splashswiftpot,373,16386
+splashspeedpot,373,16386
+splswiftnesspotion,373,16386
+splswiftpotion,373,16386
+splspeedpotion,373,16386
+splswiftnesspot,373,16386
+splswiftpot,373,16386
+splspeedpot,373,16386
+spswpot,373,16386
+splashfireresistancepotion,373,16387
+splashfireresistpotion,373,16387
+splashfirerespotion,373,16387
+splashfireresistancepot,373,16387
+splashfireresistpot,373,16387
+splashfirerespot,373,16387
+splfireresistancepotion,373,16387
+splfireresistpotion,373,16387
+splfirerespotion,373,16387
+splfireresistancepot,373,16387
+splfireresistpot,373,16387
+splfirerespot,373,16387
+spfpot,373,16387
+splashpoisonpotion,373,16388
+splashacidpotion,373,16388
+splashpoisonpot,373,16388
+splashacidpot,373,16388
+splpoisonpotion,373,16388
+splacidpotion,373,16388
+splpoisonpot,373,16388
+splacidpot,373,16388
+spppot,373,16388
+splashhealingpotion,373,16389
+splashhealpotion,373,16389
+splashlifepotion,373,16389
+splashhealingpot,373,16389
+splashhealpot,373,16389
+splashlifepot,373,16389
+splhealingpotion,373,16389
+splhealpotion,373,16389
+spllifepotion,373,16389
+splhealingpot,373,16389
+splhealpot,373,16389
+spllifepot,373,16389
+sphpot,373,16389
+splashclearpotion,373,16390
+splashclearpot,373,16390
+splclearpotion,373,16390
+splclearpot,373,16390
+splashnightvisionpotion,373,16390
+splashnvisionpotion,373,16390
+splashnightvpotion,373,16390
+splashdarkvisionpotion,373,16390
+splashdvisionpotion,373,16390
+splashdarkvpotion,373,16390
+splashnightvisionpot,373,16390
+splashnvisionpot,373,16390
+splashnightvpot,373,16390
+splashdarkvisionpot,373,16390
+splashdvisionpot,373,16390
+splashdarkvpot,373,16390
+splnightvisionpotion,373,16390
+splnvisionpotion,373,16390
+splnightvpotion,373,16390
+spldarkvisionpotion,373,16390
+spldvisionpotion,373,16390
+spldarkvpotion,373,16390
+splnightvisionpot,373,16390
+splnvisionpot,373,16390
+splnightvpot,373,16390
+spldarkvisionpot,373,16390
+spldvisionpot,373,16390
+spldarkvpot,373,16390
+spnpot,373,16390
+splashclearextendedpotion,373,16391
+splashclearexpotion,373,16391
+splashclear2potion,373,16391
+splashclearextendedpot,373,16391
+splashclearexpot,373,16391
+splashclear2pot,373,16391
+splclearextendedpotion,373,16391
+splclearexpotion,373,16391
+splclear2potion,373,16391
+splclearextendedpot,373,16391
+splclearexpot,373,16391
+splclear2pot,373,16391
+splashweaknesspotion,373,16392
+splashweakpotion,373,16392
+splashweaknesspot,373,16392
+splashweakpot,373,16392
+splweaknesspotion,373,16392
+splweakpotion,373,16392
+splweaknesspot,373,16392
+splweakpot,373,16392
+spwpot,373,16392
+splashstrengthpotion,373,16393
+splashstrongpotion,373,16393
+splashstrpotion,373,16393
+splashstrengthpot,373,16393
+splashstrongpot,373,16393
+splashstrpot,373,16393
+splstrengthpotion,373,16393
+splstrongpotion,373,16393
+splstrpotion,373,16393
+splstrengthpot,373,16393
+splstrongpot,373,16393
+splstrpot,373,16393
+spstpot,373,16393
+splashslownesspotion,373,16394
+splashslowpotion,373,16394
+splashslownesspot,373,16394
+splashslowpot,373,16394
+splslownesspotion,373,16394
+splslowpotion,373,16394
+splslownesspot,373,16394
+splslowpot,373,16394
+spslpot,373,16394
+splashdiffusepotion,373,16395
+splashdiffusepot,373,16395
+spldiffusepotion,373,16395
+spldiffusepot,373,16395
+splashharmingpotion,373,16396
+splashdamagepotion,373,16396
+splashdmgpotion,373,16396
+splashharmingpot,373,16396
+splashdamagepot,373,16396
+splashdmgpot,373,16396
+splharmingpotion,373,16396
+spldamagepotion,373,16396
+spldmgpotion,373,16396
+splharmingpot,373,16396
+spldamagepot,373,16396
+spldmgpot,373,16396
+spdpot,373,16396
+splashartlesspotion,373,16397
+splashartlesspot,373,16397
+splartlesspotion,373,16397
+splartlesspot,373,16397
+splashwaterbreathingpotion,373,16397
+splashwaterbreathpotion,373,16397
+splashbreathingpotion,373,16397
+splashbreathpotion,373,16397
+splashwaterbreathingpot,373,16397
+splashwaterbreathpot,373,16397
+splashbreathingpot,373,16397
+splashbreathpot,373,16397
+splwaterbreathingpotion,373,16397
+splwaterbreathpotion,373,16397
+splbreathingpotion,373,16397
+splbreathpotion,373,16397
+splwaterbreathingpot,373,16397
+splwaterbreathpot,373,16397
+splbreathingpot,373,16397
+splbreathpot,373,16397
+spwbpot,373,16397
+splashthinpotion,373,16398
+splashthinpot,373,16398
+splthinpotion,373,16398
+splthinpot,373,16398
+splashinvisibilitypotion,373,16398
+splashinvisiblepotion,373,16398
+splashinvpotion,373,16398
+splashinvisibilitypot,373,16398
+splashinvisiblepot,373,16398
+splashinvpot,373,16398
+splinvisibilitypotion,373,16398
+splinvisiblepotion,373,16398
+splinvpotion,373,16398
+splinvisibilitypot,373,16398
+splinvisiblepot,373,16398
+splinvpot,373,16398
+spipot,373,16398
+splashthinextendedpotion,373,16399
+splashthinexpotion,373,16399
+splashthin2potion,373,16399
+splashthinextendedpot,373,16399
+splashthinexpot,373,16399
+splashthin2pot,373,16399
+splthinextendedpotion,373,16399
+splthinexpotion,373,16399
+splthin2potion,373,16399
+splthinextendedpot,373,16399
+splthinexpot,373,16399
+splthin2pot,373,16399
+splashawkwardpotion,373,16400
+splashawkwardpot,373,16400
+splawkwardpotion,373,16400
+splawkwardpot,373,16400
+splashbunglingpotion,373,16406
+splashbunglingpot,373,16406
+splbunglingpotion,373,16406
+splbunglingpot,373,16406
+splashbunglingextendedpotion,373,16407
+splashbunglingexpotion,373,16407
+splashbungling2potion,373,16407
+splashbunglingextendedpot,373,16407
+splashbunglingexpot,373,16407
+splashbungling2pot,373,16407
+splbunglingextendedpotion,373,16407
+splbunglingexpotion,373,16407
+splbungling2potion,373,16407
+splbunglingextendedpot,373,16407
+splbunglingexpot,373,16407
+splbungling2pot,373,16407
+splashsmoothpotion,373,16411
+splashsmoothpot,373,16411
+splsmoothpotion,373,16411
+splsmoothpot,373,16411
+splashsuavepotion,373,16413
+splashsuavepot,373,16413
+splsuavepotion,373,16413
+splsuavepot,373,16413
+splashdebonairpotion,373,16414
+splashdebonairpot,373,16414
+spldebonairpotion,373,16414
+spldebonairpot,373,16414
+splashdebonairextendedpotion,373,16415
+splashdebonairexpotion,373,16415
+splashdebonair2potion,373,16415
+splashdebonairextendedpot,373,16415
+splashdebonairexpot,373,16415
+splashdebonair2pot,373,16415
+spldebonairextendedpotion,373,16415
+spldebonairexpotion,373,16415
+spldebonair2potion,373,16415
+spldebonairextendedpot,373,16415
+spldebonairexpot,373,16415
+spldebonair2pot,373,16415
+splashthickpotion,373,16416
+splashthickpot,373,16416
+splthickpotion,373,16416
+splthickpot,373,16416
+splashregenerationleveliipotion,373,16417
+splashregenerateleveliipotion,373,16417
+splashregenleveliipotion,373,16417
+splashregenerationlevel2potion,373,16417
+splashregeneratelevel2potion,373,16417
+splashregenlevel2potion,373,16417
+splashregenerationiipotion,373,16417
+splashregenerateiipotion,373,16417
+splashregeniipotion,373,16417
+splashregenerationleveliipot,373,16417
+splashregenerateleveliipot,373,16417
+splashregenleveliipot,373,16417
+splashregenerationlevel2pot,373,16417
+splashregeneratelevel2pot,373,16417
+splashregenlevel2pot,373,16417
+splashregenerationiipot,373,16417
+splashregenerateiipot,373,16417
+splashregeniipot,373,16417
+splregenerationleveliipotion,373,16417
+splregenerateleveliipotion,373,16417
+splregenleveliipotion,373,16417
+splregenerationlevel2potion,373,16417
+splregeneratelevel2potion,373,16417
+splregenlevel2potion,373,16417
+splregenerationiipotion,373,16417
+splregenerateiipotion,373,16417
+splregeniipotion,373,16417
+splregenerationleveliipot,373,16417
+splregenerateleveliipot,373,16417
+splregenleveliipot,373,16417
+splregenerationlevel2pot,373,16417
+splregeneratelevel2pot,373,16417
+splregenlevel2pot,373,16417
+splregenerationiipot,373,16417
+splregenerateiipot,373,16417
+splregeniipot,373,16417
+spr2pot,373,16417
+splashswiftnessleveliipotion,373,16418
+splashswiftleveliipotion,373,16418
+splashspeedleveliipotion,373,16418
+splashswiftnesslevel2potion,373,16418
+splashswiftlevel2potion,373,16418
+splashspeedlevel2potion,373,16418
+splashswiftnessiipotion,373,16418
+splashswiftiipotion,373,16418
+splashspeediipotion,373,16418
+splashswiftnessleveliipot,373,16418
+splashswiftleveliipot,373,16418
+splashspeedleveliipot,373,16418
+splashswiftnesslevel2pot,373,16418
+splashswiftlevel2pot,373,16418
+splashspeedlevel2pot,373,16418
+splashswiftnessiipot,373,16418
+splashswiftiipot,373,16418
+splashspeediipot,373,16418
+splswiftnessleveliipotion,373,16418
+splswiftleveliipotion,373,16418
+splspeedleveliipotion,373,16418
+splswiftnesslevel2potion,373,16418
+splswiftlevel2potion,373,16418
+splspeedlevel2potion,373,16418
+splswiftnessiipotion,373,16418
+splswiftiipotion,373,16418
+splspeediipotion,373,16418
+splswiftnessleveliipot,373,16418
+splswiftleveliipot,373,16418
+splspeedleveliipot,373,16418
+splswiftnesslevel2pot,373,16418
+splswiftlevel2pot,373,16418
+splspeedlevel2pot,373,16418
+splswiftnessiipot,373,16418
+splswiftiipot,373,16418
+splspeediipot,373,16418
+spsw2pot,373,16418
+splashpoisonleveliipotion,373,16420
+splashacidleveliipotion,373,16420
+splashpoisonlevel2potion,373,16420
+splashacidlevel2potion,373,16420
+splashpoisoniipotion,373,16420
+splashacidiipotion,373,16420
+splashpoisonleveliipot,373,16420
+splashacidleveliipot,373,16420
+splashpoisonlevel2pot,373,16420
+splashacidlevel2pot,373,16420
+splashpoisoniipot,373,16420
+splashacidiipot,373,16420
+splpoisonleveliipotion,373,16420
+splacidleveliipotion,373,16420
+splpoisonlevel2potion,373,16420
+splcidlevel2potion,373,16420
+splpoisoniipotion,373,16420
+splacidiipotion,373,16420
+splpoisonleveliipot,373,16420
+splacidleveliipot,373,16420
+splpoisonlevel2pot,373,16420
+splacidlevel2pot,373,16420
+splpoisoniipot,373,16420
+splacidiipot,373,16420
+spp2pot,373,16420
+splashhealingleveliipotion,373,16421
+splashhealleveliipotion,373,16421
+splashhealinglevel2potion,373,16421
+splashheallevel2potion,373,16421
+splashhealingiipotion,373,16421
+splashhealiipotion,373,16421
+splashhealingleveliipot,373,16421
+splashhealleveliipot,373,16421
+splashhealinglevel2pot,373,16421
+splashheallevel2pot,373,16421
+splashhealingiipot,373,16421
+splashhealiipot,373,16421
+splhealingleveliipotion,373,16421
+splhealleveliipotion,373,16421
+splhealinglevel2potion,373,16421
+splheallevel2potion,373,16421
+splhealingiipotion,373,16421
+splhealiipotion,373,16421
+splhealingleveliipot,373,16421
+splhealleveliipot,373,16421
+splhealinglevel2pot,373,16421
+splheallevel2pot,373,16421
+splhealingiipot,373,16421
+splhealiipot,373,16421
+sph2pot,373,16421
+splashcharmingpotion,373,16422
+splashcharmingpot,373,16422
+splcharmingpotion,373,16422
+splcharmingpot,373,16422
+splashcharmingextendedpotion,373,16423
+splashcharmingexpotion,373,16423
+splashcharming2potion,373,16423
+splashcharmingextendedpot,373,16423
+splashcharmingexpot,373,16423
+splashcharming2pot,373,16423
+splcharmingextendedpotion,373,16423
+splcharmingexpotion,373,16423
+splcharming2potion,373,16423
+splcharmingextendedpot,373,16423
+splcharmingexpot,373,16423
+splcharming2pot,373,16423
+splashstrengthleveliipotion,373,16425
+splashstrongleveliipotion,373,16425
+splashstrleveliipotion,373,16425
+splashstrengthlevel2potion,373,16425
+splashstronglevel2potion,373,16425
+splashstrlevel2potion,373,16425
+splashstrengthiipotion,373,16425
+splashstrongiipotion,373,16425
+splashstriipotion,373,16425
+splashstrengthleveliipot,373,16425
+splashstrongleveliipot,373,16425
+splashstrleveliipot,373,16425
+splashstrengthlevel2pot,373,16425
+splashstronglevel2pot,373,16425
+splashstrlevel2pot,373,16425
+splashstrengthiipot,373,16425
+splashstrongiipot,373,16425
+splashstriipot,373,16425
+splstrengthleveliipotion,373,16425
+splstrongleveliipotion,373,16425
+splstrleveliipotion,373,16425
+splstrengthlevel2potion,373,16425
+splstronglevel2potion,373,16425
+splstrlevel2potion,373,16425
+splstrengthiipotion,373,16425
+splstrongiipotion,373,16425
+splstriipotion,373,16425
+splstrengthleveliipot,373,16425
+splstrongleveliipot,373,16425
+splstrleveliipot,373,16425
+splstrengthlevel2pot,373,16425
+splstronglevel2pot,373,16425
+splstrlevel2pot,373,16425
+splstrengthiipot,373,16425
+splstrongiipot,373,16425
+splstriipot,373,16425
+spst2pot,373,16425
+splashrefinedpotion,373,16427
+splashrefinedpot,373,16427
+splrefinedpotion,373,16427
+splrefinedpot,373,16427
+splashharmingleveliipotion,373,16428
+splashdamageleveliipotion,373,16428
+splashdmgleveliipotion,373,16428
+splashharminglevel2potion,373,16428
+splashdamagelevel2potion,373,16428
+splashdmglevel2potion,373,16428
+splashharmingiipotion,373,16428
+splashdamageiipotion,373,16428
+splashdmgiipotion,373,16428
+splashharmingleveliipot,373,16428
+splashdamageleveliipot,373,16428
+splashdmgleveliipot,373,16428
+splashharminglevel2pot,373,16428
+splashdamagelevel2pot,373,16428
+splashdmglevel2pot,373,16428
+splashharmingiipot,373,16428
+splashdamageiipot,373,16428
+splashdmgiipot,373,16428
+splharmingleveliipotion,373,16428
+spldamageleveliipotion,373,16428
+spldmgleveliipotion,373,16428
+splharminglevel2potion,373,16428
+spldamagelevel2potion,373,16428
+spldmglevel2potion,373,16428
+splharmingiipotion,373,16428
+spldamageiipotion,373,16428
+spldmgiipotion,373,16428
+splharmingleveliipot,373,16428
+spldamageleveliipot,373,16428
+spldmgleveliipot,373,16428
+splharminglevel2pot,373,16428
+spldamagelevel2pot,373,16428
+spldmglevel2pot,373,16428
+splharmingiipot,373,16428
+spldamageiipot,373,16428
+spldmgiipot,373,16428
+spd2pot,373,16428
+splashcordialpotion,373,16429
+splashcordialpot,373,16429
+splcordialpotion,373,16429
+splcordialpot,373,16429
+splashsparklingpotion,373,16430
+splashsparklingpot,373,16430
+splsparklingpotion,373,16430
+splsparklingpot,373,16430
+splashsparklingextendedpotion,373,16431
+splashsparklingexpotion,373,16431
+splashsparkling2potion,373,16431
+splashsparklingextendedpot,373,16431
+splashsparklingexpot,373,16431
+splashsparkling2pot,373,16431
+splsparklingextendedpotion,373,16431
+splsparklingexpotion,373,16431
+splsparkling2potion,373,16431
+splsparklingextendedpot,373,16431
+splsparklingexpot,373,16431
+splsparkling2pot,373,16431
+splashpotentpotion,373,16432
+splashpotentpot,373,16432
+splpotentpotion,373,16432
+splpotentpot,373,16432
+splashrankpotion,373,16438
+splashrankpot,373,16438
+splrankpotion,373,16438
+splrankpot,373,16438
+splashrankextendedpotion,373,16439
+splashrankexpotion,373,16439
+splashrank2potion,373,16439
+splashrankextendedpot,373,16439
+splashrankexpot,373,16439
+splashrank2pot,373,16439
+splrankextendedpotion,373,16439
+splrankexpotion,373,16439
+splrank2potion,373,16439
+splrankextendedpot,373,16439
+splrankexpot,373,16439
+splrank2pot,373,16439
+splashacridpotion,373,16443
+splashacridpot,373,16443
+splacridpotion,373,16443
+splacridpot,373,16443
+splashgrosspotion,373,16445
+splashgrosspot,373,16445
+splgrosspotion,373,16445
+splgrosspot,373,16445
+splashstinkypotion,373,16446
+splashstinkypot,373,16446
+splstinkypotion,373,16446
+splstinkypot,373,16446
+splashstinkyextendedpotion,373,16447
+splashstinkyexpotion,373,16447
+splashstinky2potion,373,16447
+splashstinkyextendedpot,373,16447
+splashstinkyexpot,373,16447
+splashstinky2pot,373,16447
+splstinkyextendedpotion,373,16447
+splstinkyexpotion,373,16447
+splstinky2potion,373,16447
+splstinkyextendedpot,373,16447
+splstinkyexpot,373,16447
+splstinky2pot,373,16447
+splashmundaneextendedpotion,373,16448
+splashmundaneexpotion,373,16448
+splashmundane2potion,373,16448
+splashmundaneextendedpot,373,16448
+splashmundaneexpot,373,16448
+splashmundane2pot,373,16448
+splmundaneextendedpotion,373,16448
+splmundaneexpotion,373,16448
+splmundane2potion,373,16448
+splmundaneextendedpot,373,16448
+splmundaneexpot,373,16448
+splmundane2pot,373,16448
+splashregenerationextendedpotion,373,16449
+splashregenerateextendedpotion,373,16449
+splashregenextendepotion,373,16449
+splashregenerationexpotion,373,16449
+splashregenerateexpotion,373,16449
+splashregenexpotion,373,16449
+splashregenerationextendedpot,373,16449
+splashregenerateextendedpot,373,16449
+splashregenextendepot,373,16449
+splashregenerationexpot,373,16449
+splashregenerateexpot,373,16449
+splashregenexpot,373,16449
+splregenerationextendedpotion,373,16449
+splregenerateextendedpotion,373,16449
+splregenextendepotion,373,16449
+splregenerationexpotion,373,16449
+splregenerateexpotion,373,16449
+splregenexpotion,373,16449
+splregenerationextendedpot,373,16449
+splregenerateextendedpot,373,16449
+splregenextendepot,373,16449
+splregenerationexpot,373,16449
+splregenerateexpot,373,16449
+splregenexpot,373,16449
+sprepot,373,16449
+splashswiftnessextendedpotion,373,16450
+splashswiftextendedpotion,373,16450
+splashspeedextendedpotion,373,16450
+splashswiftnessexpotion,373,16450
+splashswiftexpotion,373,16450
+splashspeedexpotion,373,16450
+splashswiftnessextendedpot,373,16450
+splashswiftextendedpot,373,16450
+splashspeedextendedpot,373,16450
+splashswiftnessexpot,373,16450
+splashswiftexpot,373,16450
+splashspeedexpot,373,16450
+splswiftnessextendedpotion,373,16450
+splswiftextendedpotion,373,16450
+splspeedextendedpotion,373,16450
+splswiftnessexpotion,373,16450
+splswiftexpotion,373,16450
+splspeedexpotion,373,16450
+splswiftnessextendedpot,373,16450
+splswiftextendedpot,373,16450
+splspeedextendedpot,373,16450
+splswiftnessexpot,373,16450
+splswiftexpot,373,16450
+splspeedexpot,373,16450
+spswepot,373,16450
+splashfireresistanceextendedpotion,373,16451
+splashfireresistextendedpotion,373,16451
+splashfireresextendedpotion,373,16451
+splashfireresistanceexpotion,373,16451
+splashfireresistexpotion,373,16451
+splashfireresexpotion,373,16451
+splashfireresistanceextendedpot,373,16451
+splashfireresistextendedpot,373,16451
+splashfireresextendedpot,373,16451
+splashfireresistanceexpot,373,16451
+splashfireresistexpot,373,16451
+splashfireresexpot,373,16451
+splfireresistanceextendedpotion,373,16451
+splfireresistextendedpotion,373,16451
+splfireresextendedpotion,373,16451
+splfireresistanceexpotion,373,16451
+splfireresistexpotion,373,16451
+splfireresexpotion,373,16451
+splfireresistanceextendedpot,373,16451
+splfireresistextendedpot,373,16451
+splfireresextendedpot,373,16451
+splfireresistanceexpot,373,16451
+splfireresistexpot,373,16451
+splfireresexpot,373,16451
+spfepot,373,16451
+splashpoisonextendedpotion,373,16452
+splashacidextendedpotion,373,16452
+splashpoisonexpotion,373,16452
+splashacidexpotion,373,16452
+splashpoisonextendedpot,373,16452
+splashacidextendedpot,373,16452
+splashpoisonexpot,373,16452
+splashacidexpot,373,16452
+splpoisonextendedpotion,373,16452
+splacidextendedpotion,373,16452
+splpoisonexpotion,373,16452
+splacidexpotion,373,16452
+splpoisonextendedpot,373,16452
+splacidextendedpot,373,16452
+splpoisonexpot,373,16452
+splacidexpot,373,16452
+sppepot,373,16452
+splashnightvisionextendedpotion,373,16454
+splashnvisionextendedpotion,373,16454
+splashnightvextendedpotion,373,16454
+splashdarkvisionextendedpotion,373,16454
+splashdvisionextendedpotion,373,16454
+splashdarkvextendedpotion,373,16454
+splashnightvisionextendedpot,373,16454
+splashnvisionextendedpot,373,16454
+splashnightvextendedpot,373,16454
+splashdarkvisionextendedpot,373,16454
+splashdvisionextendedpot,373,16454
+splashdarkvextendedpot,373,16454
+splashnightvisionexpotion,373,16454
+splashnvisionexpotion,373,16454
+splashnightvexpotion,373,16454
+splashdarkvisionexpotion,373,16454
+splashdvisionexpotion,373,16454
+splashdarkvexpotion,373,16454
+splashnightvisionexpot,373,16454
+splashnvisionexpot,373,16454
+splashnightvexpot,373,16454
+splashdarkvisionexpot,373,16454
+splashdvisionexpot,373,16454
+splashdarkvexpot,373,16454
+splnightvisionextendedpotion,373,16454
+splnvisionextendedpotion,373,16454
+splnightvextendedpotion,373,16454
+spldarkvisionextendedpotion,373,16454
+spldvisionextendedpotion,373,16454
+spldarkvextendedpotion,373,16454
+splnightvisionextendedpot,373,16454
+splnvisionextendedpot,373,16454
+splnightvextendedpot,373,16454
+spldarkvisionextendedpot,373,16454
+spldvisionextendedpot,373,16454
+spldarkvextendedpot,373,16454
+splnightvisionexpotion,373,16454
+splnvisionexpotion,373,16454
+splnightvexpotion,373,16454
+spldarkvisionexpotion,373,16454
+spldvisionexpotion,373,16454
+spldarkvexpotion,373,16454
+splnightvisionexpot,373,16454
+splnvisionexpot,373,16454
+splnightvexpot,373,16454
+spldarkvisionexpot,373,16454
+spldvisionexpot,373,16454
+spldarkvexpot,373,16454
+spnepot,373,16454
+splashweaknessextendedpotion,373,16456
+splashweakextendedpotion,373,16456
+splashweaknessexpotion,373,16456
+splashweakexpotion,373,16456
+splashweaknessextendedpot,373,16456
+splashweakextendedpot,373,16456
+splashweaknessexpot,373,16456
+splashweakexpot,373,16456
+splweaknessextendedpotion,373,16456
+sphweakextendedpotion,373,16456
+splweaknessexpotion,373,16456
+splweakexpotion,373,16456
+splweaknessextendedpot,373,16456
+splweakextendedpot,373,16456
+splweaknessexpot,373,16456
+splweakexpot,373,16456
+spwepot,373,16456
+splashstrengthextendedpotion,373,16457
+splashstrongextendedpotion,373,16457
+splashstrextendedpotion,373,16457
+splashstrengthexpotion,373,16457
+splashstrongexpotion,373,16457
+splashstrexpotion,373,16457
+splashstrengthextendedpot,373,16457
+splashstrongextendedpot,373,16457
+splashstrextendedpot,373,16457
+splashstrengthexpot,373,16457
+splashstrongexpot,373,16457
+splashstrexpot,373,16457
+splstrengthextendedpotion,373,16457
+splstrongextendedpotion,373,16457
+splstrextendedpotion,373,16457
+splstrengthexpotion,373,16457
+splstrongexpotion,373,16457
+splstrexpotion,373,16457
+splstrengthextendedpot,373,16457
+splstrongextendedpot,373,16457
+splstrextendedpot,373,16457
+splstrengthexpot,373,16457
+splstrongexpot,373,16457
+splstrexpot,373,16457
+spstepot,373,16457
+splashslownessextendedpotion,373,16458
+splashslowextenedpotion,373,16458
+splashslownessexpotion,373,16458
+splashslowexpotion,373,16458
+splashslownessextendedpot,373,16458
+splashslowextenedpot,373,16458
+splashslownessexpot,373,16458
+splashslowexpot,373,16458
+splslownessextendedpotion,373,16458
+splslowextenedpotion,373,16458
+splslownessexpotion,373,16458
+splslowexpotion,373,16458
+splslownessextendedpot,373,16458
+splslowextenedpot,373,16458
+splslownessexpot,373,16458
+splslowexpot,373,16458
+spslepot,373,16458
+splashwaterbreathingextendedpotion,373,16461
+splashwaterbreathextendedpotion,373,16461
+splashbreathingextendedpotion,373,16461
+splashbreathextendedpotion,373,16461
+splashwaterbreathingextendedpot,373,16461
+splashwaterbreathextendedpot,373,16461
+splashbreathingextendedpot,373,16461
+splashbreathextendedpot,373,16461
+splwaterbreathingextendedpotion,373,16461
+splwaterbreathextendedpotion,373,16461
+splbreathingextendedpotion,373,16461
+splbreathextendedpotion,373,16461
+splwaterbreathingextendedpot,373,16461
+splwaterbreathextendedpot,373,16461
+splbreathingextendedpot,373,16461
+splbreathextendedpot,373,16461
+splashwaterbreathingexpotion,373,16461
+splashwaterbreathexpotion,373,16461
+splashbreathingexpotion,373,16461
+splashbreathexpotion,373,16461
+splashwaterbreathingexpot,373,16461
+splashwaterbreathexpot,373,16461
+splashbreathingexpot,373,16461
+splashbreathexpot,373,16461
+splwaterbreathingexpotion,373,16461
+splwaterbreathexpotion,373,16461
+splbreathingexpotion,373,16461
+splbreathexpotion,373,16461
+splwaterbreathingexpot,373,16461
+splwaterbreathexpot,373,16461
+splbreathingexpot,373,16461
+splbreathexpot,373,16461
+spwbepot,373,16461
+splashinvisibilityextendedpotion,373,16462
+splashinvisibleextendedpotion,373,16462
+splashinvextendedpotion,373,16462
+splashinvisibilityextendedpot,373,16462
+splashinvisibleextendedpot,373,16462
+splashinvextendedpot,373,16462
+splashinvisibilityexpotion,373,16462
+splashinvisibleexpotion,373,16462
+splashinvexpotion,373,16462
+splashinvisibilityexpot,373,16462
+splashinvisibleexpot,373,16462
+splashinvexpot,373,16462
+splinvisibilityextendedpotion,373,16462
+splinvisibleextendedpotion,373,16462
+splinvextendedpotion,373,16462
+splinvisibilityextendedpot,373,16462
+splinvisibleextendedpot,373,16462
+splinvextendedpot,373,16462
+splinvisibilityexpotion,373,16462
+splinvisibleexpotion,373,16462
+splinvexpotion,373,16462
+splinvisibilityexpot,373,16462
+splinvisibleexpot,373,16462
+splinvexpot,373,16462
+spiepot,373,16462
+splashregenerationdualbitpotion,373,16481
+splashregeneratedualbitpotion,373,16481
+splashregendualbitpotion,373,16481
+splashregenerationdualbitpot,373,16481
+splashregeneratedualbitpot,373,16481
+splashregendualbitpot,373,16481
+splregenerationdualbitpotion,373,16481
+splregeneratedualbitpotion,373,16481
+splregendualbitpotion,373,16481
+splregenerationdualbitpot,373,16481
+splregeneratedualbitpot,373,16481
+splregendualbitpot,373,16481
+splashregenerationdbpotion,373,16481
+splashregeneratedbpotion,373,16481
+splashregendbpotion,373,16481
+splashregenerationdbpot,373,16481
+splashregeneratedbpot,373,16481
+splashregendbpot,373,16481
+splregenerationdbpotion,373,16481
+splregeneratedbpotion,373,16481
+splregendbpotion,373,16481
+splregenerationdbpot,373,16481
+splregeneratedbpot,373,16481
+splregendbpot,373,16481
+sprdbpot,373,16481
+splashswiftnessdualbitpotion,373,16482
+splashswiftdualbitpotion,373,16482
+splashspeeddualbitpotion,373,16482
+splashswiftnessdualbitpot,373,16482
+splashswiftdualbitpot,373,16482
+splashspeeddualbitpot,373,16482
+splswiftnessdualbitpotion,373,16482
+splswiftdualbitpotion,373,16482
+splspeeddualbitpotion,373,16482
+splswiftnessdualbitpot,373,16482
+splswiftdualbitpot,373,16482
+splspeeddualbitpot,373,16482
+splashswiftnessdbpotion,373,16482
+splashswiftdbpotion,373,16482
+splashspeeddbpotion,373,16482
+splashswiftnessdbpot,373,16482
+splashswiftdbpot,373,16482
+splashspeeddbpot,373,16482
+splswiftnessdbpotion,373,16482
+splswiftdbpotion,373,16482
+splspeeddbpotion,373,16482
+splswiftnessdbpot,373,16482
+splswiftdbpot,373,16482
+splspeeddbpot,373,16482
+spswdbpot,373,16482
+splashpoisondualbitpotion,373,16484
+splashaciddualbitpotion,373,16484
+splashpoisondualbitpot,373,16484
+splashaciddualbitpot,373,16484
+splpoisondualbitpotion,373,16484
+splaciddualbitpotion,373,16484
+splpoisondualbitpot,373,16484
+splaciddualbitpot,373,16484
+splashpoisondbpotion,373,16484
+splashaciddbpotion,373,16484
+splashpoisondbpot,373,16484
+splashaciddbpot,373,16484
+splpoisondbpotion,373,16484
+splaciddbpotion,373,16484
+splpoisondbpot,373,16484
+splaciddbpot,373,16484
+sppdbpot,373,16484
+splashstrengthdualbitpotion,373,16489
+splashstrongdualbitpotion,373,16489
+splashstrdualbitpotion,373,16489
+splashstrengthdualbitpot,373,16489
+splashstrongdualbitpot,373,16489
+splashstrdualbitpot,373,16489
+splstrengthdualbitpotion,373,16489
+splstrongdualbitpotion,373,16489
+splstrdualbitpotion,373,16489
+splstrengthdualbitpot,373,16489
+splstrongdualbitpot,373,16489
+splstrdualbitpot,373,16489
+splashstrengthdbpotion,373,16489
+splashstrongdbpotion,373,16489
+splashstrdbpotion,373,16489
+splashstrengthdbpot,373,16489
+splashstrongdbpot,373,16489
+splashstrdbpot,373,16489
+splstrengthdbpotion,373,16489
+splstrongdbpotion,373,16489
+splstrdbpotion,373,16489
+splstrengthdbpot,373,16489
+splstrongdbpot,373,16489
+splstrdbpot,373,16489
+spstdbpot,373,16489
+glassbottle,374,0
+bottle,374,0
+gbottle,374,0
+gvase,374,0
+vase,374,0
+glassvase,374,0
+emptyglassbottle,374,0
+emptybottle,374,0
+emptygbottle,374,0
+emptygvase,374,0
+emptyvase,374,0
+emptyglassvase,374,0
+eglassbottle,374,0
+ebottle,374,0
+egbottle,374,0
+egvase,374,0
+evase,374,0
+eglassvase,374,0
+spidereye,375,0
+eyeofspider,375,0
+seye,375,0
+fermentedspidereye,376,0
+craftedspidereye,376,0
+fspidereye,376,0
+cspidereye,376,0
+fermentedeyeofspider,376,0
+craftedeyeofspider,376,0
+feyeofspider,376,0
+ceyeofspider,376,0
+fermentedseye,376,0
+craftedseye,376,0
+fseye,376,0
+cseye,376,0
+blazepowder,377,0
+blazedust,377,0
+goldpowder,377,0
+golddust,377,0
+gdust,377,0
+gpowder,377,0
+bpowder,377,0
+bdust,377,0
+magmacream,378,0
+goldcream,378,0
+blazecream,378,0
+mcream,378,0
+gcream,378,0
+bcream,378,0
+combinedcream,378,0
+ccream,378,0
+bstand,379,0
+pstand,379,0
+brewingstand,379,0
+potionstand,379,0
+cauldron,380,0
+steelcauldron,380,0
+ironcauldron,380,0
+icauldron,380,0
+scauldron,380,0
+potioncauldron,380,0
+pcauldron,380,0
+eyeofender,381,0
+endereye,381,0
+endeye,381,0
+evilendereye,381,0
+evileyeofender,381,0
+evilenderpearl,381,0
+eeye,381,0
+eofender,381,0
+glisteringmelon,382,0
+speckledmelon,382,0
+goldmelon,382,0
+sparklymelon,382,0
+shiningmelon,382,0
+gmelon,382,0
+smelon,382,0
+creeperegg,383,50
+eggcreeper,383,50
+skeletonegg,383,51
+eggskeleton,383,51
+spideregg,383,52
+eggspider,383,52
+giantegg,383,53
+egggiant,383,53
+zombieegg,383,54
+eggzombie,383,54
+slimeegg,383,55
+eggslime,383,55
+ghastegg,383,56
+eggghast,383,56
+zombiepigmanegg,383,57
+zpigmanegg,383,57
+pigmanegg,383,57
+zombiepmanegg,383,57
+zpmanegg,383,57
+zombiepigmegg,383,57
+zpigmegg,383,57
+zombiepigegg,383,57
+zpigegg,383,57
+zombiepmegg,383,57
+zombiepegg,383,57
+eggzombiepigman,383,57
+eggzpigman,383,57
+eggpigman,383,57
+eggzombiepman,383,57
+eggzpman,383,57
+eggzombiepigm,383,57
+eggzpigm,383,57
+eggzombiepig,383,57
+eggzpig,383,57
+eggzombiepm,383,57
+eggzombiep,383,57
+endermanegg,383,58
+eggenderman,383,58
+eggcavespider,383,59
+cavespideregg,383,59
+silverfishegg,383,60
+eggsilverfish,383,60
+blazeegg,383,61
+eggblaze,383,61
+lavaslimeegg,383,62
+lavacubeegg,383,62
+magmacubeegg,383,62
+magmaslimeegg,383,62
+egglavaslime,383,62
+egglavacube,383,62
+eggmagmacube,383,62
+eggmagmaslime,383,62
+bategg,383,65
+eggbat,383,65
+witchegg,383,66
+eggwitch,383,66
+pigegg,383,90
+eggpig,383,90
+sheepegg,383,91
+eggsheep,383,91
+cowegg,383,92
+eggcow,383,92
+chickenegg,383,93
+eggchicken,383,93
+squidegg,383,94
+eggsquid,383,94
+wolfegg,383,95
+eggwolf,383,95
+mooshroomegg,383,96
+mushroomcowegg,383,96
+eggmooshroom,383,96
+eggmushroomcow,383,96
+snowgolemegg,383,97
+sgolemegg,383,97
+eggsnowgolem,383,97
+eggsgolem,383,97
+ocelotegg,383,98
+eggocelot,383,98
+irongolemegg,383,99
+igolemegg,383,99
+eggirongolem,383,99
+eggigolem,383,99
+egghorse,383,100
+horseegg,383,100
+villageregg,383,120
+eggvillager,383,120
+bottleofenchanting,384,0
+enchantingbottle,384,0
+expbottle,384,0
+xpbottle,384,0
+bottleexp,384,0
+bottlexp,384,0
+enchantbottle,384,0
+bottleenchanting,384,0
+bottleenchant,384,0
+bottleoenchanting,384,0
+firecharge,385,0
+fireball,385,0
+grenade,385,0
+bookandquill,386,0
+booknquill,386,0
+bookandfeather,386,0
+booknfeather,386,0
+writeablebook,386,0
+writtenbook,387,0
+readablebook,387,0
+sealedbook,387,0
+diary,387,0
+ownedbook,387,0
+emerald,388,0
+itemframe,389,0
+pictureframe,389,0
+iframe,389,0
+pframe,389,0
+flowerpot,390,0
+pot,390,0
+carrot,391,0
+potato,392,0
+rawpotato,392,0
+bakedpotato,393,0
+roastedpotato,393,0
+cookedpotato,393,0
+bakepotato,393,0
+roastpotato,393,0
+cookpotato,393,0
+bpotato,393,0
+rpotato,393,0
+cpotato,393,0
+poisonouspotato,394,0
+poisonpotato,394,0
+ppotato,394,0
+emptymap,395,0
+map,395,0
+goldencarrot,396,0
+goldcarrot,396,0
+gcarrot,396,0
+head,397,0
+skull,397,0
+skeletonhead,397,0
+headskeleton,397,0
+skeletonskull,397,0
+skullskeleton,397,0
+witherhead,397,1
+witherskeletonhead,397,1
+wskeletionhead,397,1
+headwither,397,1
+headwitherskeleton,397,1
+headwskeletion,397,1
+witherskull,397,1
+witherskeletonskull,397,1
+wskeletionskull,397,1
+skullwither,397,1
+skullwitherskeleton,397,1
+skullwskeletion,397,1
+zombiehead,397,2
+headzombie,397,2
+zombieskull,397,2
+skullzombie,397,2
+playerhead,397,3
+humanhead,397,3
+stevehead,397,3
+headplayer,397,3
+headhuman,397,3
+headsteve,397,3
+playerskull,397,3
+humanskull,397,3
+steveskull,397,3
+skullplayer,397,3
+skullhuman,397,3
+skullsteve,397,3
+creeperhead,397,4
+headcreeper,397,4
+creeperskull,397,4
+skullcreeper,397,4
+carrotonastick,398,0
+carrotonstick,398,0
+netherstar,399,0
+hellstar,399,0
+nstar,399,0
+hstar,399,0
+star,399,0
+pumpkinpie,400,0
+pumpkincake,400,0
+ppie,400,0
+pcake,400,0
+pie,400,0
+fireworkrocket,401,0
+fireworkmissle,401,0
+firework,401,0
+fworkrocket,401,0
+fworkmissle,401,0
+fwork,401,0
+fwrocket,401,0
+fwmissle,401,0
+fireworkstar,402,0
+fworkstar,402,0
+fwstar,402,0
+fireworkball,402,0
+fworkball,402,0
+fwball,402,0
+fireworkpowder,402,0
+fworkpowder,402,0
+fwpowder,402,0
+fireworkcharge,402,0
+fworkcharge,402,0
+fwcharge,402,0
+enchantedbook,403,0
+enchantmentbook,403,0
+enchantingbook,403,0
+enchantbook,403,0
+magicalbook,403,0
+magicbook,403,0
+ebook,403,0
+mbook,403,0
+redstonecomparator,404,0
+redstonecomparer,404,0
+redstonecompare,404,0
+rstonecomparator,404,0
+rstonecomparer,404,0
+rstonecompare,404,0
+redscomparator,404,0
+redscomparer,404,0
+redscompare,404,0
+rscomparator,404,0
+rscomparer,404,0
+rscompare,404,0
+comparator,404,0
+comparer,404,0
+compare,404,0
+netherbrick,405,0
+nbrick,405,0
+hellbrick,405,0
+deathbrick,405,0
+dbrick,405,0
+hbrick,405,0
+netherquartz,406,0
+deathquartz,406,0
+hellquartz,406,0
+nquartz,406,0
+dquartz,406,0
+hquartz,406,0
+quartz,406,0
+tntminecart,407,0
+dynamiteminecart,407,0
+dynamitemcart,407,0
+dynamitecart,407,0
+bombminecart,407,0
+bombmcart,407,0
+bombcart,407,0
+tntmcart,407,0
+tntcart,407,0
+dminecart,407,0
+dmcart,407,0
+dcart,407,0
+bminecart,407,0
+bmcart,407,0
+bcart,407,0
+tminecart,407,0
+tmcart,407,0
+tcart,407,0
+hopperminecart,408,0
+hoppermcart,408,0
+hoppercart,408,0
+hopminecart,408,0
+hopmcart,408,0
+hopcart,408,0
+hminecart,408,0
+hmcart,408,0
+hcart,408,0
+ironhorsearmor,417,0
+ironharmor,417,0
+ironarmor,417,0
+ihorsearmor,417,0
+iharmor,417,0
+iarmor,417,0
+steelhorsearmor,417,0
+steelharmor,417,0
+steelarmor,417,0
+shorsearmor,417,0
+sharmor,417,0
+sarmor,417,0
+goldenhorsearmor,418,0
+goldenharmor,418,0
+goldenarmor,418,0
+goldhorsearmor,418,0
+goldharmor,418,0
+goldarmor,418,0
+ghorsearmor,418,0
+gharmor,418,0
+garmor,418,0
+diamondhorsearmor,419,0
+diamondharmor,419,0
+diamondarmor,419,0
+dhorsearmor,419,0
+dharmor,419,0
+darmor,419,0
+crystalhorsearmor,419,0
+crystalharmor,419,0
+crystalarmor,419,0
+chorsearmor,419,0
+charmor,419,0
+carmor,419,0
+lead,420,0
+leash,420,0
+rope,420,0
+nametag,421,0
+tag,421,0
+commandblockminecart,422,0
+cmdblockminecart,422,0
+cblockminecart,422,0
+commandminecart,422,0
+cmdminecart,422,0
+cbminecart,422,0
+commandblockcart,422,0
+cmdblockcart,422,0
+cblockcart,422,0
+commandcart,422,0
+cmdcart,422,0
+cbcart,422,0
+13disc,2256,0
+goldmusicrecord,2256,0
+goldmusicdisk,2256,0
+goldmusicdisc,2256,0
+goldmusiccd,2256,0
+13musicrecord,2256,0
+13musicdisk,2256,0
+13musicdisc,2256,0
+13musiccd,2256,0
+gomusicrecord,2256,0
+gomusicdisk,2256,0
+gomusicdisc,2256,0
+gomusiccd,2256,0
+goldmrecord,2256,0
+goldmdisk,2256,0
+goldmdisc,2256,0
+goldmcd,2256,0
+13mrecord,2256,0
+13mdisk,2256,0
+13mdisc,2256,0
+13mcd,2256,0
+gomrecord,2256,0
+gomdisk,2256,0
+gomdisc,2256,0
+gomcd,2256,0
+goldrecord,2256,0
+golddisk,2256,0
+golddisc,2256,0
+goldcd,2256,0
+13record,2256,0
+13disk,2256,0
+13cd,2256,0
+gorecord,2256,0
+godisk,2256,0
+godisc,2256,0
+gocd,2256,0
+record1,2256,0
+disk1,2256,0
+disc1,2256,0
+cd1,2256,0
+1record,2256,0
+1disk,2256,0
+1disc,2256,0
+1cd,2256,0
+catdisc,2257,0
+greenmusicrecord,2257,0
+greenmusicdisk,2257,0
+greenmusicdisc,2257,0
+greenmusiccd,2257,0
+catmusicrecord,2257,0
+catmusicdisk,2257,0
+catmusicdisc,2257,0
+catmusiccd,2257,0
+grmusicrecord,2257,0
+grmusicdisk,2257,0
+grmusicdisc,2257,0
+grmusiccd,2257,0
+greenmrecord,2257,0
+greenmdisk,2257,0
+greenmdisc,2257,0
+greenmcd,2257,0
+catmrecord,2257,0
+catmdisk,2257,0
+catmdisc,2257,0
+catmcd,2257,0
+grmrecord,2257,0
+grmdisk,2257,0
+grmdisc,2257,0
+grmcd,2257,0
+greenrecord,2257,0
+greendisk,2257,0
+greendisc,2257,0
+greencd,2257,0
+catrecord,2257,0
+catdisk,2257,0
+catcd,2257,0
+grrecord,2257,0
+grdisk,2257,0
+grdisc,2257,0
+grcd,2257,0
+record2,2257,0
+disk2,2257,0
+disc2,2257,0
+cd2,2257,0
+2record,2257,0
+2disk,2257,0
+2disc,2257,0
+2cd,2257,0
+blocksdisc,2258,0
+orangemusicrecord,2258,0
+orangemusicdisk,2258,0
+orangemusicdisc,2258,0
+orangemusiccd,2258,0
+blocksmusicrecord,2258,0
+blocksmusicdisk,2258,0
+blocksmusicdisc,2258,0
+blocksmusiccd,2258,0
+ormusicrecord,2258,0
+ormusicdisk,2258,0
+ormusicdisc,2258,0
+ormusiccd,2258,0
+orangemrecord,2258,0
+orangemdisk,2258,0
+orangemdisc,2258,0
+orangemcd,2258,0
+blocksmrecord,2258,0
+blocksmdisk,2258,0
+blocksmdisc,2258,0
+blocksmcd,2258,0
+ormrecord,2258,0
+ormdisk,2258,0
+ormdisc,2258,0
+ormcd,2258,0
+orangerecord,2258,0
+orangedisk,2258,0
+orangedisc,2258,0
+orangecd,2258,0
+blocksrecord,2258,0
+blocksdisk,2258,0
+blockscd,2258,0
+orrecord,2258,0
+ordisk,2258,0
+ordisc,2258,0
+orcd,2258,0
+record3,2258,0
+disk3,2258,0
+disc3,2258,0
+cd3,2258,0
+3record,2258,0
+3disk,2258,0
+3disc,2258,0
+3cd,2258,0
+chirpdisc,2259,0
+redmusicrecord,2259,0
+redmusicdisk,2259,0
+redmusicdisc,2259,0
+redmusiccd,2259,0
+chirpmusicrecord,2259,0
+chirpmusicdisk,2259,0
+chirpmusicdisc,2259,0
+chirpmusiccd,2259,0
+remusicrecord,2259,0
+remusicdisk,2259,0
+remusicdisc,2259,0
+remusiccd,2259,0
+redmrecord,2259,0
+redmdisk,2259,0
+redmdisc,2259,0
+redmcd,2259,0
+chirpmrecord,2259,0
+chirpmdisk,2259,0
+chirpmdisc,2259,0
+chirpmcd,2259,0
+remrecord,2259,0
+remdisk,2259,0
+remdisc,2259,0
+remcd,2259,0
+redrecord,2259,0
+reddisk,2259,0
+reddisc,2259,0
+redcd,2259,0
+chirprecord,2259,0
+chirpdisk,2259,0
+chirpcd,2259,0
+rerecord,2259,0
+redisk,2259,0
+redisc,2259,0
+recd,2259,0
+record4,2259,0
+disk4,2259,0
+disc4,2259,0
+cd4,2259,0
+4record,2259,0
+4disk,2259,0
+4disc,2259,0
+4cd,2259,0
+fardisc,2260,0
+lightgreenmusicrecord,2260,0
+lightgreenmusicdisk,2260,0
+lightgreenmusicdisc,2260,0
+lightgreenmusiccd,2260,0
+lgreenmusicrecord,2260,0
+lgreenmusicdisk,2260,0
+lgreenmusicdisc,2260,0
+lgreenmusiccd,2260,0
+lightgrmusicrecord,2260,0
+lightgrmusicdisk,2260,0
+lightgrmusicdisc,2260,0
+lightgrmusiccd,2260,0
+farmusicrecord,2260,0
+farmusicdisk,2260,0
+farmusicdisc,2260,0
+farmusiccd,2260,0
+lgrmusicrecord,2260,0
+lgrmusicdisk,2260,0
+lgrmusicdisc,2260,0
+lgrmusiccd,2260,0
+lightgreenmrecord,2260,0
+lightgreenmdisk,2260,0
+lightgreenmdisc,2260,0
+lightgreenmcd,2260,0
+lgreenmrecord,2260,0
+lgreenmdisk,2260,0
+lgreenmdisc,2260,0
+lgreenmcd,2260,0
+lightgrmrecord,2260,0
+lightgrmdisk,2260,0
+lightgrmdisc,2260,0
+lightgrmcd,2260,0
+farmrecord,2260,0
+farmdisk,2260,0
+farmdisc,2260,0
+farmcd,2260,0
+lgrmrecord,2260,0
+lgrmdisk,2260,0
+lgrmdisc,2260,0
+lgrmcd,2260,0
+lightgreenrecord,2260,0
+lightgreendisk,2260,0
+lightgreendisc,2260,0
+lightgreencd,2260,0
+lgreenrecord,2260,0
+lgreendisk,2260,0
+lgreendisc,2260,0
+lgreencd,2260,0
+lightgrrecord,2260,0
+lightgrdisk,2260,0
+lightgrdisc,2260,0
+lightgrcd,2260,0
+farrecord,2260,0
+fardisk,2260,0
+farcd,2260,0
+lgrrecord,2260,0
+lgrdisk,2260,0
+lgrdisc,2260,0
+lgrcd,2260,0
+record5,2260,0
+disk5,2260,0
+disc5,2260,0
+cd5,2260,0
+5record,2260,0
+5disk,2260,0
+5disc,2260,0
+5cd,2260,0
+malldisc,2261,0
+purplemusicrecord,2261,0
+purplemusicdisk,2261,0
+purplemusicdisc,2261,0
+purplemusiccd,2261,0
+mallmusicrecord,2261,0
+mallmusicdisk,2261,0
+mallmusicdisc,2261,0
+mallmusiccd,2261,0
+pumusicrecord,2261,0
+pumusicdisk,2261,0
+pumusicdisc,2261,0
+pumusiccd,2261,0
+purplemrecord,2261,0
+purplemdisk,2261,0
+purplemdisc,2261,0
+purplemcd,2261,0
+mallmrecord,2261,0
+mallmdisk,2261,0
+mallmdisc,2261,0
+mallmcd,2261,0
+pumrecord,2261,0
+pumdisk,2261,0
+pumdisc,2261,0
+pumcd,2261,0
+purplerecord,2261,0
+purpledisk,2261,0
+purpledisc,2261,0
+purplecd,2261,0
+mallrecord,2261,0
+malldisk,2261,0
+mallcd,2261,0
+purecord,2261,0
+pudisk,2261,0
+pudisc,2261,0
+pucd,2261,0
+record6,2261,0
+disk6,2261,0
+disc6,2261,0
+cd6,2261,0
+6record,2261,0
+6disk,2261,0
+6disc,2261,0
+6cd,2261,0
+mellohidisc,2262,0
+pinkmusicrecord,2262,0
+pinkmusicdisk,2262,0
+pinkmusicdisc,2262,0
+pinkmusiccd,2262,0
+mellohimusicrecord,2262,0
+mellohimusicdisk,2262,0
+mellohimusicdisc,2262,0
+mellohimusiccd,2262,0
+pimusicrecord,2262,0
+pimusicdisk,2262,0
+pimusicdisc,2262,0
+pimusiccd,2262,0
+pinkmrecord,2262,0
+pinkmdisk,2262,0
+pinkmdisc,2262,0
+pinkmcd,2262,0
+mellohimrecord,2262,0
+mellohimdisk,2262,0
+mellohimdisc,2262,0
+mellohimcd,2262,0
+pimrecord,2262,0
+pimdisk,2262,0
+pimdisc,2262,0
+pimcd,2262,0
+pinkrecord,2262,0
+pinkdisk,2262,0
+pinkdisc,2262,0
+pinkcd,2262,0
+mellohirecord,2262,0
+mellohidisk,2262,0
+mellohicd,2262,0
+pirecord,2262,0
+pidisk,2262,0
+pidisc,2262,0
+picd,2262,0
+record7,2262,0
+disk7,2262,0
+disc7,2262,0
+cd7,2262,0
+7record,2262,0
+7disk,2262,0
+7disc,2262,0
+7cd,2262,0
+staldisc,2263,0
+blackmusicrecord,2263,0
+blackmusicdisk,2263,0
+blackmusicdisc,2263,0
+blackmusiccd,2263,0
+stalmusicrecord,2263,0
+stalmusicdisk,2263,0
+stalmusicdisc,2263,0
+stalmusiccd,2263,0
+blmusicrecord,2263,0
+blmusicdisk,2263,0
+blmusicdisc,2263,0
+blmusiccd,2263,0
+blackmrecord,2263,0
+blackmdisk,2263,0
+blackmdisc,2263,0
+blackmcd,2263,0
+stalmrecord,2263,0
+stalmdisk,2263,0
+stalmdisc,2263,0
+stalmcd,2263,0
+blmrecord,2263,0
+blmdisk,2263,0
+blmdisc,2263,0
+blmcd,2263,0
+blackrecord,2263,0
+blackdisk,2263,0
+blackdisc,2263,0
+blackcd,2263,0
+stalrecord,2263,0
+staldisk,2263,0
+stalcd,2263,0
+blrecord,2263,0
+bldisk,2263,0
+bldisc,2263,0
+blcd,2263,0
+record8,2263,0
+disk8,2263,0
+disc8,2263,0
+cd8,2263,0
+8record,2263,0
+8disk,2263,0
+8disc,2263,0
+8cd,2263,0
+straddisc,2264,0
+whitemusicrecord,2264,0
+whitemusicdisk,2264,0
+whitemusicdisc,2264,0
+whitemusiccd,2264,0
+stradmusicrecord,2264,0
+stradmusicdisk,2264,0
+stradmusicdisc,2264,0
+stradmusiccd,2264,0
+whmusicrecord,2264,0
+whmusicdisk,2264,0
+whmusicdisc,2264,0
+whmusiccd,2264,0
+whitemrecord,2264,0
+whitemdisk,2264,0
+whitemdisc,2264,0
+whitemcd,2264,0
+stradmrecord,2264,0
+stradmdisk,2264,0
+stradmdisc,2264,0
+stradmcd,2264,0
+whmrecord,2264,0
+whmdisk,2264,0
+whmdisc,2264,0
+whmcd,2264,0
+whiterecord,2264,0
+whitedisk,2264,0
+whitedisc,2264,0
+whitecd,2264,0
+stradrecord,2264,0
+straddisk,2264,0
+stradcd,2264,0
+whrecord,2264,0
+whdisk,2264,0
+whdisc,2264,0
+whcd,2264,0
+record9,2264,0
+disk9,2264,0
+disc9,2264,0
+cd9,2264,0
+9record,2264,0
+9disk,2264,0
+9disc,2264,0
+9cd,2264,0
+warddisc,2265,0
+darkgreenmusicrecord,2265,0
+darkgreenmusicdisk,2265,0
+darkgreenmusicdisc,2265,0
+darkgreenmusiccd,2265,0
+dgreenmusicrecord,2265,0
+dgreenmusicdisk,2265,0
+dgreenmusicdisc,2265,0
+dgreenmusiccd,2265,0
+darkgrmusicrecord,2265,0
+darkgrmusicdisk,2265,0
+darkgrmusicdisc,2265,0
+darkgrmusiccd,2265,0
+wardmusicrecord,2265,0
+wardmusicdisk,2265,0
+wardmusicdisc,2265,0
+wardmusiccd,2265,0
+dgrmusicrecord,2265,0
+dgrmusicdisk,2265,0
+dgrmusicdisc,2265,0
+dgrmusiccd,2265,0
+darkgreenmrecord,2265,0
+darkgreenmdisk,2265,0
+darkgreenmdisc,2265,0
+darkgreenmcd,2265,0
+dgreenmrecord,2265,0
+dgreenmdisk,2265,0
+dgreenmdisc,2265,0
+dgreenmcd,2265,0
+darkgrmrecord,2265,0
+darkgrmdisk,2265,0
+darkgrmdisc,2265,0
+darkgrmcd,2265,0
+wardmrecord,2265,0
+wardmdisk,2265,0
+wardmdisc,2265,0
+wardmcd,2265,0
+dgrmrecord,2265,0
+dgrmdisk,2265,0
+dgrmdisc,2265,0
+dgrmcd,2265,0
+darkgreenrecord,2265,0
+darkgreendisk,2265,0
+darkgreendisc,2265,0
+darkgreencd,2265,0
+dgreenrecord,2265,0
+dgreendisk,2265,0
+dgreendisc,2265,0
+dgreencd,2265,0
+darkgrrecord,2265,0
+darkgrdisk,2265,0
+darkgrdisc,2265,0
+darkgrcd,2265,0
+wardrecord,2265,0
+warddisk,2265,0
+wardcd,2265,0
+dgrrecord,2265,0
+dgrdisk,2265,0
+dgrdisc,2265,0
+dgrcd,2265,0
+record10,2265,0
+disk10,2265,0
+disc10,2265,0
+cd10,2265,0
+10record,2265,0
+10disk,2265,0
+10disc,2265,0
+10cd,2265,0
+11disc,2266,0
+crackedmusicrecord,2266,0
+crackedmusicdisk,2266,0
+crackedmusicdisc,2266,0
+crackedmusiccd,2266,0
+crackmusicrecord,2266,0
+crackmusicdisk,2266,0
+crackmusicdisc,2266,0
+crackmusiccd,2266,0
+11musicrecord,2266,0
+11musicdisk,2266,0
+11musicdisc,2266,0
+11musiccd,2266,0
+cmusicrecord,2266,0
+cmusicdisk,2266,0
+cmusicdisc,2266,0
+cmusiccd,2266,0
+crackedmrecord,2266,0
+crackedmdisk,2266,0
+crackedmdisc,2266,0
+crackedmcd,2266,0
+crackmrecord,2266,0
+crackmdisk,2266,0
+crackmdisc,2266,0
+crackmcd,2266,0
+11mrecord,2266,0
+11mdisk,2266,0
+11mdisc,2266,0
+11mcd,2266,0
+cmrecord,2266,0
+cmdisk,2266,0
+cmdisc,2266,0
+cmcd,2266,0
+crackedrecord,2266,0
+crackeddisk,2266,0
+crackeddisc,2266,0
+crackedcd,2266,0
+crackrecord,2266,0
+crackdisk,2266,0
+crackdisc,2266,0
+crackcd,2266,0
+crecord,2266,0
+cdisk,2266,0
+cdisc,2266,0
+ccd,2266,0
+record11,2266,0
+disk11,2266,0
+disc11,2266,0
+cd11,2266,0
+11record,2266,0
+11disk,2266,0
+11cd,2266,0
+waitdisc,2267,0
+waitmusicrecord,2267,0
+waitmusicdisk,2267,0
+waitmusicdisc,2267,0
+waitmusiccd,2267,0
+bluemusicrecord,2267,0
+bluemusicdisk,2267,0
+bluemusicdisc,2267,0
+bluemusiccd,2267,0
+12musicrecord,2267,0
+12musicdisk,2267,0
+12musicdisc,2267,0
+12musiccd,2267,0
+cyanmusicrecord,2267,0
+cyanmusicdisk,2267,0
+cyanmusicdisc,2267,0
+cyanmusiccd,2267,0
+waitmrecord,2267,0
+waitmdisk,2267,0
+waitmdisc,2267,0
+waitmcd,2267,0
+bluemrecord,2267,0
+bluemdisk,2267,0
+bluemdisc,2267,0
+bluemcd,2267,0
+12mrecord,2267,0
+12mdisk,2267,0
+12mdisc,2267,0
+12mcd,2267,0
+cyanmrecord,2267,0
+cyanmdisk,2267,0
+cyanmdisc,2267,0
+cyanmcd,2267,0
+waitrecord,2267,0
+waitdisk,2267,0
+waitcd,2267,0
+bluerecord,2267,0
+bluedisk,2267,0
+bluedisc,2267,0
+bluecd,2267,0
+cyanrecord,2267,0
+cyandisk,2267,0
+cyandisc,2267,0
+cyancd,2267,0
+record12,2267,0
+disk12,2267,0
+disc12,2267,0
+cd12,2267,0
+12record,2267,0
+12disk,2267,0
+12disc,2267,0
+12cd,2267,0
+#9024e88d64262f1c5ea92df8399fa658
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/bin/lives.yml b/WenjaPvP - HCFactions/bin/lives.yml
new file mode 100644
index 0000000..04ec367
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/lives.yml
@@ -0,0 +1 @@
+lives: {}
diff --git a/WenjaPvP - HCFactions/bin/locale.yml b/WenjaPvP - HCFactions/bin/locale.yml
new file mode 100644
index 0000000..625a683
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/locale.yml
@@ -0,0 +1 @@
+SCOREBOARD.TITLE: "&6&lHCGames"
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/bin/org/apache/commons/collections4/overview.html b/WenjaPvP - HCFactions/bin/org/apache/commons/collections4/overview.html
new file mode 100644
index 0000000..9a664e7
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/org/apache/commons/collections4/overview.html
@@ -0,0 +1,113 @@
+
+
+
+
+ Commons-Collections contains implementations, enhancements and utilities
+ that complement the Java Collections Framework.
+
+
+ The Apache Commons Collections Framework component adds a significant
+ amount of enhancements to the standard JDK collections. These enhancements
+ come in the form of new interfaces, new implementations and utility classes.
+
+
+ See also the java.util
package for the standard Java collections.
+
+
+ Main features
+
+ Commons-Collections defines a number of key interfaces:
+
+
+
+ Interface Description
+
+
+
+ {@link org.apache.commons.collections.Bag}
+
+
+ A new Collection
subinterface that stores each object together
+ with the number of occurrences. Methods are provided to get the number of
+ occurrences, and to add and remove a certain number of that object.
+
+
+
+
+ {@link org.apache.commons.collections.Buffer}
+
+
+ A new Collection
subinterface that allows objects to be removed
+ in some well-defined order. Methods enable the next item to be peeked and removed.
+
+
+
+
+ {@link org.apache.commons.collections.BidiMap}
+
+
+ A new Map
subinterface that allows lookup from key to value and
+ from value to key with equal ease.
+
+
+
+
+ {@link org.apache.commons.collections.OrderedMap}
+
+
+ A new Map
subinterface that is used when a map has an order, but is
+ not sorted. Methods enable bidirectional iteration through the map.
+
+
+
+
+ {@link org.apache.commons.collections.MapIterator}
+
+
+ A new Iterator
subinterface specially designed for maps. This iterator
+ avoids the need for entrySet iteration of a map, and is simpler to use.
+
+
+
+
+ {@link org.apache.commons.collections.ResettableIterator}
+
+
+ A new Iterator
subinterface that allows the iteration to be reset back
+ to the start. Many iterators in this library have this functionality.
+
+
+
+
+ {@link org.apache.commons.collections.Closure}
+ {@link org.apache.commons.collections.Predicate}
+ {@link org.apache.commons.collections.Transformer}
+ {@link org.apache.commons.collections.Factory}
+
+
+ A group of functor interfaces that provide plugin behaviour to various
+ collections and utilities.
+
+
+
+
+ In addition to the interfaces, there are many implementations.
+ Consult each subpackage for full details of these.
+
+
+
diff --git a/WenjaPvP - HCFactions/bin/plugin.yml b/WenjaPvP - HCFactions/bin/plugin.yml
new file mode 100644
index 0000000..4662a5c
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/plugin.yml
@@ -0,0 +1,84 @@
+name: WenjaPvPHCF
+version: 1.1-RELEASE
+description: "Custom HCFCore Forked by Gender"
+author: DoctorDark, Mason
+main: server.wenjapvp.hcf.HCF
+softdepend: [ProtocolLib]
+commands:
+ hcf:
+ spawn:
+ enderdragon:
+ hub:
+ this:
+ playtime:
+ cobble:
+ staffinfo:
+ aliases: [staffbaninfo]
+ crowgive:
+ aliases: [crowbar, crowbargive]
+ wenja:
+ hcfhelp:
+ aliases: [help, ehelp]
+ conquest:
+ description: Command used to handle Conquest events.
+ economy:
+ aliases: [$, bal, money, eco, econ]
+ description: Command used to modify the economy.
+ eotw:
+ aliases: [endoftheworld]
+ description: Sets if the server is in End of the World mode.
+ event:
+ description: Command used to manage minigame events.
+ faction:
+ aliases: [f, fac]
+ description: Faction related commands.
+ gopple:
+ description: Command to check remaining OP apple cooldown time.
+ aliases: [opple, goppletimer, goppletime, oppletimer, oppletime]
+ hcf:
+ aliases: [hardcorefactions, hcfactions]
+ koth:
+ description: Make or delete KotH arenas.
+ lives:
+ description: Management of lives or deathbans.
+ location:
+ aliases: [loc]
+ description: Check the faction location of a player.
+ logout:
+ aliases: [disconnect]
+ description: Command to safely logout without an NPC spawning.
+ mapkit:
+ aliases: [viewkit]
+ description: Used to check the current map restrictions.
+ pay:
+ aliases: [p2p]
+ description: Allow players to pay money.
+ pvptimer:
+ aliases: [pvp]
+ description: Command to enable or disable pvp timer protection.
+ regen:
+ description: Check ETA until a faction is able to regenerate DTR.
+ servertime:
+ description: Checks the date and time of server.
+ sotw:
+ aliases: [startoftheworld]
+ description: Command used to manage start of the world.
+ spawncannon:
+ aliases: [cannon, playercannon]
+ description: Shoots you into the warzone.
+ staffrevive:
+ description: Command used by staff to revive players.
+ timer:
+ description: Command to manage timers.
+ togglebroadcasts:
+ aliases: [tb]
+ description: Toggle found diamond ore notifications.
+ togglecapzoneentry:
+ aliases: [togglecapentry]
+ description: Command used to hide or show capture zone entry messages.
+ togglelightning:
+ aliases: [lightningtoggle, togglestrikes]
+ description: Toggles the lightning strikes for when a player dies.
+ togglesidebar:
+ aliases: [sidebartoggle, sidebar, hud, togglehud]
+ description: Toggles the scoreboard timers displayed on sidebar.
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/bin/settings.yml b/WenjaPvP - HCFactions/bin/settings.yml
new file mode 100644
index 0000000..d2fbb87
--- /dev/null
+++ b/WenjaPvP - HCFactions/bin/settings.yml
@@ -0,0 +1,106 @@
+disable_obsidian_generators: true
+
+server_time_zone: "EST"
+warzone_radius: 400
+donate_url: freshcrafthcf.us/shop"
+
+spawn_buffer: 128
+map_number: 3
+
+kit_map: false
+
+disallowed_faction_names:
+ - "kohieotw"
+ - "kohisotw"
+ - "hcteams"
+ - "hcteamsseotw"
+ - "hcteamssotw"
+ - "para"
+ - "parahcf"
+ - "parasotw"
+ - "paraeotw"
+
+enchantment_limits:
+ PROTECTION_ENVIRONMENTAL: 1
+ DAMAGE_ALL: 1
+ ARROW_KNOCKBACK: 0
+ KNOCKBACK: 0
+ FIRE_ASPECT: 0
+ THORNS: 0
+ ARROW_FIRE: 1
+ ARROW_DAMAGE: 3
+
+potion_limits:
+ STRENGTH: 0
+ WEAKNESS: 0
+ SLOWNESS: 0
+ INVISIBILITY: 0
+ POISON: 0
+
+road_lengths:
+ NORMAL: 4000
+ NETHER: 4000
+
+border_sizes:
+ NORMAL: 2000
+ NETHER: 1000
+ THE_END: 1500
+
+spawn_radius_map:
+ NORMAL: 50
+ NETHER: 25
+ THE_END: 15
+
+diamond_ore_alerts: false
+
+subclaim_name_characters_min: 3
+subclaim_name_characters_max: 16
+
+faction_name_characters_min: 3
+faction_name_characters_max: 16
+max_members_per_faction: 15
+
+road_distance: 2500
+road_min_height: 0
+road_max_height: 256
+
+end_portal_radius: 20
+end_portal_center: 750
+
+#milliseconds, default 1hour
+default_deathban_duration: 3600000
+
+teammate_colour: "DARK_GREEN"
+ally_colour: "LIGHT_PURPLE"
+enemy_colour: "YELLOW"
+
+safezone_colour: "GREEN"
+road_colour: "RED"
+warzone_colour: "RED"
+wilderness_colour: "GRAY"
+
+scoreboard_title: "&6&lHQPots &c[Map 1]"
+max_allies_per_faction: 1
+max_claims_per_faction: 8
+allow_claiming_besides_roads: false
+
+dtr_millis_between_updates: 45000
+
+dtr_increment_between_updates: 0.1
+maximum_dtr: 6.0
+
+exp_multiplier_general: 2.0
+exp_multiplier_fishing: 2.0
+exp_multiplier_smelting: 2.0
+exp_multiplier_looting_per_level: 6.0
+exp_multiplier_luck_per_level: 1.5
+exp_multiplier_fortune_per_level: 1.5
+
+conquest_point_loss_per_death: 30
+conquest_required_win_points: 300
+
+found_diamonds_alerts: true
+combat_log_despawn_ticks: 600
+combat_log_prevention_enabled: true
+
+
diff --git a/WenjaPvP - HCFactions/bin/timers.yml b/WenjaPvP - HCFactions/bin/timers.yml
new file mode 100644
index 0000000..e69de29
diff --git a/WenjaPvP - HCFactions/classes/artifacts/HCFactions_jar/WenjaPvP - HCF - BetaMap.jar b/WenjaPvP - HCFactions/classes/artifacts/HCFactions_jar/WenjaPvP - HCF - BetaMap.jar
new file mode 100644
index 0000000..c05dc8e
Binary files /dev/null and b/WenjaPvP - HCFactions/classes/artifacts/HCFactions_jar/WenjaPvP - HCF - BetaMap.jar differ
diff --git a/WenjaPvP - HCFactions/locale.yml b/WenjaPvP - HCFactions/locale.yml
new file mode 100644
index 0000000..e69de29
diff --git a/WenjaPvP - HCFactions/src/balances.yml b/WenjaPvP - HCFactions/src/balances.yml
new file mode 100644
index 0000000..18e0854
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/balances.yml
@@ -0,0 +1 @@
+balances: {}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/FluentIterableCompat.java b/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/FluentIterableCompat.java
new file mode 100644
index 0000000..947ec70
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/FluentIterableCompat.java
@@ -0,0 +1,47 @@
+package com.doctordark.compat.com.google.common.collect;
+
+import com.google.common.annotations.*;
+import java.util.*;
+import javax.annotation.*;
+import com.google.common.base.*;
+import com.google.common.collect.*;
+
+@GwtCompatible(emulated = true)
+public abstract class FluentIterableCompat implements Iterable {
+ private final Iterable iterable;
+
+ FluentIterableCompat(final Iterable iterable) {
+ this.iterable = (Iterable) Preconditions.checkNotNull((Object) iterable);
+ }
+
+ @CheckReturnValue
+ public static FluentIterableCompat from(final Iterable iterable) {
+ return (iterable instanceof FluentIterableCompat) ? ((FluentIterableCompat) iterable) : new FluentIterableCompat(iterable) {
+ @Override
+ public Iterator iterator() {
+ return iterable.iterator();
+ }
+ };
+ }
+
+ @CheckReturnValue
+ @Override
+ public String toString() {
+ return Iterables.toString((Iterable) this.iterable);
+ }
+
+ @CheckReturnValue
+ public final FluentIterableCompat filter(final Predicate super E> predicate) {
+ return from((Iterable) Iterables.filter((Iterable) this.iterable, (Predicate) predicate));
+ }
+
+ @CheckReturnValue
+ public final FluentIterableCompat transform(final Function super E, T> function) {
+ return from((Iterable) Iterables.transform((Iterable) this.iterable, (Function) function));
+ }
+
+ @CheckReturnValue
+ public final ImmutableList toList() {
+ return (ImmutableList) ImmutableList.copyOf((Iterable) this.iterable);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/GuavaCompat.java b/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/GuavaCompat.java
new file mode 100644
index 0000000..2b8a9d9
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/compat/com/google/common/collect/GuavaCompat.java
@@ -0,0 +1,20 @@
+package com.doctordark.compat.com.google.common.collect;
+
+import com.google.common.base.*;
+import javax.annotation.*;
+
+public class GuavaCompat {
+ public static > Optional getIfPresent(final Class enumClass, final String value) {
+ Preconditions.checkNotNull((Object) enumClass);
+ Preconditions.checkNotNull((Object) value);
+ try {
+ return (Optional) Optional.of(Enum.valueOf(enumClass, value));
+ } catch (IllegalArgumentException iae) {
+ return Optional.absent();
+ }
+ }
+
+ public static T firstNonNull(@Nullable final T first, @Nullable final T second) {
+ return (T) ((first != null) ? first : Preconditions.checkNotNull(second));
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BaseConstants.java b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BaseConstants.java
new file mode 100644
index 0000000..eb7b0d4
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BaseConstants.java
@@ -0,0 +1,11 @@
+package com.doctordark.internal.com.doctordark.base;
+
+import org.bukkit.*;
+
+public final class BaseConstants {
+ public static final String PLAYER_WITH_NAME_OR_UUID_NOT_FOUND;
+
+ static {
+ PLAYER_WITH_NAME_OR_UUID_NOT_FOUND = ChatColor.GOLD + "Player with name or UUID '" + ChatColor.WHITE + "%1$s" + ChatColor.GOLD + "' not found.";
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BasePlugin.java b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BasePlugin.java
new file mode 100644
index 0000000..71270fd
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/BasePlugin.java
@@ -0,0 +1,67 @@
+package com.doctordark.internal.com.doctordark.base;
+
+import java.util.*;
+import org.bukkit.plugin.java.*;
+import com.doctordark.util.*;
+import org.bukkit.configuration.serialization.*;
+import com.doctordark.util.cuboid.*;
+import com.doctordark.util.itemdb.*;
+import com.doctordark.util.chat.*;
+import java.io.*;
+import org.bukkit.block.*;
+
+public class BasePlugin {
+ private Random random;
+ private ItemDb itemDb;
+ private SignHandler signHandler;
+ private static BasePlugin plugin;
+ private JavaPlugin javaPlugin;
+
+ private BasePlugin() {
+ this.random = new Random();
+ }
+
+ public void init(final JavaPlugin plugin) {
+ this.javaPlugin = plugin;
+ ConfigurationSerialization.registerClass((Class) PersistableLocation.class);
+ ConfigurationSerialization.registerClass((Class) Cuboid.class);
+ ConfigurationSerialization.registerClass((Class) NamedCuboid.class);
+ this.itemDb = new SimpleItemDb(plugin);
+ this.signHandler = new SignHandler(plugin);
+ try {
+ Lang.initialize("en_US");
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void disable() {
+ this.signHandler.cancelTasks(null);
+ this.javaPlugin = null;
+ BasePlugin.plugin = null;
+ }
+
+ public Random getRandom() {
+ return this.random;
+ }
+
+ public ItemDb getItemDb() {
+ return this.itemDb;
+ }
+
+ public SignHandler getSignHandler() {
+ return this.signHandler;
+ }
+
+ public static BasePlugin getPlugin() {
+ return BasePlugin.plugin;
+ }
+
+ public JavaPlugin getJavaPlugin() {
+ return this.javaPlugin;
+ }
+
+ static {
+ BasePlugin.plugin = new BasePlugin();
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/Callback.java b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/Callback.java
new file mode 100644
index 0000000..2c9d96a
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/internal/com/doctordark/base/Callback.java
@@ -0,0 +1,5 @@
+package com.doctordark.internal.com.doctordark.base;
+
+public interface Callback {
+ void done(final V p0, final Throwable p1);
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/BukkitUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/BukkitUtils.java
new file mode 100644
index 0000000..92d8d7b
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/BukkitUtils.java
@@ -0,0 +1,173 @@
+package com.doctordark.util;
+
+import com.google.common.collect.*;
+
+import gnu.trove.list.*;
+
+import java.util.stream.*;
+
+import org.bukkit.command.*;
+import org.bukkit.craftbukkit.v1_7_R4.entity.*;
+
+import net.minecraft.server.v1_7_R4.*;
+
+import org.bukkit.event.entity.*;
+import org.bukkit.projectiles.*;
+import org.bukkit.*;
+import org.bukkit.World;
+import org.bukkit.block.*;
+import org.bukkit.block.Block;
+import org.bukkit.potion.*;
+import org.bukkit.entity.*;
+import org.bukkit.entity.Entity;
+
+import java.util.*;
+
+import com.google.common.base.*;
+
+import gnu.trove.list.array.*;
+
+public final class BukkitUtils {
+ private static final ImmutableMap CHAT_DYE_COLOUR_MAP;
+ private static final ImmutableSet DEBUFF_TYPES;
+ private static final int DEFAULT_COMPLETION_LIMIT = 80;
+ private static final String STRAIGHT_LINE_TEMPLATE;
+ public static final String STRAIGHT_LINE_DEFAULT;
+ private static final TCharList COLOUR_CHARACTER_LIST;
+
+ public static int countColoursUsed(final String id, final boolean ignoreDuplicates) {
+ int count = 0;
+ final Set found = new HashSet();
+ for (int i = 1; i < id.length(); ++i) {
+ final char current = id.charAt(i);
+ if (BukkitUtils.COLOUR_CHARACTER_LIST.contains(current) && id.charAt(i - 1) == '&' && (ignoreDuplicates || found.add(ChatColor.getByChar(current)))) {
+ ++count;
+ }
+ }
+ return count;
+ }
+
+ public static List getCompletions(final String[] args, final List input) {
+ return getCompletions(args, input, 80);
+ }
+
+ public static List getCompletions(final String[] args, final List input, final int limit) {
+ Preconditions.checkNotNull((Object) args);
+ Preconditions.checkArgument(args.length != 0);
+ final String argument = args[args.length - 1];
+ return input.stream().filter(string -> string.regionMatches(true, 0, argument, 0, argument.length())).limit(limit).collect(Collectors.toList());
+ }
+
+ public static String getDisplayName(final CommandSender sender) {
+ Preconditions.checkNotNull((Object) sender);
+ return (sender instanceof Player) ? ((Player) sender).getDisplayName() : sender.getName();
+ }
+
+ public static long getIdleTime(final Player player) {
+ Preconditions.checkNotNull((Object) player);
+ final long idleTime = ((CraftPlayer) player).getHandle().x();
+ return (idleTime > 0L) ? (MinecraftServer.ar() - idleTime) : 0L;
+ }
+
+ public static DyeColor toDyeColor(final ChatColor colour) {
+ return (DyeColor) BukkitUtils.CHAT_DYE_COLOUR_MAP.get((Object) colour);
+ }
+
+ public static Player getFinalAttacker(final EntityDamageEvent ede, final boolean ignoreSelf) {
+ Player attacker = null;
+ if (ede instanceof EntityDamageByEntityEvent) {
+ final EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) ede;
+ final Entity damager = event.getDamager();
+ if (event.getDamager() instanceof Player) {
+ attacker = (Player) damager;
+ } else if (event.getDamager() instanceof Projectile) {
+ final Projectile projectile = (Projectile) damager;
+ final ProjectileSource shooter = projectile.getShooter();
+ if (shooter instanceof Player) {
+ attacker = (Player) shooter;
+ }
+ }
+ if (attacker != null && ignoreSelf && event.getEntity().equals(attacker)) {
+ attacker = null;
+ }
+ }
+ return attacker;
+ }
+
+ public static Player playerWithNameOrUUID(final String string) {
+ if (string == null) {
+ return null;
+ }
+ return JavaUtils.isUUID(string) ? Bukkit.getPlayer(UUID.fromString(string)) : Bukkit.getPlayer(string);
+ }
+
+ @Deprecated
+ public static OfflinePlayer offlinePlayerWithNameOrUUID(final String string) {
+ if (string == null) {
+ return null;
+ }
+ return JavaUtils.isUUID(string) ? Bukkit.getOfflinePlayer(UUID.fromString(string)) : Bukkit.getOfflinePlayer(string);
+ }
+
+ public static boolean isWithinX(final Location location, final Location other, final double distance) {
+ return location.getWorld().equals(other.getWorld()) && Math.abs(other.getX() - location.getX()) <= distance && Math.abs(other.getZ() - location.getZ()) <= distance;
+ }
+
+ public static Location getHighestLocation(final Location origin) {
+ return getHighestLocation(origin, null);
+ }
+
+ public static Location getHighestLocation(final Location origin, final Location def) {
+ Preconditions.checkNotNull((Object) origin, (Object) "The location cannot be null");
+ final Location cloned = origin.clone();
+ final World world = cloned.getWorld();
+ final int x = cloned.getBlockX();
+ int y = world.getMaxHeight();
+ final int z = cloned.getBlockZ();
+ while (y > origin.getBlockY()) {
+ final Block block = world.getBlockAt(x, --y, z);
+ if (!block.isEmpty()) {
+ final Location next = block.getLocation();
+ next.setPitch(origin.getPitch());
+ next.setYaw(origin.getYaw());
+ return next;
+ }
+ }
+ return def;
+ }
+
+ public static boolean isDebuff(final PotionEffectType type) {
+ return BukkitUtils.DEBUFF_TYPES.contains((Object) type);
+ }
+
+ public static boolean isDebuff(final PotionEffect potionEffect) {
+ return isDebuff(potionEffect.getType());
+ }
+
+ public static boolean isDebuff(final ThrownPotion thrownPotion) {
+ for (final PotionEffect effect : thrownPotion.getEffects()) {
+ if (isDebuff(effect)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ static {
+ STRAIGHT_LINE_TEMPLATE = ChatColor.STRIKETHROUGH.toString() + Strings.repeat("-", 256);
+ STRAIGHT_LINE_DEFAULT = BukkitUtils.STRAIGHT_LINE_TEMPLATE.substring(0, 55);
+ CHAT_DYE_COLOUR_MAP = ImmutableMap. builder().put(ChatColor.AQUA, DyeColor.LIGHT_BLUE).put(ChatColor.BLACK, DyeColor.BLACK).put(ChatColor.BLUE, DyeColor.LIGHT_BLUE)
+ .put(ChatColor.DARK_AQUA, DyeColor.CYAN).put(ChatColor.DARK_BLUE, DyeColor.BLUE).put(ChatColor.DARK_GRAY, DyeColor.GRAY).put(ChatColor.DARK_GREEN, DyeColor.GREEN)
+ .put(ChatColor.DARK_PURPLE, DyeColor.PURPLE).put(ChatColor.DARK_RED, DyeColor.RED).put(ChatColor.GOLD, DyeColor.ORANGE).put(ChatColor.GRAY, DyeColor.SILVER)
+ .put(ChatColor.GREEN, DyeColor.LIME).put(ChatColor.LIGHT_PURPLE, DyeColor.MAGENTA).put(ChatColor.RED, DyeColor.RED).put(ChatColor.WHITE, DyeColor.WHITE)
+ .put(ChatColor.YELLOW, DyeColor.YELLOW).build();
+ DEBUFF_TYPES = ImmutableSet. builder().add(PotionEffectType.BLINDNESS).add(PotionEffectType.CONFUSION).add(PotionEffectType.HARM).add(PotionEffectType.HUNGER)
+ .add(PotionEffectType.POISON).add(PotionEffectType.SATURATION).add(PotionEffectType.SLOW).add(PotionEffectType.SLOW_DIGGING).add(PotionEffectType.WEAKNESS)
+ .add(PotionEffectType.WITHER).build();
+ final ChatColor[] values = ChatColor.values();
+ COLOUR_CHARACTER_LIST = (TCharList) new TCharArrayList(values.length);
+ for (final ChatColor colour : values) {
+ BukkitUtils.COLOUR_CHARACTER_LIST.add(colour.getChar());
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/Color.java b/WenjaPvP - HCFactions/src/com/doctordark/util/Color.java
new file mode 100644
index 0000000..397b3e5
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/Color.java
@@ -0,0 +1,11 @@
+package com.doctordark.util;
+
+import org.bukkit.ChatColor;
+
+public class Color
+{
+ public static String translate(String input)
+ {
+ return ChatColor.translateAlternateColorCodes('&', input);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/ConcurrentValueOrderedMap.java b/WenjaPvP - HCFactions/src/com/doctordark/util/ConcurrentValueOrderedMap.java
new file mode 100644
index 0000000..b998fbf
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/ConcurrentValueOrderedMap.java
@@ -0,0 +1,87 @@
+package com.doctordark.util;
+
+import java.io.*;
+import java.util.concurrent.*;
+import java.util.*;
+import javax.annotation.*;
+
+public class ConcurrentValueOrderedMap> extends AbstractMap implements Map, Cloneable, Serializable {
+ private final Set> ordering;
+ private final ConcurrentMap> lookup;
+
+ public ConcurrentValueOrderedMap() {
+ this.ordering = new ConcurrentSkipListSet>();
+ this.lookup = new ConcurrentHashMap>();
+ }
+
+ @Override
+ public V get(final Object key) {
+ final InternalEntry old = this.lookup.get(key);
+ return (V) ((old != null) ? old.getValue() : null);
+ }
+
+ @Override
+ public V put(final K key, final V val) {
+ final InternalEntry entry = new InternalEntry(key, val);
+ final InternalEntry old = this.lookup.put(key, entry);
+ if (old == null) {
+ this.ordering.add(entry);
+ return null;
+ }
+ this.ordering.remove(old);
+ this.ordering.add(entry);
+ return old.getValue();
+ }
+
+ @Override
+ public V remove(final Object key) {
+ final InternalEntry old = this.lookup.remove(key);
+ if (old != null) {
+ this.ordering.remove(old);
+ return old.getValue();
+ }
+ return null;
+ }
+
+ @Override
+ public void clear() {
+ this.ordering.clear();
+ this.lookup.clear();
+ }
+
+ @Nonnull
+ @Override
+ public Set> entrySet() {
+ return Collections.unmodifiableSet((Set extends Entry>) this.ordering);
+ }
+
+ private static class InternalEntry> implements Comparable>, Entry {
+ private final K key;
+ private final V value;
+
+ InternalEntry(final K key, final V value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ @Override
+ public K getKey() {
+ return this.key;
+ }
+
+ @Override
+ public V getValue() {
+ return this.value;
+ }
+
+ @Override
+ public V setValue(final V value) throws UnsupportedOperationException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int compareTo(@Nonnull final InternalEntry o) {
+ return o.value.compareTo(this.value);
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/Config.java b/WenjaPvP - HCFactions/src/com/doctordark/util/Config.java
new file mode 100644
index 0000000..142a5d2
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/Config.java
@@ -0,0 +1,91 @@
+package com.doctordark.util;
+
+import org.bukkit.configuration.file.*;
+import org.bukkit.plugin.java.*;
+import java.io.*;
+
+public class Config extends YamlConfiguration {
+ private final String fileName;
+ private final JavaPlugin plugin;
+
+ public Config(final JavaPlugin plugin, final String fileName) {
+ this(plugin, fileName, ".yml");
+ }
+
+ public Config(final JavaPlugin plugin, final String fileName, final String fileExtension) {
+ this.plugin = plugin;
+ this.fileName = fileName + (fileName.endsWith(fileExtension) ? "" : fileExtension);
+ this.createFile();
+ }
+
+ public String getFileName() {
+ return this.fileName;
+ }
+
+ public JavaPlugin getPlugin() {
+ return this.plugin;
+ }
+
+ private void createFile() {
+ final File folder = this.plugin.getDataFolder();
+ try {
+ final File file = new File(folder, this.fileName);
+ if (!file.exists()) {
+ if (this.plugin.getResource(this.fileName) != null) {
+ this.plugin.saveResource(this.fileName, false);
+ } else {
+ this.save(file);
+ }
+ this.load(file);
+ } else {
+ this.load(file);
+ this.save(file);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void save() {
+ final File folder = this.plugin.getDataFolder();
+ try {
+ this.save(new File(folder, this.fileName));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Config)) {
+ return false;
+ }
+ final Config config = (Config) o;
+ Label_0054: {
+ if (this.fileName != null) {
+ if (this.fileName.equals(config.fileName)) {
+ break Label_0054;
+ }
+ } else if (config.fileName == null) {
+ break Label_0054;
+ }
+ return false;
+ }
+ if (this.plugin != null) {
+ if (!this.plugin.equals((Object) config.plugin)) {
+ return false;
+ }
+ } else if (config.plugin != null) {
+ return false;
+ }
+ return true;
+ }
+
+ public int hashCode() {
+ int result = (this.fileName != null) ? this.fileName.hashCode() : 0;
+ result = 31 * result + ((this.plugin != null) ? this.plugin.hashCode() : 0);
+ return result;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/DelayedMessageRunnable.java b/WenjaPvP - HCFactions/src/com/doctordark/util/DelayedMessageRunnable.java
new file mode 100644
index 0000000..88b8ce4
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/DelayedMessageRunnable.java
@@ -0,0 +1,21 @@
+package com.doctordark.util;
+
+import org.bukkit.scheduler.*;
+import org.bukkit.entity.*;
+import org.bukkit.plugin.java.*;
+import org.bukkit.plugin.*;
+
+public class DelayedMessageRunnable extends BukkitRunnable {
+ private final Player player;
+ private final String message;
+
+ public DelayedMessageRunnable(final JavaPlugin plugin, final Player player, final String message) {
+ this.player = player;
+ this.message = message;
+ this.runTask((Plugin) plugin);
+ }
+
+ public void run() {
+ this.player.sendMessage(this.message);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/DurationFormatter.java b/WenjaPvP - HCFactions/src/com/doctordark/util/DurationFormatter.java
new file mode 100644
index 0000000..c53a501
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/DurationFormatter.java
@@ -0,0 +1,27 @@
+package com.doctordark.util;
+
+import org.apache.commons.lang3.time.*;
+import server.wenjapvp.hcf.DateTimeFormats;
+
+import java.util.concurrent.*;
+
+public class DurationFormatter {
+ private static final long MINUTE;
+ private static final long HOUR;
+
+ public static String getRemaining(final long millis, final boolean milliseconds) {
+ return getRemaining(millis, milliseconds, true);
+ }
+
+ public static String getRemaining(final long duration, final boolean milliseconds, final boolean trail) {
+ if (milliseconds && duration < DurationFormatter.MINUTE) {
+ return (trail ? DateTimeFormats.REMAINING_SECONDS_TRAILING : DateTimeFormats.REMAINING_SECONDS).get().format(duration * 0.001) + 's';
+ }
+ return DurationFormatUtils.formatDuration(duration, ((duration >= DurationFormatter.HOUR) ? "HH:" : "") + "mm:ss");
+ }
+
+ static {
+ MINUTE = TimeUnit.MINUTES.toMillis(1L);
+ HOUR = TimeUnit.HOURS.toMillis(1L);
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/ExperienceManager.java b/WenjaPvP - HCFactions/src/com/doctordark/util/ExperienceManager.java
new file mode 100644
index 0000000..60a0828
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/ExperienceManager.java
@@ -0,0 +1,131 @@
+package com.doctordark.util;
+
+import java.lang.ref.*;
+import org.bukkit.entity.*;
+import com.google.common.base.*;
+import java.util.*;
+
+public class ExperienceManager {
+ private static int hardMaxLevel;
+ private static int[] xpTotalToReachLevel;
+ private final WeakReference player;
+ private final String playerName;
+
+ public ExperienceManager(final Player player) {
+ Preconditions.checkNotNull((Object) player, (Object) "Player cannot be null");
+ this.player = new WeakReference(player);
+ this.playerName = player.getName();
+ }
+
+ public static int getHardMaxLevel() {
+ return ExperienceManager.hardMaxLevel;
+ }
+
+ public static void setHardMaxLevel(final int hardMaxLevel) {
+ ExperienceManager.hardMaxLevel = hardMaxLevel;
+ }
+
+ private static void initLookupTables(final int maxLevel) {
+ ExperienceManager.xpTotalToReachLevel = new int[maxLevel];
+ for (int i = 0; i < ExperienceManager.xpTotalToReachLevel.length; ++i) {
+ ExperienceManager.xpTotalToReachLevel[i] = ((i >= 30) ? ((int) (3.5 * i * i - 151.5 * i + 2220.0)) : ((i >= 16) ? ((int) (1.5 * i * i - 29.5 * i + 360.0)) : (17 * i)));
+ }
+ }
+
+ private static int calculateLevelForExp(final int exp) {
+ int level = 0;
+ for (int curExp = 7, incr = 10; curExp <= exp; curExp += incr, ++level, incr += ((level % 2 == 0) ? 3 : 4)) {
+ }
+ return level;
+ }
+
+ public Player getPlayer() {
+ final Player p = this.player.get();
+ if (p == null) {
+ throw new IllegalStateException("Player " + this.playerName + " is not online");
+ }
+ return p;
+ }
+
+ public void changeExp(final int amt) {
+ this.changeExp((double) amt);
+ }
+
+ public void changeExp(final double amt) {
+ this.setExp(this.getCurrentFractionalXP(), amt);
+ }
+
+ public void setExp(final int amt) {
+ this.setExp(0.0, amt);
+ }
+
+ public void setExp(final double amt) {
+ this.setExp(0.0, amt);
+ }
+
+ private void setExp(final double base, final double amt) {
+ final int xp = (int) Math.max(base + amt, 0.0);
+ final Player player = this.getPlayer();
+ final int curLvl = player.getLevel();
+ final int newLvl = this.getLevelForExp(xp);
+ if (curLvl != newLvl) {
+ player.setLevel(newLvl);
+ }
+ if (xp > base) {
+ player.setTotalExperience(player.getTotalExperience() + xp - (int) base);
+ }
+ final double pct = (base - this.getXpForLevel(newLvl) + amt) / this.getXpNeededToLevelUp(newLvl);
+ player.setExp((float) pct);
+ }
+
+ public int getCurrentExp() {
+ final Player player = this.getPlayer();
+ final int lvl = player.getLevel();
+ return this.getXpForLevel(lvl) + Math.round(this.getXpNeededToLevelUp(lvl) * player.getExp());
+ }
+
+ private double getCurrentFractionalXP() {
+ final Player player = this.getPlayer();
+ final int lvl = player.getLevel();
+ return this.getXpForLevel(lvl) + this.getXpNeededToLevelUp(lvl) * player.getExp();
+ }
+
+ public boolean hasExp(final int amt) {
+ return this.getCurrentExp() >= amt;
+ }
+
+ public boolean hasExp(final double amt) {
+ return this.getCurrentFractionalXP() >= amt;
+ }
+
+ public int getLevelForExp(final int exp) {
+ if (exp <= 0) {
+ return 0;
+ }
+ if (exp > ExperienceManager.xpTotalToReachLevel[ExperienceManager.xpTotalToReachLevel.length - 1]) {
+ final int newMax = calculateLevelForExp(exp) * 2;
+ Preconditions.checkArgument(newMax <= ExperienceManager.hardMaxLevel, (Object) ("Level for exp " + exp + " > hard max level " + ExperienceManager.hardMaxLevel));
+ initLookupTables(newMax);
+ }
+ final int pos = Arrays.binarySearch(ExperienceManager.xpTotalToReachLevel, exp);
+ return (pos < 0) ? (-pos - 2) : pos;
+ }
+
+ public int getXpNeededToLevelUp(final int level) {
+ Preconditions.checkArgument(level >= 0, (Object) "Level may not be negative.");
+ return (level > 30) ? (62 + (level - 30) * 7) : ((level >= 16) ? (17 + (level - 15) * 3) : 17);
+ }
+
+ public int getXpForLevel(final int level) {
+ Preconditions.checkArgument(level >= 0 && level <= ExperienceManager.hardMaxLevel, (Object) ("Invalid level " + level + "(must be in range 0.." + ExperienceManager.hardMaxLevel + ')'));
+ if (level >= ExperienceManager.xpTotalToReachLevel.length) {
+ initLookupTables(level * 2);
+ }
+ return ExperienceManager.xpTotalToReachLevel[level];
+ }
+
+ static {
+ ExperienceManager.hardMaxLevel = 100000;
+ initLookupTables(25);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/GenericUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/GenericUtils.java
new file mode 100644
index 0000000..f287470
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/GenericUtils.java
@@ -0,0 +1,67 @@
+package com.doctordark.util;
+
+import java.util.*;
+
+public final class GenericUtils {
+ public static List createList(final Object object, final Class type) {
+ final List output = new ArrayList();
+ if (object != null && object instanceof List) {
+ final List> input = (List>) object;
+ for (final Object value : input) {
+ if (value != null) {
+ if (value.getClass() == null) {
+ continue;
+ }
+ if (!type.isAssignableFrom(value.getClass())) {
+ final String simpleName = type.getSimpleName();
+ throw new AssertionError((Object) ("Cannot cast to list! Key " + value + " is not a " + simpleName));
+ }
+ final E e = type.cast(value);
+ output.add(e);
+ }
+ }
+ }
+ return output;
+ }
+
+ public static Set castSet(final Object object, final Class type) {
+ final Set output = new HashSet();
+ if (object != null && object instanceof List) {
+ final List> input = (List>) object;
+ for (final Object value : input) {
+ if (value != null) {
+ if (value.getClass() == null) {
+ continue;
+ }
+ if (!type.isAssignableFrom(value.getClass())) {
+ final String simpleName = type.getSimpleName();
+ throw new AssertionError((Object) ("Cannot cast to list! Key " + value + " is not a " + simpleName));
+ }
+ final E e = type.cast(value);
+ output.add(e);
+ }
+ }
+ }
+ return output;
+ }
+
+ public static Map castMap(final Object object, final Class keyClass, final Class valueClass) {
+ final Map output = new HashMap();
+ if (object != null && object instanceof Map) {
+ final Map, ?> input = (Map, ?>) object;
+ final String keyClassName = keyClass.getSimpleName();
+ final String valueClassName = valueClass.getSimpleName();
+ for (final Object key : input.keySet().toArray()) {
+ if (key != null && !keyClass.isAssignableFrom(key.getClass())) {
+ throw new AssertionError((Object) ("Cannot cast to HashMap: " + keyClassName + ", " + keyClassName + ". Value " + valueClassName + " is not a " + keyClassName));
+ }
+ final Object value = input.get(key);
+ if (value != null && !valueClass.isAssignableFrom(value.getClass())) {
+ throw new AssertionError((Object) ("Cannot cast to HashMap: " + valueClassName + ", " + valueClassName + ". Key " + key + " is not a " + valueClassName));
+ }
+ output.put(keyClass.cast(key), valueClass.cast(value));
+ }
+ }
+ return output;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/InventorySerialisation.java b/WenjaPvP - HCFactions/src/com/doctordark/util/InventorySerialisation.java
new file mode 100644
index 0000000..f8f7ec7
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/InventorySerialisation.java
@@ -0,0 +1,75 @@
+package com.doctordark.util;
+
+import org.yaml.snakeyaml.external.biz.base64Coder.*;
+import org.bukkit.util.io.*;
+import org.bukkit.*;
+import org.bukkit.inventory.*;
+import java.io.*;
+
+public class InventorySerialisation {
+ public static String[] playerInventoryToBase64(final PlayerInventory playerInventory) throws IllegalStateException {
+ final String content = toBase64((Inventory) playerInventory);
+ final String armor = itemStackArrayToBase64(playerInventory.getArmorContents());
+ return new String[] { content, armor };
+ }
+
+ public static String itemStackArrayToBase64(final ItemStack[] items) throws IllegalStateException {
+ try {
+ final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ final BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream((OutputStream) outputStream);
+ dataOutput.writeInt(items.length);
+ for (final ItemStack item : items) {
+ dataOutput.writeObject((Object) item);
+ }
+ dataOutput.close();
+ return Base64Coder.encodeLines(outputStream.toByteArray());
+ } catch (Exception e) {
+ throw new IllegalStateException("Unable to save item stacks.", e);
+ }
+ }
+
+ public static String toBase64(final Inventory inventory) throws IllegalStateException {
+ try {
+ final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ final BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream((OutputStream) outputStream);
+ dataOutput.writeInt(inventory.getSize());
+ for (int i = 0; i < inventory.getSize(); ++i) {
+ dataOutput.writeObject((Object) inventory.getItem(i));
+ }
+ dataOutput.close();
+ return Base64Coder.encodeLines(outputStream.toByteArray());
+ } catch (Exception e) {
+ throw new IllegalStateException("Unable to save item stacks.", e);
+ }
+ }
+
+ public static Inventory fromBase64(final String data) throws IOException {
+ try {
+ final ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
+ final BukkitObjectInputStream dataInput = new BukkitObjectInputStream((InputStream) inputStream);
+ final Inventory inventory = Bukkit.createInventory((InventoryHolder) null, dataInput.readInt());
+ for (int i = 0; i < inventory.getSize(); ++i) {
+ inventory.setItem(i, (ItemStack) dataInput.readObject());
+ }
+ dataInput.close();
+ return inventory;
+ } catch (ClassNotFoundException e) {
+ throw new IOException("Unable to decode class type.", e);
+ }
+ }
+
+ public static ItemStack[] itemStackArrayFromBase64(final String data) throws IOException {
+ try {
+ final ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
+ final BukkitObjectInputStream dataInput = new BukkitObjectInputStream((InputStream) inputStream);
+ final ItemStack[] items = new ItemStack[dataInput.readInt()];
+ for (int i = 0; i < items.length; ++i) {
+ items[i] = (ItemStack) dataInput.readObject();
+ }
+ dataInput.close();
+ return items;
+ } catch (ClassNotFoundException ex) {
+ throw new IOException("Unable to decode class type.", ex);
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/InventoryUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/InventoryUtils.java
new file mode 100644
index 0000000..856e003
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/InventoryUtils.java
@@ -0,0 +1,116 @@
+package com.doctordark.util;
+
+import com.google.common.base.*;
+import org.bukkit.*;
+import org.bukkit.event.inventory.*;
+import org.bukkit.inventory.*;
+import java.util.*;
+
+public final class InventoryUtils {
+ public static final int DEFAULT_INVENTORY_WIDTH = 9;
+ public static final int MINIMUM_INVENTORY_HEIGHT = 1;
+ public static final int MINIMUM_INVENTORY_SIZE = 9;
+ public static final int MAXIMUM_INVENTORY_HEIGHT = 6;
+ public static final int MAXIMUM_INVENTORY_SIZE = 54;
+ public static final int MAXIMUM_SINGLE_CHEST_SIZE = 27;
+ public static final int MAXIMUM_DOUBLE_CHEST_SIZE = 54;
+
+ public static ItemStack[] deepClone(final ItemStack[] origin) {
+ Preconditions.checkNotNull((Object) origin, (Object) "Origin cannot be null");
+ final ItemStack[] cloned = new ItemStack[origin.length];
+ for (int i = 0; i < origin.length; ++i) {
+ final ItemStack next = origin[i];
+ cloned[i] = ((next == null) ? null : next.clone());
+ }
+ return cloned;
+ }
+
+ public static int getSafestInventorySize(final int initialSize) {
+ return (initialSize + 8) / 9 * 9;
+ }
+
+ public static void removeItem(final Inventory inventory, final Material type, final short data, final int quantity) {
+ final ItemStack[] contents = inventory.getContents();
+ final boolean compareDamage = type.getMaxDurability() == 0;
+ for (int i = quantity; i > 0; --i) {
+ for (final ItemStack content : contents) {
+ if (content != null) {
+ if (content.getType() == type) {
+ if (!compareDamage || content.getData().getData() == data) {
+ if (content.getAmount() <= 1) {
+ inventory.removeItem(new ItemStack[] { content });
+ break;
+ }
+ content.setAmount(content.getAmount() - 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static int countAmount(final Inventory inventory, final Material type, final short data) {
+ final ItemStack[] contents = inventory.getContents();
+ final boolean compareDamage = type.getMaxDurability() == 0;
+ int counter = 0;
+ for (final ItemStack item : contents) {
+ if (item != null) {
+ if (item.getType() == type) {
+ if (!compareDamage || item.getData().getData() == data) {
+ counter += item.getAmount();
+ }
+ }
+ }
+ }
+ return counter;
+ }
+
+ public static boolean isEmpty(final Inventory inventory) {
+ return isEmpty(inventory, true);
+ }
+
+ public static boolean isEmpty(final Inventory inventory, final boolean checkArmour) {
+ boolean result = true;
+ final ItemStack[] contents2;
+ ItemStack[] contents = contents2 = inventory.getContents();
+ for (final ItemStack content : contents2) {
+ if (content != null && content.getType() != Material.AIR) {
+ result = false;
+ break;
+ }
+ }
+ if (!result) {
+ return false;
+ }
+ if (checkArmour && inventory instanceof PlayerInventory) {
+ final ItemStack[] armorContents;
+ contents = (armorContents = ((PlayerInventory) inventory).getArmorContents());
+ for (final ItemStack content : armorContents) {
+ if (content != null && content.getType() != Material.AIR) {
+ result = false;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ public static boolean clickedTopInventory(final InventoryDragEvent event) {
+ final InventoryView view = event.getView();
+ final Inventory topInventory = view.getTopInventory();
+ if (topInventory == null) {
+ return false;
+ }
+ boolean result = false;
+ final Set> entrySet = event.getNewItems().entrySet();
+ final int size = topInventory.getSize();
+ for (final Map.Entry entry : entrySet) {
+ if (entry.getKey() < size) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/ItemBuilder.java b/WenjaPvP - HCFactions/src/com/doctordark/util/ItemBuilder.java
new file mode 100644
index 0000000..6aced8e
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/ItemBuilder.java
@@ -0,0 +1,84 @@
+package com.doctordark.util;
+
+import org.bukkit.inventory.*;
+import org.bukkit.inventory.meta.*;
+import org.bukkit.*;
+import com.google.common.base.*;
+import java.util.*;
+import org.bukkit.enchantments.*;
+
+public class ItemBuilder {
+ private ItemStack stack;
+ private ItemMeta meta;
+
+ public ItemBuilder(final Material material) {
+ this(material, 1);
+ }
+
+ public ItemBuilder(final Material material, final int amount) {
+ this(material, amount, (byte) 0);
+ }
+
+ public ItemBuilder(final ItemStack stack) {
+ Preconditions.checkNotNull((Object) stack, (Object) "ItemStack cannot be null");
+ this.stack = stack;
+ }
+
+ public ItemBuilder(final Material material, final int amount, final byte data) {
+ Preconditions.checkNotNull((Object) material, (Object) "Material cannot be null");
+ Preconditions.checkArgument(amount > 0, (Object) "Amount must be positive");
+ this.stack = new ItemStack(material, amount, (short) data);
+ }
+
+ public ItemBuilder displayName(final String name) {
+ if (this.meta == null) {
+ this.meta = this.stack.getItemMeta();
+ }
+ this.meta.setDisplayName(name);
+ return this;
+ }
+
+ public ItemBuilder loreLine(final String line) {
+ if (this.meta == null) {
+ this.meta = this.stack.getItemMeta();
+ }
+ final boolean hasLore = this.meta.hasLore();
+ final List lore = hasLore ? this.meta.getLore() : new ArrayList();
+ lore.add(hasLore ? lore.size() : 0, line);
+ this.lore(line);
+ return this;
+ }
+
+ public ItemBuilder lore(final String... lore) {
+ if (this.meta == null) {
+ this.meta = this.stack.getItemMeta();
+ }
+ this.meta.setLore((List) Arrays.asList(lore));
+ return this;
+ }
+
+ public ItemBuilder enchant(final Enchantment enchantment, final int level) {
+ return this.enchant(enchantment, level, true);
+ }
+
+ public ItemBuilder enchant(final Enchantment enchantment, final int level, final boolean unsafe) {
+ if (unsafe && level >= enchantment.getMaxLevel()) {
+ this.stack.addUnsafeEnchantment(enchantment, level);
+ } else {
+ this.stack.addEnchantment(enchantment, level);
+ }
+ return this;
+ }
+
+ public ItemBuilder data(final short data) {
+ this.stack.setDurability(data);
+ return this;
+ }
+
+ public ItemStack build() {
+ if (this.meta != null) {
+ this.stack.setItemMeta(this.meta);
+ }
+ return this.stack;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/JavaUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/JavaUtils.java
new file mode 100644
index 0000000..0e0bacf
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/JavaUtils.java
@@ -0,0 +1,129 @@
+package com.doctordark.util;
+
+import java.util.regex.*;
+import org.apache.commons.lang3.*;
+import java.math.*;
+import com.google.common.base.*;
+import java.util.*;
+import java.util.concurrent.*;
+
+public final class JavaUtils {
+ private static final CharMatcher CHAR_MATCHER_ASCII;
+ private static final Pattern UUID_PATTERN;
+ private static final int DEFAULT_NUMBER_FORMAT_DECIMAL_PLACES = 5;
+
+ public static Integer tryParseInt(final String string) {
+ try {
+ return Integer.parseInt(string);
+ } catch (IllegalArgumentException ex) {
+ return null;
+ }
+ }
+
+ public static Double tryParseDouble(final String string) {
+ try {
+ return Double.parseDouble(string);
+ } catch (IllegalArgumentException ex) {
+ return null;
+ }
+ }
+
+ public static boolean isUUID(final String string) {
+ return JavaUtils.UUID_PATTERN.matcher(string).find();
+ }
+
+ public static boolean isAlphanumeric(final String string) {
+ return JavaUtils.CHAR_MATCHER_ASCII.matchesAllOf((CharSequence) string);
+ }
+
+ public static boolean containsIgnoreCase(final Iterable extends String> elements, final String string) {
+ for (final String element : elements) {
+ if (StringUtils.containsIgnoreCase((CharSequence) element, (CharSequence) string)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static String format(final Number number) {
+ return format(number, 5);
+ }
+
+ public static String format(final Number number, final int decimalPlaces) {
+ return format(number, decimalPlaces, RoundingMode.HALF_DOWN);
+ }
+
+ public static String format(final Number number, final int decimalPlaces, final RoundingMode roundingMode) {
+ Preconditions.checkNotNull((Object) number, (Object) "The number cannot be null");
+ return new BigDecimal(number.toString()).setScale(decimalPlaces, roundingMode).stripTrailingZeros().toPlainString();
+ }
+
+ public static String andJoin(final Collection collection, final boolean delimiterBeforeAnd) {
+ return andJoin(collection, delimiterBeforeAnd, ", ");
+ }
+
+ public static String andJoin(final Collection collection, final boolean delimiterBeforeAnd, final String delimiter) {
+ if (collection == null || collection.isEmpty()) {
+ return "";
+ }
+ final List contents = new ArrayList(collection);
+ final String last = contents.remove(contents.size() - 1);
+ final StringBuilder builder = new StringBuilder(Joiner.on(delimiter).join((Iterable) contents));
+ if (delimiterBeforeAnd) {
+ builder.append(delimiter);
+ }
+ return builder.append(" and ").append(last).toString();
+ }
+
+ public static long parse(final String input) {
+ if (input == null || input.isEmpty()) {
+ return -1L;
+ }
+ long result = 0L;
+ StringBuilder number = new StringBuilder();
+ for (int i = 0; i < input.length(); ++i) {
+ final char c = input.charAt(i);
+ if (Character.isDigit(c)) {
+ number.append(c);
+ } else {
+ final String str;
+ if (Character.isLetter(c) && !(str = number.toString()).isEmpty()) {
+ result += convert(Integer.parseInt(str), c);
+ number = new StringBuilder();
+ }
+ }
+ }
+ return result;
+ }
+
+ private static long convert(final int value, final char unit) {
+ switch (unit) {
+ case 'y': {
+ return value * TimeUnit.DAYS.toMillis(365L);
+ }
+ case 'M': {
+ return value * TimeUnit.DAYS.toMillis(30L);
+ }
+ case 'd': {
+ return value * TimeUnit.DAYS.toMillis(1L);
+ }
+ case 'h': {
+ return value * TimeUnit.HOURS.toMillis(1L);
+ }
+ case 'm': {
+ return value * TimeUnit.MINUTES.toMillis(1L);
+ }
+ case 's': {
+ return value * TimeUnit.SECONDS.toMillis(1L);
+ }
+ default: {
+ return -1L;
+ }
+ }
+ }
+
+ static {
+ CHAR_MATCHER_ASCII = CharMatcher.inRange('0', '9').or(CharMatcher.inRange('a', 'z')).or(CharMatcher.inRange('A', 'Z')).or(CharMatcher.WHITESPACE).precomputed();
+ UUID_PATTERN = Pattern.compile("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[34][0-9a-fA-F]{3}-[89ab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}");
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/MapSorting.java b/WenjaPvP - HCFactions/src/com/doctordark/util/MapSorting.java
new file mode 100644
index 0000000..6ad9dba
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/MapSorting.java
@@ -0,0 +1,75 @@
+package com.doctordark.util;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Ordering;
+
+@SuppressWarnings("rawtypes")
+public class MapSorting {
+ // Building block - extract key from entry
+ private static final Function EXTRACT_KEY =
+ new Function, Object>() {
+ public Object apply(Entry input) {
+ return input.getKey();
+ }
+ };
+ // Same as above, only we extract the value
+ private static final Function EXTRACT_VALUE =
+ new Function, Object>() {
+ public Object apply(Entry input) {
+ return input.getValue();
+ }
+ };
+
+ /**
+ * Sort the given map by the value in each entry.
+ * @param map - map of comparable values.
+ * @return A new list with the sort result.
+ */
+ public static > List> sortedValues(Map map) {
+ return sortedValues(map, Ordering.natural());
+ }
+
+ /**
+ * Sort the given map by the value in each entry.
+ * @param map - map of comparable values.
+ * @param valueComparator - object for comparing each values.
+ * @return A new list with the sort result.
+ */
+ public static List> sortedValues(Map map, Comparator valueComparator) {
+ return Ordering.from(valueComparator).onResultOf(MapSorting.extractValue()).sortedCopy(map.entrySet());
+ }
+
+ /**
+ * Retrieve every key in the entry list in order.
+ * @param entryList - the entry list.
+ * @return Every key in order.
+ */
+ public static Iterable keys(List> entryList) {
+ return Iterables.transform(entryList, MapSorting.extractKey());
+ }
+
+ /**
+ * Retrieve every value in the entry list in order.
+ * @param entryList - the entry list.
+ * @return Every value in order.
+ */
+ public static Iterable values(List> entryList) {
+ return Iterables.transform(entryList, MapSorting.extractValue());
+ }
+
+ @SuppressWarnings("unchecked")
+ private static Function, T> extractKey() {
+ return EXTRACT_KEY;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static Function, V> extractValue() {
+ return EXTRACT_VALUE;
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/NmsUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/NmsUtils.java
new file mode 100644
index 0000000..1ec94be
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/NmsUtils.java
@@ -0,0 +1,53 @@
+package com.doctordark.util;
+
+import org.bukkit.entity.*;
+import org.bukkit.craftbukkit.v1_7_R4.entity.*;
+
+import net.minecraft.server.v1_7_R4.*;
+import net.minecraft.server.v1_7_R4.ItemStack;
+import net.minecraft.server.v1_7_R4.PlayerInventory;
+
+import org.bukkit.inventory.*;
+import org.bukkit.craftbukkit.v1_7_R4.inventory.*;
+
+public class NmsUtils {
+ public static int getProtocolVersion(final Player player) {
+ return ((CraftPlayer) player).getHandle().playerConnection.networkManager.getVersion();
+ }
+
+ public static void resendHeldItemPacket(final Player player) {
+ sendItemPacketAtHeldSlot(player, getCleanHeldItem(player));
+ }
+
+ public static void sendItemPacketAtHeldSlot(final Player player, final ItemStack stack) {
+ sendItemPacketAtSlot(player, stack, player.getInventory().getHeldItemSlot());
+ }
+
+ public static void sendItemPacketAtSlot(final Player player, final ItemStack stack, final int index) {
+ sendItemPacketAtSlot(player, stack, index, ((CraftPlayer) player).getHandle().defaultContainer.windowId);
+ }
+
+ public static void sendItemPacketAtSlot(final Player player, final ItemStack stack, int index, final int windowID) {
+ final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
+ if (entityPlayer.playerConnection != null) {
+ if (index < PlayerInventory.getHotbarSize()) {
+ index += 36;
+ } else if (index > 35) {
+ index = 8 - (index - 36);
+ }
+ entityPlayer.playerConnection.sendPacket((Packet) new PacketPlayOutSetSlot(windowID, index, stack));
+ }
+ }
+
+ public static ItemStack getCleanItem(final Inventory inventory, final int slot) {
+ return ((CraftInventory) inventory).getInventory().getItem(slot);
+ }
+
+ public static ItemStack getCleanItem(final Player player, final int slot) {
+ return getCleanItem((Inventory) player.getInventory(), slot);
+ }
+
+ public static ItemStack getCleanHeldItem(final Player player) {
+ return getCleanItem(player, player.getInventory().getHeldItemSlot());
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/ParticleEffect.java b/WenjaPvP - HCFactions/src/com/doctordark/util/ParticleEffect.java
new file mode 100644
index 0000000..0035474
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/ParticleEffect.java
@@ -0,0 +1,127 @@
+package com.doctordark.util;
+
+import org.bukkit.craftbukkit.v1_7_R4.entity.*;
+
+import java.util.*;
+
+import org.bukkit.entity.*;
+import org.bukkit.entity.Entity;
+
+import javax.annotation.*;
+
+import com.google.common.base.*;
+
+import org.bukkit.*;
+import org.bukkit.World;
+
+import net.minecraft.server.v1_7_R4.*;
+
+public enum ParticleEffect {
+ HUGE_EXPLODE("hugeexplosion", 0), LARGE_EXPLODE("largeexplode", 1), FIREWORK_SPARK("fireworksSpark", 2), AIR_BUBBLE("bubble", 3), SUSPEND("suspend", 4), DEPTH_SUSPEND("depthSuspend", 5), TOWN_AURA(
+ "townaura", 6), CRITICAL_HIT("crit", 7), MAGIC_CRITICAL_HIT("magicCrit", 8), MOB_SPELL("mobSpell", 9), MOB_SPELL_AMBIENT("mobSpellAmbient", 10), SPELL("spell", 11), INSTANT_SPELL(
+ "instantSpell", 12), BLUE_SPARKLE("witchMagic", 13), NOTE_BLOCK("note", 14), ENDER("portal", 15), ENCHANTMENT_TABLE("enchantmenttable", 16), EXPLODE("explode", 17), FIRE("flame", 18), LAVA_SPARK(
+ "lava", 19), FOOTSTEP("footstep", 20), SPLASH("splash", 21), LARGE_SMOKE("largesmoke", 22), CLOUD("cloud", 23), REDSTONE_DUST("reddust", 24), SNOWBALL_HIT("snowballpoof", 25), DRIP_WATER(
+ "dripWater", 26), DRIP_LAVA("dripLava", 27), SNOW_DIG("snowshovel", 28), SLIME("slime", 29), HEART("heart", 30), ANGRY_VILLAGER("angryVillager", 31), GREEN_SPARKLE("happyVillager", 32), ICONCRACK(
+ "iconcrack", 33), TILECRACK("tilecrack", 34);
+
+ private final String name;
+ @Deprecated
+ private final int id;
+
+ private ParticleEffect(final String name, final int id) {
+ this.name = name;
+ this.id = id;
+ }
+
+ @Deprecated
+ String getName() {
+ return this.name;
+ }
+
+ @Deprecated
+ public int getId() {
+ return this.id;
+ }
+
+ public void display(final Player player, final float x, final float y, final float z, final float speed, final int amount) {
+ this.display(player, x, y, z, 0.0f, 0.0f, 0.0f, speed, amount);
+ }
+
+ public void display(final Player player, final float x, final float y, final float z, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ final Packet packet = (Packet) this.createPacket(x, y, z, offsetX, offsetY, offsetZ, speed, amount);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
+ }
+
+ public void display(final Player player, final Location location, final float speed, final int amount) {
+ this.display(player, location, 0.0f, 0.0f, 0.0f, speed, amount);
+ }
+
+ public void display(final Player player, final Location location, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ final Packet packet = (Packet) this.createPacket(location, offsetX, offsetY, offsetZ, speed, amount);
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
+ }
+
+ public void broadcast(final float x, final float y, final float z, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ final Packet packet = (Packet) this.createPacket(x, y, z, offsetX, offsetY, offsetZ, speed, amount);
+ for (final Player player : Bukkit.getOnlinePlayers()) {
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
+ }
+ }
+
+ public void broadcast(final Location location, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ this.broadcast(location, offsetX, offsetY, offsetZ, speed, amount, null, null);
+ }
+
+ public void broadcast(final Location location, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount, @Nullable final Player source) {
+ this.broadcast(location, offsetX, offsetY, offsetZ, speed, amount, source, null);
+ }
+
+ public void broadcast(final Location location, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount, @Nullable final Player source,
+ @Nullable final Predicate predicate) {
+ final Packet packet = (Packet) this.createPacket(location, offsetX, offsetY, offsetZ, speed, amount);
+ for (final Player player : Bukkit.getOnlinePlayers()) {
+ if ((source == null || player.canSee(source)) && (predicate == null || predicate.apply(player))) {
+ ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
+ }
+ }
+ }
+
+ public void sphere(@Nullable final Player player, final Location location, final float radius) {
+ this.sphere(player, location, radius, 20.0f, 2);
+ }
+
+ public void sphere(@Nullable final Player player, final Location location, final float radius, final float density, final int intensity) {
+ Preconditions.checkNotNull((Object) location, (Object) "Location cannot be null");
+ Preconditions.checkArgument(radius >= 0.0f, (Object) "Radius must be positive");
+ Preconditions.checkArgument(density >= 0.0f, (Object) "Density must be positive");
+ Preconditions.checkArgument(intensity >= 0, (Object) "Intensity must be positive");
+ final float deltaPitch = 180.0f / density;
+ final float deltaYaw = 360.0f / density;
+ final World world = location.getWorld();
+ for (int i = 0; i < density; ++i) {
+ for (int j = 0; j < density; ++j) {
+ final float pitch = -90.0f + j * deltaPitch;
+ final float yaw = -180.0f + i * deltaYaw;
+ final float x = radius * MathHelper.sin(-yaw * 0.017453292f - 3.1415927f) * -MathHelper.cos(-pitch * 0.017453292f) + (float) location.getX();
+ final float y = radius * MathHelper.sin(-pitch * 0.017453292f) + (float) location.getY();
+ final float z = radius * MathHelper.cos(-yaw * 0.017453292f - 3.1415927f) * -MathHelper.cos(-pitch * 0.017453292f) + (float) location.getZ();
+ final Location target = new Location(world, (double) x, (double) y, (double) z);
+ if (player == null) {
+ this.broadcast(target, 0.0f, 0.0f, 0.0f, 0.0f, intensity);
+ } else {
+ this.display(player, target, 0.0f, 0.0f, 0.0f, 0.0f, intensity);
+ }
+ }
+ }
+ }
+
+ private PacketPlayOutWorldParticles createPacket(final Location location, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ return this.createPacket((float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, amount);
+ }
+
+ private PacketPlayOutWorldParticles createPacket(final float x, final float y, final float z, final float offsetX, final float offsetY, final float offsetZ, final float speed, final int amount) {
+ Preconditions.checkArgument(speed >= 0.0f, (Object) "Speed must be positive");
+ Preconditions.checkArgument(amount > 0, (Object) "Cannot use less than one particle.");
+ return new PacketPlayOutWorldParticles(this.name, x, y, z, offsetX, offsetY, offsetZ, speed, amount);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/PersistableLocation.java b/WenjaPvP - HCFactions/src/com/doctordark/util/PersistableLocation.java
new file mode 100644
index 0000000..76bb873
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/PersistableLocation.java
@@ -0,0 +1,247 @@
+package com.doctordark.util;
+
+import org.bukkit.configuration.serialization.*;
+import com.google.common.base.*;
+import java.util.*;
+import org.bukkit.*;
+
+public class PersistableLocation implements ConfigurationSerializable, Cloneable {
+ private Location location;
+ private World world;
+ private String worldName;
+ private UUID worldUID;
+ private double x;
+ private double y;
+ private double z;
+ private float yaw;
+ private float pitch;
+
+ public PersistableLocation(final Location location) {
+ Preconditions.checkNotNull((Object) location, (Object) "Location cannot be null");
+ Preconditions.checkNotNull((Object) location.getWorld(), (Object) "Locations' world cannot be null");
+ this.world = location.getWorld();
+ this.worldName = this.world.getName();
+ this.worldUID = this.world.getUID();
+ this.x = location.getX();
+ this.y = location.getY();
+ this.z = location.getZ();
+ this.yaw = location.getYaw();
+ this.pitch = location.getPitch();
+ }
+
+ public PersistableLocation(final World world, final double x, final double y, final double z) {
+ this.worldName = world.getName();
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ final float n = 0.0f;
+ this.yaw = n;
+ this.pitch = n;
+ }
+
+ public PersistableLocation(final String worldName, final double x, final double y, final double z) {
+ this.worldName = worldName;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ final float n = 0.0f;
+ this.yaw = n;
+ this.pitch = n;
+ }
+
+ public PersistableLocation(final Map map) {
+ this.worldName = map.get("worldName");
+ this.worldUID = UUID.fromString(map.get("worldUID"));
+ Object o = map.get("x");
+ if (o instanceof String) {
+ this.x = Double.parseDouble((String) o);
+ } else {
+ this.x = (double) o;
+ }
+ o = map.get("y");
+ if (o instanceof String) {
+ this.y = Double.parseDouble((String) o);
+ } else {
+ this.y = (double) o;
+ }
+ o = map.get("z");
+ if (o instanceof String) {
+ this.z = Double.parseDouble((String) o);
+ } else {
+ this.z = (double) o;
+ }
+ this.yaw = Float.parseFloat(map.get("yaw"));
+ this.pitch = Float.parseFloat(map.get("pitch"));
+ }
+
+ public Map serialize() {
+ final Map map = new LinkedHashMap();
+ map.put("worldName", this.worldName);
+ map.put("worldUID", this.worldUID.toString());
+ map.put("x", this.x);
+ map.put("y", this.y);
+ map.put("z", this.z);
+ map.put("yaw", Float.toString(this.yaw));
+ map.put("pitch", Float.toString(this.pitch));
+ return map;
+ }
+
+ public World getWorld() {
+ Preconditions.checkNotNull((Object) this.worldUID, (Object) "World UUID cannot be null");
+ Preconditions.checkNotNull((Object) this.worldName, (Object) "World name cannot be null");
+ if (this.world == null) {
+ this.world = Bukkit.getWorld(this.worldUID);
+ }
+ return this.world;
+ }
+
+ public void setWorld(final World world) {
+ this.worldName = world.getName();
+ this.worldUID = world.getUID();
+ this.world = world;
+ }
+
+ public Location getLocation() {
+ if (this.location == null) {
+ this.location = new Location(this.getWorld(), this.x, this.y, this.z, this.yaw, this.pitch);
+ }
+ return this.location;
+ }
+
+ public PersistableLocation clone() throws CloneNotSupportedException {
+ try {
+ return (PersistableLocation) super.clone();
+ } catch (CloneNotSupportedException ex) {
+ ex.printStackTrace();
+ throw new RuntimeException();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "PersistableLocation [worldName=" + this.worldName + ", worldUID=" + this.worldUID + ", x=" + this.x + ", y=" + this.y + ", z=" + this.z + ", yaw=" + this.yaw + ", pitch=" + this.pitch
+ + ']';
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof PersistableLocation)) {
+ return false;
+ }
+ final PersistableLocation that = (PersistableLocation) o;
+ if (Double.compare(that.x, this.x) != 0) {
+ return false;
+ }
+ if (Double.compare(that.y, this.y) != 0) {
+ return false;
+ }
+ if (Double.compare(that.z, this.z) != 0) {
+ return false;
+ }
+ if (Float.compare(that.yaw, this.yaw) != 0) {
+ return false;
+ }
+ if (Float.compare(that.pitch, this.pitch) != 0) {
+ return false;
+ }
+ Label_0134: {
+ if (this.world != null) {
+ if (this.world.equals(that.world)) {
+ break Label_0134;
+ }
+ } else if (that.world == null) {
+ break Label_0134;
+ }
+ return false;
+ }
+ Label_0167: {
+ if (this.worldName != null) {
+ if (this.worldName.equals(that.worldName)) {
+ break Label_0167;
+ }
+ } else if (that.worldName == null) {
+ break Label_0167;
+ }
+ return false;
+ }
+ if (this.worldUID != null) {
+ if (!this.worldUID.equals(that.worldUID)) {
+ return false;
+ }
+ } else if (that.worldUID != null) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (this.world != null) ? this.world.hashCode() : 0;
+ result = 31 * result + ((this.worldName != null) ? this.worldName.hashCode() : 0);
+ result = 31 * result + ((this.worldUID != null) ? this.worldUID.hashCode() : 0);
+ long temp = Double.doubleToLongBits(this.x);
+ result = 31 * result + (int) (temp ^ temp >>> 32);
+ temp = Double.doubleToLongBits(this.y);
+ result = 31 * result + (int) (temp ^ temp >>> 32);
+ temp = Double.doubleToLongBits(this.z);
+ result = 31 * result + (int) (temp ^ temp >>> 32);
+ result = 31 * result + ((this.yaw != 0.0f) ? Float.floatToIntBits(this.yaw) : 0);
+ result = 31 * result + ((this.pitch != 0.0f) ? Float.floatToIntBits(this.pitch) : 0);
+ return result;
+ }
+
+ public String getWorldName() {
+ return this.worldName;
+ }
+
+ public UUID getWorldUID() {
+ return this.worldUID;
+ }
+
+ public double getX() {
+ return this.x;
+ }
+
+ public double getY() {
+ return this.y;
+ }
+
+ public double getZ() {
+ return this.z;
+ }
+
+ public float getYaw() {
+ return this.yaw;
+ }
+
+ public float getPitch() {
+ return this.pitch;
+ }
+
+ public void setWorldUID(final UUID worldUID) {
+ this.worldUID = worldUID;
+ }
+
+ public void setX(final double x) {
+ this.x = x;
+ }
+
+ public void setY(final double y) {
+ this.y = y;
+ }
+
+ public void setZ(final double z) {
+ this.z = z;
+ }
+
+ public void setYaw(final float yaw) {
+ this.yaw = yaw;
+ }
+
+ public void setPitch(final float pitch) {
+ this.pitch = pitch;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/SignHandler.java b/WenjaPvP - HCFactions/src/com/doctordark/util/SignHandler.java
new file mode 100644
index 0000000..0838fe6
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/SignHandler.java
@@ -0,0 +1,121 @@
+package com.doctordark.util;
+
+import org.bukkit.plugin.java.*;
+import com.google.common.collect.*;
+import org.bukkit.event.*;
+import org.bukkit.event.player.*;
+import org.bukkit.entity.*;
+import org.bukkit.scheduler.*;
+import org.bukkit.block.*;
+import org.bukkit.*;
+import org.bukkit.plugin.*;
+import javax.annotation.*;
+import java.util.*;
+
+public class SignHandler implements Listener {
+ private final Multimap signUpdateMap;
+ private final JavaPlugin plugin;
+
+ public SignHandler(final JavaPlugin plugin) {
+ this.signUpdateMap = HashMultimap.create();
+ this.plugin = plugin;
+ }
+
+ @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
+ public void onPlayerKick(final PlayerQuitEvent event) {
+ this.cancelTasks(event.getPlayer(), null, false);
+ }
+
+ @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
+ public void onPlayerQuit(final PlayerQuitEvent event) {
+ this.cancelTasks(event.getPlayer(), null, false);
+ }
+
+ @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
+ public void onWorldChange(final PlayerChangedWorldEvent event) {
+ this.cancelTasks(event.getPlayer(), null, false);
+ }
+
+ public boolean showLines(final Player player, final Sign sign, final String[] newLines, final long ticks, final boolean forceChange) {
+ final String[] lines = sign.getLines();
+ if (Arrays.equals(lines, newLines)) {
+ return false;
+ }
+ final Collection signChanges = this.getSignChanges(player);
+ final Iterator iterator = signChanges.iterator();
+ while (iterator.hasNext()) {
+ final SignChange signChange = iterator.next();
+ if (signChange.sign.equals(sign)) {
+ if (!forceChange && Arrays.equals(signChange.newLines, newLines)) {
+ return false;
+ }
+ signChange.runnable.cancel();
+ iterator.remove();
+ break;
+ }
+ }
+ final Location location = sign.getLocation();
+ player.sendSignChange(location, newLines);
+ SignChange signChange;
+ if (signChanges.add(signChange = new SignChange(sign, newLines))) {
+ final Block block = sign.getBlock();
+ final BlockState previous = block.getState();
+ final BukkitRunnable runnable = new BukkitRunnable() {
+ public void run() {
+ if (SignHandler.this.signUpdateMap.remove((Object) player.getUniqueId(), (Object) signChange) && previous.equals(block.getState())) {
+ player.sendSignChange(location, lines);
+ }
+ }
+ };
+ runnable.runTaskLater((Plugin) this.plugin, ticks);
+ signChange.runnable = runnable;
+ }
+ return true;
+ }
+
+ public Collection getSignChanges(final Player player) {
+ return (Collection) this.signUpdateMap.get(player.getUniqueId());
+ }
+
+ public void cancelTasks(@Nullable final Sign sign) {
+ final Iterator iterator = this.signUpdateMap.values().iterator();
+ while (iterator.hasNext()) {
+ final SignChange signChange = iterator.next();
+ if (sign == null || signChange.sign.equals(sign)) {
+ signChange.runnable.cancel();
+ signChange.sign.update();
+ iterator.remove();
+ }
+ }
+ }
+
+ public void cancelTasks(final Player player, @Nullable final Sign sign, final boolean revertLines) {
+ final UUID uuid = player.getUniqueId();
+ final Iterator> iterator = this.signUpdateMap.entries().iterator();
+ while (iterator.hasNext()) {
+ final Map.Entry entry = iterator.next();
+ if (entry.getKey().equals(uuid)) {
+ final SignChange signChange = entry.getValue();
+ if (sign != null && !signChange.sign.equals(sign)) {
+ continue;
+ }
+ if (revertLines) {
+ player.sendSignChange(signChange.sign.getLocation(), signChange.sign.getLines());
+ }
+ signChange.runnable.cancel();
+ iterator.remove();
+ }
+ }
+ }
+
+ private static final class SignChange {
+ public BukkitRunnable runnable;
+ public final Sign sign;
+ public final String[] newLines;
+
+ public SignChange(final Sign sign, final String[] newLines) {
+ this.sign = sign;
+ this.newLines = newLines;
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/SpigotUtils.java b/WenjaPvP - HCFactions/src/com/doctordark/util/SpigotUtils.java
new file mode 100644
index 0000000..98a1171
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/SpigotUtils.java
@@ -0,0 +1,79 @@
+package com.doctordark.util;
+
+import org.bukkit.*;
+
+public class SpigotUtils {
+ public static net.md_5.bungee.api.ChatColor toBungee(final ChatColor color) {
+ switch (color) {
+ case BLACK: {
+ return net.md_5.bungee.api.ChatColor.BLACK;
+ }
+ case DARK_BLUE: {
+ return net.md_5.bungee.api.ChatColor.DARK_BLUE;
+ }
+ case DARK_GREEN: {
+ return net.md_5.bungee.api.ChatColor.DARK_GREEN;
+ }
+ case DARK_AQUA: {
+ return net.md_5.bungee.api.ChatColor.DARK_AQUA;
+ }
+ case DARK_RED: {
+ return net.md_5.bungee.api.ChatColor.DARK_RED;
+ }
+ case DARK_PURPLE: {
+ return net.md_5.bungee.api.ChatColor.DARK_PURPLE;
+ }
+ case GOLD: {
+ return net.md_5.bungee.api.ChatColor.GOLD;
+ }
+ case GRAY: {
+ return net.md_5.bungee.api.ChatColor.GRAY;
+ }
+ case DARK_GRAY: {
+ return net.md_5.bungee.api.ChatColor.DARK_GRAY;
+ }
+ case BLUE: {
+ return net.md_5.bungee.api.ChatColor.BLUE;
+ }
+ case GREEN: {
+ return net.md_5.bungee.api.ChatColor.GREEN;
+ }
+ case AQUA: {
+ return net.md_5.bungee.api.ChatColor.AQUA;
+ }
+ case RED: {
+ return net.md_5.bungee.api.ChatColor.RED;
+ }
+ case LIGHT_PURPLE: {
+ return net.md_5.bungee.api.ChatColor.LIGHT_PURPLE;
+ }
+ case YELLOW: {
+ return net.md_5.bungee.api.ChatColor.YELLOW;
+ }
+ case WHITE: {
+ return net.md_5.bungee.api.ChatColor.WHITE;
+ }
+ case MAGIC: {
+ return net.md_5.bungee.api.ChatColor.MAGIC;
+ }
+ case BOLD: {
+ return net.md_5.bungee.api.ChatColor.BOLD;
+ }
+ case STRIKETHROUGH: {
+ return net.md_5.bungee.api.ChatColor.STRIKETHROUGH;
+ }
+ case UNDERLINE: {
+ return net.md_5.bungee.api.ChatColor.UNDERLINE;
+ }
+ case ITALIC: {
+ return net.md_5.bungee.api.ChatColor.ITALIC;
+ }
+ case RESET: {
+ return net.md_5.bungee.api.ChatColor.RESET;
+ }
+ default: {
+ throw new IllegalArgumentException("Unrecognised Bukkit colour " + color.name() + ".");
+ }
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/UUIDFetcher.java b/WenjaPvP - HCFactions/src/com/doctordark/util/UUIDFetcher.java
new file mode 100644
index 0000000..69d5e5a
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/UUIDFetcher.java
@@ -0,0 +1,94 @@
+package com.doctordark.util;
+
+import java.util.concurrent.*;
+import org.json.simple.parser.*;
+import com.google.common.collect.*;
+import java.nio.charset.*;
+import org.json.simple.*;
+import java.io.*;
+import java.net.*;
+import java.nio.*;
+import java.util.*;
+
+public class UUIDFetcher implements Callable> {
+ private static final double PROFILES_PER_REQUEST = 100.0;
+ private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
+ private final JSONParser jsonParser;
+ private final List names;
+ private final boolean rateLimiting;
+
+ public UUIDFetcher(final List names) {
+ this(names, true);
+ }
+
+ public UUIDFetcher(final List names, final boolean rateLimiting) {
+ this.jsonParser = new JSONParser();
+ this.names = (List) ImmutableList.copyOf((Collection) names);
+ this.rateLimiting = rateLimiting;
+ }
+
+ @Override
+ public Map call() throws Exception {
+ final Map uuidMap = new HashMap();
+ for (int requests = (int) Math.ceil(this.names.size() / 100.0), i = 0; i < requests; ++i) {
+ final HttpURLConnection connection = createConnection();
+ final String body = JSONArray.toJSONString((List) this.names.subList(i * 100, Math.min((i + 1) * 100, this.names.size())));
+ writeBody(connection, body);
+ final JSONArray array = (JSONArray) this.jsonParser.parse((Reader) new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
+ for (final Object profile : array) {
+ final JSONObject jsonProfile = (JSONObject) profile;
+ final String id = (String) jsonProfile.get((Object) "id");
+ final String name = (String) jsonProfile.get((Object) "name");
+ final UUID uuid = getUUID(id);
+ uuidMap.put(name, uuid);
+ }
+ if (this.rateLimiting && i != requests - 1) {
+ Thread.sleep(100L);
+ }
+ }
+ return uuidMap;
+ }
+
+ private static void writeBody(final HttpURLConnection connection, final String body) throws Exception {
+ final OutputStream stream = connection.getOutputStream();
+ stream.write(body.getBytes(StandardCharsets.UTF_8));
+ stream.flush();
+ stream.close();
+ }
+
+ private static HttpURLConnection createConnection() throws Exception {
+ final URL url = new URL("https://api.mojang.com/profiles/minecraft");
+ final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("POST");
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setUseCaches(false);
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+ return connection;
+ }
+
+ private static UUID getUUID(final String id) {
+ return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32));
+ }
+
+ public static byte[] toBytes(final UUID uuid) {
+ final ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]);
+ byteBuffer.putLong(uuid.getMostSignificantBits());
+ byteBuffer.putLong(uuid.getLeastSignificantBits());
+ return byteBuffer.array();
+ }
+
+ public static UUID fromBytes(final byte[] array) {
+ if (array.length != 16) {
+ throw new IllegalArgumentException("Illegal byte array length: " + array.length);
+ }
+ final ByteBuffer byteBuffer = ByteBuffer.wrap(array);
+ final long mostSignificant = byteBuffer.getLong();
+ final long leastSignificant = byteBuffer.getLong();
+ return new UUID(mostSignificant, leastSignificant);
+ }
+
+ public static UUID getUUIDOf(final String name) throws Exception {
+ return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ChatUtil.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ChatUtil.java
new file mode 100644
index 0000000..fb0d3f8
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ChatUtil.java
@@ -0,0 +1,69 @@
+package com.doctordark.util.chat;
+
+import org.bukkit.potion.*;
+import org.apache.commons.lang.*;
+import org.bukkit.craftbukkit.v1_7_R4.inventory.*;
+import org.bukkit.*;
+import org.bukkit.Material;
+import org.bukkit.command.*;
+import org.bukkit.entity.*;
+import org.bukkit.craftbukkit.v1_7_R4.entity.*;
+import net.minecraft.server.v1_7_R4.*;
+
+public class ChatUtil
+{
+ public static String getName(final ItemStack stack) {
+ if (stack.tag != null && stack.tag.hasKeyOfType("display", 10)) {
+ final NBTTagCompound nbttagcompound = stack.tag.getCompound("display");
+ if (nbttagcompound.hasKeyOfType("Name", 8)) {
+ return nbttagcompound.getString("Name");
+ }
+ }
+ return stack.getItem().a(stack) + ".name";
+ }
+
+ public static Trans localFromItem(final org.bukkit.inventory.ItemStack stack) {
+ if (stack.getType() == Material.POTION && stack.getData().getData() == 0) {
+ final Potion potion = Potion.fromItemStack(stack);
+ if (potion != null) {
+ final PotionType type = potion.getType();
+ if (type != null && type != PotionType.WATER) {
+ final String effectName = (potion.isSplash() ? "Splash " : "") + WordUtils.capitalizeFully(type.name().replace('_', ' ')) + " L" + potion.getLevel();
+ return fromItemStack(stack).append(" of " + effectName);
+ }
+ }
+ }
+ return fromItemStack(stack);
+ }
+
+ public static Trans fromItemStack(final org.bukkit.inventory.ItemStack stack) {
+ final ItemStack nms = CraftItemStack.asNMSCopy(stack);
+ final NBTTagCompound tag = new NBTTagCompound();
+ nms.save(tag);
+ return new Trans(getName(nms), new Object[0]).setColor(ChatColor.getByChar(nms.w().e.getChar())).setHover(HoverAction.SHOW_ITEM, (IChatBaseComponent)new ChatComponentText(tag.toString()));
+ }
+
+ public static void reset(final IChatBaseComponent text) {
+ final ChatModifier modifier = text.getChatModifier();
+ modifier.a((ChatHoverable)null);
+ modifier.setChatClickable((ChatClickable)null);
+ modifier.setBold(false);
+ modifier.setColor(EnumChatFormat.RESET);
+ modifier.setItalic(false);
+ modifier.setRandom(false);
+ modifier.setStrikethrough(false);
+ modifier.setUnderline(false);
+ }
+
+ public static void send(final CommandSender sender, final IChatBaseComponent text) {
+ if (sender instanceof Player) {
+ final Player player = (Player)sender;
+ final PacketPlayOutChat packet = new PacketPlayOutChat(text, true);
+ final EntityPlayer entityPlayer = ((CraftPlayer)player).getHandle();
+ entityPlayer.playerConnection.sendPacket((Packet)packet);
+ }
+ else {
+ sender.sendMessage(text.c());
+ }
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ClickAction.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ClickAction.java
new file mode 100644
index 0000000..25f3ebb
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/ClickAction.java
@@ -0,0 +1,21 @@
+package com.doctordark.util.chat;
+
+import net.minecraft.server.v1_7_R4.*;
+
+public enum ClickAction
+{
+ OPEN_URL(EnumClickAction.OPEN_URL),
+ OPEN_FILE(EnumClickAction.OPEN_FILE),
+ RUN_COMMAND(EnumClickAction.RUN_COMMAND),
+ SUGGEST_COMMAND(EnumClickAction.SUGGEST_COMMAND);
+
+ private final EnumClickAction clickAction;
+
+ private ClickAction(final EnumClickAction action) {
+ this.clickAction = action;
+ }
+
+ public EnumClickAction getNMS() {
+ return this.clickAction;
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/HoverAction.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/HoverAction.java
new file mode 100644
index 0000000..8c3c837
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/HoverAction.java
@@ -0,0 +1,20 @@
+package com.doctordark.util.chat;
+
+import net.minecraft.server.v1_7_R4.*;
+
+public enum HoverAction
+{
+ SHOW_TEXT(EnumHoverAction.SHOW_TEXT),
+ SHOW_ITEM(EnumHoverAction.SHOW_ITEM),
+ SHOW_ACHIEVEMENT(EnumHoverAction.SHOW_ACHIEVEMENT);
+
+ private final EnumHoverAction hoverAction;
+
+ private HoverAction(final EnumHoverAction hoverAction) {
+ this.hoverAction = hoverAction;
+ }
+
+ public EnumHoverAction getNMS() {
+ return this.hoverAction;
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Lang.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Lang.java
new file mode 100644
index 0000000..d90d7a9
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Lang.java
@@ -0,0 +1,97 @@
+package com.doctordark.util.chat;
+
+import java.util.*;
+
+import org.bukkit.*;
+
+import java.util.logging.*;
+import java.net.*;
+import java.nio.charset.*;
+import java.util.regex.*;
+import java.io.*;
+
+import org.bukkit.inventory.*;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.craftbukkit.v1_7_R4.inventory.*;
+
+import net.minecraft.server.v1_7_R4.*;
+
+import com.google.common.base.*;
+
+import org.bukkit.enchantments.*;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.potion.*;
+import org.bukkit.craftbukkit.v1_7_R4.potion.*;
+
+@Deprecated
+public class Lang {
+ private static final Pattern PATTERN;
+ private static final String HASH_17 = "03f31164d234f10a3230611656332f1756e570a9";
+ private static Map translations;
+
+ public static void initialize(final String lang) throws IOException {
+ Lang.translations = new HashMap();
+ Bukkit.getLogger().log(Level.INFO, "Initialling");
+ if ("03f31164d234f10a3230611656332f1756e570a9".length() >= 2) {
+ final String url = "http://resources.download.minecraft.net/" + "03f31164d234f10a3230611656332f1756e570a9".substring(0, 2) + "/" + "03f31164d234f10a3230611656332f1756e570a9";
+ try (final BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url).openStream(), StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ // Bukkit.getLogger().info(line);
+ if (line.contains("=")) {
+ final Matcher matcher = Lang.PATTERN.matcher(line);
+ if (!matcher.matches()) {
+ continue;
+ }
+ Lang.translations.put(matcher.group(1), matcher.group(2));
+ }
+ }
+ }
+ }
+ }
+
+ public static String translatableFromStack(final ItemStack stack) {
+ final net.minecraft.server.v1_7_R4.ItemStack nms = CraftItemStack.asNMSCopy(stack);
+ final Item item = nms.getItem();
+ return item.a(nms) + ".name";
+ }
+
+ public static String fromStack(final ItemStack stack) {
+ final String node = translatableFromStack(stack);
+ return (String) MoreObjects.firstNonNull((Object) Lang.translations.get(node), (Object) node);
+ }
+
+ public static String translatableFromEnchantment(final Enchantment ench) {
+ final net.minecraft.server.v1_7_R4.Enchantment nms = net.minecraft.server.v1_7_R4.Enchantment.byId[ench.getId()];
+ return (nms == null) ? ench.getName() : nms.a();
+ }
+
+ public static String fromEnchantment(final Enchantment enchantment) {
+ final String node = translatableFromEnchantment(enchantment);
+ final String trans = Lang.translations.get(node);
+ return (trans != null) ? trans : node;
+ }
+
+ public static String translatableFromPotionEffectType(final PotionEffectType effectType) {
+ final CraftPotionEffectType craftType = (CraftPotionEffectType) PotionEffectType.getById(effectType.getId());
+ return craftType.getHandle().a();
+ }
+
+ public static String fromPotionEffectType(final PotionEffectType effectType) {
+ final String node = translatableFromPotionEffectType(effectType);
+ final String val = Lang.translations.get(node);
+ if (val == null) {
+ return node;
+ }
+ return val;
+ }
+
+ public static String translate(final String key, final Object... args) {
+ return String.format(Lang.translations.get(key), args);
+ }
+
+ static {
+ PATTERN = Pattern.compile("^\\s*([\\w\\d\\.]+)\\s*=\\s*(.*)\\s*$");
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Text.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Text.java
new file mode 100644
index 0000000..37679dd
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Text.java
@@ -0,0 +1,136 @@
+package com.doctordark.util.chat;
+//Same as Doctor's
+
+import org.bukkit.inventory.*;
+import org.bukkit.inventory.ItemStack;
+
+import net.minecraft.server.v1_7_R4.*;
+import org.bukkit.command.*;
+import org.bukkit.*;
+import org.bukkit.entity.*;
+import java.util.*;
+
+public class Text extends ChatComponentText
+{
+ public Text() {
+ super("");
+ }
+
+ public Text(final String string) {
+ super(string);
+ }
+
+ public Text(final Object object) {
+ super(String.valueOf(object));
+ }
+
+ public static Trans fromItemStack(final ItemStack stack) {
+ return ChatUtil.fromItemStack(stack);
+ }
+
+ public Text append(final Object object) {
+ return this.append(String.valueOf(object));
+ }
+
+ public Text append(final String text) {
+ return (Text)this.a(text);
+ }
+ public Text setClick1(ClickAction action, String value)
+ {
+ getChatModifier().setChatClickable(new ChatClickable(action.getNMS(), value));
+ return this;
+ }
+
+ public Text append(final IChatBaseComponent node) {
+ return (Text)this.addSibling(node);
+ }
+
+ public Text append(final IChatBaseComponent... nodes) {
+ for (final IChatBaseComponent node : nodes) {
+ this.addSibling(node);
+ }
+ return this;
+ }
+
+ public Text localText(final ItemStack stack) {
+ return this.append((IChatBaseComponent)ChatUtil.localFromItem(stack));
+ }
+
+ public Text appendItem(final ItemStack stack) {
+ return this.append((IChatBaseComponent)ChatUtil.fromItemStack(stack));
+ }
+
+ public Text setBold(final boolean bold) {
+ this.getChatModifier().setBold(bold);
+ return this;
+ }
+
+ public Text setItalic(final boolean italic) {
+ this.getChatModifier().setItalic(italic);
+ return this;
+ }
+
+ public Text setUnderline(final boolean underline) {
+ this.getChatModifier().setUnderline(underline);
+ return this;
+ }
+
+ public Text setRandom(final boolean random) {
+ this.getChatModifier().setRandom(random);
+ return this;
+ }
+
+ public Text setStrikethrough(final boolean strikethrough) {
+ this.getChatModifier().setStrikethrough(strikethrough);
+ return this;
+ }
+
+ public Text setColor(final ChatColor color) {
+ this.getChatModifier().setColor(EnumChatFormat.valueOf(color.name()));
+ return this;
+ }
+
+ public Text setClick(final ClickAction action, final String value) {
+ this.getChatModifier().setChatClickable(new ChatClickable(action.getNMS(), value));
+ return this;
+ }
+
+ public Text setHover(final HoverAction action, final IChatBaseComponent value) {
+ this.getChatModifier().a(new ChatHoverable(action.getNMS(), value));
+ return this;
+ }
+
+ public Text setHoverText(final String text) {
+ return this.setHover(HoverAction.SHOW_TEXT, (IChatBaseComponent)new Text(text));
+ }
+
+ public Text reset() {
+ ChatUtil.reset((IChatBaseComponent)this);
+ return this;
+ }
+
+ public IChatBaseComponent f() {
+ return (IChatBaseComponent)this.h();
+ }
+
+ public String toRawText() {
+ return this.c();
+ }
+
+ public void send(final CommandSender sender) {
+ ChatUtil.send(sender, (IChatBaseComponent)this);
+ }
+
+ public void broadcast() {
+ this.broadcast(null);
+ }
+
+ public void broadcast(final String permission) {
+ for (final Player player : Bukkit.getOnlinePlayers()) {
+ if (permission == null || player.hasPermission(permission)) {
+ this.send((CommandSender)player);
+ }
+ }
+ this.send((CommandSender)Bukkit.getConsoleSender());
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Trans.java b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Trans.java
new file mode 100644
index 0000000..41d37d1
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/chat/Trans.java
@@ -0,0 +1,110 @@
+package com.doctordark.util.chat;
+
+import org.bukkit.inventory.*;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.*;
+import net.minecraft.server.v1_7_R4.*;
+import org.bukkit.command.*;
+
+public class Trans extends ChatMessage
+{
+ public Trans() {
+ super("", new Object[0]);
+ }
+
+ public Trans(final String string, final Object... objects) {
+ super(string, objects);
+ }
+
+ public static Trans fromItemStack(final ItemStack stack) {
+ return ChatUtil.fromItemStack(stack);
+ }
+
+ public IChatBaseComponent f() {
+ return (IChatBaseComponent)this.h();
+ }
+
+ public Trans append(final Object object) {
+ return this.append(String.valueOf(object));
+ }
+
+ public Trans append(final String text) {
+ return (Trans)this.a(text);
+ }
+
+ public Trans append(final IChatBaseComponent node) {
+ return (Trans)this.addSibling(node);
+ }
+
+ public Trans append(final IChatBaseComponent... nodes) {
+ for (final IChatBaseComponent node : nodes) {
+ this.addSibling(node);
+ }
+ return this;
+ }
+
+ public Trans appendItem(final ItemStack stack) {
+ return this.append((IChatBaseComponent)ChatUtil.fromItemStack(stack));
+ }
+
+ public Trans localText(final ItemStack stack) {
+ return this.append((IChatBaseComponent)ChatUtil.localFromItem(stack));
+ }
+
+ public Trans setBold(final boolean bold) {
+ this.getChatModifier().setBold(bold);
+ return this;
+ }
+
+ public Trans setItalic(final boolean italic) {
+ this.getChatModifier().setItalic(italic);
+ return this;
+ }
+
+ public Trans setUnderline(final boolean underline) {
+ this.getChatModifier().setUnderline(underline);
+ return this;
+ }
+
+ public Trans setRandom(final boolean random) {
+ this.getChatModifier().setRandom(random);
+ return this;
+ }
+
+ public Trans setStrikethrough(final boolean strikethrough) {
+ this.getChatModifier().setStrikethrough(strikethrough);
+ return this;
+ }
+
+ public Trans setColor(final ChatColor color) {
+ this.getChatModifier().setColor(EnumChatFormat.valueOf(color.name()));
+ return this;
+ }
+
+ public Trans setClick(final ClickAction action, final String value) {
+ this.getChatModifier().setChatClickable(new ChatClickable(action.getNMS(), value));
+ return this;
+ }
+
+ public Trans setHover(final HoverAction action, final IChatBaseComponent value) {
+ this.getChatModifier().a(new ChatHoverable(action.getNMS(), value));
+ return this;
+ }
+
+ public Trans setHoverText(final String text) {
+ return this.setHover(HoverAction.SHOW_TEXT, (IChatBaseComponent)new Text(text));
+ }
+
+ public Trans reset() {
+ ChatUtil.reset((IChatBaseComponent)this);
+ return this;
+ }
+
+ public String toRawText() {
+ return this.c();
+ }
+
+ public void send(final CommandSender sender) {
+ ChatUtil.send(sender, (IChatBaseComponent)this);
+ }
+}
\ No newline at end of file
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/command/ArgumentExecutor.java b/WenjaPvP - HCFactions/src/com/doctordark/util/command/ArgumentExecutor.java
new file mode 100644
index 0000000..3f8e7fe
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/command/ArgumentExecutor.java
@@ -0,0 +1,96 @@
+package com.doctordark.util.command;
+
+import com.google.common.collect.*;
+import java.util.*;
+import org.bukkit.command.*;
+import org.bukkit.*;
+import org.apache.commons.lang3.text.*;
+import com.doctordark.util.*;
+
+public abstract class ArgumentExecutor implements CommandExecutor, TabCompleter {
+ protected final List arguments;
+ protected final String label;
+
+ public ArgumentExecutor(final String label) {
+ this.arguments = new ArrayList();
+ this.label = label;
+ }
+
+ public boolean containsArgument(final CommandArgument argument) {
+ return this.arguments.contains(argument);
+ }
+
+ public void addArgument(final CommandArgument argument) {
+ this.arguments.add(argument);
+ }
+
+ public void removeArgument(final CommandArgument argument) {
+ this.arguments.remove(argument);
+ }
+
+ public CommandArgument getArgument(final String id) {
+ for (final CommandArgument argument : this.arguments) {
+ final String name = argument.getName();
+ if (name.equalsIgnoreCase(id) || Arrays.asList(argument.getAliases()).contains(id.toLowerCase())) {
+ return argument;
+ }
+ }
+ return null;
+ }
+
+ public String getLabel() {
+ return this.label;
+ }
+
+ public List getArguments() {
+ return (List) ImmutableList.copyOf((Collection) this.arguments);
+ }
+
+ public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (args.length < 1) {
+ sender.sendMessage(ChatColor.DARK_GRAY + BukkitUtils.STRAIGHT_LINE_DEFAULT);
+ sender.sendMessage(ChatColor.RED + WordUtils.capitalizeFully(this.label + " Help"));
+ for (final CommandArgument argument : this.arguments) {
+ final String permission = argument.getPermission();
+ if (permission == null || sender.hasPermission(permission)) {
+ sender.sendMessage(ChatColor.GRAY + argument.getUsage(label) + " - " + argument.getDescription() + '.');
+ sender.sendMessage(ChatColor.DARK_GRAY + BukkitUtils.STRAIGHT_LINE_DEFAULT);
+ }
+ }
+ return true;
+ }
+ final CommandArgument argument2 = this.getArgument(args[0]);
+ final String permission2 = (argument2 == null) ? null : argument2.getPermission();
+ if (argument2 == null || (permission2 != null && !sender.hasPermission(permission2))) {
+ sender.sendMessage(ChatColor.RED + WordUtils.capitalizeFully(this.label) + " sub-command " + args[0] + " not found.");
+ return true;
+ }
+ argument2.onCommand(sender, command, label, args);
+ return true;
+ }
+
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ List results = new ArrayList();
+ if (args.length < 2) {
+ for (final CommandArgument argument : this.arguments) {
+ final String permission = argument.getPermission();
+ if (permission == null || sender.hasPermission(permission)) {
+ results.add(argument.getName());
+ }
+ }
+ } else {
+ final CommandArgument argument2 = this.getArgument(args[0]);
+ if (argument2 == null) {
+ return results;
+ }
+ final String permission2 = argument2.getPermission();
+ if (permission2 == null || sender.hasPermission(permission2)) {
+ results = argument2.onTabComplete(sender, command, label, args);
+ if (results == null) {
+ return null;
+ }
+ }
+ }
+ return BukkitUtils.getCompletions(args, results);
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandArgument.java b/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandArgument.java
new file mode 100644
index 0000000..8c3b61e
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandArgument.java
@@ -0,0 +1,112 @@
+package com.doctordark.util.command;
+
+import org.apache.commons.lang3.*;
+import org.bukkit.command.*;
+import java.util.*;
+
+public abstract class CommandArgument {
+ private final String name;
+ protected boolean isPlayerOnly;
+ protected String description;
+ protected String permission;
+ protected String[] aliases;
+
+ public CommandArgument(final String name, final String description) {
+ this(name, description, (String) null);
+ }
+
+ public CommandArgument(final String name, final String description, final String permission) {
+ this(name, description, permission, ArrayUtils.EMPTY_STRING_ARRAY);
+ }
+
+ public CommandArgument(final String name, final String description, final String[] aliases) {
+ this(name, description, null, aliases);
+ }
+
+ public CommandArgument(final String name, final String description, final String permission, final String[] aliases) {
+ this.isPlayerOnly = false;
+ this.name = name;
+ this.description = description;
+ this.permission = permission;
+ this.aliases = Arrays.copyOf(aliases, aliases.length);
+ }
+
+ public final String getName() {
+ return this.name;
+ }
+
+ public boolean isPlayerOnly() {
+ return this.isPlayerOnly;
+ }
+
+ public final String getDescription() {
+ return this.description;
+ }
+
+ public final String getPermission() {
+ return this.permission;
+ }
+
+ public final String[] getAliases() {
+ if (this.aliases == null) {
+ this.aliases = ArrayUtils.EMPTY_STRING_ARRAY;
+ }
+ return Arrays.copyOf(this.aliases, this.aliases.length);
+ }
+
+ public abstract String getUsage(final String p0);
+
+ public abstract boolean onCommand(final CommandSender p0, final Command p1, final String p2, final String[] p3);
+
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CommandArgument)) {
+ return false;
+ }
+ final CommandArgument that = (CommandArgument) o;
+ Label_0054: {
+ if (this.name != null) {
+ if (this.name.equals(that.name)) {
+ break Label_0054;
+ }
+ } else if (that.name == null) {
+ break Label_0054;
+ }
+ return false;
+ }
+ Label_0087: {
+ if (this.description != null) {
+ if (this.description.equals(that.description)) {
+ break Label_0087;
+ }
+ } else if (that.description == null) {
+ break Label_0087;
+ }
+ return false;
+ }
+ if (this.permission != null) {
+ if (this.permission.equals(that.permission)) {
+ return Arrays.equals(this.aliases, that.aliases);
+ }
+ } else if (that.permission == null) {
+ return Arrays.equals(this.aliases, that.aliases);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (this.name != null) ? this.name.hashCode() : 0;
+ result = 31 * result + ((this.description != null) ? this.description.hashCode() : 0);
+ result = 31 * result + ((this.permission != null) ? this.permission.hashCode() : 0);
+ result = 31 * result + ((this.aliases != null) ? Arrays.hashCode(this.aliases) : 0);
+ return result;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandWrapper.java b/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandWrapper.java
new file mode 100644
index 0000000..26c796f
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/command/CommandWrapper.java
@@ -0,0 +1,88 @@
+package com.doctordark.util.command;
+
+import org.bukkit.command.*;
+import org.bukkit.entity.*;
+import com.doctordark.util.*;
+import org.bukkit.*;
+import org.apache.commons.lang3.text.*;
+import java.util.*;
+import java.io.*;
+
+public class CommandWrapper implements CommandExecutor, TabCompleter {
+ private final Collection arguments;
+
+ public CommandWrapper(final Collection arguments) {
+ this.arguments = arguments;
+ }
+
+ public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (args.length < 1) {
+ printUsage(sender, label, this.arguments);
+ return true;
+ }
+ final CommandArgument argument = matchArgument(args[0], sender, this.arguments);
+ if (argument == null) {
+ printUsage(sender, label, this.arguments);
+ return true;
+ }
+ return argument.onCommand(sender, command, label, args);
+ }
+
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (!(sender instanceof Player)) {
+ return Collections.emptyList();
+ }
+ List results;
+ if (args.length == 1) {
+ results = getAccessibleArgumentNames(sender, this.arguments);
+ } else {
+ final CommandArgument argument = matchArgument(args[0], sender, this.arguments);
+ if (argument == null) {
+ return Collections.emptyList();
+ }
+ results = argument.onTabComplete(sender, command, label, args);
+ if (results == null) {
+ return null;
+ }
+ }
+ return BukkitUtils.getCompletions(args, results);
+ }
+
+ public static void printUsage(final CommandSender sender, final String label, final Collection arguments) {
+ sender.sendMessage(ChatColor.DARK_AQUA + "*** " + WordUtils.capitalizeFully(label) + " Help ***");
+ for (final CommandArgument argument : arguments) {
+ final String permission = argument.getPermission();
+ if (permission == null || sender.hasPermission(permission)) {
+ sender.sendMessage(ChatColor.GRAY + argument.getUsage(label) + " - " + argument.getDescription());
+ }
+ }
+ }
+
+ public static CommandArgument matchArgument(final String id, final CommandSender sender, final Collection arguments) {
+ for (final CommandArgument argument : arguments) {
+ final String permission = argument.getPermission();
+ if ((permission == null || sender.hasPermission(permission)) && (argument.getName().equalsIgnoreCase(id) || Arrays.asList(argument.getAliases()).contains(id))) {
+ return argument;
+ }
+ }
+ return null;
+ }
+
+ public static List getAccessibleArgumentNames(final CommandSender sender, final Collection arguments) {
+ final List results = new ArrayList();
+ for (final CommandArgument argument : arguments) {
+ final String permission = argument.getPermission();
+ if (permission == null || sender.hasPermission(permission)) {
+ results.add(argument.getName());
+ }
+ }
+ return results;
+ }
+
+ public static class ArgumentComparator implements Comparator, Serializable {
+ @Override
+ public int compare(final CommandArgument primaryArgument, final CommandArgument secondaryArgument) {
+ return secondaryArgument.getName().compareTo(primaryArgument.getName());
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CoordinatePair.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CoordinatePair.java
new file mode 100644
index 0000000..3a79723
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CoordinatePair.java
@@ -0,0 +1,69 @@
+package com.doctordark.util.cuboid;
+
+import org.bukkit.block.*;
+import org.bukkit.*;
+
+public class CoordinatePair {
+ private final String worldName;
+ private final int x;
+ private final int z;
+
+ public CoordinatePair(final Block block) {
+ this(block.getWorld(), block.getX(), block.getZ());
+ }
+
+ public CoordinatePair(final World world, final int x, final int z) {
+ this.worldName = world.getName();
+ this.x = x;
+ this.z = z;
+ }
+
+ public World getWorld() {
+ return Bukkit.getWorld(this.worldName);
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CoordinatePair)) {
+ return false;
+ }
+ final CoordinatePair that = (CoordinatePair) o;
+ if (this.x != that.x) {
+ return false;
+ }
+ if (this.z != that.z) {
+ return false;
+ }
+ if (this.worldName != null) {
+ if (!this.worldName.equals(that.worldName)) {
+ return false;
+ }
+ } else if (that.worldName != null) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (this.worldName != null) ? this.worldName.hashCode() : 0;
+ result = 31 * result + this.x;
+ result = 31 * result + this.z;
+ return result;
+ }
+
+ public String getWorldName() {
+ return this.worldName;
+ }
+
+ public int getX() {
+ return this.x;
+ }
+
+ public int getZ() {
+ return this.z;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/Cuboid.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/Cuboid.java
new file mode 100644
index 0000000..e0c9529
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/Cuboid.java
@@ -0,0 +1,509 @@
+package com.doctordark.util.cuboid;
+
+import org.bukkit.block.*;
+import org.bukkit.configuration.serialization.*;
+
+import com.google.common.base.*;
+
+import org.bukkit.util.*;
+import org.bukkit.util.Vector;
+import org.bukkit.entity.*;
+
+import java.util.*;
+
+import org.bukkit.*;
+
+public class Cuboid implements Iterable, Cloneable, ConfigurationSerializable {
+ protected final String worldName;
+ protected int x1;
+ protected int y1;
+ protected int z1;
+ protected int x2;
+ protected int y2;
+ protected int z2;
+ private static final int CHUNK_SIZE = 16;
+
+ public Cuboid(final Map map) {
+ this.worldName = (String) map.get("worldName");
+ this.x1 = (int) map.get("x1");
+ this.y1 = (int) map.get("y1");
+ this.z1 = (int) map.get("z1");
+ this.x2 = (int) map.get("x2");
+ this.y2 = (int) map.get("y2");
+ this.z2 = (int) map.get("z2");
+ }
+
+ public Cuboid(final World world, final int x1, final int y1, final int z1, final int x2, final int y2, final int z2) {
+ this(((World) Preconditions.checkNotNull((Object) world)).getName(), x1, y1, z1, x2, y2, z2);
+ }
+
+ private Cuboid(final String worldName, final int x1, final int y1, final int z1, final int x2, final int y2, final int z2) {
+ Preconditions.checkNotNull((Object) worldName, (Object) "World name cannot be null");
+ this.worldName = worldName;
+ this.x1 = Math.min(x1, x2);
+ this.y1 = Math.min(y1, y2);
+ this.z1 = Math.min(z1, z2);
+ this.x2 = Math.max(x1, x2);
+ this.y2 = Math.max(y1, y2);
+ this.z2 = Math.max(z1, z2);
+ }
+
+ public Cuboid(final Location first, final Location second) {
+ Preconditions.checkNotNull((Object) first, (Object) "Location 1 cannot be null");
+ Preconditions.checkNotNull((Object) second, (Object) "Location 2 cannot be null");
+ Preconditions.checkArgument(first.getWorld().equals(second.getWorld()), (Object) "Locations must be on the same world");
+ this.worldName = first.getWorld().getName();
+ this.x1 = Math.min(first.getBlockX(), second.getBlockX());
+ this.y1 = Math.min(first.getBlockY(), second.getBlockY());
+ this.z1 = Math.min(first.getBlockZ(), second.getBlockZ());
+ this.x2 = Math.max(first.getBlockX(), second.getBlockX());
+ this.y2 = Math.max(first.getBlockY(), second.getBlockY());
+ this.z2 = Math.max(first.getBlockZ(), second.getBlockZ());
+ }
+
+ public Cuboid(final Location location) {
+ this(location, location);
+ }
+
+ public Cuboid(final Cuboid other) {
+ this(other.getWorld().getName(), other.x1, other.y1, other.z1, other.x2, other.y2, other.z2);
+ }
+
+ public Map serialize() {
+ final Map map = new LinkedHashMap();
+ map.put("worldName", this.worldName);
+ map.put("x1", this.x1);
+ map.put("y1", this.y1);
+ map.put("z1", this.z1);
+ map.put("x2", this.x2);
+ map.put("y2", this.y2);
+ map.put("z2", this.z2);
+ return map;
+ }
+
+ public boolean hasBothPositionsSet() {
+ return this.getMinimumPoint() != null && this.getMaximumPoint() != null;
+ }
+
+ public int getMinimumX() {
+ return Math.min(this.x1, this.x2);
+ }
+
+ public int getMinimumZ() {
+ return Math.min(this.z1, this.z2);
+ }
+
+ public int getMaximumX() {
+ return Math.max(this.x1, this.x2);
+ }
+
+ public int getMaximumZ() {
+ return Math.max(this.z1, this.z2);
+ }
+
+ public List edges() {
+ return this.edges(-1, -1, -1, -1);
+ }
+
+ public List edges(final int fixedMinX, final int fixedMaxX, final int fixedMinZ, final int fixedMaxZ) {
+ final Vector v1 = this.getMinimumPoint().toVector();
+ final Vector v2 = this.getMaximumPoint().toVector();
+ final int minX = v1.getBlockX();
+ final int maxX = v2.getBlockX();
+ final int minZ = v1.getBlockZ();
+ final int maxZ = v2.getBlockZ();
+ int capacity = (maxX - minX) * 4 + (maxZ - minZ) * 4;
+ capacity += 4;
+ final List result = new ArrayList(capacity);
+ if (capacity <= 0) {
+ return result;
+ }
+ final int minY = v1.getBlockY();
+ final int maxY = v1.getBlockY();
+ for (int x = minX; x <= maxX; ++x) {
+ result.add(new Vector(x, minY, minZ));
+ result.add(new Vector(x, minY, maxZ));
+ result.add(new Vector(x, maxY, minZ));
+ result.add(new Vector(x, maxY, maxZ));
+ }
+ for (int z = minZ; z <= maxZ; ++z) {
+ result.add(new Vector(minX, minY, z));
+ result.add(new Vector(minX, maxY, z));
+ result.add(new Vector(maxX, minY, z));
+ result.add(new Vector(maxX, maxY, z));
+ }
+ return result;
+ }
+
+ public Set getPlayers() {
+ final Set players = new HashSet();
+ for (final Player player : Bukkit.getOnlinePlayers()) {
+ if (this.contains(player)) {
+ players.add(player);
+ }
+ }
+ return players;
+ }
+
+ public Location getLowerNE() {
+ return new Location(this.getWorld(), (double) this.x1, (double) this.y1, (double) this.z1);
+ }
+
+ public Location getUpperSW() {
+ return new Location(this.getWorld(), (double) this.x2, (double) this.y2, (double) this.z2);
+ }
+
+ public Location getCenter() {
+ final int x1 = this.x2 + 1;
+ final int y1 = this.y2 + 1;
+ final int z1 = this.z2 + 1;
+ return new Location(this.getWorld(), this.x1 + (x1 - this.x1) / 2.0, this.y1 + (y1 - this.y1) / 2.0, this.z1 + (z1 - this.z1) / 2.0);
+ }
+
+ public String getWorldName() {
+ return this.worldName;
+ }
+
+ public World getWorld() {
+ return Bukkit.getWorld(this.worldName);
+ }
+
+ public int getSizeX() {
+ return this.x2 - this.x1 + 1;
+ }
+
+ public int getSizeY() {
+ return this.y2 - this.y1 + 1;
+ }
+
+ public int getSizeZ() {
+ return this.z2 - this.z1 + 1;
+ }
+
+ public int getX1() {
+ return this.x1;
+ }
+
+ public void setX1(final int x1) {
+ this.x1 = x1;
+ }
+
+ public int getY1() {
+ return this.y1;
+ }
+
+ public void setY1(final int y1) {
+ this.y1 = y1;
+ }
+
+ public int getZ1() {
+ return this.z1;
+ }
+
+ public void setZ1(final int z1) {
+ this.z1 = z1;
+ }
+
+ public int getX2() {
+ return this.x2;
+ }
+
+ public int getY2() {
+ return this.y2;
+ }
+
+ public void setY2(final int y2) {
+ this.y2 = y2;
+ }
+
+ public int getZ2() {
+ return this.z2;
+ }
+
+ public Location[] getCornerLocations() {
+ final Location[] result = new Location[8];
+ final Block[] cornerBlocks = this.getCornerBlocks();
+ for (int i = 0; i < cornerBlocks.length; ++i) {
+ result[i] = cornerBlocks[i].getLocation();
+ }
+ return result;
+ }
+
+ public Block[] getCornerBlocks() {
+ final Block[] result = new Block[8];
+ final World world = this.getWorld();
+ result[0] = world.getBlockAt(this.x1, this.y1, this.z1);
+ result[1] = world.getBlockAt(this.x1, this.y1, this.z2);
+ result[2] = world.getBlockAt(this.x1, this.y2, this.z1);
+ result[3] = world.getBlockAt(this.x1, this.y2, this.z2);
+ result[4] = world.getBlockAt(this.x2, this.y1, this.z1);
+ result[5] = world.getBlockAt(this.x2, this.y1, this.z2);
+ result[6] = world.getBlockAt(this.x2, this.y2, this.z1);
+ result[7] = world.getBlockAt(this.x2, this.y2, this.z2);
+ return result;
+ }
+
+ public Cuboid shift(final CuboidDirection direction, final int amount) throws IllegalArgumentException {
+ return this.expand(direction, amount).expand(direction.opposite(), -amount);
+ }
+
+ public Cuboid inset(final CuboidDirection direction, final int amount) throws IllegalArgumentException {
+ return this.outset(direction, -amount);
+ }
+
+ public Cuboid expand(final CuboidDirection direction, final int amount) throws IllegalArgumentException {
+ switch (direction) {
+ case NORTH: {
+ return new Cuboid(this.worldName, this.x1 - amount, this.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+ case SOUTH: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2 + amount, this.y2, this.z2);
+ }
+ case EAST: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1 - amount, this.x2, this.y2, this.z2);
+ }
+ case WEST: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, this.y2, this.z2 + amount);
+ }
+ case DOWN: {
+ return new Cuboid(this.worldName, this.x1, this.y1 - amount, this.z1, this.x2, this.y2, this.z2);
+ }
+ case UP: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, this.y2 + amount, this.z2);
+ }
+ default: {
+ throw new IllegalArgumentException("Invalid direction " + direction);
+ }
+ }
+ }
+
+ public Cuboid outset(final CuboidDirection direction, final int amount) throws IllegalArgumentException {
+ switch (direction) {
+ case HORIZONTAL: {
+ return this.expand(CuboidDirection.NORTH, amount).expand(CuboidDirection.SOUTH, amount).expand(CuboidDirection.EAST, amount).expand(CuboidDirection.WEST, amount);
+ }
+ case VERTICAL: {
+ return this.expand(CuboidDirection.DOWN, amount).expand(CuboidDirection.UP, amount);
+ }
+ case BOTH: {
+ return this.outset(CuboidDirection.HORIZONTAL, amount).outset(CuboidDirection.VERTICAL, amount);
+ }
+ default: {
+ throw new IllegalArgumentException("Invalid direction " + direction);
+ }
+ }
+ }
+
+ public boolean contains(final Cuboid cuboid) {
+ return this.contains(cuboid.getMinimumPoint()) || this.contains(cuboid.getMaximumPoint());
+ }
+
+ public boolean contains(final Player player) {
+ return this.contains(player.getLocation());
+ }
+
+ public boolean contains(final World world, final int x, final int z) {
+ return (world == null || this.getWorld().equals(world)) && x >= this.x1 && x <= this.x2 && z >= this.z1 && z <= this.z2;
+ }
+
+ public boolean contains(final int x, final int y, final int z) {
+ return x >= this.x1 && x <= this.x2 && y >= this.y1 && y <= this.y2 && z >= this.z1 && z <= this.z2;
+ }
+
+ public boolean contains(final Block block) {
+ return this.contains(block.getLocation());
+ }
+
+ public boolean contains(final Location location) {
+ if (location == null || this.worldName == null) {
+ return false;
+ }
+ final World world = location.getWorld();
+ return world != null && this.worldName.equals(location.getWorld().getName()) && this.contains(location.getBlockX(), location.getBlockY(), location.getBlockZ());
+ }
+
+ public int getVolume() {
+ return this.getSizeX() * this.getSizeY() * this.getSizeZ();
+ }
+
+ public int getArea() {
+ final Location min = this.getMinimumPoint();
+ final Location max = this.getMaximumPoint();
+ return (max.getBlockX() - min.getBlockX() + 1) * (max.getBlockZ() - min.getBlockZ() + 1);
+ }
+
+ public byte getAverageLightLevel() {
+ long total = 0L;
+ int count = 0;
+ for (final Block block : this) {
+ if (block.isEmpty()) {
+ total += block.getLightLevel();
+ ++count;
+ }
+ }
+ return (byte) ((count > 0) ? ((byte) (total / count)) : 0);
+ }
+
+ public Location getMinimumPoint() {
+ return new Location(this.getWorld(), (double) Math.min(this.x1, this.x2), (double) Math.min(this.y1, this.y2), (double) Math.min(this.z1, this.z2));
+ }
+
+ public Location getMaximumPoint() {
+ return new Location(this.getWorld(), (double) Math.max(this.x1, this.x2), (double) Math.max(this.y1, this.y2), (double) Math.max(this.z1, this.z2));
+ }
+
+ public int getWidth() {
+ return this.getMaximumPoint().getBlockX() - this.getMinimumPoint().getBlockX();
+ }
+
+ public int getHeight() {
+ return this.getMaximumPoint().getBlockY() - this.getMinimumPoint().getBlockY();
+ }
+
+ public int getLength() {
+ return this.getMaximumPoint().getBlockZ() - this.getMinimumPoint().getBlockZ();
+ }
+
+ public Cuboid contract() {
+ return this.contract(CuboidDirection.DOWN).contract(CuboidDirection.SOUTH).contract(CuboidDirection.EAST).contract(CuboidDirection.UP).contract(CuboidDirection.NORTH)
+ .contract(CuboidDirection.WEST);
+ }
+
+ public Cuboid contract(final CuboidDirection direction) {
+ Cuboid face = this.getFace(direction.opposite());
+ switch (direction) {
+ case DOWN: {
+ while (face.containsOnly(Material.AIR) && face.y1 > this.y1) {
+ face = face.shift(CuboidDirection.DOWN, 1);
+ }
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, face.y2, this.z2);
+ }
+ case UP: {
+ while (face.containsOnly(Material.AIR) && face.y2 < this.y2) {
+ face = face.shift(CuboidDirection.UP, 1);
+ }
+ return new Cuboid(this.worldName, this.x1, face.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+ case NORTH: {
+ while (face.containsOnly(Material.AIR) && face.x1 > this.x1) {
+ face = face.shift(CuboidDirection.NORTH, 1);
+ }
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, face.x2, this.y2, this.z2);
+ }
+ case SOUTH: {
+ while (face.containsOnly(Material.AIR) && face.x2 < this.x2) {
+ face = face.shift(CuboidDirection.SOUTH, 1);
+ }
+ return new Cuboid(this.worldName, face.x1, this.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+ case EAST: {
+ while (face.containsOnly(Material.AIR) && face.z1 > this.z1) {
+ face = face.shift(CuboidDirection.EAST, 1);
+ }
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, this.y2, face.z2);
+ }
+ case WEST: {
+ while (face.containsOnly(Material.AIR) && face.z2 < this.z2) {
+ face = face.shift(CuboidDirection.WEST, 1);
+ }
+ return new Cuboid(this.worldName, this.x1, this.y1, face.z1, this.x2, this.y2, this.z2);
+ }
+ default: {
+ throw new IllegalArgumentException("Invalid direction " + direction);
+ }
+ }
+ }
+
+ public Cuboid getFace(final CuboidDirection direction) {
+ switch (direction) {
+ case DOWN: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, this.y1, this.z2);
+ }
+ case UP: {
+ return new Cuboid(this.worldName, this.x1, this.y2, this.z1, this.x2, this.y2, this.z2);
+ }
+ case NORTH: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x1, this.y2, this.z2);
+ }
+ case SOUTH: {
+ return new Cuboid(this.worldName, this.x2, this.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+ case EAST: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z1, this.x2, this.y2, this.z1);
+ }
+ case WEST: {
+ return new Cuboid(this.worldName, this.x1, this.y1, this.z2, this.x2, this.y2, this.z2);
+ }
+ default: {
+ throw new IllegalArgumentException("Invalid direction " + direction);
+ }
+ }
+ }
+
+ public boolean containsOnly(final Material material) {
+ for (final Block block : this) {
+ if (block.getType() != material) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public Cuboid getBoundingCuboid(final Cuboid other) {
+ if (other == null) {
+ return this;
+ }
+ final int xMin = Math.min(this.x1, other.x1);
+ final int yMin = Math.min(this.y1, other.y1);
+ final int zMin = Math.min(this.z1, other.z1);
+ final int xMax = Math.max(this.x2, other.x2);
+ final int yMax = Math.max(this.y2, other.y2);
+ final int zMax = Math.max(this.z2, other.z2);
+ return new Cuboid(this.worldName, xMin, yMin, zMin, xMax, yMax, zMax);
+ }
+
+ public Block getRelativeBlock(final int x, final int y, final int z) {
+ return this.getWorld().getBlockAt(this.x1 + x, this.y1 + y, this.z1 + z);
+ }
+
+ public Block getRelativeBlock(final World world, final int x, final int y, final int z) {
+ return world.getBlockAt(this.x1 + x, this.y1 + y, this.z1 + z);
+ }
+
+ public List getChunks() {
+ final World world = this.getWorld();
+ final int x1 = this.x1 & 0xFFFFFFF0;
+ final int x2 = this.x2 & 0xFFFFFFF0;
+ final int z1 = this.z1 & 0xFFFFFFF0;
+ final int z2 = this.z2 & 0xFFFFFFF0;
+ final List result = new ArrayList(x2 - x1 + 16 + (z2 - z1) * 16);
+ for (int x3 = x1; x3 <= x2; x3 += 16) {
+ for (int z3 = z1; z3 <= z2; z3 += 16) {
+ result.add(world.getChunkAt(x3 >> 4, z3 >> 4));
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new CuboidBlockIterator(this.getWorld(), this.x1, this.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+
+ public Iterator locationIterator() {
+ return new CuboidLocationIterator(this.getWorld(), this.x1, this.y1, this.z1, this.x2, this.y2, this.z2);
+ }
+
+ public Cuboid clone() {
+ try {
+ return (Cuboid) super.clone();
+ } catch (CloneNotSupportedException ex) {
+ throw new RuntimeException("This could never happen", ex);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "Cuboid: " + this.worldName + ',' + this.x1 + ',' + this.y1 + ',' + this.z1 + "=>" + this.x2 + ',' + this.y2 + ',' + this.z2;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidBlockIterator.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidBlockIterator.java
new file mode 100644
index 0000000..2dcb53b
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidBlockIterator.java
@@ -0,0 +1,55 @@
+package com.doctordark.util.cuboid;
+
+import java.util.*;
+import org.bukkit.block.*;
+import org.bukkit.*;
+
+public class CuboidBlockIterator implements Iterator {
+ private final World world;
+ private final int baseX;
+ private final int baseY;
+ private final int baseZ;
+ private final int sizeX;
+ private final int sizeY;
+ private final int sizeZ;
+ private int x;
+ private int y;
+ private int z;
+
+ public CuboidBlockIterator(final World world, final int x1, final int y1, final int z1, final int x2, final int y2, final int z2) {
+ this.world = world;
+ this.baseX = x1;
+ this.baseY = y1;
+ this.baseZ = z1;
+ this.sizeX = Math.abs(x2 - x1) + 1;
+ this.sizeY = Math.abs(y2 - y1) + 1;
+ this.sizeZ = Math.abs(z2 - z1) + 1;
+ final boolean x3 = false;
+ this.z = (x3 ? 1 : 0);
+ this.y = (x3 ? 1 : 0);
+ this.x = (x3 ? 1 : 0);
+ }
+
+ @Override
+ public boolean hasNext() {
+ return this.x < this.sizeX && this.y < this.sizeY && this.z < this.sizeZ;
+ }
+
+ @Override
+ public Block next() {
+ final Block block = this.world.getBlockAt(this.baseX + this.x, this.baseY + this.y, this.baseZ + this.z);
+ if (++this.x >= this.sizeX) {
+ this.x = 0;
+ if (++this.y >= this.sizeY) {
+ this.y = 0;
+ ++this.z;
+ }
+ }
+ return block;
+ }
+
+ @Override
+ public void remove() throws UnsupportedOperationException {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidDirection.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidDirection.java
new file mode 100644
index 0000000..f00a0fb
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidDirection.java
@@ -0,0 +1,68 @@
+package com.doctordark.util.cuboid;
+
+import org.bukkit.block.*;
+
+public enum CuboidDirection {
+ NORTH, EAST, SOUTH, WEST, UP, DOWN, HORIZONTAL, VERTICAL, BOTH, UNKNOWN;
+
+ public CuboidDirection opposite() {
+ switch (this) {
+ case NORTH: {
+ return CuboidDirection.SOUTH;
+ }
+ case EAST: {
+ return CuboidDirection.WEST;
+ }
+ case SOUTH: {
+ return CuboidDirection.NORTH;
+ }
+ case WEST: {
+ return CuboidDirection.EAST;
+ }
+ case HORIZONTAL: {
+ return CuboidDirection.VERTICAL;
+ }
+ case VERTICAL: {
+ return CuboidDirection.HORIZONTAL;
+ }
+ case UP: {
+ return CuboidDirection.DOWN;
+ }
+ case DOWN: {
+ return CuboidDirection.UP;
+ }
+ case BOTH: {
+ return CuboidDirection.BOTH;
+ }
+ default: {
+ return CuboidDirection.UNKNOWN;
+ }
+ }
+ }
+
+ public BlockFace toBukkitDirection() {
+ switch (this) {
+ case NORTH: {
+ return BlockFace.NORTH;
+ }
+ case EAST: {
+ return BlockFace.EAST;
+ }
+ case SOUTH: {
+ return BlockFace.SOUTH;
+ }
+ case WEST: {
+ return BlockFace.WEST;
+ }
+ case UP: {
+ return BlockFace.UP;
+ }
+ case DOWN: {
+ return BlockFace.DOWN;
+ }
+ default: {
+ return null;
+ }
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidLocationIterator.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidLocationIterator.java
new file mode 100644
index 0000000..8d078f5
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/CuboidLocationIterator.java
@@ -0,0 +1,54 @@
+package com.doctordark.util.cuboid;
+
+import java.util.*;
+import org.bukkit.*;
+
+public class CuboidLocationIterator implements Iterator {
+ private final World world;
+ private final int baseX;
+ private final int baseY;
+ private final int baseZ;
+ private final int sizeX;
+ private final int sizeY;
+ private final int sizeZ;
+ private int x;
+ private int y;
+ private int z;
+
+ public CuboidLocationIterator(final World world, final int x1, final int y1, final int z1, final int x2, final int y2, final int z2) {
+ this.world = world;
+ this.baseX = x1;
+ this.baseY = y1;
+ this.baseZ = z1;
+ this.sizeX = Math.abs(x2 - x1) + 1;
+ this.sizeY = Math.abs(y2 - y1) + 1;
+ this.sizeZ = Math.abs(z2 - z1) + 1;
+ final boolean x3 = false;
+ this.z = (x3 ? 1 : 0);
+ this.y = (x3 ? 1 : 0);
+ this.x = (x3 ? 1 : 0);
+ }
+
+ @Override
+ public boolean hasNext() {
+ return this.x < this.sizeX && this.y < this.sizeY && this.z < this.sizeZ;
+ }
+
+ @Override
+ public Location next() {
+ final Location location = new Location(this.world, (double) (this.baseX + this.x), (double) (this.baseY + this.y), (double) (this.baseZ + this.z));
+ if (++this.x >= this.sizeX) {
+ this.x = 0;
+ if (++this.y >= this.sizeY) {
+ this.y = 0;
+ ++this.z;
+ }
+ }
+ return location;
+ }
+
+ @Override
+ public void remove() throws UnsupportedOperationException {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/NamedCuboid.java b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/NamedCuboid.java
new file mode 100644
index 0000000..ff81a35
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/cuboid/NamedCuboid.java
@@ -0,0 +1,55 @@
+package com.doctordark.util.cuboid;
+
+import org.bukkit.*;
+
+import java.util.*;
+
+public class NamedCuboid extends Cuboid {
+ protected String name;
+
+ public NamedCuboid(final Cuboid other) {
+ super(other.getWorld(), other.x1, other.y1, other.z1, other.x2, other.y2, other.z2);
+ }
+
+ public NamedCuboid(final World world, final int x1, final int y1, final int z1, final int x2, final int y2, final int z2) {
+ super(world, x1, y1, z1, x2, y2, z2);
+ }
+
+ public NamedCuboid(final Location location) {
+ super(location, location);
+ }
+
+ public NamedCuboid(final Location first, final Location second) {
+ super(first, second);
+ }
+
+ public NamedCuboid(final Map map) {
+ super(map);
+ this.name = (String) map.get("name");
+ }
+
+ @Override
+ public Map serialize() {
+ final Map map = super.serialize();
+ map.put("name", this.name);
+ return map;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public NamedCuboid clone() {
+ return (NamedCuboid) super.clone();
+ }
+
+ @Override
+ public String toString() {
+ return "NamedCuboid: " + this.worldName + ',' + this.x1 + ',' + this.y1 + ',' + this.z1 + "=>" + this.x2 + ',' + this.y2 + ',' + this.z2 + ':' + this.name;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageChar.java b/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageChar.java
new file mode 100644
index 0000000..a735f31
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageChar.java
@@ -0,0 +1,15 @@
+package com.doctordark.util.imagemessage;
+
+public enum ImageChar {
+ BLOCK('\u2588'), DARK_SHADE('\u2593'), MEDIUM_SHADE('\u2592'), LIGHT_SHADE('\u2591');
+
+ private final char character;
+
+ private ImageChar(final char character) {
+ this.character = character;
+ }
+
+ public char getChar() {
+ return this.character;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageMessage.java b/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageMessage.java
new file mode 100644
index 0000000..be67d95
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/imagemessage/ImageMessage.java
@@ -0,0 +1,178 @@
+package com.doctordark.util.imagemessage;
+
+import java.awt.*;
+import java.awt.Color;
+
+import com.google.common.base.*;
+
+import org.bukkit.*;
+
+import java.net.*;
+
+import javax.imageio.*;
+
+import java.io.*;
+import java.awt.geom.*;
+import java.awt.image.*;
+
+import org.bukkit.craftbukkit.libs.joptsimple.internal.*;
+import org.bukkit.craftbukkit.libs.joptsimple.internal.Strings;
+
+import java.util.*;
+
+import org.bukkit.entity.*;
+
+public final class ImageMessage {
+ private static final char TRANSPARENT_CHAR = ' ';
+ private final String[] lines;
+ private static final Color[] colors;
+
+ private ImageMessage(final String... lines) throws IllegalArgumentException {
+ Preconditions.checkNotNull((Object) lines, (Object) "Lines cannot be null");
+ this.lines = lines;
+ }
+
+ public ImageMessage(final BufferedImage image, final int height, final char imageCharacter) throws IllegalArgumentException {
+ this(toImageMessage(toColourArray(image, height), imageCharacter));
+ }
+
+ public static ImageMessage newInstance(final BufferedImage image, final int height, final char imageCharacter) throws IllegalArgumentException {
+ Preconditions.checkNotNull((Object) image, (Object) "Image cannot be null");
+ Preconditions.checkArgument(height >= 0, (Object) "Height must be positive");
+ return new ImageMessage(image, height, imageCharacter);
+ }
+
+ public static ImageMessage newInstance(final ChatColor[][] chatColors, final char imageCharacter) {
+ return new ImageMessage(toImageMessage(chatColors, imageCharacter));
+ }
+
+ public static ImageMessage newInstance(final String url, final int height, final char imageCharacter) throws IllegalArgumentException {
+ Preconditions.checkNotNull((Object) url, (Object) "Image URL cannot be null");
+ Preconditions.checkArgument(height >= 0, (Object) "Height must be positive");
+ try {
+ return newInstance(ImageIO.read(new URL(url)), height, imageCharacter);
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex);
+ }
+ }
+
+ public static ImageMessage newInstance(final String fileName, final File folder, final int height, final char imageCharacter) throws IllegalArgumentException {
+ Preconditions.checkNotNull((Object) fileName, (Object) "File name cannot be null");
+ Preconditions.checkNotNull((Object) folder, (Object) "Folder cannot be null");
+ try {
+ return newInstance(ImageIO.read(new File(folder, fileName)), height, imageCharacter);
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex);
+ }
+ }
+
+ public ImageMessage appendText(final String... text) {
+ for (int i = 0; i < Math.min(text.length, this.lines.length); ++i) {
+ final StringBuilder sb = new StringBuilder();
+ final String[] lines = this.lines;
+ final int n = i;
+ lines[n] = sb.append(lines[n]).append(' ').append(text[i]).toString();
+ }
+ return this;
+ }
+
+ public ImageMessage appendCenteredText(final String... text) {
+ for (int i = 0; i < Math.min(text.length, this.lines.length); ++i) {
+ final String line = this.lines[i];
+ this.lines[i] = line + this.center(text[i], 65 - line.length());
+ }
+ return this;
+ }
+
+ private static ChatColor[][] toColourArray(final BufferedImage image, final int height) {
+ final double ratio = image.getHeight() / image.getWidth();
+ final BufferedImage resizedImage = resizeImage(image, (int) (height / ratio), height);
+ final ChatColor[][] chatImage = new ChatColor[resizedImage.getWidth()][resizedImage.getHeight()];
+ for (int x = 0; x < resizedImage.getWidth(); ++x) {
+ for (int y = 0; y < resizedImage.getHeight(); ++y) {
+ final ChatColor closest = getClosestChatColor(new Color(resizedImage.getRGB(x, y), true));
+ chatImage[x][y] = closest;
+ }
+ }
+ return chatImage;
+ }
+
+ private static String[] toImageMessage(final ChatColor[][] colors, final char imageCharacter) {
+ final String[] results = new String[colors[0].length];
+ for (int i = 0; i < colors[0].length; ++i) {
+ final StringBuilder line = new StringBuilder();
+ for (final ChatColor[] color : colors) {
+ final ChatColor current = color[i];
+ line.append((current != null) ? (current.toString() + imageCharacter) : ImageMessage.TRANSPARENT_CHAR);
+ }
+ results[i] = line.toString() + ChatColor.RESET;
+ }
+ return results;
+ }
+
+ private static BufferedImage resizeImage(final BufferedImage image, final int width, final int height) {
+ final AffineTransform transform = new AffineTransform();
+ transform.scale(width / image.getWidth(), height / image.getHeight());
+ return new AffineTransformOp(transform, 1).filter(image, null);
+ }
+
+ private static double getDistance(final Color c1, final Color c2) {
+ final int red = c1.getRed() - c2.getRed();
+ final int green = c1.getGreen() - c2.getGreen();
+ final int blue = c1.getBlue() - c2.getBlue();
+ final double redMean = (c1.getRed() + c2.getRed()) / 2.0;
+ final double weightRed = 2.0 + redMean / 256.0;
+ final double weightGreen = 4.0;
+ final double weightBlue = 2.0 + (255.0 - redMean) / 256.0;
+ return weightRed * red * red + weightGreen * green * green + weightBlue * blue * blue;
+ }
+
+ private static boolean areIdentical(final Color c1, final Color c2) {
+ return Math.abs(c1.getRed() - c2.getRed()) <= 5 && Math.abs(c1.getGreen() - c2.getGreen()) <= 5 && Math.abs(c1.getBlue() - c2.getBlue()) <= 5;
+ }
+
+ private static ChatColor getClosestChatColor(final Color color) {
+ if (color.getAlpha() < 128) {
+ return null;
+ }
+ for (int i = 0; i < ImageMessage.colors.length; ++i) {
+ if (areIdentical(ImageMessage.colors[i], color)) {
+ return ChatColor.values()[i];
+ }
+ }
+ int index = 0;
+ double best = -1.0;
+ for (int j = 0; j < ImageMessage.colors.length; ++j) {
+ final double distance = getDistance(color, ImageMessage.colors[j]);
+ if (distance < best || best == -1.0) {
+ best = distance;
+ index = j;
+ }
+ }
+ return ChatColor.values()[index];
+ }
+
+ private String center(final String string, final int length) {
+ if (string.length() > length) {
+ return string.substring(0, length);
+ }
+ if (string.length() == length) {
+ return string;
+ }
+ return Strings.repeat(' ', (length - string.length()) / 2) + string;
+ }
+
+ public String[] getLines() {
+ return Arrays.copyOf(this.lines, this.lines.length);
+ }
+
+ public void sendToPlayer(final Player player) {
+ player.sendMessage(this.lines);
+ }
+
+ static {
+ colors = new Color[] { new Color(0, 0, 0), new Color(0, 0, 170), new Color(0, 170, 0), new Color(0, 170, 170), new Color(170, 0, 0), new Color(170, 0, 170), new Color(255, 170, 0),
+ new Color(170, 170, 170), new Color(85, 85, 85), new Color(85, 85, 255), new Color(85, 255, 85), new Color(85, 255, 255), new Color(255, 85, 85), new Color(255, 85, 255),
+ new Color(255, 255, 85), new Color(255, 255, 255) };
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemData.java b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemData.java
new file mode 100644
index 0000000..4cd2a5c
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemData.java
@@ -0,0 +1,103 @@
+package com.doctordark.util.itemdb;
+
+import org.bukkit.configuration.serialization.*;
+import org.bukkit.*;
+import org.bukkit.material.*;
+import org.bukkit.inventory.*;
+import java.util.*;
+import com.doctordark.internal.com.doctordark.base.*;
+
+public class ItemData implements ConfigurationSerializable {
+ private final Material material;
+ private final short itemData;
+
+ public ItemData(final MaterialData data) {
+ this(data.getItemType(), data.getData());
+ }
+
+ public ItemData(final ItemStack stack) {
+ this(stack.getType(), stack.getData().getData());
+ }
+
+ public ItemData(final Material material, final short itemData) {
+ this.material = material;
+ this.itemData = itemData;
+ }
+
+ public ItemData(final Map map) {
+ Object object = map.get("itemType");
+ if (!(object instanceof String)) {
+ throw new AssertionError((Object) "Incorrectly configurised");
+ }
+ this.material = Material.getMaterial((String) object);
+ if ((object = map.get("itemData")) instanceof Short) {
+ this.itemData = (short) object;
+ return;
+ }
+ throw new AssertionError((Object) "Incorrectly configurised");
+ }
+
+ public Map serialize() {
+ final Map map = new LinkedHashMap();
+ map.put("itemType", this.material.name());
+ map.put("itemData", this.itemData);
+ return map;
+ }
+
+ public Material getMaterial() {
+ return this.material;
+ }
+
+ @Deprecated
+ public short getItemData() {
+ return this.itemData;
+ }
+
+ public String getItemName() {
+ return BasePlugin.getPlugin().getItemDb().getName(new ItemStack(this.material, 1, this.itemData));
+ }
+
+ public static ItemData fromItemName(final String string) {
+ final ItemStack stack = BasePlugin.getPlugin().getItemDb().getItem(string);
+ return new ItemData(stack.getType(), stack.getData().getData());
+ }
+
+ public static ItemData fromStringValue(final String value) {
+ final int firstBracketIndex = value.indexOf(40);
+ if (firstBracketIndex == -1) {
+ return null;
+ }
+ final int otherBracketIndex = value.indexOf(41);
+ if (otherBracketIndex == -1) {
+ return null;
+ }
+ final String itemName = value.substring(0, firstBracketIndex);
+ final String itemData = value.substring(firstBracketIndex + 1, otherBracketIndex);
+ final Material material = Material.getMaterial(itemName);
+ return new ItemData(material, Short.parseShort(itemData));
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(this.material.name()) + "(" + String.valueOf(this.itemData) + ")";
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || this.getClass() != o.getClass()) {
+ return false;
+ }
+ final ItemData itemData1 = (ItemData) o;
+ return this.itemData == itemData1.itemData && this.material == itemData1.material;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (this.material != null) ? this.material.hashCode() : 0;
+ result = 31 * result + this.itemData;
+ return result;
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemDb.java b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemDb.java
new file mode 100644
index 0000000..554deb1
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ItemDb.java
@@ -0,0 +1,26 @@
+package com.doctordark.util.itemdb;
+
+import org.bukkit.inventory.*;
+import org.bukkit.entity.*;
+import java.util.*;
+
+public interface ItemDb {
+ void reloadItemDatabase();
+
+ ItemStack getPotion(final String p0);
+
+ ItemStack getPotion(final String p0, final int p1);
+
+ ItemStack getItem(final String p0);
+
+ ItemStack getItem(final String p0, final int p1);
+
+ String getName(final ItemStack p0);
+
+ @Deprecated
+ String getPrimaryName(final ItemStack p0);
+
+ String getNames(final ItemStack p0);
+
+ List getMatching(final Player p0, final String[] p1);
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ManagedFile.java b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ManagedFile.java
new file mode 100644
index 0000000..75e5f0a
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/ManagedFile.java
@@ -0,0 +1,72 @@
+package com.doctordark.util.itemdb;
+
+import org.bukkit.plugin.java.*;
+import java.util.logging.*;
+import java.nio.charset.*;
+import java.math.*;
+import java.security.*;
+import java.nio.file.*;
+import com.doctordark.internal.com.doctordark.base.*;
+import java.util.*;
+import java.io.*;
+
+public class ManagedFile {
+ private static final int BUFFER_SIZE = 8192;
+ private final transient File file;
+
+ public ManagedFile(final String filename, final JavaPlugin plugin) {
+ this.file = new File(plugin.getDataFolder(), filename);
+ if (!this.file.exists()) {
+ try {
+ copyResourceAscii('/' + filename, this.file);
+ } catch (IOException ex) {
+ plugin.getLogger().log(Level.SEVERE, "items.csv has not been loaded", ex);
+ }
+ }
+ }
+
+ public File getFile() {
+ return this.file;
+ }
+
+ public static void copyResourceAscii(final String resourceName, final File file) throws IOException {
+ try (final InputStreamReader reader = new InputStreamReader(ManagedFile.class.getResourceAsStream(resourceName), StandardCharsets.UTF_8)) {
+ final MessageDigest digest = getDigest();
+ try (final DigestOutputStream digestStream = new DigestOutputStream(new FileOutputStream(file), digest);
+ final OutputStreamWriter writer = new OutputStreamWriter(digestStream, StandardCharsets.UTF_8)) {
+ final char[] buffer = new char[8192];
+ int length;
+ while ((length = reader.read(buffer)) >= 0) {
+ writer.write(buffer, 0, length);
+ }
+ writer.write("\n");
+ writer.flush();
+ digestStream.on(false);
+ digestStream.write(35);
+ digestStream.write(new BigInteger(1, digest.digest()).toString(16).getBytes(StandardCharsets.UTF_8));
+ }
+ }
+ }
+
+ public static MessageDigest getDigest() throws IOException {
+ try {
+ return MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException ex) {
+ throw new IOException(ex);
+ }
+ }
+
+ public List getLines() {
+ try (final BufferedReader reader = Files.newBufferedReader(Paths.get(this.file.getPath(), new String[0]), StandardCharsets.UTF_8)) {
+ final List lines = new ArrayList();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ lines.add(line);
+ }
+ return lines;
+ } catch (IOException ex) {
+ BasePlugin.getPlugin().getJavaPlugin().getLogger().log(Level.SEVERE, ex.getMessage(), ex);
+ return Collections.emptyList();
+ }
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/SimpleItemDb.java b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/SimpleItemDb.java
new file mode 100644
index 0000000..195036a
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/com/doctordark/util/itemdb/SimpleItemDb.java
@@ -0,0 +1,311 @@
+package com.doctordark.util.itemdb;
+
+import gnu.trove.map.*;
+import org.bukkit.plugin.java.*;
+import com.google.common.collect.*;
+import gnu.trove.map.hash.*;
+import com.doctordark.util.*;
+import org.bukkit.potion.*;
+import org.bukkit.*;
+import java.util.regex.*;
+import org.bukkit.entity.*;
+import org.bukkit.inventory.*;
+import org.bukkit.craftbukkit.v1_7_R4.inventory.*;
+import java.util.*;
+import org.apache.commons.lang3.*;
+
+public class SimpleItemDb implements ItemDb {
+ private static final Comparator STRING_LENGTH_COMPARATOR;
+ private final TObjectIntMap items;
+ private final TreeMultimap names;
+ private final Map primaryName;
+ private final TObjectShortMap durabilities;
+ private final ManagedFile file;
+ private final Pattern splitPattern;
+ private static final Pattern PARTS_PATTERN;
+
+ public SimpleItemDb(final JavaPlugin plugin) {
+ this.items = (TObjectIntMap) new TObjectIntHashMap();
+ this.names = (TreeMultimap) TreeMultimap.create((Comparator) Ordering.arbitrary(), (Comparator) SimpleItemDb.STRING_LENGTH_COMPARATOR);
+ this.primaryName = new HashMap();
+ this.durabilities = (TObjectShortMap) new TObjectShortHashMap();
+ this.splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))");
+ this.file = new ManagedFile("items.csv", plugin);
+ this.reloadItemDatabase();
+ }
+
+ @Override
+ public void reloadItemDatabase() {
+ if (this.file.getFile() == null) {
+ return;
+ }
+ final List lines = this.file.getLines();
+ if (lines.isEmpty()) {
+ return;
+ }
+ this.durabilities.clear();
+ this.items.clear();
+ this.names.clear();
+ this.primaryName.clear();
+ for (String line : lines) {
+ line = line.trim().toLowerCase(Locale.ENGLISH);
+ if (line.length() > 0 && line.charAt(0) == '#') {
+ continue;
+ }
+ final String[] parts = SimpleItemDb.PARTS_PATTERN.split(line);
+ if (parts.length < 2) {
+ continue;
+ }
+ Material material;
+ try {
+ final int numeric = Integer.parseInt(parts[1]);
+ material = Material.getMaterial(numeric);
+ } catch (IllegalArgumentException ex) {
+ material = Material.getMaterial(parts[1]);
+ }
+ final short data = (short) ((parts.length > 2 && !parts[2].equals("0")) ? Short.parseShort(parts[2]) : 0);
+ final String itemName = parts[0].toLowerCase(Locale.ENGLISH);
+ this.durabilities.put(itemName, data);
+ this.items.put(itemName, material.getId());
+ final ItemData itemData = new ItemData(material, data);
+ if (this.names.containsKey((Object) itemData)) {
+ this.names.get(itemData).add(itemName);
+ } else {
+ this.names.put(itemData, itemName);
+ this.primaryName.put(itemData, itemName);
+ }
+ }
+ }
+
+ @Override
+ public ItemStack getPotion(final String id) {
+ return this.getPotion(id, 1);
+ }
+
+ @Override
+ public ItemStack getPotion(String id, final int quantity) {
+ int length = id.length();
+ if (length <= 1) {
+ return null;
+ }
+ boolean splash = false;
+ if (length > 1 && id.endsWith("s")) {
+ id = id.substring(0, --length);
+ splash = true;
+ if (length <= 1) {
+ return null;
+ }
+ }
+ boolean extended = false;
+ if (id.endsWith("e")) {
+ id = id.substring(0, --length);
+ extended = true;
+ if (length <= 1) {
+ return null;
+ }
+ }
+ final Integer level = JavaUtils.tryParseInt(id.substring(length - 1, length));
+ id = id.substring(0, --length);
+ final String lowerCase = id.toLowerCase(Locale.ENGLISH);
+ PotionType type = null;
+ switch (lowerCase) {
+ case "hp": {
+ type = PotionType.FIRE_RESISTANCE;
+ break;
+ }
+ case "rp": {
+ type = PotionType.REGEN;
+ break;
+ }
+ case "dp": {
+ type = PotionType.INSTANT_DAMAGE;
+ break;
+ }
+ case "swp": {
+ type = PotionType.SPEED;
+ break;
+ }
+ case "slp": {
+ type = PotionType.SLOWNESS;
+ break;
+ }
+ case "strp": {
+ type = PotionType.STRENGTH;
+ break;
+ }
+ case "wp": {
+ type = PotionType.WEAKNESS;
+ break;
+ }
+ case "pp": {
+ type = PotionType.POISON;
+ break;
+ }
+ case "frp": {
+ type = PotionType.FIRE_RESISTANCE;
+ break;
+ }
+ case "invp": {
+ type = PotionType.INVISIBILITY;
+ break;
+ }
+ case "nvp": {
+ type = PotionType.NIGHT_VISION;
+ break;
+ }
+ default: {
+ return null;
+ }
+ }
+ if (level == null || level > type.getMaxLevel()) {
+ return null;
+ }
+ final Potion potion = new Potion(type);
+ potion.setLevel((int) level);
+ potion.setSplash(splash);
+ potion.setHasExtendedDuration(extended);
+ final ItemStack result = potion.toItemStack(quantity);
+ result.setDurability((short) (result.getDurability() + 8192));
+ return result;
+ }
+
+ @Override
+ public ItemStack getItem(final String id) {
+ final ItemStack result = this.getItem(id, 1);
+ if (result == null) {
+ return null;
+ }
+ result.setAmount(result.getMaxStackSize());
+ return result;
+ }
+
+ @Override
+ public ItemStack getItem(final String id, final int quantity) {
+ ItemStack result = this.getPotion(id, quantity);
+ if (result != null) {
+ return result;
+ }
+ int itemId = 0;
+ short metaData = 0;
+ final Matcher parts = this.splitPattern.matcher(id);
+ String itemName;
+ if (parts.matches()) {
+ itemName = parts.group(2);
+ metaData = Short.parseShort(parts.group(3));
+ } else {
+ itemName = id;
+ }
+ Integer last;
+ if ((last = JavaUtils.tryParseInt(itemName)) != null) {
+ itemId = last;
+ } else if ((last = JavaUtils.tryParseInt(id)) != null) {
+ itemId = last;
+ } else {
+ itemName = itemName.toLowerCase(Locale.ENGLISH);
+ }
+ if (itemId < 1) {
+ if (this.items.containsKey((Object) itemName)) {
+ itemId = this.items.get((Object) itemName);
+ if (this.durabilities.containsKey((Object) itemName) && metaData == 0) {
+ metaData = this.durabilities.get((Object) itemName);
+ }
+ } else if (Material.getMaterial(itemName.toUpperCase(Locale.ENGLISH)) != null) {
+ final Material bMaterial = Material.getMaterial(itemName.toUpperCase(Locale.ENGLISH));
+ itemId = bMaterial.getId();
+ } else {
+ try {
+ final Material bMaterial = Bukkit.getUnsafe().getMaterialFromInternalName(itemName.toLowerCase(Locale.ENGLISH));
+ itemId = bMaterial.getId();
+ } catch (Exception ex) {
+ return null;
+ }
+ }
+ }
+ if (itemId < 1) {
+ return null;
+ }
+ final Material mat = Material.getMaterial(itemId);
+ if (mat == null) {
+ return null;
+ }
+ result = new ItemStack(mat);
+ result.setAmount(quantity);
+ result.setDurability(metaData);
+ return result;
+ }
+
+ @Override
+ public List getMatching(final Player player, final String[] args) {
+ final List items = new ArrayList();
+ final PlayerInventory inventory = player.getInventory();
+ if (args.length < 1 || args[0].equalsIgnoreCase("hand")) {
+ items.add(player.getItemInHand());
+ } else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all")) {
+ for (final ItemStack stack : inventory.getContents()) {
+ if (stack != null && stack.getType() != Material.AIR) {
+ items.add(stack);
+ }
+ }
+ } else if (args[0].equalsIgnoreCase("blocks")) {
+ for (final ItemStack stack : inventory.getContents()) {
+ if (stack != null && stack.getType() != Material.AIR && stack.getType().isBlock()) {
+ items.add(stack);
+ }
+ }
+ } else {
+ items.add(this.getItem(args[0]));
+ }
+ if (items.isEmpty() || items.get(0).getType() == Material.AIR) {
+ return null;
+ }
+ return items;
+ }
+
+ @Override
+ public String getName(final ItemStack item) {
+ return CraftItemStack.asNMSCopy(item).getName();
+ }
+
+ @Deprecated
+ @Override
+ public String getPrimaryName(final ItemStack item) {
+ ItemData itemData = new ItemData(item.getType(), item.getDurability());
+ String name = this.primaryName.get(itemData);
+ if (name == null) {
+ itemData = new ItemData(item.getType(), (short) 0);
+ name = this.primaryName.get(itemData);
+ if (name == null) {
+ return null;
+ }
+ }
+ return name;
+ }
+
+ @Override
+ public String getNames(final ItemStack item) {
+ ItemData itemData = new ItemData(item.getType(), item.getDurability());
+ Collection nameList = (Collection) this.names.get(itemData);
+ if (nameList == null) {
+ itemData = new ItemData(item.getType(), (short) 0);
+ nameList = (Collection) this.names.get(itemData);
+ if (nameList == null) {
+ return null;
+ }
+ }
+ List list = new ArrayList(nameList);
+ if (nameList.size() > 15) {
+ list = list.subList(0, 14);
+ }
+ return StringUtils.join((Iterable) list, ", ");
+ }
+
+ static {
+ STRING_LENGTH_COMPARATOR = new Comparator() {
+ @Override
+ public int compare(final String o1, final String o2) {
+ return o1.length() - o2.length();
+ }
+ };
+ PARTS_PATTERN = Pattern.compile("[^a-z0-9]");
+ }
+}
diff --git a/WenjaPvP - HCFactions/src/config.yml b/WenjaPvP - HCFactions/src/config.yml
new file mode 100644
index 0000000..cd06e93
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/config.yml
@@ -0,0 +1,87 @@
+death-signs: true
+diamond-ore-notifications: true
+death-lightning: true
+map-number: 1
+kit-map: false
+prevent-ally-damage: true
+exp-multiplier:
+ global: 2.0
+ fishing: 2.0
+ smelting: 2.0
+ looting-per-level: 1.5
+ luck-per-level: 1.5
+ fortune-per-level: 1.5
+roads:
+ allow-claims-besides: true
+scoreboard:
+ sidebar:
+ title: "&a&lHCF &c[Map {MAP_NUMBER}]"
+ enabled: true
+ nametags:
+ enabled: true
+combatlog:
+ enabled: true
+ despawn-delay-ticks: 600
+conquest:
+ point-loss-per-death: 20
+ victory-points: 300
+ allow-negative-points: true
+warzone:
+ radius: 800
+factions:
+ disallowed-faction-names:
+ - EOTW
+ min-name-characters: 3
+ max-name-characters: 16
+ max-members: 25
+ max-allies: 1
+subclaims:
+ min-name-characters: 3
+ max-name-characters: 16
+relation-colours:
+ wilderness: DARK_GREEN
+ warzone: LIGHT_PURPLE
+ teammate: GREEN
+ ally: GOLD
+ enemy: RED
+ road: GOLD
+deaths-till-raidable:
+ maximum: 6
+ millis-between-updates: 45000
+ increment-between-updates: 0.1
+deathban:
+ base-duration-minutes: 120
+ respawn-screen-seconds-before-kick: 15
+enchantment-limits:
+ PROTECTION_ENVIRONMENTAL: 3
+ PROTECTION_FIRE: 3
+ SILK_TOUCH: 1
+ DURABILITY: 3
+ PROTECTION_EXPLOSIONS: 3
+ LOOT_BONUS_BLOCKS: 3
+ PROTECTION_PROJECTILE: 3
+ OXYGEN: 3
+ WATER_WORKER: 1
+ THORNS: 0
+ DAMAGE_ALL: 3
+ ARROW_KNOCKBACK: 1
+ KNOCKBACK: 1
+ FIRE_ASPECT: 1
+ LOOT_BONUS_MOBS: 3
+ LUCK: 3
+ LURE: 3
+end:
+ open: true
+ exit: world,0.5,75,0.5,0,0
+eotw:
+ chat-symbol-prefix: ""
+ chat-symbol-suffix: ""
+ last-map-cappers: []
+potion-limits:
+ STRENGTH: 0
+ INVISIBILITY: 0
+ REGEN: 0
+ WEAKNESS: 0
+ INSTANT_DAMAGE: 0
+ SLOWNESS: 1
+ POISON: 1
diff --git a/WenjaPvP - HCFactions/src/coords.txt b/WenjaPvP - HCFactions/src/coords.txt
new file mode 100644
index 0000000..e69de29
diff --git a/WenjaPvP - HCFactions/src/enderdragon-art-old.png b/WenjaPvP - HCFactions/src/enderdragon-art-old.png
new file mode 100644
index 0000000..e33ffd6
Binary files /dev/null and b/WenjaPvP - HCFactions/src/enderdragon-art-old.png differ
diff --git a/WenjaPvP - HCFactions/src/enderdragon-art.png b/WenjaPvP - HCFactions/src/enderdragon-art.png
new file mode 100644
index 0000000..31c18b3
Binary files /dev/null and b/WenjaPvP - HCFactions/src/enderdragon-art.png differ
diff --git a/WenjaPvP - HCFactions/src/event-schedules.txt b/WenjaPvP - HCFactions/src/event-schedules.txt
new file mode 100644
index 0000000..3ee09a6
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/event-schedules.txt
@@ -0,0 +1,2 @@
+# year, month, day, hour, minute: eventName (24 hour clock)
+# 2015,1,1,2,0:Example This would run event named 'Example' at 2AM on the 1st of January, 2015.
diff --git a/WenjaPvP - HCFactions/src/faction-users.yml b/WenjaPvP - HCFactions/src/faction-users.yml
new file mode 100644
index 0000000..bf82e98
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/faction-users.yml
@@ -0,0 +1 @@
+users: {}
diff --git a/WenjaPvP - HCFactions/src/factions.yml b/WenjaPvP - HCFactions/src/factions.yml
new file mode 100644
index 0000000..10bc293
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/factions.yml
@@ -0,0 +1 @@
+factions: {}
diff --git a/WenjaPvP - HCFactions/src/gnu/trove/TByteCollection.java b/WenjaPvP - HCFactions/src/gnu/trove/TByteCollection.java
new file mode 100644
index 0000000..3e471b5
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/gnu/trove/TByteCollection.java
@@ -0,0 +1,317 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2001, Eric D. Friedman All Rights Reserved.
+// Copyright (c) 2009, Rob Eden All Rights Reserved.
+// Copyright (c) 2009, Jeff Randall All Rights Reserved.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+///////////////////////////////////////////////////////////////////////////////
+
+package gnu.trove;
+
+
+//////////////////////////////////////////////////
+// THIS IS A GENERATED CLASS. DO NOT HAND EDIT! //
+//////////////////////////////////////////////////
+
+import gnu.trove.iterator.TByteIterator;
+import gnu.trove.procedure.TByteProcedure;
+
+import java.util.Collection;
+import java.io.Serializable;
+
+/**
+ * An interface that mimics the Collection interface.
+ *
+ * @author Eric D. Friedman
+ * @author Rob Eden
+ * @author Jeff Randall
+ * @version $Id: _E_Collection.template,v 1.1.2.2 2009/09/15 02:38:30 upholderoftruth Exp $
+ */
+
+public interface TByteCollection {
+ static final long serialVersionUID = 1L;
+
+ /**
+ * Returns the value that is used to represent null. The default
+ * value is generally zero, but can be changed during construction
+ * of the collection.
+ *
+ * @return the value that represents null
+ */
+ byte getNoEntryValue();
+
+
+ /**
+ * Returns the number of elements in this collection (its cardinality). If this
+ * collection contains more than Integer.MAX_VALUE elements, returns
+ * Integer.MAX_VALUE .
+ *
+ * @return the number of elements in this collection (its cardinality)
+ */
+ int size();
+
+
+ /**
+ * Returns true if this collection contains no elements.
+ *
+ * @return true if this collection contains no elements
+ */
+ boolean isEmpty();
+
+
+ /**
+ * Returns true if this collection contains the specified element.
+ *
+ * @param entry an byte
value
+ * @return true if the collection contains the specified element.
+ */
+ boolean contains( byte entry );
+
+
+ /**
+ * Creates an iterator over the values of the collection. The iterator
+ * supports element deletion.
+ *
+ * @return an TByteIterator
value
+ */
+ TByteIterator iterator();
+
+
+ /**
+ * Returns an array containing all of the elements in this collection.
+ * If this collection makes any guarantees as to what order its elements
+ * are returned by its iterator, this method must return the
+ * elements in the same order.
+ *
+ * The returned array will be "safe" in that no references to it
+ * are maintained by this collection. (In other words, this method must
+ * allocate a new array even if this collection is backed by an array).
+ * The caller is thus free to modify the returned array.
+ *
+ *
This method acts as bridge between array-based and collection-based
+ * APIs.
+ *
+ * @return an array containing all the elements in this collection
+ */
+ byte[] toArray();
+
+
+ /**
+ * Returns an array containing elements in this collection.
+ *
+ *
If this collection fits in the specified array with room to spare
+ * (i.e., the array has more elements than this collection), the element in
+ * the array immediately following the end of the collection is collection to
+ * {@link #getNoEntryValue()} . (This is useful in determining
+ * the length of this collection only if the caller knows that this
+ * collection does not contain any elements representing null.)
+ *
+ *
If the native array is smaller than the collection size,
+ * the array will be filled with elements in Iterator order
+ * until it is full and exclude the remainder.
+ *
+ *
If this collection makes any guarantees as to what order its elements
+ * are returned by its iterator, this method must return the elements
+ * in the same order.
+ *
+ * @param dest the array into which the elements of this collection are to be
+ * stored.
+ * @return an byte[] containing all the elements in this collection
+ * @throws NullPointerException if the specified array is null
+ */
+ byte[] toArray( byte[] dest );
+
+
+ /**
+ * Inserts a value into the collection.
+ *
+ * @param entry a byte
value
+ * @return true if the collection was modified by the add operation
+ */
+ boolean add( byte entry );
+
+
+ /**
+ * Removes entry from the collection.
+ *
+ * @param entry an byte
value
+ * @return true if the collection was modified by the remove operation.
+ */
+ boolean remove( byte entry );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * collection are present.
+ *
+ * @param collection a Collection
value
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( Collection> collection );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * TByteCollection are present.
+ *
+ * @param collection a TByteCollection
value
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( TByteCollection collection );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * array are present.
+ *
+ * @param array as array
of byte primitives.
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( byte[] array );
+
+
+ /**
+ * Adds all of the elements in collection to the collection.
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( Collection extends Byte> collection );
+
+
+ /**
+ * Adds all of the elements in the TByteCollection to the collection.
+ *
+ * @param collection a TByteCollection
value
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( TByteCollection collection );
+
+
+ /**
+ * Adds all of the elements in the array to the collection.
+ *
+ * @param array a array
of byte primitives.
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( byte[] array );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * collection .
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( Collection> collection );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * TByteCollection .
+ *
+ * @param collection a TByteCollection
value
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( TByteCollection collection );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * array .
+ *
+ * @param array an array
of byte primitives.
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( byte[] array );
+
+
+ /**
+ * Removes all of the elements in collection from the collection.
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( Collection> collection );
+
+
+ /**
+ * Removes all of the elements in TByteCollection from the collection.
+ *
+ * @param collection a TByteCollection
value
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( TByteCollection collection );
+
+
+ /**
+ * Removes all of the elements in array from the collection.
+ *
+ * @param array an array
of byte primitives.
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( byte[] array );
+
+
+ /**
+ * Empties the collection.
+ */
+ void clear();
+
+
+ /**
+ * Executes procedure for each element in the collection.
+ *
+ * @param procedure a TByteProcedure
value
+ * @return false if the loop over the collection terminated because
+ * the procedure returned false for some value.
+ */
+ boolean forEach( TByteProcedure procedure );
+
+
+ // Comparison and hashing
+
+ /**
+ * Compares the specified object with this collection for equality. Returns
+ * true if the specified object is also a collection, the two collection
+ * have the same size, and every member of the specified collection is
+ * contained in this collection (or equivalently, every member of this collection is
+ * contained in the specified collection). This definition ensures that the
+ * equals method works properly across different implementations of the
+ * collection interface.
+ *
+ * @param o object to be compared for equality with this collection
+ * @return true if the specified object is equal to this collection
+ */
+ boolean equals( Object o );
+
+
+ /**
+ * Returns the hash code value for this collection. The hash code of a collection is
+ * defined to be the sum of the hash codes of the elements in the collection.
+ * This ensures that s1.equals(s2) implies that
+ * s1.hashCode()==s2.hashCode() for any two collection s1
+ * and s2 , as required by the general contract of
+ * {@link Object#hashCode}.
+ *
+ * @return the hash code value for this collection
+ * @see Object#equals(Object)
+ * @see Collection#equals(Object)
+ */
+ int hashCode();
+
+
+} // TByteCollection
diff --git a/WenjaPvP - HCFactions/src/gnu/trove/TCharCollection.java b/WenjaPvP - HCFactions/src/gnu/trove/TCharCollection.java
new file mode 100644
index 0000000..79b3365
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/gnu/trove/TCharCollection.java
@@ -0,0 +1,317 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2001, Eric D. Friedman All Rights Reserved.
+// Copyright (c) 2009, Rob Eden All Rights Reserved.
+// Copyright (c) 2009, Jeff Randall All Rights Reserved.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+///////////////////////////////////////////////////////////////////////////////
+
+package gnu.trove;
+
+
+//////////////////////////////////////////////////
+// THIS IS A GENERATED CLASS. DO NOT HAND EDIT! //
+//////////////////////////////////////////////////
+
+import gnu.trove.iterator.TCharIterator;
+import gnu.trove.procedure.TCharProcedure;
+
+import java.util.Collection;
+import java.io.Serializable;
+
+/**
+ * An interface that mimics the Collection interface.
+ *
+ * @author Eric D. Friedman
+ * @author Rob Eden
+ * @author Jeff Randall
+ * @version $Id: _E_Collection.template,v 1.1.2.2 2009/09/15 02:38:30 upholderoftruth Exp $
+ */
+
+public interface TCharCollection {
+ static final long serialVersionUID = 1L;
+
+ /**
+ * Returns the value that is used to represent null. The default
+ * value is generally zero, but can be changed during construction
+ * of the collection.
+ *
+ * @return the value that represents null
+ */
+ char getNoEntryValue();
+
+
+ /**
+ * Returns the number of elements in this collection (its cardinality). If this
+ * collection contains more than Integer.MAX_VALUE elements, returns
+ * Integer.MAX_VALUE .
+ *
+ * @return the number of elements in this collection (its cardinality)
+ */
+ int size();
+
+
+ /**
+ * Returns true if this collection contains no elements.
+ *
+ * @return true if this collection contains no elements
+ */
+ boolean isEmpty();
+
+
+ /**
+ * Returns true if this collection contains the specified element.
+ *
+ * @param entry an char
value
+ * @return true if the collection contains the specified element.
+ */
+ boolean contains( char entry );
+
+
+ /**
+ * Creates an iterator over the values of the collection. The iterator
+ * supports element deletion.
+ *
+ * @return an TCharIterator
value
+ */
+ TCharIterator iterator();
+
+
+ /**
+ * Returns an array containing all of the elements in this collection.
+ * If this collection makes any guarantees as to what order its elements
+ * are returned by its iterator, this method must return the
+ * elements in the same order.
+ *
+ *
The returned array will be "safe" in that no references to it
+ * are maintained by this collection. (In other words, this method must
+ * allocate a new array even if this collection is backed by an array).
+ * The caller is thus free to modify the returned array.
+ *
+ *
This method acts as bridge between array-based and collection-based
+ * APIs.
+ *
+ * @return an array containing all the elements in this collection
+ */
+ char[] toArray();
+
+
+ /**
+ * Returns an array containing elements in this collection.
+ *
+ *
If this collection fits in the specified array with room to spare
+ * (i.e., the array has more elements than this collection), the element in
+ * the array immediately following the end of the collection is collection to
+ * {@link #getNoEntryValue()} . (This is useful in determining
+ * the length of this collection only if the caller knows that this
+ * collection does not contain any elements representing null.)
+ *
+ *
If the native array is smaller than the collection size,
+ * the array will be filled with elements in Iterator order
+ * until it is full and exclude the remainder.
+ *
+ *
If this collection makes any guarantees as to what order its elements
+ * are returned by its iterator, this method must return the elements
+ * in the same order.
+ *
+ * @param dest the array into which the elements of this collection are to be
+ * stored.
+ * @return an char[] containing all the elements in this collection
+ * @throws NullPointerException if the specified array is null
+ */
+ char[] toArray( char[] dest );
+
+
+ /**
+ * Inserts a value into the collection.
+ *
+ * @param entry a char
value
+ * @return true if the collection was modified by the add operation
+ */
+ boolean add( char entry );
+
+
+ /**
+ * Removes entry from the collection.
+ *
+ * @param entry an char
value
+ * @return true if the collection was modified by the remove operation.
+ */
+ boolean remove( char entry );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * collection are present.
+ *
+ * @param collection a Collection
value
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( Collection> collection );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * TCharCollection are present.
+ *
+ * @param collection a TCharCollection
value
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( TCharCollection collection );
+
+
+ /**
+ * Tests the collection to determine if all of the elements in
+ * array are present.
+ *
+ * @param array as array
of char primitives.
+ * @return true if all elements were present in the collection.
+ */
+ boolean containsAll( char[] array );
+
+
+ /**
+ * Adds all of the elements in collection to the collection.
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( Collection extends Character> collection );
+
+
+ /**
+ * Adds all of the elements in the TCharCollection to the collection.
+ *
+ * @param collection a TCharCollection
value
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( TCharCollection collection );
+
+
+ /**
+ * Adds all of the elements in the array to the collection.
+ *
+ * @param array a array
of char primitives.
+ * @return true if the collection was modified by the add all operation.
+ */
+ boolean addAll( char[] array );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * collection .
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( Collection> collection );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * TCharCollection .
+ *
+ * @param collection a TCharCollection
value
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( TCharCollection collection );
+
+
+ /**
+ * Removes any values in the collection which are not contained in
+ * array .
+ *
+ * @param array an array
of char primitives.
+ * @return true if the collection was modified by the retain all operation
+ */
+ boolean retainAll( char[] array );
+
+
+ /**
+ * Removes all of the elements in collection from the collection.
+ *
+ * @param collection a Collection
value
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( Collection> collection );
+
+
+ /**
+ * Removes all of the elements in TCharCollection from the collection.
+ *
+ * @param collection a TCharCollection
value
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( TCharCollection collection );
+
+
+ /**
+ * Removes all of the elements in array from the collection.
+ *
+ * @param array an array
of char primitives.
+ * @return true if the collection was modified by the remove all operation.
+ */
+ boolean removeAll( char[] array );
+
+
+ /**
+ * Empties the collection.
+ */
+ void clear();
+
+
+ /**
+ * Executes procedure for each element in the collection.
+ *
+ * @param procedure a TCharProcedure
value
+ * @return false if the loop over the collection terminated because
+ * the procedure returned false for some value.
+ */
+ boolean forEach( TCharProcedure procedure );
+
+
+ // Comparison and hashing
+
+ /**
+ * Compares the specified object with this collection for equality. Returns
+ * true if the specified object is also a collection, the two collection
+ * have the same size, and every member of the specified collection is
+ * contained in this collection (or equivalently, every member of this collection is
+ * contained in the specified collection). This definition ensures that the
+ * equals method works properly across different implementations of the
+ * collection interface.
+ *
+ * @param o object to be compared for equality with this collection
+ * @return true if the specified object is equal to this collection
+ */
+ boolean equals( Object o );
+
+
+ /**
+ * Returns the hash code value for this collection. The hash code of a collection is
+ * defined to be the sum of the hash codes of the elements in the collection.
+ * This ensures that s1.equals(s2) implies that
+ * s1.hashCode()==s2.hashCode() for any two collection s1
+ * and s2 , as required by the general contract of
+ * {@link Object#hashCode}.
+ *
+ * @return the hash code value for this collection
+ * @see Object#equals(Object)
+ * @see Collection#equals(Object)
+ */
+ int hashCode();
+
+
+} // TCharCollection
diff --git a/WenjaPvP - HCFactions/src/gnu/trove/TCollections.java b/WenjaPvP - HCFactions/src/gnu/trove/TCollections.java
new file mode 100644
index 0000000..3ad0442
--- /dev/null
+++ b/WenjaPvP - HCFactions/src/gnu/trove/TCollections.java
@@ -0,0 +1,4362 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2008, Robert D. Eden All Rights Reserved.
+// Copyright (c) 2009, Jeff Randall All Rights Reserved.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+///////////////////////////////////////////////////////////////////////////////
+
+package gnu.trove;
+
+
+//////////////////////////////////////////////////
+// THIS IS A GENERATED CLASS. DO NOT HAND EDIT! //
+//////////////////////////////////////////////////
+
+
+import gnu.trove.set.*;
+import gnu.trove.list.*;
+import gnu.trove.map.*;
+import gnu.trove.impl.unmodifiable.*;
+import gnu.trove.impl.sync.*;
+
+import java.util.RandomAccess;
+
+
+/**
+ * Trove equivalent of the {@link java.util.Collections} class.
+ */
+@SuppressWarnings({"UnusedDeclaration"})
+public class TCollections {
+
+ // Disallow creation of instances of this class
+ private TCollections() { }
+
+
+///////////////////////////
+// TUnmodifiableCollections
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TDoubleCollection unmodifiableCollection( TDoubleCollection c ) {
+ return new TUnmodifiableDoubleCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TFloatCollection unmodifiableCollection( TFloatCollection c ) {
+ return new TUnmodifiableFloatCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TIntCollection unmodifiableCollection( TIntCollection c ) {
+ return new TUnmodifiableIntCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TLongCollection unmodifiableCollection( TLongCollection c ) {
+ return new TUnmodifiableLongCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TByteCollection unmodifiableCollection( TByteCollection c ) {
+ return new TUnmodifiableByteCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TShortCollection unmodifiableCollection( TShortCollection c ) {
+ return new TUnmodifiableShortCollection( c );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive collection. This method
+ * allows modules to provide users with "read-only" access to internal
+ * collections. Query operations on the returned collection "read through"
+ * to the specified collection, and attempts to modify the returned
+ * collection, whether direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned collection does not pass the hashCode and equals
+ * operations through to the backing collection, but relies on
+ * Object 's equals and hashCode methods. This
+ * is necessary to preserve the contracts of these operations in the case
+ * that the backing collection is a set or a list.
+ *
+ * The returned collection will be serializable if the specified collection
+ * is serializable.
+ *
+ * @param c the collection for which an unmodifiable view is to be
+ * returned.
+ * @return an unmodifiable view of the specified Trove primitive collection.
+ */
+ public static TCharCollection unmodifiableCollection( TCharCollection c ) {
+ return new TUnmodifiableCharCollection( c );
+ }
+
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TDoubleSet unmodifiableSet( TDoubleSet s ) {
+ return new TUnmodifiableDoubleSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TFloatSet unmodifiableSet( TFloatSet s ) {
+ return new TUnmodifiableFloatSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TIntSet unmodifiableSet( TIntSet s ) {
+ return new TUnmodifiableIntSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TLongSet unmodifiableSet( TLongSet s ) {
+ return new TUnmodifiableLongSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TByteSet unmodifiableSet( TByteSet s ) {
+ return new TUnmodifiableByteSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TShortSet unmodifiableSet( TShortSet s ) {
+ return new TUnmodifiableShortSet( s );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive set. This method allows
+ * modules to provide users with "read-only" access to internal sets.
+ * Query operations on the returned set "read through" to the specified
+ * set, and attempts to modify the returned set, whether direct or via its
+ * iterator, result in an UnsupportedOperationException .
+ *
+ * The returned set will be serializable if the specified set
+ * is serializable.
+ *
+ * @param s the set for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive set.
+ */
+ public static TCharSet unmodifiableSet( TCharSet s ) {
+ return new TUnmodifiableCharSet( s );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TDoubleList unmodifiableList( TDoubleList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessDoubleList( list ) :
+ new TUnmodifiableDoubleList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TFloatList unmodifiableList( TFloatList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessFloatList( list ) :
+ new TUnmodifiableFloatList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TIntList unmodifiableList( TIntList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessIntList( list ) :
+ new TUnmodifiableIntList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TLongList unmodifiableList( TLongList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessLongList( list ) :
+ new TUnmodifiableLongList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TByteList unmodifiableList( TByteList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessByteList( list ) :
+ new TUnmodifiableByteList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TShortList unmodifiableList( TShortList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessShortList( list ) :
+ new TUnmodifiableShortList( list ) );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive list. This method allows
+ * modules to provide users with "read-only" access to internal
+ * lists. Query operations on the returned list "read through" to the
+ * specified list, and attempts to modify the returned list, whether
+ * direct or via its iterator, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned list will be serializable if the specified list
+ * is serializable. Similarly, the returned list will implement
+ * {@link RandomAccess} if the specified list does.
+ *
+ * @param list the list for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive list.
+ */
+ public static TCharList unmodifiableList( TCharList list) {
+ return ( list instanceof RandomAccess ?
+ new TUnmodifiableRandomAccessCharList( list ) :
+ new TUnmodifiableCharList( list ) );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleDoubleMap unmodifiableMap( TDoubleDoubleMap m ) {
+ return new TUnmodifiableDoubleDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleFloatMap unmodifiableMap( TDoubleFloatMap m ) {
+ return new TUnmodifiableDoubleFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleIntMap unmodifiableMap( TDoubleIntMap m ) {
+ return new TUnmodifiableDoubleIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleLongMap unmodifiableMap( TDoubleLongMap m ) {
+ return new TUnmodifiableDoubleLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleByteMap unmodifiableMap( TDoubleByteMap m ) {
+ return new TUnmodifiableDoubleByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleShortMap unmodifiableMap( TDoubleShortMap m ) {
+ return new TUnmodifiableDoubleShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleCharMap unmodifiableMap( TDoubleCharMap m ) {
+ return new TUnmodifiableDoubleCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatDoubleMap unmodifiableMap( TFloatDoubleMap m ) {
+ return new TUnmodifiableFloatDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatFloatMap unmodifiableMap( TFloatFloatMap m ) {
+ return new TUnmodifiableFloatFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatIntMap unmodifiableMap( TFloatIntMap m ) {
+ return new TUnmodifiableFloatIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatLongMap unmodifiableMap( TFloatLongMap m ) {
+ return new TUnmodifiableFloatLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatByteMap unmodifiableMap( TFloatByteMap m ) {
+ return new TUnmodifiableFloatByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatShortMap unmodifiableMap( TFloatShortMap m ) {
+ return new TUnmodifiableFloatShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatCharMap unmodifiableMap( TFloatCharMap m ) {
+ return new TUnmodifiableFloatCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntDoubleMap unmodifiableMap( TIntDoubleMap m ) {
+ return new TUnmodifiableIntDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntFloatMap unmodifiableMap( TIntFloatMap m ) {
+ return new TUnmodifiableIntFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntIntMap unmodifiableMap( TIntIntMap m ) {
+ return new TUnmodifiableIntIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntLongMap unmodifiableMap( TIntLongMap m ) {
+ return new TUnmodifiableIntLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntByteMap unmodifiableMap( TIntByteMap m ) {
+ return new TUnmodifiableIntByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntShortMap unmodifiableMap( TIntShortMap m ) {
+ return new TUnmodifiableIntShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntCharMap unmodifiableMap( TIntCharMap m ) {
+ return new TUnmodifiableIntCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongDoubleMap unmodifiableMap( TLongDoubleMap m ) {
+ return new TUnmodifiableLongDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongFloatMap unmodifiableMap( TLongFloatMap m ) {
+ return new TUnmodifiableLongFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongIntMap unmodifiableMap( TLongIntMap m ) {
+ return new TUnmodifiableLongIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongLongMap unmodifiableMap( TLongLongMap m ) {
+ return new TUnmodifiableLongLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongByteMap unmodifiableMap( TLongByteMap m ) {
+ return new TUnmodifiableLongByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongShortMap unmodifiableMap( TLongShortMap m ) {
+ return new TUnmodifiableLongShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongCharMap unmodifiableMap( TLongCharMap m ) {
+ return new TUnmodifiableLongCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteDoubleMap unmodifiableMap( TByteDoubleMap m ) {
+ return new TUnmodifiableByteDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteFloatMap unmodifiableMap( TByteFloatMap m ) {
+ return new TUnmodifiableByteFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteIntMap unmodifiableMap( TByteIntMap m ) {
+ return new TUnmodifiableByteIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteLongMap unmodifiableMap( TByteLongMap m ) {
+ return new TUnmodifiableByteLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteByteMap unmodifiableMap( TByteByteMap m ) {
+ return new TUnmodifiableByteByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteShortMap unmodifiableMap( TByteShortMap m ) {
+ return new TUnmodifiableByteShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteCharMap unmodifiableMap( TByteCharMap m ) {
+ return new TUnmodifiableByteCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortDoubleMap unmodifiableMap( TShortDoubleMap m ) {
+ return new TUnmodifiableShortDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortFloatMap unmodifiableMap( TShortFloatMap m ) {
+ return new TUnmodifiableShortFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortIntMap unmodifiableMap( TShortIntMap m ) {
+ return new TUnmodifiableShortIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortLongMap unmodifiableMap( TShortLongMap m ) {
+ return new TUnmodifiableShortLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortByteMap unmodifiableMap( TShortByteMap m ) {
+ return new TUnmodifiableShortByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortShortMap unmodifiableMap( TShortShortMap m ) {
+ return new TUnmodifiableShortShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortCharMap unmodifiableMap( TShortCharMap m ) {
+ return new TUnmodifiableShortCharMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharDoubleMap unmodifiableMap( TCharDoubleMap m ) {
+ return new TUnmodifiableCharDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharFloatMap unmodifiableMap( TCharFloatMap m ) {
+ return new TUnmodifiableCharFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharIntMap unmodifiableMap( TCharIntMap m ) {
+ return new TUnmodifiableCharIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharLongMap unmodifiableMap( TCharLongMap m ) {
+ return new TUnmodifiableCharLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharByteMap unmodifiableMap( TCharByteMap m ) {
+ return new TUnmodifiableCharByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharShortMap unmodifiableMap( TCharShortMap m ) {
+ return new TUnmodifiableCharShortMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharCharMap unmodifiableMap( TCharCharMap m ) {
+ return new TUnmodifiableCharCharMap( m );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TDoubleObjectMap unmodifiableMap( TDoubleObjectMap m ) {
+ return new TUnmodifiableDoubleObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TFloatObjectMap unmodifiableMap( TFloatObjectMap m ) {
+ return new TUnmodifiableFloatObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TIntObjectMap unmodifiableMap( TIntObjectMap m ) {
+ return new TUnmodifiableIntObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TLongObjectMap unmodifiableMap( TLongObjectMap m ) {
+ return new TUnmodifiableLongObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TByteObjectMap unmodifiableMap( TByteObjectMap m ) {
+ return new TUnmodifiableByteObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TShortObjectMap unmodifiableMap( TShortObjectMap m ) {
+ return new TUnmodifiableShortObjectMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove primitive/Object map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TCharObjectMap unmodifiableMap( TCharObjectMap m ) {
+ return new TUnmodifiableCharObjectMap( m );
+ }
+
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TObjectDoubleMap unmodifiableMap( TObjectDoubleMap m ) {
+ return new TUnmodifiableObjectDoubleMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TObjectFloatMap unmodifiableMap( TObjectFloatMap m ) {
+ return new TUnmodifiableObjectFloatMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TObjectIntMap unmodifiableMap( TObjectIntMap m ) {
+ return new TUnmodifiableObjectIntMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TObjectLongMap unmodifiableMap( TObjectLongMap m ) {
+ return new TUnmodifiableObjectLongMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ * UnsupportedOperationException .
+ *
+ * The returned map will be serializable if the specified map
+ * is serializable.
+ *
+ * @param m the map for which an unmodifiable view is to be returned.
+ * @return an unmodifiable view of the specified Trove primitive/primitive map.
+ */
+ public static TObjectByteMap unmodifiableMap( TObjectByteMap m ) {
+ return new TUnmodifiableObjectByteMap( m );
+ }
+
+ /**
+ * Returns an unmodifiable view of the specified Trove Object/primitive map. This method
+ * allows modules to provide users with "read-only" access to internal
+ * maps. Query operations on the returned map "read through"
+ * to the specified map, and attempts to modify the returned
+ * map, whether direct or via its collection views, result in an
+ *