diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 68d9a25..83da87a 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,7 +7,7 @@
-
+
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index a519cf7..f2c1963 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,9 +4,8 @@
-
-
+
diff --git a/.idea/modules/DifficultRaids.test.iml b/.idea/modules/DifficultRaids.test.iml
index c51be96..3aa864a 100644
--- a/.idea/modules/DifficultRaids.test.iml
+++ b/.idea/modules/DifficultRaids.test.iml
@@ -4,18 +4,15 @@
- FORGE
- MIXIN
MCP
+ MIXIN
+ FORGE
+ 1
-
-
-
-
-
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/runClient.xml b/.idea/runConfigurations/runClient.xml
index bd1560e..dd88770 100644
--- a/.idea/runConfigurations/runClient.xml
+++ b/.idea/runConfigurations/runClient.xml
@@ -1,18 +1,17 @@
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
-
-
+
+
-
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/runData.xml b/.idea/runConfigurations/runData.xml
index 40dc35e..b2a7adc 100644
--- a/.idea/runConfigurations/runData.xml
+++ b/.idea/runConfigurations/runData.xml
@@ -2,13 +2,13 @@
-
-
+
+
-
-
+
+
diff --git a/.idea/runConfigurations/runGameTestServer.xml b/.idea/runConfigurations/runGameTestServer.xml
index 9a54efd..9c89336 100644
--- a/.idea/runConfigurations/runGameTestServer.xml
+++ b/.idea/runConfigurations/runGameTestServer.xml
@@ -2,13 +2,13 @@
-
-
+
+
-
-
+
+
diff --git a/.idea/runConfigurations/runServer.xml b/.idea/runConfigurations/runServer.xml
index e97a2db..6432b00 100644
--- a/.idea/runConfigurations/runServer.xml
+++ b/.idea/runConfigurations/runServer.xml
@@ -2,13 +2,13 @@
-
-
+
+
-
-
+
+
diff --git a/README.md b/README.md
index 5e8a585..d4aea58 100644
--- a/README.md
+++ b/README.md
@@ -5,3 +5,8 @@ A Minecraft Mod that enhances the difficulty of Raids.
DifficultRaids adds 4 new levels of Raid Difficulty: Hero, Legend, Master and Apocalypse, along with a variety of new, powerful Illagers, and an assortment of totem variants that drop from winning Raids.
https://www.curseforge.com/minecraft/mc-mods/difficult-raids/
+
+To build the mod, you need to download, and put inside /libs/
+ - [PillagersPlus](https://www.curseforge.com/minecraft/mc-mods/pillagersplus)
+ - [Mischief Illagers](https://www.curseforge.com/minecraft/mc-mods/mischief-illagers)
+ - [Illager Universe](https://www.curseforge.com/minecraft/mc-mods/illager-universe)
diff --git a/build.gradle b/build.gradle
index 77d4514..c34963b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,9 +1,11 @@
buildscript {
repositories {
- // These repositories are only for Gradle plugins, put any other repositories in the repository block further below
maven { url = 'https://maven.minecraftforge.net' }
maven { url = 'https://maven.parchmentmc.org' }
mavenCentral()
+ flatDir {
+ dir 'libs'
+ }
}
dependencies {
classpath (group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true) { exclude group: 'org.apache.logging.log4j' }
@@ -14,9 +16,10 @@ buildscript {
//Mixins
classpath 'org.spongepowered:mixingradle:0.7+'
+
}
}
-// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
+
plugins {
id 'eclipse'
id 'maven-publish'
@@ -29,38 +32,22 @@ apply plugin: 'org.parchmentmc.librarian.forgegradle'
apply plugin: 'org.spongepowered.mixin'
-version = '2.0-beta.11'
+version = '2.0-beta20'
group = 'com.calculusmaster.difficultraids'
-archivesBaseName = 'difficultraids-1.19.2'
+archivesBaseName = 'difficultraids-1.20.1'
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
minecraft {
- //mappings channel: 'official', version: '1.19.2'
- mappings channel: 'parchment', version: '2022.11.27-1.19.2'
+ mappings channel: 'parchment', version: '2023.09.03-1.20.1'
- // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default.
-
- // Default run configurations.
- // These can be tweaked, removed, or duplicated as needed.
runs {
client {
workingDirectory project.file('run')
- // Recommended logging data for a userdev environment
- // The markers can be added/remove as needed separated by commas.
- // "SCAN": For mods scan.
- // "REGISTRIES": For firing of registry events.
- // "REGISTRYDUMP": For getting the contents of all registries.
property 'forge.logging.markers', 'REGISTRIES'
-
- // Recommended logging level for the console
- // You can set various levels here.
- // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
-
- // Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
property 'forge.enabledGameTestNamespaces', 'difficultraids'
mods {
@@ -74,10 +61,7 @@ minecraft {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
-
property 'forge.logging.console.level', 'debug'
-
- // Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
property 'forge.enabledGameTestNamespaces', 'difficultraids'
mods {
@@ -87,25 +71,11 @@ minecraft {
}
}
- // This run config launches GameTestServer and runs all registered gametests, then exits.
- // By default, the server will crash when no gametests are provided.
- // The gametest system is also enabled by default for other run configs under the /test command.
gameTestServer {
workingDirectory project.file('run')
- // Recommended logging data for a userdev environment
- // The markers can be added/remove as needed separated by commas.
- // "SCAN": For mods scan.
- // "REGISTRIES": For firing of registry events.
- // "REGISTRYDUMP": For getting the contents of all registries.
property 'forge.logging.markers', 'REGISTRIES'
-
- // Recommended logging level for the console
- // You can set various levels here.
- // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
-
- // Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
property 'forge.enabledGameTestNamespaces', 'difficultraids'
mods {
@@ -122,7 +92,6 @@ minecraft {
property 'forge.logging.console.level', 'debug'
- // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
args '--mod', 'difficultraids', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
@@ -141,68 +110,399 @@ repositories {
maven {
url "https://cursemaven.com"
}
+ exclusiveContent {
+ forRepository {
+ maven {
+ name = "Modrinth"
+ url = "https://api.modrinth.com/maven"
+ }
+ }
+ forRepositories(fg.repository)
+ filter {
+ includeGroup "maven.modrinth"
+ }
+ }
+ flatDir {
+ dir 'libs'
+ }
}
dependencies {
//Minecraft
- minecraft 'net.minecraftforge:forge:1.19.2-43.2.0'
+ minecraft 'net.minecraftforge:forge:1.20.1-47.4.0'
+
+ //Sinytra Connector beta46 + FFAPI 0.92.6+1.11.14+1.20.1
+// minecraftLibrary fg.deobf("curse.maven:sinytra-connector-890127:5761411")
+// runtimeOnly fg.deobf("curse.maven:forgified-fabric-api-889079:6885853")
// Apply Mixin AP
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
- // Real mod deobf dependency examples - these get remapped to your current mappings
- // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency
- // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") // Adds the full JEI mod as a runtime dependency
- // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}") // Adds registrate as a dependency
+ //Guard Villagers 1.6.7
+ implementation fg.deobf("curse.maven:guardvillagers-360203:5619709")
- // Examples using mod jars from ./libs
- // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}")
+ //Villager Recruits 1.13.5
+ compileOnly fg.deobf("curse.maven:recruits-523860:6646247")
- // For more info...
- // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
- // http://www.gradle.org/docs/current/userguide/dependency_management.html
+ //Villager Workers 1.7.9.1
+ compileOnly fg.deobf("curse.maven:workers-567450:6339807")
- //Guard Villagers 1.5.2
- implementation fg.deobf("curse.maven:guardvillagers-360203:3970122")
+ //Hunter'sReturn 11.7.0 + Bagus Lib 5.4.0
+ compileOnly fg.deobf("curse.maven:huntersreturn-318857:6142107")
+ implementation fg.deobf("curse.maven:baguslib-866533:6711183")
- //Hunter Illager 6.0.2
- implementation fg.deobf("curse.maven:hunterillager-318857:4034397")
+ //Enchant with Mob 11.17.0
+ compileOnly fg.deobf("curse.maven:enchantwithmob-913523:6593792")
- //Enchant with Mob 6.4.1
- compileOnly fg.deobf("curse.maven:enchantwithmob-391187:4026539")
-
- //Illage & Spillage 1.2.4
- implementation fg.deobf("curse.maven:illage-and-spillage-576368:4263798")
+ //Illage & Spillage: Respillaged 1.2.8
+ compileOnly fg.deobf("curse.maven:illage-and-spillage-finally-ported-1079714:6156035")
//It Takes a Pillage 1.0.3
- implementation fg.deobf("curse.maven:it-takes-a-pillage-635843:4388334")
+ compileOnly fg.deobf("curse.maven:it-takes-a-pillage-635843:4981343")
- //Savage and Ravage 5.0.4
- implementation fg.deobf("curse.maven:savage-and-ravage-381736:4429231")
+ //Savage and Ravage 6.0.0
+ compileOnly fg.deobf("curse.maven:savage-and-ravage-381736:6040963")
+ implementation fg.deobf("curse.maven:blueprint-382216:5292242")
- //Dungeons Mobs 4.0.8 + GeckoLib 3.1.40 + Dungeons Libraries 3.0.10
- implementation fg.deobf("curse.maven:dungeons-mobs-428883:4501524")
- implementation fg.deobf("curse.maven:geckolib-388172:4407241")
- implementation fg.deobf("curse.maven:dungeons-libraries-550941:4496767")
+ //Dungeons Mobs port 1.9.2 + GeckoLib 4.7.4
+ compileOnly fg.deobf("curse.maven:dungeons-mobs-port-1214518:6785377")
+ implementation fg.deobf("curse.maven:geckolib-388172:6920925")
//Leo's Illagers
- implementation fg.deobf("curse.maven:leos-illagers-812954:4370803")
+ compileOnly fg.deobf("curse.maven:leos-illagers-812954:6206843")
//Pyrologer & Friends
- implementation fg.deobf("curse.maven:pyrologer-and-friends-573099:4433602")
+// implementation fg.deobf("curse.maven:pyrologer-and-friends-573099:4433602")
+
+ //L Ender's Cataclysm 3.16 + Lionfish API 2.4-Fix + Curios API 5.14.1
+ implementation fg.deobf("curse.maven:l_ender-s-cataclysm-551586:6906993")
+ implementation fg.deobf("curse.maven:lionfish-api-1001614:5922047")
+ implementation fg.deobf("curse.maven:curios-api-309927:6418456")
+
+ //The Conjurer 1.1.6 + StructureGel 2.16.2
+ compileOnly fg.deobf("curse.maven:the-conjurer-377798:4733239")
+ implementation fg.deobf("curse.maven:structure-gel-api-378802:5278429")
+
+ //Necromancer Mod Port, Continuation 1.0.0
+ compileOnly fg.deobf("curse.maven:necromancer-mod-port-continuation-1221478:6557928")
+
+ //Werden's Illagers + 1.2.1
+ compileOnly fg.deobf("curse.maven:werdens-illagers-1247652:7224667")
+
+ //Guard Illagers 1.0.2
+ compileOnly fg.deobf("curse.maven:guard-illagers-311899:6502154")
+
+ //Illager Invasion 8.0.7 + Puzzles Lib 8.1.33
+ compileOnly fg.deobf("curse.maven:illager-invasion-891324:6192869")
+ implementation fg.deobf("curse.maven:puzzles-lib-495476:6918565")
+
+ //MobZ 4.2.1 + Cloth Config API 11.1.136
+ compileOnly fg.deobf("curse.maven:mobz-336554:6495914")
+ implementation fg.deobf("curse.maven:cloth-config-348521:5729105")
+
+ //Illager Additions 0.1.0
+ compileOnly fg.deobf("curse.maven:illager-additions-682835:5643823")
+
+ //The Summoner Illager Port 1.0.0
+ compileOnly fg.deobf("curse.maven:the-summoner-port-1220635:6557663")
+
+ //Bones Update 1.2.0-1
+ compileOnly fg.deobf("curse.maven:bones-update-958749:5803104")
+
+ //Goety - The Dark Arts 2.5.36.1
+ compileOnly fg.deobf("curse.maven:goety-586095:7400639")
+
+ //The Modifiger 1.0.0
+ compileOnly fg.deobf("curse.maven:the-modifiger-1115268:5784152")
+
+ //The Masquerade (Illager Boss) 1.2.2
+ compileOnly fg.deobf("curse.maven:the-masquerade-illager-boss-1074613:5726614")
+
+ //Musketeer Illager Port 1.0.1
+ compileOnly fg.deobf("curse.maven:musketeer-illager-port-1247152:6531882")
+
+ //Bagus Mob 4.0.2
+ compileOnly fg.deobf("curse.maven:bagus-mob-885655:5545460")
+
+ //Illager Revolution 1.4
+ compileOnly fg.deobf("curse.maven:illager-revolution-841586:5185405")
+
+ //Raided 0.1.4
+ compileOnly fg.deobf("curse.maven:raided-580942:5128249")
+
+ //More Illagers 1.0.7
+ compileOnly fg.deobf("curse.maven:more-illagers-501714:5620839")
+
+ //Slash Illager 2.0.1 + SlashBlade: Resharped 1.5.49
+ compileOnly fg.deobf("curse.maven:slash-illager-1024478:5466149")
+ compileOnly fg.deobf("curse.maven:slashblade-resharped-1022428:6927996")
+
+ //Ravage & Cabbage 1.2.4
+ compileOnly fg.deobf("curse.maven:ravage-and-cabbage-440594:4787340")
+
+ //Brazier 6.1.1
+ compileOnly fg.deobf("curse.maven:brazier-402616:4702302")
+
+ //Friends&Foes 3.0.9
+ compileOnly fg.deobf("curse.maven:friends-and-foes-forge-602059:6354624")
+
+ //CrimsonSteve's more mobs 1.1.2
+ compileOnly fg.deobf("curse.maven:crimsonsteves-more-mobs-735413:4718160")
+
+ //Mo' Features 1.1
+ compileOnly fg.deobf("curse.maven:mo-features-416140:4858710")
+
+ //All Bark, All Bite 1.0.2
+ compileOnly fg.deobf("curse.maven:all-bark-all-bite-833755:4817227")
+
+ //Karate Illager Java Port 1.0.0
+ compileOnly fg.deobf("curse.maven:karate-illager-finally-ported-1234733:6550373")
+
+ //Francis's Expanded Illagers 1.0.3
+ compileOnly fg.deobf("curse.maven:francis-illagers-1273063:7073764")
+
+ //Sorcerer illager 1.0.1
+ compileOnly fg.deobf("curse.maven:sorcerer-illager-1314339:6832744")
+
+ //Illager brute 1.0.0
+ compileOnly fg.deobf("curse.maven:illager-brute-1250110:6459251")
+
+ //The Wandering Illagers 1.2
+ compileOnly fg.deobf("curse.maven:the-wandering-illagers-1245267:6757425")
+
+ //Expado's Illagers 1.0.5
+ compileOnly fg.deobf("curse.maven:expados-illagers-1313064:7174538")
+
+ //Just Illagers 1.0.0
+ compileOnly fg.deobf("curse.maven:just-illagers-1088403:5721200")
+
+ //Illager World War 1.1.2
+ compileOnly fg.deobf("curse.maven:illager-world-war-1083239:5808688")
+
+ //Colds: Wandering Trader Port 1.0.0
+ compileOnly fg.deobf("curse.maven:colds-wandering-trader-port-1238387:6535387")
+
+ //Earth Mobs 10.5.0
+ compileOnly fg.deobf("curse.maven:earth-mobs-913527:5497489")
+
+ //PillagersPlus 5.0.7 (no third party)
+// implementation fg.deobf("curse.maven:pillagersplus-1252604:6864819")
+ compileOnly fg.deobf('libs:pillagersplus:5.0.7-forge-1.20.1')
+
+ //Pillager Boss 1.0.0
+ compileOnly fg.deobf("curse.maven:pillager-boss-1181395:6583995")
+
+ //Mischief Illagers 1.2 (no third party)
+// implementation fg.deobf("curse.maven:mischief-illagers-1242852:6508234")
+ compileOnly fg.deobf('libs:mischief_illagers:1.2-forge-1.20.1')
+
+ //Illager Universe 1.0.5 (no third party)
+// implementation fg.deobf("curse.maven:illager-universe-1071881:6126944")
+ compileOnly fg.deobf('libs:illager_universe:1.0.5-forge-1.20.1')
+
+ //Virtuso's Grand Battle 1.1.0
+ compileOnly fg.deobf("curse.maven:virtusos-grand-battle-1328536:6964631")
+
+ //Born in Chaos 1.7.2
+ compileOnly fg.deobf("curse.maven:born-in-chaos-686437:6833957")
+
+ //From The Shadows Reborn 2.81
+ compileOnly fg.deobf("curse.maven:from-the-shadow-reborn-986907:6869933")
+
+ //Jerotes Village - Second Round World 1.1.5.7.1 + Jerotes Warehouse 1.1.1
+ compileOnly fg.deobf("curse.maven:jerotes-village-1004844:6947991")
+ compileOnly fg.deobf("curse.maven:jerotes-warehouse-1249728:6951451")
- //L Ender's Cataclysm
- implementation fg.deobf("curse.maven:l_ender-s-cataclysm-551586:4654770")
+ //Rats 8.1.3 + Citadel 2.6.2
+ compileOnly fg.deobf("curse.maven:rats-323596:5904296")
+ compileOnly fg.deobf("curse.maven:citadel-331936:6702068")
- //Mob Entity Path Visualizer 1.1.0-release.6
- runtimeOnly fg.deobf("curse.maven:mob-entity-path-visualizer-590716:4063117")
+ //WildDelight 1.0.2 + Farmer's Delight 1.2.9
+ compileOnly fg.deobf("curse.maven:wilddelight-1104421:5731548")
+ compileOnly fg.deobf("curse.maven:farmers-delight-398521:6917255")
- //Enchantment Descriptions 13.0.3 + Bookshelf 16.1.5
- runtimeOnly fg.deobf("curse.maven:enchantmentdescriptions-250419:3955030")
- runtimeOnly fg.deobf("curse.maven:bookshelf-228525:3964325")
+ //Companions! 1.1.1 + Knight Lib 1.3.1
+ compileOnly fg.deobf("curse.maven:companions-mod-1300341:6930503")
+ compileOnly fg.deobf("curse.maven:knight-lib-1105855:6821911")
+
+ //Kamilskis Additions 1.5.2 + AAA Particles 1.4.11
+ compileOnly fg.deobf("maven.modrinth:kamilskis-additions:1.5.2")
+ compileOnly fg.deobf("curse.maven:aaa-particles-979809:6616719")
+
+ //Eidolon : Repraised 0.3.9.0-alpha.1
+ compileOnly fg.deobf("curse.maven:eidolon-repraised-870250:6907030")
+
+ //Immersive Engineering 10.2.0-183
+ compileOnly fg.deobf("curse.maven:immersive-engineering-231951:6206989")
+
+ //Snow's Bosses: Mechasent 1.3.2
+ compileOnly fg.deobf("curse.maven:snows-bosses-mechasent-1360069:7090352")
+
+ //No.IXAPI 1.3.7
+ compileOnly fg.deobf("curse.maven:no-ixapi-1300345:7064611")
+
+ //Roost 2 1.0.0
+ compileOnly fg.deobf("curse.maven:roost-2-flying-higher-1126435:5902147")
+
+ //Ben's Sharks 1.2.7.1
+ compileOnly fg.deobf("curse.maven:bens-sharks-987388:6614273")
+
+ //Porchers 1.0.0
+ compileOnly fg.deobf("curse.maven:porchers-1381293:7200955")
+
+ //Illager Expansions 1.0.0
+ compileOnly fg.deobf("curse.maven:illager-expansions-1355754:7214505")
+
+ //Mecha Pillager Boss 1.0.1
+ compileOnly fg.deobf("curse.maven:mecha-pillager-boss-1116274:5888062")
+
+ //The Resiliance Of Illagers 1.0.0
+ compileOnly fg.deobf("curse.maven:the-resiliance-of-illagers-1415026:7387826")
+
+ //The Vindication Of Illagers 1.0.3
+ compileOnly fg.deobf("curse.maven:the-vindication-of-illagers-1390160:7368583")
+
+ //The Resistance of the Raiders 1.0.0
+ compileOnly fg.deobf("curse.maven:the-resistance-of-the-raiders-1372576:7151216")
+
+ //Ocean World 7.0.0
+ compileOnly fg.deobf("curse.maven:ocean-world-640359:5046840")
+
+ //Multiverse 4.3.1
+ compileOnly fg.deobf("curse.maven:multiverse-561392:6320534")
+
+ //Gloom Raiders 1.1.6
+ compileOnly fg.deobf("maven.modrinth:gloom-raiders:1.1.6")
+
+ //Goety Awaken 1.1.0
+ compileOnly fg.deobf("curse.maven:goety-awaken-1412569:7391839")
+
+
+
+
+
+ //Utilities
+
+ //Jade 11.13.1
+ runtimeOnly fg.deobf("curse.maven:jade-324717:6271651")
+
+ //ToroHealth Damage Indicators unofficial 1.20.1 1.0.0
+ runtimeOnly fg.deobf("curse.maven:torohealth-unofficial-931345:4831219")
+
+ //Mob Path Visualizer 0.1
+ runtimeOnly fg.deobf("curse.maven:mob-path-visualizer-1120194:5806831")
+
+ //Enchantment Descriptions 17.1.19 + Bookshelf 20.2.13
+ runtimeOnly fg.deobf("curse.maven:enchantmentdescriptions-250419:5855251")
+ runtimeOnly fg.deobf("curse.maven:bookshelf-228525:5423987")
+
+ //Architectury API 9.2.14 + Patchouli 84.1
+ implementation fg.deobf("curse.maven:architectury-api-419699:5137938")
+ implementation fg.deobf("curse.maven:patchouli-306770:6164575")
+
+ //Ferrite 6.0.1 + Embeddium 0.3.31
+ runtimeOnly fg.deobf("curse.maven:ferritecore-429235:4810975")
+ runtimeOnly fg.deobf("curse.maven:embeddium-908741:5681725")
+
+
+
+
+ //Mods we need to add compatibility
+ //Thanks to Looking1for1illagers1for1raids for the list of illager related mods
+
+ //Iron's Spells 'n Spellbooks 3.4.0.10 + Player Animator 1.0.2-rc1 + Caelus API 3.2.0 + Gambler Illager 1.0.0
+ //Doesnt extend Raider, so we cant add them in raids
+ compileOnly fg.deobf("curse.maven:irons-spells-n-spellbooks-855414:6833927")
+ implementation fg.deobf("curse.maven:playeranimator-658587:4587214")
+ implementation fg.deobf("curse.maven:caelus-308989:5281700")
+ compileOnly fg.deobf("curse.maven:gambler-illager-irons-spells-and-spellbooks-addon-1253824:6908084")
+
+ //Sensei Illager 1.0.1
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:sensei-illager-1240874:6444802")
+
+ //Terramity 0.9.8
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:terramity-1084134:6054971")
+
+ //Dark Side 1.4.1
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:dark-side-creatures-928324:5182327")
+
+ //Biome Makeover (Forge) 1.11.4 (mixin issues and not required)
+// implementation fg.deobf("curse.maven:biome-makeover-forge-567709:4815822")
+
+ //Homeless Illager 1.0.1
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:homeless-illager-1214650:6763733")
+
+ //The Mutant Mobs Mod 1.0.7 (Illagers from this mods are very glitched)
+// implementation fg.deobf("curse.maven:mutant-mobs-mod-907562:6944438")
+
+ //Mutant Iceologer 2.0.2
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:mutant-iceologer-947258:5945048")
+
+ //Illusion Onslaught 1.1.0
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:illusion-onslaught-1004933:5681201")
+
+ //Big Bads 1.0.0 (no third party)
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:big-bads-1290429:6673976")
+// compileOnly files('libs/bigbads-1.0.0-forge-1.20.1.jar')
+
+ //Call Of Drowner 0.1.2
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:call-of-drowner-1096149:5881336")
+
+ //Goety Revelation 2.2.7
+ //Doesnt extend Raider, so we cant add them in raids
+// implementation fg.deobf("curse.maven:goety-revelation-1236817:6892481")
+
+ //Golem Dungeons 1.0.3 + L2 Library 2.5.3 + Modular Golems 2.6.12
+ //need to create custom golem with modular golems
+// implementation fg.deobf("curse.maven:golem-dungeons-1328313:6987539")
+// implementation fg.deobf("curse.maven:l2library-620203:6806000")
+// implementation fg.deobf("curse.maven:modulargolems-690937:7047324")
+
+ //Spies 1.0.3 (not stable enough)
+// implementation fg.deobf("curse.maven:spies-984638:5629671")
+
+ //Viking Ages Craft 1.7 (not made for raids)
+// implementation fg.deobf("curse.maven:viking-ages-craft-895600:6886945")
+
+ //Supernatural 2.12.1 (useless because they burn, and SuperNatural adds custom logic for their spawn)
+// implementation fg.deobf("curse.maven:supernatural-610880:5820483")
+
+ //Village and Villagers 1.0.0 + Tickrate API 4.0.0 (doesnt add any illager rn)
+// implementation fg.deobf("curse.maven:village-and-villagers-1275176:6908041")
+// implementation fg.deobf("curse.maven:tickrate-api-969702:6830640")
+
+ //Dice Rebuild 1.0.2 (Passive Illager)
+// implementation fg.deobf("curse.maven:dice-rebuild-1186181:6690515")
+
+ //Frostiful 1.0.11 + Thermoo 2.3.3 + Cardinal Components API 5.2.3 (Not made for raids, and too hard with fabric + forge)
+// implementation fg.deobf("curse.maven:frostiful-715248:5697270")
+// implementation fg.deobf("curse.maven:thermoo-846544:5832380")
+// implementation fg.deobf("curse.maven:cardinal-components-api-318449:6064429")
+
+ //Invade 1.7 (doesnt add any illagers in 1.20.1)
+// implementation fg.deobf("curse.maven:invade-850484:6637057")
+
+ //Invasion Code Red 0.0.1 (no third party) (stolen mod)
+// implementation fg.deobf("curse.maven:invasion-code-red-reborn-1385297:7225374")
+
+ //Burning Illagers 1.3.1 (removed by the demand of the author)
+// compileOnly fg.deobf("curse.maven:burning-illagers-1227507:6473130")
+
+ //Traders in Disguise 1.7 (mixins issues)
+// implementation fg.deobf("maven.modrinth:traders-in-disguise-the-illager-assassin-project:1.7")
+
+ //~SCORCHED GUNS 2 0.5.5 (has it's own way to spawn raiders)
+// implementation fg.deobf("curse.maven:scorched-guns-802940:7232063")
+// implementation fg.deobf("curse.maven:framework-549225:6531428")
- //ToroHealth Damage Indicators 1.19.2 1.0.0
- runtimeOnly fg.deobf("curse.maven:torohealth-damage-indicators-245733:3895068")
}
mixin {
@@ -210,7 +510,6 @@ mixin {
config "difficultraids.mixin.json"
}
-// Example for how to get properties into the manifest for reading at runtime.
jar {
manifest {
attributes([
@@ -225,11 +524,7 @@ jar {
}
}
-// Example configuration to allow publishing using the maven-publish plugin
-// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
-// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
-// publish.dependsOn('reobfJar')
publishing {
publications {
@@ -247,3 +542,10 @@ publishing {
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
+
+afterEvaluate {
+ def cleanArtifactJar = Objects.requireNonNull(net.minecraftforge.gradle.common.util.MavenArtifactDownloader.generate(project, "net.minecraft:joined:${project.MCP_VERSION}:srg", true), "Cannot find clean minecraft artifact")
+ minecraft.runs.configureEach {
+ property("connector.clean.path", cleanArtifactJar)
+ }
+}
diff --git a/gradle.properties b/gradle.properties
index 878bf1f..29b2ac4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,2 @@
-# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
-# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
-org.gradle.daemon=false
\ No newline at end of file
+org.gradle.daemon=false
diff --git a/src/main/java/com/calculusmaster/difficultraids/DifficultRaids.java b/src/main/java/com/calculusmaster/difficultraids/DifficultRaids.java
index 133a5ba..75705c1 100644
--- a/src/main/java/com/calculusmaster/difficultraids/DifficultRaids.java
+++ b/src/main/java/com/calculusmaster/difficultraids/DifficultRaids.java
@@ -11,6 +11,7 @@
import com.mojang.logging.LogUtils;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.AddReloadListenerEvent;
+import net.minecraftforge.eventbus.EventBus;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
@@ -26,18 +27,18 @@ public class DifficultRaids
public static RaidWaveReloadListener RAID_DATA_LOADER = new RaidWaveReloadListener();
// Directly reference a slf4j logger
- private static final Logger LOGGER = LogUtils.getLogger();
+ public static final Logger LOGGER = LogUtils.getLogger();
public DifficultRaids()
{
IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
DifficultRaidsItems.register(eventBus);
+ eventBus.addListener(DifficultRaidsItems::buildContents);
DifficultRaidsConfig.register();
DifficultRaidsEntityTypes.register(eventBus);
-
DifficultRaidsEnchantments.register(eventBus);
DifficultRaidsEffects.register(eventBus);
@@ -76,4 +77,4 @@ private void onAddReloadListener(AddReloadListenerEvent event)
{
event.addListener(DifficultRaids.RAID_DATA_LOADER);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/AdvanceRaidWaveCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/AdvanceRaidWaveCommand.java
index f787f86..21974ae 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/AdvanceRaidWaveCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/AdvanceRaidWaveCommand.java
@@ -19,31 +19,34 @@ public class AdvanceRaidWaveCommand
public static void register(CommandDispatcher dispatcher)
{
LiteralArgumentBuilder literalArgumentBuilder = Commands
- .literal("difficultraids_nextwave")
- .requires(css -> {
- try { return css.getPlayerOrException().hasPermissions(2); }
- catch (CommandSyntaxException e)
- {
- e.printStackTrace();
- return false;
- }
- })
- .executes(css -> {
- ServerPlayer player = css.getSource().getPlayerOrException();
- ServerLevel level = player.getLevel();
- Raid raid = level.getRaidAt(player.blockPosition());
+ .literal("difficultraids")
+ .then(
+ Commands.literal("nextwave")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .executes(css -> {
+ ServerPlayer player = css.getSource().getPlayerOrException();
+ ServerLevel level = player.serverLevel();
+ Raid raid = level.getRaidAt(player.blockPosition());
- if(raid == null) css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
- else
- {
- List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
+ if (raid == null) {
+ css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
+ }
+ else {
+ List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
- alive.forEach(LivingEntity::kill);
- css.getSource().sendSuccess(Component.literal("Wave successfully cleared!"), true);
- }
+ alive.forEach(LivingEntity::kill);
+ css.getSource().sendSuccess(() -> Component.literal("Wave successfully cleared!"), true);
+ }
- return 1;
- });
+ return 1;
+ })
+ );
dispatcher.register(literalArgumentBuilder);
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidWavesCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidWavesCommand.java
index 9d598aa..f21d843 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidWavesCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidWavesCommand.java
@@ -14,22 +14,25 @@ public class DumpRaidWavesCommand
public static void register(CommandDispatcher dispatcher)
{
LiteralArgumentBuilder literalArgumentBuilder = Commands
- .literal("difficultraids_dumpwaves")
- .requires(css -> {
- try { return css.getPlayerOrException().hasPermissions(2); }
- catch (CommandSyntaxException e)
- {
- e.printStackTrace();
- return false;
- }
- })
- .executes(css -> {
+ .literal("difficultraids")
+ .then(
+ Commands.literal("dumpwaves")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e) {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .executes(css -> {
+ RaidEnemyRegistry.printWaveData(LogUtils.getLogger());
- RaidEnemyRegistry.printWaveData(LogUtils.getLogger());
-
- css.getSource().sendSuccess(Component.literal("Dumped Raid Wave Data into the console!"), true);
- return 1;
- });
+ css.getSource().sendSuccess(
+ () -> Component.literal("Dumped Raid Wave Data into the console!"), true
+ );
+ return 1;
+ })
+ );
dispatcher.register(literalArgumentBuilder);
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidersListCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidersListCommand.java
new file mode 100644
index 0000000..30d05fa
--- /dev/null
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/DumpRaidersListCommand.java
@@ -0,0 +1,74 @@
+package com.calculusmaster.difficultraids.commands;
+
+import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.arguments.StringArgumentType;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.context.CommandContext;
+import com.mojang.brigadier.exceptions.CommandSyntaxException;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.commands.Commands;
+import net.minecraft.network.chat.Component;
+import net.minecraft.world.entity.EntityType;
+
+import java.util.List;
+
+public class DumpRaidersListCommand
+{
+ public static void register(CommandDispatcher dispatcher)
+ {
+ LiteralArgumentBuilder literalArgumentBuilder = Commands
+ .literal("difficultraids")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e) { return false; }
+ })
+ .then(Commands.literal("dumpraiders")
+ .then(Commands.argument("raiderType", StringArgumentType.word())
+ .suggests((ctx, builder) -> {
+ builder.suggest("STANDARD_RAIDERS");
+ builder.suggest("ADVANCED_RAIDERS");
+ builder.suggest("BASIC_MAGIC_RAIDERS");
+ builder.suggest("ADVANCED_MAGIC_RAIDERS");
+ return builder.buildFuture();
+ })
+ .executes(ctx -> dumpRaiders(ctx, StringArgumentType.getString(ctx, "raiderType")))
+ )
+ );
+
+ dispatcher.register(literalArgumentBuilder);
+ }
+
+ private static int dumpRaiders(CommandContext ctx, String type)
+ {
+ CommandSourceStack source = ctx.getSource();
+ List> list;
+
+ switch(type.toUpperCase())
+ {
+ case "STANDARD_RAIDERS" -> list = DifficultRaidsUtil.STANDARD_RAIDERS;
+ case "ADVANCED_RAIDERS" -> list = DifficultRaidsUtil.ADVANCED_RAIDERS;
+ case "BASIC_MAGIC_RAIDERS" -> list = DifficultRaidsUtil.BASIC_MAGIC_RAIDERS;
+ case "ADVANCED_MAGIC_RAIDERS" -> list = DifficultRaidsUtil.ADVANCED_MAGIC_RAIDERS;
+ default -> {
+ source.sendFailure(Component.literal("Unknown raider type: " + type));
+ return 0;
+ }
+ }
+
+ if(list.isEmpty())
+ {
+ source.sendSuccess(() -> Component.literal(type + " list is empty!"), false);
+ }
+ else
+ {
+ source.sendSuccess(() -> Component.literal("Dumping " + type + ":"), false);
+ for(EntityType> entity : list)
+ {
+ source.sendSuccess(() -> Component.literal(" - " + EntityType.getKey(entity)), false);
+ }
+ }
+
+ return 1;
+ }
+}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/FreezeRaidersCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/FreezeRaidersCommand.java
index 9d9e530..c724482 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/FreezeRaidersCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/FreezeRaidersCommand.java
@@ -20,36 +20,36 @@ public class FreezeRaidersCommand
public static void register(CommandDispatcher dispatcher)
{
LiteralArgumentBuilder literalArgumentBuilder = Commands
- .literal("difficultraids_freezeraiders")
- .requires(css -> {
- try { return css.getPlayerOrException().hasPermissions(2); }
- catch (CommandSyntaxException e)
- {
- e.printStackTrace();
- return false;
- }
- })
- .executes(css -> {
- ServerPlayer player = css.getSource().getPlayerOrException();
- ServerLevel level = player.getLevel();
- Raid raid = level.getRaidAt(player.blockPosition());
+ .literal("difficultraids")
+ .then(Commands.literal("freezeraiders")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e) {
+ return false;
+ }
+ })
+ .executes(css -> {
+ ServerPlayer player = css.getSource().getPlayerOrException();
+ ServerLevel level = player.serverLevel();
+ Raid raid = level.getRaidAt(player.blockPosition());
- if(raid == null) css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
- else
- {
- List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
- alive.forEach(r ->
- {
- if(r.isNoAi()) r.setNoAi(false);
- r.lookAt(css.getSource().getAnchor(), new Vec3(player.getX() - r.getX(), player.getY() - r.getY(), player.getZ() - r.getZ()));
- r.setNoAi(true);
- });
- css.getSource().sendSuccess(Component.literal(alive.size() + " raiders frozen!"), true);
- }
+ if (raid == null) {
+ css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
+ } else {
+ List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
+ alive.forEach(r -> {
+ if (r.isNoAi()) r.setNoAi(false);
+ r.lookAt(css.getSource().getAnchor(), new Vec3(player.getX() - r.getX(), player.getY() - r.getY(), player.getZ() - r.getZ()));
+ r.setNoAi(true);
+ });
+ css.getSource().sendSuccess(() -> Component.literal(alive.size() + " raiders frozen!"), true);
+ }
- return 1;
- });
+ return 1;
+ })
+ );
dispatcher.register(literalArgumentBuilder);
}
+
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/PrintRaidersCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/PrintRaidersCommand.java
index 71f08cc..ae3c7ca 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/PrintRaidersCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/PrintRaidersCommand.java
@@ -23,38 +23,48 @@ public class PrintRaidersCommand
public static void register(CommandDispatcher dispatcher)
{
LiteralArgumentBuilder literalArgumentBuilder = Commands
- .literal("difficultraids_printraiders")
- .requires(css -> {
- try { return css.getPlayerOrException().hasPermissions(2); }
- catch (CommandSyntaxException e)
- {
- e.printStackTrace();
- return false;
- }
- })
- .executes(css -> {
- ServerPlayer player = css.getSource().getPlayerOrException();
- ServerLevel level = player.getLevel();
- Raid raid = level.getRaidAt(player.blockPosition());
-
- if(raid == null) css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
- else
- {
- List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
-
- Map, Integer> raiderTypeCounts = new HashMap<>();
- alive.forEach(r -> raiderTypeCounts.put(r.getType(), raiderTypeCounts.getOrDefault(r.getType(), 0) + 1));
-
- StringJoiner s = new StringJoiner("\n");
- raiderTypeCounts.forEach((key, value) -> s.add(key.toShortString() + ": " + value));
-
- String raiderList = "Raiders Currently Alive:\n" + s;
- String totalRaiders = "Total Raiders Alive: " + raiderTypeCounts.values().stream().mapToInt(i -> i).sum();
- css.getSource().sendSuccess(Component.literal(raiderList + "\n" + totalRaiders), true);
- }
-
- return 1;
- });
+ .literal("difficultraids")
+ .then(
+ Commands.literal("printraiders")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .executes(css -> {
+ ServerPlayer player = css.getSource().getPlayerOrException();
+ ServerLevel level = player.serverLevel();
+ Raid raid = level.getRaidAt(player.blockPosition());
+
+ if(raid == null)
+ {
+ css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
+ }
+ else
+ {
+ List alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
+
+ Map, Integer> raiderTypeCounts = new HashMap<>();
+ alive.forEach(r -> raiderTypeCounts.put(r.getType(), raiderTypeCounts.getOrDefault(r.getType(), 0) + 1));
+
+ StringJoiner s = new StringJoiner("\n");
+ raiderTypeCounts.forEach((key, value) -> s.add(key.toShortString() + ": " + value));
+
+ String raiderList = "Raiders Currently Alive:\n" + s;
+ String totalRaiders = "Total Raiders Alive: " + raiderTypeCounts.values().stream().mapToInt(i -> i).sum();
+
+ css.getSource().sendSuccess(
+ () -> Component.literal(raiderList + "\n" + totalRaiders),
+ true
+ );
+ }
+
+ return 1;
+ })
+ );
dispatcher.register(literalArgumentBuilder);
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/SetRaidDifficultyCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/SetRaidDifficultyCommand.java
index ce8f6fa..984c47b 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/SetRaidDifficultyCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/SetRaidDifficultyCommand.java
@@ -16,12 +16,12 @@ public class SetRaidDifficultyCommand
{
public static void register(CommandDispatcher dispatcher)
{
- LiteralArgumentBuilder literalArgumentBuilder = Commands.literal("difficultraids_raiddifficulty");
+ LiteralArgumentBuilder raidDifficultyCommand = Commands.literal("raiddifficulty");
- // dr_raiddifficulty get
- literalArgumentBuilder.then(Commands.literal("get").executes(css -> {
+ // raiddifficulty get
+ raidDifficultyCommand.then(Commands.literal("get").executes(css -> {
ServerPlayer player = css.getSource().getPlayerOrException();
- Raid raid = player.getLevel().getRaidAt(player.blockPosition());
+ Raid raid = player.serverLevel().getRaidAt(player.blockPosition());
if(raid == null)
{
@@ -31,18 +31,18 @@ public static void register(CommandDispatcher dispatcher)
{
int level = player.getEffect(MobEffects.BAD_OMEN).getAmplifier() + 1;
- css.getSource().sendSuccess(Component.literal("Entering a Village will initiate a " + RaidDifficulty.get(level).getFormattedName() + " Raid with your current Bad Omen level."), false);
+ css.getSource().sendSuccess(() -> Component.literal("Entering a Village will initiate a " + RaidDifficulty.get(level).getFormattedName() + " Raid with your current Bad Omen level."), false);
}
}
- else css.getSource().sendSuccess(Component.literal("You're currently in a " + RaidDifficulty.get(raid.getBadOmenLevel()).getFormattedName() + " Raid."), false);
+ else css.getSource().sendSuccess(() -> Component.literal("You're currently in a " + RaidDifficulty.get(raid.getBadOmenLevel()).getFormattedName() + " Raid."), false);
return 1;
}));
- // dr_raiddifficulty set
+ // raiddifficulty set
for(RaidDifficulty difficulty : RaidDifficulty.values())
{
- literalArgumentBuilder.then(Commands.literal("set").then(Commands.literal(difficulty.toString().toLowerCase()).requires(css -> {
+ raidDifficultyCommand.then(Commands.literal("set").then(Commands.literal(difficulty.toString().toLowerCase()).requires(css -> {
try { return css.getPlayerOrException().hasPermissions(2); }
catch(CommandSyntaxException e) { e.printStackTrace(); return false; }
}).executes(css -> {
@@ -56,17 +56,20 @@ public static void register(CommandDispatcher dispatcher)
css.getSource().getPlayerOrException().addEffect(new MobEffectInstance(MobEffects.BAD_OMEN, 100000, level - 1));
- css.getSource().sendSuccess(Component.literal("Entering a Village will initiate a " + difficulty.getFormattedName() + " Raid."), false);
+ css.getSource().sendSuccess(() -> Component.literal("Entering a Village will initiate a " + difficulty.getFormattedName() + " Raid."), false);
return 1;
})));
}
- // dr_raiddifficulty info
- literalArgumentBuilder.then(Commands.literal("info").executes(css -> {
- css.getSource().sendSuccess(Component.literal("To select a Raid Difficulty, obtain higher levels of Bad Omen. Level 1 spawns a Default Vanilla Raid, and higher levels spawn tougher Raids added by DifficultRaids (2: Hero, 3: Legend, 4: Master, 5: Grandmaster)."), false);
+ // raiddifficulty info
+ raidDifficultyCommand.then(Commands.literal("info").executes(css -> {
+ css.getSource().sendSuccess(() -> Component.literal("To select a Raid Difficulty, obtain higher levels of Bad Omen. Level 1 spawns a Default Vanilla Raid, and higher levels spawn tougher Raids added by DifficultRaids (2: Hero, 3: Legend, 4: Master, 5: Grandmaster)."), false);
return 1;
}));
- dispatcher.register(literalArgumentBuilder);
+ LiteralArgumentBuilder mainCommand = Commands.literal("difficultraids")
+ .then(raidDifficultyCommand);
+
+ dispatcher.register(mainCommand);
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/calculusmaster/difficultraids/commands/ToggleInsanityModeCommand.java b/src/main/java/com/calculusmaster/difficultraids/commands/ToggleInsanityModeCommand.java
index 66ad623..6d4a2a9 100644
--- a/src/main/java/com/calculusmaster/difficultraids/commands/ToggleInsanityModeCommand.java
+++ b/src/main/java/com/calculusmaster/difficultraids/commands/ToggleInsanityModeCommand.java
@@ -17,33 +17,40 @@ public class ToggleInsanityModeCommand
{
public static void register(CommandDispatcher dispatcher)
{
- LiteralArgumentBuilder literalArgumentBuilder = Commands
- .literal("difficultraids_insanitymode")
- .requires(css -> {
- try { return css.getPlayerOrException().hasPermissions(2); }
- catch (CommandSyntaxException e)
- {
- e.printStackTrace();
- return false;
- }
- })
- .executes(css -> {
- ServerPlayer player = css.getSource().getPlayerOrException();
- ServerLevel level = player.getLevel();
- Raid raid = level.getRaidAt(player.blockPosition());
-
- boolean current = DifficultRaidsConfig.INSANITY_MODE.get();
- DifficultRaidsConfig.INSANITY_MODE.set(!current);
- boolean after = DifficultRaidsConfig.INSANITY_MODE.get();
-
- MutableComponent result = Component.literal(after ? "Insanity Mode is now activated. What have you done?" : "Insanity Mode is now deactivated. Good.").withStyle(ChatFormatting.DARK_RED);
-
- if(raid != null) result.append(Component.literal(" (This change will apply on the next wave of the current Raid.)"));
-
- css.getSource().sendSuccess(result, true);
- return 1;
- });
-
- dispatcher.register(literalArgumentBuilder);
+ LiteralArgumentBuilder root = Commands.literal("difficultraids");
+
+ root.then(Commands.literal("insanitymode")
+ .requires(css -> {
+ try { return css.getPlayerOrException().hasPermissions(2); }
+ catch (CommandSyntaxException e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+ })
+ .executes(css -> {
+ ServerPlayer player = css.getSource().getPlayerOrException();
+ ServerLevel level = player.serverLevel();
+ Raid raid = level.getRaidAt(player.blockPosition());
+
+ boolean current = DifficultRaidsConfig.INSANITY_MODE.get();
+ DifficultRaidsConfig.INSANITY_MODE.set(!current);
+ boolean after = DifficultRaidsConfig.INSANITY_MODE.get();
+
+ MutableComponent result = Component.literal(
+ after
+ ? "Insanity Mode is now activated. What have you done?"
+ : "Insanity Mode is now deactivated. Good."
+ ).withStyle(ChatFormatting.DARK_RED);
+
+ if(raid != null)
+ result.append(Component.literal(" (This change will apply on the next wave of the current Raid.)"));
+
+ css.getSource().sendSuccess(() -> result, true);
+ return 1;
+ })
+ );
+
+ dispatcher.register(root);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/config/RaiderConfigs.java b/src/main/java/com/calculusmaster/difficultraids/config/RaiderConfigs.java
index d42fa9a..68d159b 100644
--- a/src/main/java/com/calculusmaster/difficultraids/config/RaiderConfigs.java
+++ b/src/main/java/com/calculusmaster/difficultraids/config/RaiderConfigs.java
@@ -2,6 +2,7 @@
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import net.minecraft.core.Registry;
+import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
@@ -476,10 +477,10 @@ public void initialize()
public static class Necromancer extends RaiderConfig
{
- public static final TagKey> TAG_MINION_TYPES_HERO = TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("difficultraids:necromancer/minion_types_hero"));
- public static final TagKey> TAG_MINION_TYPES_LEGEND = TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("difficultraids:necromancer/minion_types_legend"));
- public static final TagKey> TAG_MINION_TYPES_MASTER = TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("difficultraids:necromancer/minion_types_master"));
- public static final TagKey> TAG_MINION_TYPES_GRANDMASTER = TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("difficultraids:necromancer/minion_types_grandmaster"));
+ public static final TagKey> TAG_MINION_TYPES_HERO = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation("difficultraids:necromancer/minion_types_hero"));
+ public static final TagKey> TAG_MINION_TYPES_LEGEND = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation("difficultraids:necromancer/minion_types_legend"));
+ public static final TagKey> TAG_MINION_TYPES_MASTER = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation("difficultraids:necromancer/minion_types_master"));
+ public static final TagKey> TAG_MINION_TYPES_GRANDMASTER = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation("difficultraids:necromancer/minion_types_grandmaster"));
public static final TagKey- TAG_HELMETS_HERO = ItemTags.create(new ResourceLocation("difficultraids:necromancer/helmets_hero"));
public static final TagKey
- TAG_HELMETS_LEGEND = ItemTags.create(new ResourceLocation("difficultraids:necromancer/helmets_legend"));
diff --git a/src/main/java/com/calculusmaster/difficultraids/data/raiderentries/DifficultyRaiderEntries.java b/src/main/java/com/calculusmaster/difficultraids/data/raiderentries/DifficultyRaiderEntries.java
index c57b45a..c119f0e 100644
--- a/src/main/java/com/calculusmaster/difficultraids/data/raiderentries/DifficultyRaiderEntries.java
+++ b/src/main/java/com/calculusmaster/difficultraids/data/raiderentries/DifficultyRaiderEntries.java
@@ -21,7 +21,7 @@ private static DataResult
parseRaidDifficulty(String difficultyS
try
{ return DataResult.success(RaidDifficulty.valueOf(difficultyString.toUpperCase())); }
catch(IllegalArgumentException e)
- { return DataResult.error("Invalid Raid Difficulty: " + difficultyString); }
+ { return DataResult.error(() -> "Invalid Raid Difficulty: " + difficultyString); }
}
private final RaidDifficulty raidDifficulty; public RaidDifficulty getRaidDifficulty() { return this.raidDifficulty; }
diff --git a/src/main/java/com/calculusmaster/difficultraids/effects/WindCurseEffect.java b/src/main/java/com/calculusmaster/difficultraids/effects/WindCurseEffect.java
index b736bbe..993712e 100644
--- a/src/main/java/com/calculusmaster/difficultraids/effects/WindCurseEffect.java
+++ b/src/main/java/com/calculusmaster/difficultraids/effects/WindCurseEffect.java
@@ -1,6 +1,12 @@
package com.calculusmaster.difficultraids.effects;
+import net.minecraft.core.Holder;
+import net.minecraft.core.Holder.*;
+import net.minecraft.resources.ResourceKey;
import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.damagesource.DamageSources;
+import net.minecraft.world.damagesource.DamageType;
+import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectCategory;
import net.minecraft.world.entity.LivingEntity;
@@ -38,7 +44,8 @@ public void applyEffectTick(LivingEntity pLivingEntity, int pAmplifier)
float damage = 1.25F * pAmplifier;
pLivingEntity.push(dX * modifier, dY, dZ * modifier);
- pLivingEntity.hurt(DamageSource.MAGIC, damage);
+ DamageSource damage_source = pLivingEntity.damageSources().magic();
+ pLivingEntity.hurt(damage_source, damage);
}
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/DREntityEvents.java b/src/main/java/com/calculusmaster/difficultraids/entity/DREntityEvents.java
index bf4614a..09613bf 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/DREntityEvents.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/DREntityEvents.java
@@ -10,6 +10,7 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
+import net.minecraft.tags.DamageTypeTags;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
@@ -85,12 +86,12 @@ public static void onEntityDamaged(LivingDamageEvent event)
float reduction = (equipped / (float)max) * maxReduction;
event.setAmount(event.getAmount() * (1.0F - reduction));
- target.getLevel().playSound(null, target, SoundEvents.GLASS_PLACE, SoundSource.PLAYERS, 2.5F, 0.7F);
+ target.level().playSound(null, target, SoundEvents.GLASS_PLACE, SoundSource.PLAYERS, 2.5F, 0.7F);
}
}
//Projectile Evasion
- if(event.getSource().isProjectile() && !event.getSource().isBypassArmor())
+ if(event.getSource().is(DamageTypeTags.IS_PROJECTILE) && !event.getSource().is(DamageTypeTags.BYPASSES_ARMOR))
{
int projectileEvasionLevel = event.getEntity().getItemBySlot(EquipmentSlot.FEET).getEnchantmentLevel(DifficultRaidsEnchantments.PROJECTILE_EVASION.get());
@@ -158,7 +159,7 @@ public static void onLivingHurt(LivingHurtEvent event)
if(random.nextFloat() < chance)
{
event.setAmount(event.getAmount() * multiplier);
- living.getLevel().playSound(null, living, SoundEvents.GLASS_BREAK, SoundSource.HOSTILE, 4.25F, 0.65F);
+ living.level().playSound(null, living, SoundEvents.GLASS_BREAK, SoundSource.HOSTILE, 4.25F, 0.65F);
}
}
}
@@ -175,7 +176,7 @@ public static void onLivingHurt(LivingHurtEvent event)
};
float damage = event.getAmount() * shieldedPercent;
- List nearbyTanks = raider.getLevel()
+ List nearbyTanks = raider.level()
.getNearbyEntities(TankIllagerEntity.class, TargetingConditions.DEFAULT, raider, raider.getBoundingBox().inflate(4.0D))
.stream()
.filter(tank -> tank.getHealth() > damage)
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/DifficultRaidsEntityTypes.java b/src/main/java/com/calculusmaster/difficultraids/entity/DifficultRaidsEntityTypes.java
index 8c42143..77297a7 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/DifficultRaidsEntityTypes.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/DifficultRaidsEntityTypes.java
@@ -80,7 +80,7 @@ private static RegistryObject> registe
{
return ENTITY_TYPES.register(registryName,
() -> EntityType.Builder.of(entityFactory, MobCategory.MONSTER)
- .sized(0.6F, 1.95F).clientTrackingRange(8).fireImmune()
+ .sized(0.6F, 1.95F).clientTrackingRange(8)
.build(new ResourceLocation(DifficultRaids.MODID, registryName).toString())
);
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/AshenadoObject.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/AshenadoObject.java
index 5009202..de3ab54 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/AshenadoObject.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/AshenadoObject.java
@@ -3,6 +3,7 @@
import com.calculusmaster.difficultraids.entity.entities.raider.AshenmancerIllagerEntity;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
import net.minecraft.core.particles.BlockParticleOption;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
@@ -27,7 +28,7 @@ public class AshenadoObject
private final ServerLevel level;
private final RaidDifficulty raidDifficulty;
- private Vec3 center;
+ private Vec3i center;
private int life;
private AABB coreArea;
@@ -35,10 +36,10 @@ public class AshenadoObject
private List particlePositions;
private boolean firstTick;
- public AshenadoObject(AshenmancerIllagerEntity owner, RaidDifficulty raidDifficulty, Vec3 center, int life)
+ public AshenadoObject(AshenmancerIllagerEntity owner, RaidDifficulty raidDifficulty, Vec3i center, int life)
{
this.owner = owner;
- this.level = (ServerLevel)owner.getLevel();
+ this.level = (ServerLevel)owner.level();
this.raidDifficulty = raidDifficulty;
this.center = center;
this.life = life;
@@ -51,10 +52,11 @@ public AshenadoObject(AshenmancerIllagerEntity owner, RaidDifficulty raidDifficu
public AshenadoObject(AshenmancerIllagerEntity owner, CompoundTag tag)
{
this.owner = owner;
- this.level = (ServerLevel)owner.getLevel();
+ this.level = (ServerLevel)owner.level();
this.raidDifficulty = RaidDifficulty.valueOf(tag.getString("AshenadoRaidDifficulty"));
- this.center = new Vec3(tag.getDouble("AshenadoCenterX"), tag.getDouble("AshenadoCenterY"), tag.getDouble("AshenadoCenterZ"));
+ Vec3 center = new Vec3(tag.getDouble("AshenadoCenterX"), tag.getDouble("AshenadoCenterY"), tag.getDouble("AshenadoCenterZ"));
+ this.center = new Vec3i((int) center.x, (int) center.y, (int) center.z);
this.life = tag.getInt("AshenadoLife");
this.firstTick = true;
@@ -65,9 +67,9 @@ public AshenadoObject(AshenmancerIllagerEntity owner, CompoundTag tag)
public void save(CompoundTag tag)
{
tag.putString("AshenadoRaidDifficulty", this.raidDifficulty.toString());
- tag.putDouble("AshenadoCenterX", this.center.x());
- tag.putDouble("AshenadoCenterY", this.center.y());
- tag.putDouble("AshenadoCenterZ", this.center.z());
+ tag.putDouble("AshenadoCenterX", this.center.getX());
+ tag.putDouble("AshenadoCenterY", this.center.getY());
+ tag.putDouble("AshenadoCenterZ", this.center.getZ());
tag.putInt("AshenadoLife", this.life);
}
@@ -78,11 +80,11 @@ private void generateArea()
this.coreArea = new AABB(new BlockPos(this.center))
.inflate(radius * 0.5, 0, radius * 0.5)
- .setMaxY(this.center.y() + height);
+ .setMaxY(this.center.getY() + height);
this.fullArea = new AABB(new BlockPos(this.center))
.inflate(radius, 0, radius)
- .setMaxY(this.center.y() + height);
+ .setMaxY(this.center.getY() + height);
this.particlePositions = new ArrayList<>();
for(float y = 0; y < height; y += 0.25)
@@ -115,7 +117,10 @@ public void tick()
if(!this.firstTick && this.life % 100 == 0)
{
- this.center = this.center.add(5 - this.level.random.nextInt(11), 0, 5 - this.level.random.nextInt(11));
+// this.center = this.center.add(5 - this.level.random.nextInt(11), 0, 5 - this.level.random.nextInt(11));
+ this.center = new Vec3i(this.center.getX() + 5 - this.level.random.nextInt(11),
+ this.center.getY(),
+ this.center.getZ() + 5 - this.level.random.nextInt(11));
this.generateArea();
}
@@ -144,9 +149,11 @@ private void applyEffects()
l.addEffect(new MobEffectInstance(MobEffects.WITHER, 20 * 7, 1, false, false));
});
+
this.level
.getEntitiesOfClass(LivingEntity.class, this.coreArea, validTarget)
- .forEach(l -> l.hurt(DamageSource.mobAttack(this.owner).bypassArmor().bypassEnchantments().bypassMagic(), 2.0F));
+ // this damage is supposed to bypass armor, enchantments, and magic.
+ .forEach(l -> l.hurt(l.damageSources().indirectMagic(this.owner, l), 2.0F));
}
public boolean isComplete()
@@ -154,7 +161,7 @@ public boolean isComplete()
return this.life == 0;
}
- public Vec3 getCenter()
+ public Vec3i getCenter()
{
return this.center;
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/FrostSnowballEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/FrostSnowballEntity.java
index e4680af..42a1e43 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/FrostSnowballEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/FrostSnowballEntity.java
@@ -33,7 +33,7 @@ protected void onHitEntity(EntityHitResult pResult)
//Blaze stuff is handled by the super call
if(!(entity instanceof Blaze) && !(entity instanceof Raider))
{
- entity.hurt(DamageSource.thrown(this, this.getOwner()), this.damage);
+ entity.hurt(this.damageSources().thrown(this, this.getOwner()), this.damage);
}
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/ShamanDebuffBulletEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/ShamanDebuffBulletEntity.java
index c1c0f18..700bd71 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/ShamanDebuffBulletEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/ShamanDebuffBulletEntity.java
@@ -60,7 +60,7 @@ protected void onHitEntity(EntityHitResult pResult)
{
if(this.getOwner() instanceof LivingEntity owner && pResult.getEntity() instanceof LivingEntity hitEntity && !(hitEntity instanceof Raider))
{
- boolean hitSuccess = hitEntity.hurt(DamageSource.indirectMobAttack(this, owner), 3.0F);
+ boolean hitSuccess = hitEntity.hurt(this.damageSources().indirectMagic(owner, hitEntity), 3.0F);
if(hitSuccess) this.doEnchantDamageEffects(owner, this);
this.getModifiedDebuffs(hitSuccess ? 1.0 : 0.5).forEach(d -> hitEntity.addEffect(d, this));
@@ -73,16 +73,16 @@ protected void onHitBlock(BlockHitResult p_37343_)
BlockPos pos = p_37343_.getBlockPos();
AABB applyRange = new AABB(pos).inflate(2.0);
- if(this.level.isClientSide)
+ if(this.level().isClientSide)
{
- this.level.addParticle(ParticleTypes.ASH, pos.getX(), pos.getY(), pos.getZ(), 0.0D, 0.2D, 0.0D);
+ this.level().addParticle(ParticleTypes.ASH, pos.getX(), pos.getY(), pos.getZ(), 0.0D, 0.2D, 0.0D);
}
List targets = new ArrayList<>();
- targets.addAll(this.level.getEntitiesOfClass(Player.class, applyRange));
- targets.addAll(this.level.getEntitiesOfClass(IronGolem.class, applyRange));
- targets.addAll(this.level.getEntitiesOfClass(AbstractVillager.class, applyRange));
- if(Compat.GUARD_VILLAGERS.isLoaded()) targets.addAll(this.level.getEntitiesOfClass(Guard.class, applyRange));
+ targets.addAll(this.level().getEntitiesOfClass(Player.class, applyRange));
+ targets.addAll(this.level().getEntitiesOfClass(IronGolem.class, applyRange));
+ targets.addAll(this.level().getEntitiesOfClass(AbstractVillager.class, applyRange));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) targets.addAll(this.level().getEntitiesOfClass(Guard.class, applyRange));
List debuffs = this.getModifiedDebuffs(0.75);
targets.forEach(living -> debuffs.forEach(living::addEffect));
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/VoldonFamiliarEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/VoldonFamiliarEntity.java
index df6cca1..7f9e7fa 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/VoldonFamiliarEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/VoldonFamiliarEntity.java
@@ -86,7 +86,7 @@ public void readAdditionalSaveData(CompoundTag pCompound)
{
super.readAdditionalSaveData(pCompound);
- this.voldon = pCompound.getInt("VoldonID") == -1 ? null : (VoldonEliteEntity)this.level.getEntity(pCompound.getInt("VoldonID"));
+ this.voldon = pCompound.getInt("VoldonID") == -1 ? null : (VoldonEliteEntity)this.level().getEntity(pCompound.getInt("VoldonID"));
}
@Override
@@ -139,7 +139,7 @@ protected void customServerAiStep()
if(this.voldon == null || this.voldon.isDeadOrDying())
{
- this.hurt(DamageSource.STARVE, this.getHealth() + 1.0F);
+ this.hurt(this.damageSources().starve(), this.getHealth() + 1.0F);
return;
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/WindColumnObject.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/WindColumnObject.java
index 5108565..9158754 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/WindColumnObject.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/component/WindColumnObject.java
@@ -12,6 +12,7 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
import java.util.Random;
@@ -31,7 +32,7 @@ public class WindColumnObject
public WindColumnObject(XydraxEliteEntity owner, BlockPos startPos, int life)
{
this.owner = owner;
- this.level = (ServerLevel)owner.getLevel();
+ this.level = (ServerLevel)owner.level();
this.position = startPos;
this.life = life;
@@ -114,8 +115,8 @@ private void spawnParticles()
{
for(int i = 0; i < this.height; i += 3)
{
- BlockPos particlePos = this.position.offset(0.5, i, 0.5);
- this.level.sendParticles(new BlockParticleOption(ParticleTypes.FALLING_DUST, Blocks.WHITE_WOOL.defaultBlockState()), particlePos.getX(), particlePos.getY(), particlePos.getZ(), 1, 0.15, 0, 0.15, 2.0);
+ Vec3 particlePos = new Vec3(this.position.getX() + 0.5, this.position.getY() + i, this.position.getZ() + 0.5);
+ this.level.sendParticles(new BlockParticleOption(ParticleTypes.FALLING_DUST, Blocks.WHITE_WOOL.defaultBlockState()), particlePos.x(), particlePos.y(), particlePos.z(), 1, 0.15, 0, 0.15, 2.0);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractEvokerVariant.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractEvokerVariant.java
index 9afe899..fab80c3 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractEvokerVariant.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractEvokerVariant.java
@@ -63,7 +63,7 @@ public IllagerArmPose getArmPose()
public boolean isCastingSpell()
{
- if(this.level.isClientSide) return this.entityData.get(SPELL_DATA) > 0;
+ if(this.level().isClientSide) return this.entityData.get(SPELL_DATA) > 0;
else return this.spellTicks > 0;
}
@@ -75,7 +75,7 @@ public void setSpellType(SpellType spellType)
protected SpellType getSpellType()
{
- return !this.level.isClientSide ? this.activeSpell : SpellType.getFromID(this.entityData.get(SPELL_DATA));
+ return !this.level().isClientSide ? this.activeSpell : SpellType.getFromID(this.entityData.get(SPELL_DATA));
}
@Override
@@ -96,7 +96,7 @@ public void tick()
{
super.tick();
- if(this.level.isClientSide && this.isCastingSpell() && this.spawnDefaultSpellcastingParticles())
+ if(this.level().isClientSide && this.isCastingSpell() && this.spawnDefaultSpellcastingParticles())
{
SpellType spellType = this.getSpellType();
double d0 = spellType.spellColor[0];
@@ -105,8 +105,8 @@ public void tick()
float f = this.yBodyRot * ((float)Math.PI / 180F) + Mth.cos((float)this.tickCount * 0.6662F) * 0.25F;
float f1 = Mth.cos(f);
float f2 = Mth.sin(f);
- this.level.addParticle(ParticleTypes.ENTITY_EFFECT, this.getX() + (double)f1 * 0.6D, this.getY() + 1.8D, this.getZ() + (double)f2 * 0.6D, d0, d1, d2);
- this.level.addParticle(ParticleTypes.ENTITY_EFFECT, this.getX() - (double)f1 * 0.6D, this.getY() + 1.8D, this.getZ() - (double)f2 * 0.6D, d0, d1, d2);
+ this.level().addParticle(ParticleTypes.ENTITY_EFFECT, this.getX() + (double)f1 * 0.6D, this.getY() + 1.8D, this.getZ() + (double)f2 * 0.6D, d0, d1, d2);
+ this.level().addParticle(ParticleTypes.ENTITY_EFFECT, this.getX() - (double)f1 * 0.6D, this.getY() + 1.8D, this.getZ() - (double)f2 * 0.6D, d0, d1, d2);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractIllagerVariant.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractIllagerVariant.java
index cddbdc4..2f1a478 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractIllagerVariant.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/core/AbstractIllagerVariant.java
@@ -2,13 +2,19 @@
import com.calculusmaster.difficultraids.config.RaidDifficultyConfig;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
+import com.calculusmaster.difficultraids.util.Compat;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.animal.IronGolem;
import net.minecraft.world.entity.monster.AbstractIllager;
import net.minecraft.world.entity.raid.Raider;
import net.minecraft.world.level.Level;
+import tallestegg.guardvillagers.entities.Guard;
public abstract class AbstractIllagerVariant extends AbstractIllager
{
@@ -52,4 +58,5 @@ public boolean isInDifficultRaid()
{
return this.isInRaid() && !this.getRaidDifficulty().isDefault();
}
+
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/ModurEliteEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/ModurEliteEntity.java
index 2073beb..6e19896 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/ModurEliteEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/ModurEliteEntity.java
@@ -5,6 +5,8 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
import com.calculusmaster.difficultraids.util.Compat;
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.BlockParticleOption;
import net.minecraft.core.particles.ParticleTypes;
@@ -84,6 +86,9 @@ protected void registerGoals()
this.goalSelector.addGoal(3, new ModurHomingBoltSpellGoal());
this.goalSelector.addGoal(4, new ModurLightningZapSpellGoal());
this.goalSelector.addGoal(5, new AvoidEntityGoal<>(this, Player.class, 4.0F, 0.6D, 0.75D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 4.0F, 0.7D, 0.75D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 4.0F, 0.7D, 0.75D));
+
this.goalSelector.addGoal(6, new RangedAttackGoal(this, 0.7F, 130, 12.0F));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.5D));
@@ -92,10 +97,12 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
- this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
+ this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 6.0F, 0.6D, 0.75D));
}
@Override
@@ -128,9 +135,9 @@ public void die(DamageSource pCause)
{
super.die(pCause);
- this.spawnCustomBolt(this.blockPosition().offset(0, 0.2, 0), 15.0F);
+ this.spawnCustomBolt(this.blockPosition(), 15.0F);
- if(!this.level.isClientSide && this.level.isThundering()) ((ServerLevel)ModurEliteEntity.this.level).setWeatherParameters(6000, 0, false, false);
+ if(!this.level().isClientSide && this.level().isThundering()) ((ServerLevel)ModurEliteEntity.this.level()).setWeatherParameters(6000, 0, false, false);
}
@Override
@@ -194,15 +201,15 @@ public boolean isStormActive()
private void spawnCustomBolt(BlockPos spawn, float damage)
{
- LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(this.level); if(bolt == null) return;
+ LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(this.level()); if(bolt == null) return;
- if(this.level.isThundering()) damage *= 1.25F;
+ if(this.level().isThundering()) damage *= 1.25F;
bolt.setCustomName(Component.literal(DifficultRaidsUtil.ELECTRO_ILLAGER_CUSTOM_BOLT_TAG));
bolt.setDamage(damage);
bolt.moveTo(spawn, 0.0F, 0.0F);
- this.level.addFreshEntity(bolt);
+ this.level().addFreshEntity(bolt);
}
@Override
@@ -222,7 +229,7 @@ public void tick()
int strikeZ = this.random.nextInt((int)this.stormAABB.minZ, (int)(this.stormAABB.maxZ + 1));
BlockPos strikePos = new BlockPos(strikeX, strikeY, strikeZ);
- int tries = 0; while(!this.level.getBlockState(strikePos).isAir() && tries++ < 20) strikePos = strikePos.above(1);
+ int tries = 0; while(!this.level().getBlockState(strikePos).isAir() && tries++ < 20) strikePos = strikePos.above(1);
ModurEliteEntity.this.spawnCustomBolt(strikePos, cfg.stormStrikeDamage);
}
@@ -234,7 +241,7 @@ public void tick()
if(this.chargedBoltWarmup > 0)
{
//Sounds
- if(this.chargedBoltWarmup % 30 == 0) this.level.playLocalSound(this.chargedBoltPos.getX(), this.chargedBoltPos.getY(), this.chargedBoltPos.getZ(),
+ if(this.chargedBoltWarmup % 30 == 0) this.level().playLocalSound(this.chargedBoltPos.getX(), this.chargedBoltPos.getY(), this.chargedBoltPos.getZ(),
SoundEvents.EVOKER_PREPARE_SUMMON, SoundSource.HOSTILE, 2.0F, 0.7F, false);
//Particles
@@ -247,7 +254,7 @@ public void tick()
this.chargedBoltPos.offset(1, i, 0),
this.chargedBoltPos.offset(0, i, 1),
this.chargedBoltPos.offset(1, i, 1)
- ).forEach(pos -> ((ServerLevel)this.level).sendParticles(new BlockParticleOption(ParticleTypes.FALLING_DUST, Blocks.WHITE_WOOL.defaultBlockState()), pos.getX(), pos.getY(), pos.getZ(), 2, 0.15, 0, 0.15, 2.0));
+ ).forEach(pos -> ((ServerLevel)this.level()).sendParticles(new BlockParticleOption(ParticleTypes.FALLING_DUST, Blocks.WHITE_WOOL.defaultBlockState()), pos.getX(), pos.getY(), pos.getZ(), 2, 0.15, 0, 0.15, 2.0));
}
//Logic
@@ -293,8 +300,8 @@ protected void castSpell()
{
ModurEliteEntity modur = ModurEliteEntity.this;
- Vec3 v = ModurEliteEntity.this.getLookAngle();
- modur.homingBoltPos = modur.blockPosition().offset(v.x, 0, v.z);
+// Vec3 v = ModurEliteEntity.this.getLookAngle();
+ modur.homingBoltPos = modur.blockPosition();
modur.homingBoltTicks = modur.config().modur.homingBoltTime;
}
@@ -399,7 +406,7 @@ protected void castSpell()
if(!this.targetPos.equals(BlockPos.ZERO))
{
for(int i = 0; i < 3; i++)
- ModurEliteEntity.this.spawnCustomBolt(this.targetPos.offset(0.5 - Math.random(), 0, 0.5 - Math.random()),
+ ModurEliteEntity.this.spawnCustomBolt(this.targetPos,
ModurEliteEntity.this.config().modur.zapBoltDamage);
}
}
@@ -478,7 +485,7 @@ protected void castSpell()
@Override
public boolean canUse()
{
- return super.canUse() && ModurEliteEntity.this.level.isThundering() && !ModurEliteEntity.this.isInExtendedSpellState();
+ return super.canUse() && ModurEliteEntity.this.level().isThundering() && !ModurEliteEntity.this.isInExtendedSpellState();
}
@Override
@@ -520,13 +527,13 @@ private ModurSummonThunderSpellGoal() {}
@Override
protected void castSpell()
{
- ((ServerLevel)ModurEliteEntity.this.level).setWeatherParameters(0, 20 * 60 * 5, true, true);
+ ((ServerLevel)ModurEliteEntity.this.level()).setWeatherParameters(0, 20 * 60 * 5, true, true);
}
@Override
public boolean canUse()
{
- return !ModurEliteEntity.this.level.getLevelData().isThundering();
+ return !ModurEliteEntity.this.level().getLevelData().isThundering();
}
@Override
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/NuaosEliteEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/NuaosEliteEntity.java
index de1050a..e10ef9c 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/NuaosEliteEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/NuaosEliteEntity.java
@@ -7,7 +7,10 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
import com.calculusmaster.difficultraids.util.Compat;
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
+import net.minecraft.world.phys.Vec3;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
@@ -80,8 +83,10 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)));
+ this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D));
this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
@@ -210,8 +215,10 @@ public void tick()
if(charge == ChargeState.HIGH_CHARGE || charge == ChargeState.MAX_CHARGE)
for(int i = 0; i < 3; i++)
{
- BlockPos particlePos = new BlockPos(this.getEyePosition()).offset(0.25 + 0.4 - this.random.nextFloat() * 0.8, 0.25 + this.random.nextFloat() * 0.1,0.25 + 0.4 - this.random.nextFloat() * 0.8);
- this.level.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, particlePos.getX(), particlePos.getY(), particlePos.getZ(), 0.05, 0.2, 0.05);
+ Vec3 eye_pos = new Vec3(this.getEyePosition().x, (int)this.getEyePosition().y, (int)this.getEyePosition().z);
+ Vec3 particle_pos = new Vec3(eye_pos.x() + 0.25 + 0.4 - this.random.nextFloat() * 0.8, eye_pos.y() + 0.25 + this.random.nextFloat() * 0.1, eye_pos.z() + 0.25 + 0.4 - this.random.nextFloat() * 0.8);
+// BlockPos particlePos = new BlockPos(eye_pos).offset(0.25 + 0.4 - this.random.nextFloat() * 0.8, 0.25 + this.random.nextFloat() * 0.1,0.25 + 0.4 - this.random.nextFloat() * 0.8);
+ this.level().addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, particle_pos.x(), particle_pos.y(), particle_pos.z(), 0.05, 0.2, 0.05);
}
}
}
@@ -246,7 +253,7 @@ protected void customServerAiStep()
double shockwaveRadius = rd.config().nuaos.shockwaveRadius;
AABB shockwaveAABB = new AABB(this.blockPosition()).inflate(shockwaveRadius);
- List targets = this.level.getEntitiesOfClass(LivingEntity.class, shockwaveAABB, entity -> canReceiveDamage.stream().anyMatch(type -> entity.getType().equals(type)));
+ List targets = this.level().getEntitiesOfClass(LivingEntity.class, shockwaveAABB, entity -> canReceiveDamage.stream().anyMatch(type -> entity.getType().equals(type)));
if(!targets.isEmpty())
{
@@ -265,7 +272,7 @@ protected void customServerAiStep()
damage = Math.max(falloffDamage, minDamage);
}
- t.hurt(DamageSource.mobAttack(this), damage);
+ t.hurt(this.damageSources().mobAttack(this), damage);
}
}
}
@@ -276,13 +283,13 @@ protected void customServerAiStep()
int strengthAmplifier = rd.config().nuaos.buffAuraStrengthLevel;
- this.level.getEntitiesOfClass(Raider.class, auraRadius, r -> DifficultRaidsUtil.STANDARD_RAIDERS.contains(r.getType())).forEach(raider ->
+ this.level().getEntitiesOfClass(Raider.class, auraRadius, r -> DifficultRaidsUtil.STANDARD_RAIDERS.contains(r.getType())).forEach(raider ->
{
if(!raider.hasEffect(MobEffects.DAMAGE_BOOST))
raider.addEffect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, 20 * 10, strengthAmplifier, false, true));
});
- this.level.playLocalSound(this.getX(), this.getY(), this.getZ(), SoundEvents.SPLASH_POTION_BREAK, SoundSource.HOSTILE, 3.0F, 1.0F, false);
+ this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), SoundEvents.SPLASH_POTION_BREAK, SoundSource.HOSTILE, 3.0F, 1.0F, false);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/VoldonEliteEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/VoldonEliteEntity.java
index c26b0b8..88690d4 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/VoldonEliteEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/VoldonEliteEntity.java
@@ -4,6 +4,8 @@
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
@@ -72,6 +74,9 @@ protected void registerGoals()
this.goalSelector.addGoal(1, new VoldonCastSpellGoal());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 4.0F, 0.6D, 0.75D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 4.0F, 0.7D, 0.75D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 4.0F, 0.7D, 0.75D));
+
this.goalSelector.addGoal(3, new VoldonSummonFamiliarsSpellGoal());
this.goalSelector.addGoal(4, new VoldonTeleportFamiliarSpellGoal());
this.goalSelector.addGoal(4, new VoldonSacrificeFamiliarSpellGoal());
@@ -83,10 +88,12 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
- this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
+ this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -94,7 +101,7 @@ public void readAdditionalSaveData(CompoundTag pCompound)
{
super.readAdditionalSaveData(pCompound);
- for(int ID : pCompound.getIntArray("FamiliarIDs")) if(this.level.getEntity(ID) instanceof LivingEntity familiar) this.familiars.add(familiar);
+ for(int ID : pCompound.getIntArray("FamiliarIDs")) if(this.level().getEntity(ID) instanceof LivingEntity familiar) this.familiars.add(familiar);
this.checkFamiliars = pCompound.getBoolean("CheckFamiliars");
this.familiarTag = pCompound.getString("FamiliarTag");
@@ -168,10 +175,10 @@ public void die(DamageSource pCause)
{
BlockPos spawnPos = pos.offset(5 - this.random.nextInt(1, 10), 1, 5 - this.random.nextInt(1, 10));
- Monster zombie = EntityType.ZOMBIE.create(this.level);
+ Monster zombie = EntityType.ZOMBIE.create(this.level());
zombie.moveTo(spawnPos, this.getYHeadRot(), this.getXRot());
- zombie.targetSelector.removeAllGoals();
+ zombie.targetSelector.removeAllGoals(goal -> (true));
zombie.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(zombie, Villager.class, true));
zombie.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(zombie, Player.class, true));
zombie.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(zombie, IronGolem.class, true));
@@ -179,7 +186,7 @@ public void die(DamageSource pCause)
if(pCause.getEntity() instanceof LivingEntity living) zombie.setTarget(living);
- this.level.addFreshEntity(zombie);
+ this.level().addFreshEntity(zombie);
}
}
@@ -187,9 +194,9 @@ public void die(DamageSource pCause)
public void tick()
{
super.tick();
- if(!this.level.isClientSide) this.familiars.removeIf(LivingEntity::isDeadOrDying);
+ if(!this.level().isClientSide) this.familiars.removeIf(LivingEntity::isDeadOrDying);
- if(this.checkFamiliars && this.level instanceof ServerLevel serverLevel)
+ if(this.checkFamiliars && this.level() instanceof ServerLevel serverLevel)
{
this.familiars.addAll(serverLevel.getEntitiesOfClass(VoldonFamiliarEntity.class, this.getBoundingBox().inflate(FAMILIAR_CHECK_RADIUS), e -> e.getTags().contains(this.familiarTag)));
@@ -216,7 +223,7 @@ public void performRangedAttack(LivingEntity pTarget, float pDistanceFactor)
for(int i = 0; i < count; i++)
{
- SmallFireball fireball = new SmallFireball(this.level, this, this.random.triangle(d1, 2.297D * d4), d2, this.random.triangle(d3, 2.297D * d4))
+ SmallFireball fireball = new SmallFireball(this.level(), this, this.random.triangle(d1, 2.297D * d4), d2, this.random.triangle(d3, 2.297D * d4))
{
@Override
protected void onHitEntity(EntityHitResult pResult)
@@ -227,10 +234,10 @@ protected void onHitEntity(EntityHitResult pResult)
};
fireball.setPos(fireball.getX(), this.getY(0.5D) + 0.5D, fireball.getZ());
- this.level.addFreshEntity(fireball);
+ this.level().addFreshEntity(fireball);
}
- this.level.addParticle(ParticleTypes.SMALL_FLAME, this.getX(), this.getEyeY() + 0.4, this.getZ(), 0.2, 0.0, 0.3);
+ this.level().addParticle(ParticleTypes.SMALL_FLAME, this.getX(), this.getEyeY() + 0.4, this.getZ(), 0.2, 0.0, 0.3);
}
private class VoldonCastSpellGoal extends SpellcastingIllagerCastSpellGoal
@@ -273,7 +280,7 @@ protected void castSpell()
f.addEffect(new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, effectDuration / 4, 1, false, false));
});
- sacrifice.hurt(DamageSource.STARVE, sacrifice.getHealth() + 1.0F);
+ sacrifice.hurt(sacrifice.damageSources().starve(), sacrifice.getHealth() + 1.0F);
}
}
@@ -334,8 +341,8 @@ protected void castSpell()
VoldonEliteEntity.this.getLookControl().setLookAt(target);
double yOffset = 0.3;
- BlockPos targetPos = target.blockPosition().offset(0, yOffset, 0);
- BlockPos thisPos = VoldonEliteEntity.this.blockPosition().offset(0, yOffset, 0);
+ BlockPos targetPos = target.blockPosition();
+ BlockPos thisPos = VoldonEliteEntity.this.blockPosition();
VoldonEliteEntity.this.teleportToWithTicket(targetPos.getX(), targetPos.getY(), targetPos.getZ());
target.teleportToWithTicket(thisPos.getX(), thisPos.getY(), thisPos.getZ());
@@ -397,14 +404,14 @@ protected void castSpell()
Supplier familiarPos = () -> sourcePos.offset(VoldonEliteEntity.this.random.nextInt(2, 10), VoldonEliteEntity.this.random.nextInt(2, 4), VoldonEliteEntity.this.random.nextInt(2, 10));
for(int i = 0; i < familiarCount; i++)
{
- Monster familiar = new VoldonFamiliarEntity(VoldonEliteEntity.this.level, VoldonEliteEntity.this);
+ Monster familiar = new VoldonFamiliarEntity(VoldonEliteEntity.this.level(), VoldonEliteEntity.this);
familiar.moveTo(familiarPos.get(), 0.0F, 0.0F);
familiar.setOnGround(true);
familiar.addTag(VoldonEliteEntity.this.familiarTag);
familiar.addEffect(new MobEffectInstance(MobEffects.GLOWING, 10000, 1, false, false));
- VoldonEliteEntity.this.level.addFreshEntity(familiar);
+ VoldonEliteEntity.this.level().addFreshEntity(familiar);
VoldonEliteEntity.this.familiars.add(familiar);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/XydraxEliteEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/XydraxEliteEntity.java
index 6e0af9f..424592e 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/XydraxEliteEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/XydraxEliteEntity.java
@@ -7,7 +7,10 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEffects;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Position;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
@@ -71,6 +74,9 @@ protected void registerGoals()
this.goalSelector.addGoal(1, new XydraxCastSpellGoal());
this.goalSelector.addGoal(2, new XydraxAvoidEntityGoal( 4.0F, 0.7D, 0.8D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 4.0F, 0.7D, 0.8D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 4.0F, 0.7D, 0.8D));
+
this.goalSelector.addGoal(3, new XydraxVortexSpellGoal());
this.goalSelector.addGoal(3, new XydraxWindColumnSpellGoal());
this.goalSelector.addGoal(4, new XydraxBarrageSpellGoal());
@@ -82,10 +88,12 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
- this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
+ this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(4, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -162,10 +170,10 @@ public void tick()
{
//Slow Descent
Vec3 deltaMove = this.getDeltaMovement();
- if(!this.isVortexActive() && !this.isOnGround() && deltaMove.y() < 0) this.setDeltaMovement(deltaMove.multiply(1.0D, 0.55D, 1.0D));
+ if(!this.isVortexActive() && !this.onGround() && deltaMove.y() < 0) this.setDeltaMovement(deltaMove.multiply(1.0D, 0.55D, 1.0D));
//Healing Checks
- if(this.isOnGround()) this.isHealing = false;
+ if(this.onGround()) this.isHealing = false;
else if(this.random.nextBoolean())
{
float currentHealth = this.getHealth();
@@ -192,21 +200,21 @@ else if(this.random.nextBoolean())
//Extremely slow descent
Vec3 deltaMove = this.getDeltaMovement();
- if(!this.isOnGround() && deltaMove.y() < 0) this.setDeltaMovement(deltaMove.multiply(1.0D, 0.1D, 1.0D));
+ if(!this.onGround() && deltaMove.y() < 0) this.setDeltaMovement(deltaMove.multiply(1.0D, 0.1D, 1.0D));
//Particles
for(int i = this.vortexFloor.getY(); i < this.blockPosition().getY(); i++)
{
- BlockPos pos = new BlockPos(this.vortexFloor.getX() + 0.5, i, this.vortexFloor.getZ() + 0.5);
- ((ServerLevel)this.level).sendParticles(ParticleTypes.FALLING_OBSIDIAN_TEAR, pos.getX(), pos.getY(), pos.getZ(), 1, 0.05, 0, 0.05, 1.0);
+ Vec3 pos = new Vec3(this.vortexFloor.getX() + 0.5, i, this.vortexFloor.getZ() + 0.5);
+ ((ServerLevel)this.level()).sendParticles(ParticleTypes.FALLING_OBSIDIAN_TEAR, pos.x(), pos.y(), pos.z(), 1, 0.05, 0, 0.05, 1.0);
}
//Vortex Pull
if(this.vortexTicks % cfg.xydrax.vortexPullInterval == 0)
{
this.getVortexTargets().forEach(e -> {
- BlockPos targetPos = e.blockPosition().offset(0.5, 0, 0.5);
- Vec3 targetVector = new Vec3(this.vortexFloor.getX() - targetPos.getX(), this.vortexFloor.getY() - targetPos.getY(), this.vortexFloor.getZ() - targetPos.getZ()).normalize();
+ Vec3 targetPos = new Vec3(e.position().x() + 0.5, e.position().y(), e.position().z() + 0.5);
+ Vec3 targetVector = new Vec3(this.vortexFloor.getX() - targetPos.x(), this.vortexFloor.getY() - targetPos.y(), this.vortexFloor.getZ() - targetPos.z()).normalize();
double force = cfg.xydrax.vortexForce;
@@ -234,7 +242,7 @@ else if(this.random.nextBoolean())
damage *= cfg.xydrax.vortexDamageMultiplier;
- if(damage != 0.0F) e.hurt(DamageSource.mobAttack(this), (float)damage);
+ if(damage != 0.0F) e.hurt(this.damageSources().mobAttack(this), (float)damage);
});
}
}
@@ -295,7 +303,7 @@ private void createVortexAABB()
private void summonWindColumns()
{
- BlockPos center = new BlockPos(this.blockPosition()).offset(0, 0.05, 0);
+ BlockPos center = new BlockPos(this.blockPosition());
RaidDifficulty raidDifficulty = this.isInDifficultRaid() ? this.getRaidDifficulty() : RaidDifficulty.DEFAULT;
@@ -357,7 +365,7 @@ private void summonWindColumns()
private List getVortexTargets()
{
- return this.level.getEntitiesOfClass(LivingEntity.class, this.vortexAABB, e ->
+ return this.level().getEntitiesOfClass(LivingEntity.class, this.vortexAABB, e ->
{
if(e.isAlliedTo(this)) return false;
else if(e instanceof Player player) return !player.isCreative() && !player.isSpectator();
@@ -404,8 +412,8 @@ private XydraxVortexSpellGoal() {}
private boolean isEntityNearby()
{
XydraxEliteEntity xydrax = XydraxEliteEntity.this;
- AABB search = new AABB(xydrax.blockPosition().offset(0.5, 1.0, 0.5)).inflate(10.0);
- return !xydrax.level.getEntitiesOfClass(LivingEntity.class, search, e -> !e.isAlliedTo(XydraxEliteEntity.this)).isEmpty();
+ AABB search = new AABB(xydrax.blockPosition().offset(0, 1, 0)).inflate(10.0);
+ return !xydrax.level().getEntitiesOfClass(LivingEntity.class, search, e -> !e.isAlliedTo(XydraxEliteEntity.this)).isEmpty();
}
@Override
@@ -414,7 +422,7 @@ protected void castSpell()
XydraxEliteEntity xydrax = XydraxEliteEntity.this;
//Set up vortex bounds
- xydrax.vortexFloor = XydraxEliteEntity.this.blockPosition().offset(0.5, -0.05, 0.5);
+ xydrax.vortexFloor = XydraxEliteEntity.this.blockPosition();
xydrax.createVortexAABB();
//Push Xydrax into air
@@ -480,7 +488,7 @@ protected void castSpell()
@Override
public boolean canUse()
{
- return super.canUse() && !XydraxEliteEntity.this.isInExtendedSpellState() && XydraxEliteEntity.this.isOnGround();
+ return super.canUse() && !XydraxEliteEntity.this.isInExtendedSpellState() && XydraxEliteEntity.this.onGround();
}
@Override
@@ -585,7 +593,7 @@ protected void castSpell()
for(int i = 0; i < 12; i++)
{
- Arrow arrow = new Arrow(XydraxEliteEntity.this.level, XydraxEliteEntity.this)
+ Arrow arrow = new Arrow(XydraxEliteEntity.this.level(), XydraxEliteEntity.this)
{
@Override
protected void onHitBlock(BlockHitResult p_36755_) { super.onHitBlock(p_36755_); this.discard(); }
@@ -612,7 +620,7 @@ protected void onHitEntity(EntityHitResult pResult)
double distanceY = Math.sqrt(targetX * targetX + targetZ * targetZ) * (double)0.2F;
arrow.shoot(targetX, targetArrowY + distanceY, targetZ, 1.5F, 25.0F);
- XydraxEliteEntity.this.level.addFreshEntity(arrow);
+ XydraxEliteEntity.this.level().addFreshEntity(arrow);
}
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AshenmancerIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AshenmancerIllagerEntity.java
index 6e03fae..846e48c 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AshenmancerIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AshenmancerIllagerEntity.java
@@ -5,7 +5,10 @@
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataAccessor;
@@ -84,6 +87,7 @@ protected void registerGoals()
this.goalSelector.addGoal(1, new AshenmancerCastSpellGoal());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 6.0F, 0.6D, 1.0D));
if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 6.0F, 0.7D, 1.0D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 6.0F, 0.7D, 1.0D));
this.goalSelector.addGoal(3, new AshenmancerSummonMinionsSpellGoal());
//TODO: Ashenado Rework this.goalSelector.addGoal(4, new AshenmancerAshenadoSpellGoal());
this.goalSelector.addGoal(5, new AshenmancerWitherSkullTurretSpellGoal());
@@ -96,9 +100,10 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Guard.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
-
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -149,7 +154,7 @@ public boolean canSpawnMinion()
public void setMinionTargets(WitherSkeleton minion)
{
- minion.targetSelector.removeAllGoals();
+ minion.targetSelector.removeAllGoals(goal -> (true));
minion.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(minion, Player.class, true));
minion.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(minion, IronGolem.class, true));
minion.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(minion, AbstractVillager.class, true));
@@ -184,7 +189,7 @@ protected void customServerAiStep()
//Loading
if(this.checkMinions)
{
- this.minions.addAll(this.level.getEntitiesOfClass(WitherSkeleton.class, this.getBoundingBox().inflate(SUMMON_CHECK_RADIUS), e -> e.getTags().contains(this.minionTag)));
+ this.minions.addAll(this.level().getEntitiesOfClass(WitherSkeleton.class, this.getBoundingBox().inflate(SUMMON_CHECK_RADIUS), e -> e.getTags().contains(this.minionTag)));
this.checkMinions = this.tickCount <= 100 && this.minions.isEmpty();
@@ -205,7 +210,7 @@ protected void customServerAiStep()
if(this.tickCount % 40 == 0 && ws.getHealth() < ws.getMaxHealth() * 0.75 && ws.distanceTo(this) <= 3.0)
{
ws.heal(1.0F);
- ((ServerLevel)this.level).sendParticles(ParticleTypes.HAPPY_VILLAGER, ws.getX(), ws.getEyeY() + 0.25, ws.getZ(), 3, this.random.nextFloat() / 2, this.random.nextFloat() / 2, this.random.nextFloat() / 2, 0.4);
+ ((ServerLevel)this.level()).sendParticles(ParticleTypes.HAPPY_VILLAGER, ws.getX(), ws.getEyeY() + 0.25, ws.getZ(), 3, this.random.nextFloat() / 2, this.random.nextFloat() / 2, this.random.nextFloat() / 2, 0.4);
}
}
}
@@ -251,7 +256,7 @@ protected void customServerAiStep()
Predicate validTarget = e -> !(e instanceof Raider) && !e.isAlliedTo(this) && !(e instanceof WitherSkeleton);
- WitherSkull witherSkull = new WitherSkull(this.level, this, dX, dY, dZ)
+ WitherSkull witherSkull = new WitherSkull(this.level(), this, dX, dY, dZ)
{
@Override
protected void onHitEntity(EntityHitResult pResult)
@@ -265,7 +270,7 @@ protected void onHitEntity(EntityHitResult pResult)
witherSkull.setOwner(this);
witherSkull.setPos(aX, aY, aZ);
- this.level.addFreshEntity(witherSkull);
+ this.level().addFreshEntity(witherSkull);
this.turretCount--;
}
@@ -275,7 +280,7 @@ protected void onHitEntity(EntityHitResult pResult)
if(this.ticksNoTarget >= 40 && this.turretCount > 0) this.turretCount = 0;
//Particles
- if(this.tickCount % 5 == 0 && this.level instanceof ServerLevel serverLevel) for(int i = 0; i < 4; i++)
+ if(this.tickCount % 5 == 0 && this.level() instanceof ServerLevel serverLevel) for(int i = 0; i < 4; i++)
serverLevel.sendParticles(ParticleTypes.SMOKE, this.getX() + (0.25 - this.random.nextFloat() * 0.5), this.getEyeY(), this.getZ() + (0.25 - this.random.nextFloat() * 0.5), 1, 0, 0, 0, 0.2);
}
else if(this.isTurretActive() && this.turretCount == 0) this.setTurretActive(false);
@@ -338,7 +343,7 @@ private AshenmancerSummonMinionsSpellGoal() {}
protected void castSpell()
{
LivingEntity target = AshenmancerIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel) AshenmancerIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel) AshenmancerIllagerEntity.this.level();
if(target != null)
{
@@ -437,7 +442,7 @@ private AshenmancerShootSkullsSpellGoal() {}
protected void castSpell()
{
LivingEntity target = AshenmancerIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)AshenmancerIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)AshenmancerIllagerEntity.this.level();
AshenmancerIllagerEntity ashenmancer = AshenmancerIllagerEntity.this;
List pool = new ArrayList<>(List.of(WitherSkullType.values()));
@@ -510,7 +515,7 @@ protected void onHitEntity(EntityHitResult pResult)
if(ashenmancer.ashenado != null)
{
- Vec3 dir = new Vec3(pResult.getEntity().getX() - ashenmancer.ashenado.getCenter().x(), pResult.getEntity().getY() - ashenmancer.ashenado.getCenter().y(), pResult.getEntity().getZ() - ashenmancer.ashenado.getCenter().z()).normalize();
+ Vec3 dir = new Vec3(pResult.getEntity().getX() - ashenmancer.ashenado.getCenter().getX(), pResult.getEntity().getY() - ashenmancer.ashenado.getCenter().getY(), pResult.getEntity().getZ() - ashenmancer.ashenado.getCenter().getZ()).normalize();
final float force = type == WitherSkullType.PUSHER ? ashenmancer.config().ashenmancer.pusherSkullForce : 1.25F;
pResult.getEntity().push(dir.x() * force, dir.y() * force, dir.z() * force);
@@ -644,10 +649,10 @@ protected void castSpell()
{
BlockPos targetCenter = target.blockPosition().offset(-3 + ashenmancer.random.nextInt(7), 0, -3 + ashenmancer.random.nextInt(7));
Vec3 center = Vec3.atCenterOf(targetCenter).subtract(0, -0.5, 0);
-
+ Vec3i center_int = new Vec3i((int)center.x, (int)center.y, (int)center.z);
ashenmancer.ashenado = new AshenadoObject(ashenmancer,
ashenmancer.isInDifficultRaid() ? ashenmancer.getRaidDifficulty() : RaidDifficulty.DEFAULT,
- center,
+ center_int,
ashenmancer.config().ashenmancer.ashenadoDuration
);
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AssassinIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AssassinIllagerEntity.java
index 84558d2..d80d49e 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AssassinIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/AssassinIllagerEntity.java
@@ -3,7 +3,10 @@
import com.calculusmaster.difficultraids.entity.entities.core.AbstractPillagerVariant;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.InteractionHand;
@@ -52,13 +55,14 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true));
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Cow.class, true));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Sheep.class, true));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Pig.class, true));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Chicken.class, true));
if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(8, new NearestAttackableTargetGoal<>(this, Guard.class, true));
-
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(8, new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.9D));
this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F));
@@ -97,7 +101,8 @@ public void aiStep()
{
if(this.distanceTo(target) > 8 && this.canTeleport() && this.random.nextFloat() < 0.25F)
{
- BlockPos targetPos = new BlockPos(target.getEyePosition()).offset(this.random.nextInt(5) - 2, 0, this.random.nextInt(5) - 2);
+ Vec3i eye_pos = new Vec3i((int)target.getEyePosition().x, (int)target.getEyePosition().y, (int)target.getEyePosition().z);
+ BlockPos targetPos = new BlockPos(eye_pos).offset(this.random.nextInt(5) - 2, 0, this.random.nextInt(5) - 2);
this.randomTeleport(targetPos.getX(), targetPos.getY(), targetPos.getZ(), true);
this.teleportCooldown = this.config().assassin.teleportCooldown;
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/DartIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/DartIllagerEntity.java
index 2683440..9ce22e1 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/DartIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/DartIllagerEntity.java
@@ -1,7 +1,9 @@
package com.calculusmaster.difficultraids.entity.entities.raider;
import com.calculusmaster.difficultraids.entity.entities.core.AbstractVindicatorVariant;
+import com.calculusmaster.difficultraids.util.Compat;
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.DifficultyInstance;
@@ -29,6 +31,7 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
import org.jetbrains.annotations.Nullable;
+import tallestegg.guardvillagers.entities.Guard;
public class DartIllagerEntity extends AbstractVindicatorVariant
{
@@ -57,7 +60,8 @@ protected void registerGoals()
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Sheep.class, true));
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Pig.class, true));
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Chicken.class, true));
-
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Guard.class, true));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.9D));
this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F));
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ElectroIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ElectroIllagerEntity.java
index 2eda23b..86f8458 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ElectroIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ElectroIllagerEntity.java
@@ -4,6 +4,8 @@
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.util.Compat;
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.network.chat.Component;
@@ -48,6 +50,8 @@ protected void registerGoals()
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new ElectroIllagerCastingSpellGoal());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 8.0F, 0.6D, 1.0D));
this.goalSelector.addGoal(3, new ElectroIllagerSummonLightningSpellGoal());
this.goalSelector.addGoal(3, new ElectroIllagerConcentratedLightningBoltSpellGoal());
this.goalSelector.addGoal(3, new ElectroIllagerRingLightningSpellGoal());
@@ -58,9 +62,11 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -74,13 +80,13 @@ public void tick()
{
super.tick();
- if(this.level.isClientSide && this.isCastingSpell())
+ if(this.level().isClientSide && this.isCastingSpell())
{
SpellType spellType = this.getSpellType();
double d0 = spellType.getColor(0), d1 = spellType.getColor(1), d2 = spellType.getColor(2);
float f = this.yBodyRot * ((float)Math.PI / 180F) + Mth.cos((float)this.tickCount * 0.6662F) * 0.25F;
- this.level.addParticle(ParticleTypes.ELECTRIC_SPARK, this.getX() + Math.cos(f) * 0.6D, this.getY() + 1.8D, this.getZ() + Math.sin(f) * 0.6D, d0, d1, d2);
- this.level.addParticle(ParticleTypes.ELECTRIC_SPARK, this.getX() - Math.cos(f) * 0.6D, this.getY() + 1.8D, this.getZ() - Math.sin(f) * 0.6D, d0, d1, d2);
+ this.level().addParticle(ParticleTypes.ELECTRIC_SPARK, this.getX() + Math.cos(f) * 0.6D, this.getY() + 1.8D, this.getZ() + Math.sin(f) * 0.6D, d0, d1, d2);
+ this.level().addParticle(ParticleTypes.ELECTRIC_SPARK, this.getX() - Math.cos(f) * 0.6D, this.getY() + 1.8D, this.getZ() - Math.sin(f) * 0.6D, d0, d1, d2);
}
}
@@ -110,7 +116,7 @@ private ElectroIllagerConcentratedLightningBoltSpellGoal() {}
protected void castSpell()
{
LivingEntity target = ElectroIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.level();
boolean rain = level.isRainingAt(ElectroIllagerEntity.this.blockPosition());
boolean thunder = level.isThundering();
@@ -179,7 +185,7 @@ private ElectroIllagerSummonLightningSpellGoal() {}
protected void castSpell()
{
LivingEntity target = ElectroIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.level();
boolean rain = level.isRainingAt(ElectroIllagerEntity.this.blockPosition());
boolean thunder = level.isThundering();
@@ -249,7 +255,7 @@ private ElectroIllagerRingLightningSpellGoal() {}
protected void castSpell()
{
LivingEntity target = ElectroIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ElectroIllagerEntity.this.level();
boolean thunder = level.isThundering();
if(target != null)
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/FrostIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/FrostIllagerEntity.java
index b4ff224..f6f4e24 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/FrostIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/FrostIllagerEntity.java
@@ -4,10 +4,14 @@
import com.calculusmaster.difficultraids.entity.entities.component.FrostSnowballEntity;
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
+import net.minecraft.tags.DamageTypeTags;
import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.EntityType;
@@ -45,6 +49,8 @@ protected void registerGoals()
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new FrostIllagerCastSpell());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 8.0F, 0.6D, 1.0D));
this.goalSelector.addGoal(4, new FrostIllagerFreezeSpellGoal());
this.goalSelector.addGoal(4, new FrostIllagerBarrageSpellGoal());
this.goalSelector.addGoal(5, new FrostIllagerSnowballBlastSpellGoal());
@@ -55,9 +61,11 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -69,7 +77,7 @@ public void applyRaidBuffs(int p_37844_, boolean p_37845_)
@Override
public boolean hurt(DamageSource pSource, float pAmount)
{
- return super.hurt(pSource, pSource.isProjectile() ? pAmount * 2 : pAmount);
+ return super.hurt(pSource, pSource.is(DamageTypeTags.IS_PROJECTILE) ? pAmount * 2 : pAmount);
}
@Override
@@ -98,7 +106,7 @@ public void tick()
{
final AABB aabb = this.getBoundingBox().inflate(this.config().frostmage.slownessAuraRadius);
- this.level.getEntitiesOfClass(LivingEntity.class, aabb, e -> !e.isAlliedTo(this) && !e.hasEffect(MobEffects.MOVEMENT_SLOWDOWN) && (!(e instanceof Player p) || !p.isSpectator() && !p.isCreative())).forEach(e -> e.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 20 * 5, 3)));
+ this.level().getEntitiesOfClass(LivingEntity.class, aabb, e -> !e.isAlliedTo(this) && !e.hasEffect(MobEffects.MOVEMENT_SLOWDOWN) && (!(e instanceof Player p) || !p.isSpectator() && !p.isCreative())).forEach(e -> e.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 20 * 5, 3)));
}
//Barrage
@@ -117,7 +125,7 @@ public void tick()
for(int i = 0; i < size; i++)
{
- FrostSnowballEntity snowball = DifficultRaidsEntityTypes.FROST_SNOWBALL.get().create(this.level);
+ FrostSnowballEntity snowball = DifficultRaidsEntityTypes.FROST_SNOWBALL.get().create(this.level());
snowball.setOwner(this);
snowball.setPos(this.getEyePosition().x(), this.getEyePosition().y() - 0.2, this.getEyePosition().z());
snowball.setDamage(this.config().frostmage.barrageSnowballDamage);
@@ -128,7 +136,7 @@ public void tick()
double targetSnowballY = targetY - snowball.getY();
snowball.shoot(targetX, targetSnowballY + distanceY, targetZ, 1.6F, 14.0F);
- this.level.addFreshEntity(snowball);
+ this.level().addFreshEntity(snowball);
}
this.playSound(SoundEvents.SNOW_GOLEM_SHOOT, 1.0F, 0.4F / (this.random.nextFloat() * 0.4F + 0.8F));
@@ -167,7 +175,7 @@ protected void castSpell()
for(int i = 0; i < size; i++)
{
- FrostSnowballEntity snowball = DifficultRaidsEntityTypes.FROST_SNOWBALL.get().create(FrostIllagerEntity.this.level);
+ FrostSnowballEntity snowball = DifficultRaidsEntityTypes.FROST_SNOWBALL.get().create(FrostIllagerEntity.this.level());
snowball.setOwner(FrostIllagerEntity.this);
snowball.setPos(FrostIllagerEntity.this.getEyePosition().x(), FrostIllagerEntity.this.getEyePosition().y() - 0.2, FrostIllagerEntity.this.getEyePosition().z());
snowball.setDamage(damage);
@@ -179,7 +187,7 @@ protected void castSpell()
double distanceY = Math.sqrt(targetX * targetX + targetZ * targetZ) * (double)0.2F;
snowball.shoot(targetX, targetSnowballY + distanceY, targetZ, 1.6F, 3.0F);
- FrostIllagerEntity.this.level.addFreshEntity(snowball);
+ FrostIllagerEntity.this.level().addFreshEntity(snowball);
}
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/NecromancerIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/NecromancerIllagerEntity.java
index a79941d..acf546d 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/NecromancerIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/NecromancerIllagerEntity.java
@@ -3,7 +3,10 @@
import com.calculusmaster.difficultraids.config.RaiderConfigs;
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
@@ -73,6 +76,8 @@ protected void registerGoals()
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new NecromancerCastSpellGoal());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 8.0F, 0.6D, 1.0D));
this.goalSelector.addGoal(4, new NecromancerSummonMinionsSpellGoal());
this.goalSelector.addGoal(4, new NecromancerBuryTargetGoal());
this.goalSelector.addGoal(5, new NecromancerSummonHordeSpellGoal());
@@ -83,9 +88,11 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)).setUnseenMemoryTicks(300));
}
@Override
@@ -148,7 +155,7 @@ public void removeMinionCharge()
public void setMinionTargets(Mob minion)
{
- minion.targetSelector.removeAllGoals();
+ minion.targetSelector.removeAllGoals((goal) -> true);
minion.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(minion, Player.class, true));
minion.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(minion, IronGolem.class, true));
minion.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(minion, AbstractVillager.class, true));
@@ -224,7 +231,7 @@ public void tick()
super.tick();
//Loading
- if(this.level instanceof ServerLevel serverLevel)
+ if(this.level() instanceof ServerLevel serverLevel)
{
if(this.checkMinions)
{
@@ -266,7 +273,7 @@ private NecromancerSummonMinionsSpellGoal() {}
protected void castSpell()
{
LivingEntity target = NecromancerIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.level();
if(target != null)
{
@@ -357,7 +364,7 @@ private NecromancerSummonHordeSpellGoal() {}
protected void castSpell()
{
LivingEntity target = NecromancerIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.level();
if(target != null)
{
@@ -448,7 +455,7 @@ private NecromancerBuryTargetGoal() {}
protected void castSpell()
{
LivingEntity target = NecromancerIllagerEntity.this.getTarget();
- ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)NecromancerIllagerEntity.this.level();
boolean raid = NecromancerIllagerEntity.this.isInRaid();
if(target != null)
@@ -459,11 +466,12 @@ protected void castSpell()
//Bury Logic
target.playSound(SoundEvents.DROWNED_AMBIENT_WATER, 5.0F, 0.75F);
- int buryDistance = 2 + Mth.ceil(target.getBbHeight()) * (target.isOnGround() ? 1 : 2);
+ int buryDistance = 2 + Mth.ceil(target.getBbHeight()) * (target.onGround() ? 1 : 2);
target.moveTo(target.getBlockX(), target.getBlockY() - buryDistance, target.getBlockZ());
- if(!level.getBlockState(new BlockPos(target.getEyePosition())).isAir() && target instanceof AbstractVillager villager)
+ Vec3i eye_pos = new Vec3i((int)target.getEyePosition().x, (int)target.getEyePosition().y, (int)target.getEyePosition().z);
+ if(!level.getBlockState(new BlockPos(eye_pos)).isAir() && target instanceof AbstractVillager villager)
villager.addEffect(new MobEffectInstance(MobEffects.GLOWING, 200, 1));
}
}
@@ -471,9 +479,14 @@ protected void castSpell()
@Override
public boolean canUse()
{
- Level level = NecromancerIllagerEntity.this.getLevel();
- LivingEntity target = NecromancerIllagerEntity.this.getTarget();
- return super.canUse() && level.getBlockState(new BlockPos(target.getEyePosition())).isAir() && Math.pow(NecromancerIllagerEntity.this.blockPosition().distSqr(target.blockPosition()), 0.5) < 4;
+ try {
+ Level level = NecromancerIllagerEntity.this.level();
+ LivingEntity target = NecromancerIllagerEntity.this.getTarget();
+ Vec3i eye_pos = new Vec3i((int) target.getEyePosition().x, (int) target.getEyePosition().y, (int) target.getEyePosition().z);
+ return super.canUse() && level.getBlockState(new BlockPos(eye_pos)).isAir() && Math.pow(NecromancerIllagerEntity.this.blockPosition().distSqr(target.blockPosition()), 0.5) < 4;
+ } catch (Exception e) {
+ return false;
+ }
}
@Override
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ShamanIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ShamanIllagerEntity.java
index 1fe12ae..6b06248 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ShamanIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/ShamanIllagerEntity.java
@@ -3,7 +3,10 @@
import com.calculusmaster.difficultraids.entity.entities.component.ShamanDebuffBulletEntity;
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
@@ -46,6 +49,8 @@ protected void registerGoals()
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new ShamanCastSpellGoal());
this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.6D, 1.0D));
+ if(Compat.RECRUITS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, AbstractRecruitEntity.class, 8.0F, 0.6D, 1.0D));
this.goalSelector.addGoal(3, new ShamanMoveToRaidersGoal());
this.goalSelector.addGoal(4, new ShamanAttackBoostSpellGoal());
this.goalSelector.addGoal(4, new ShamanDefenseBoostSpellGoal());
@@ -58,14 +63,16 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true)).setUnseenMemoryTicks(300));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
- if(Compat.GUARD_VILLAGERS.isLoaded()) this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Guard.class, 8.0F, 0.7D, 1.0D));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, Guard.class, true)).setUnseenMemoryTicks(300));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true)).setUnseenMemoryTicks(300));
}
private List getNearbyRaiders(double distance)
{
- return this.level.getNearbyEntities(
+ return this.level().getNearbyEntities(
Raider.class,
TargetingConditions.forNonCombat().range(distance),
this,
@@ -75,7 +82,7 @@ private List getNearbyRaiders(double distance)
private Raider getNearestRaider()
{
- return this.getCurrentRaid() == null ? null : this.level.getNearestEntity(
+ return this.getCurrentRaid() == null ? null : this.level().getNearestEntity(
Raider.class,
TargetingConditions.forNonCombat().ignoreLineOfSight(),
this,
@@ -193,7 +200,7 @@ private ShamanDebuffSpellGoal() {}
@Override
protected void castSpell()
{
- ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.level();
LivingEntity target = ShamanIllagerEntity.this.getTarget();
Random random = new Random();
@@ -231,7 +238,9 @@ protected void castSpell()
projectile.loadDebuff(new MobEffectInstance(effect, duration, amplifier));
});
- projectile.moveTo(new BlockPos(ShamanIllagerEntity.this.getEyePosition()).offset(0.0, ShamanIllagerEntity.this.getEyeHeight() + 1, 0.0), 0.0F, 0.0F);
+ ShamanIllagerEntity shaman = ShamanIllagerEntity.this;
+ Vec3i eye_pos = new Vec3i((int)shaman.getEyePosition().x, (int)shaman.getEyePosition().y, (int)shaman.getEyePosition().z);
+ projectile.moveTo(new BlockPos(eye_pos).offset(0, (int) ShamanIllagerEntity.this.getEyeHeight() + 1, 0), 0.0F, 0.0F);
level.addFreshEntity(projectile);
ShamanIllagerEntity.this.playSound(SoundEvents.SHULKER_SHOOT, 2.0F, 1.0F);
}
@@ -280,7 +289,7 @@ public boolean canUse()
@Override
protected void castSpell()
{
- ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.level();
AABB buffAABB = new AABB(ShamanIllagerEntity.this.blockPosition()).inflate(ShamanIllagerEntity.this.config().shaman.allyBuffRadius);
@@ -344,7 +353,7 @@ public boolean canUse()
@Override
protected void castSpell()
{
- ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.getLevel();
+ ServerLevel level = (ServerLevel)ShamanIllagerEntity.this.level();
AABB buffAABB = new AABB(ShamanIllagerEntity.this.blockPosition()).inflate(ShamanIllagerEntity.this.config().shaman.allyBuffRadius);
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/TankIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/TankIllagerEntity.java
index abdf1e5..4d724bf 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/TankIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/TankIllagerEntity.java
@@ -1,6 +1,9 @@
package com.calculusmaster.difficultraids.entity.entities.raider;
import com.calculusmaster.difficultraids.entity.entities.core.AbstractVindicatorVariant;
+import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.InteractionHand;
@@ -27,6 +30,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
+import tallestegg.guardvillagers.entities.Guard;
public class TankIllagerEntity extends AbstractVindicatorVariant
{
@@ -52,7 +56,10 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Guard.class, true));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D));
this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
diff --git a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/WarriorIllagerEntity.java b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/WarriorIllagerEntity.java
index 9b2014a..aeb7da5 100644
--- a/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/WarriorIllagerEntity.java
+++ b/src/main/java/com/calculusmaster/difficultraids/entity/entities/raider/WarriorIllagerEntity.java
@@ -4,6 +4,9 @@
import com.calculusmaster.difficultraids.entity.entities.core.AbstractVindicatorVariant;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
+import com.calculusmaster.difficultraids.util.Compat;
+import com.talhanation.recruits.entities.AbstractRecruitEntity;
+import com.talhanation.workers.entities.AbstractWorkerEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.InteractionHand;
@@ -25,6 +28,7 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
import org.jetbrains.annotations.Nullable;
+import tallestegg.guardvillagers.entities.Guard;
public class WarriorIllagerEntity extends AbstractVindicatorVariant
{
@@ -46,8 +50,10 @@ protected void registerGoals()
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers());
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true));
+ if(Compat.WORKERS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractWorkerEntity.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
-
+ if(Compat.GUARD_VILLAGERS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Guard.class, true));
+ if(Compat.RECRUITS.isLoaded()) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractRecruitEntity.class, true));
this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D));
this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F));
this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F));
diff --git a/src/main/java/com/calculusmaster/difficultraids/events/DREntityAttributeRegistry.java b/src/main/java/com/calculusmaster/difficultraids/events/DREntityAttributeRegistry.java
index 0de03dd..186094b 100644
--- a/src/main/java/com/calculusmaster/difficultraids/events/DREntityAttributeRegistry.java
+++ b/src/main/java/com/calculusmaster/difficultraids/events/DREntityAttributeRegistry.java
@@ -2,14 +2,21 @@
import com.calculusmaster.difficultraids.DifficultRaids;
import com.calculusmaster.difficultraids.entity.DifficultRaidsEntityTypes;
+import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
+import com.mojang.logging.LogUtils;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.monster.Monster;
+import net.minecraft.world.item.CreativeModeTabs;
+import net.minecraft.world.item.Item;
+import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.event.entity.EntityAttributeModificationEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.registries.RegistryObject;
+import org.slf4j.Logger;
import java.util.List;
import java.util.function.Supplier;
@@ -159,4 +166,8 @@ public static void onEntityAttributeModification(EntityAttributeModificationEven
event.add(type, Attributes.ARMOR_TOUGHNESS);
});
}
+
+
+
+
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/events/DRForgeBusEvents.java b/src/main/java/com/calculusmaster/difficultraids/events/DRForgeBusEvents.java
index 9981356..f23437d 100644
--- a/src/main/java/com/calculusmaster/difficultraids/events/DRForgeBusEvents.java
+++ b/src/main/java/com/calculusmaster/difficultraids/events/DRForgeBusEvents.java
@@ -13,8 +13,10 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEffects;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
+import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
import com.calculusmaster.difficultraids.util.Compat;
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
+import com.mojang.logging.LogUtils;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents;
@@ -30,7 +32,10 @@
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
import net.minecraft.world.entity.npc.AbstractVillager;
import net.minecraft.world.entity.raid.Raider;
+import net.minecraft.world.item.CreativeModeTabs;
+import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.PlayLevelSoundEvent;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.entity.EntityJoinLevelEvent;
@@ -44,6 +49,8 @@
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.registries.RegistryObject;
+import org.slf4j.Logger;
import tallestegg.guardvillagers.entities.Guard;
import java.util.Optional;
@@ -60,12 +67,13 @@ public static void onRegisterCommands(RegisterCommandsEvent event)
ToggleInsanityModeCommand.register(event.getDispatcher());
DumpRaidWavesCommand.register(event.getDispatcher());
FreezeRaidersCommand.register(event.getDispatcher());
+ DumpRaidersListCommand.register(event.getDispatcher());
}
@SubscribeEvent
public static void onSoundPlayedAtPosition(PlayLevelSoundEvent.AtPosition event)
{
- BlockPos pos = new BlockPos(event.getPosition().x(), event.getPosition().y(), event.getPosition().z());
+ BlockPos pos = new BlockPos((int)event.getPosition().x(), (int)event.getPosition().y(), (int)event.getPosition().z());
if(event.getSource().equals(SoundSource.WEATHER) && (event.getLevel() instanceof ServerLevel sl && sl.getRaidAt(pos) != null))
{
if(event.getSound().equals(SoundEvents.LIGHTNING_BOLT_THUNDER)) event.setNewVolume(event.getOriginalVolume() / 100);
@@ -180,7 +188,7 @@ public static void onEntityHitByLightning(EntityStruckByLightningEvent event)
@SubscribeEvent
public static void onLivingDeath(LivingDeathEvent event)
{
- if(event.getEntity() instanceof Raider raider && raider.getLevel() instanceof ServerLevel serverLevel)
+ if(event.getEntity() instanceof Raider raider && raider.level() instanceof ServerLevel serverLevel)
{
Optional.ofNullable(serverLevel.getNearestEntity(
NecromancerIllagerEntity.class,
@@ -205,10 +213,15 @@ public static void onMobGriefing(EntityMobGriefingEvent event)
@SubscribeEvent
public static void onLivingHurt(LivingHurtEvent event)
{
- if(event.getSource().equals(DamageSource.WITHER)
+ if (event.getSource().getEntity() == null){
+ return;
+ }
+ if(event.getSource().equals(event.getSource().getEntity().damageSources().wither())
&& event.getSource().getEntity() instanceof AshenmancerIllagerEntity ashenmancer
&& ashenmancer.isInDifficultRaid()
)
event.setAmount(ashenmancer.config().ashenmancer.witherSkullWitherTickDamage);
}
+
+
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/items/GMArmorItem.java b/src/main/java/com/calculusmaster/difficultraids/items/GMArmorItem.java
index b9f54ff..7b05c63 100644
--- a/src/main/java/com/calculusmaster/difficultraids/items/GMArmorItem.java
+++ b/src/main/java/com/calculusmaster/difficultraids/items/GMArmorItem.java
@@ -13,15 +13,21 @@
public class GMArmorItem extends ArmorItem
{
- private static final Properties DEFAULT_PROPERTIES = new Item.Properties().stacksTo(1).tab(CreativeModeTab.TAB_COMBAT).rarity(Rarity.EPIC).fireResistant();
+ private static final Properties DEFAULT_PROPERTIES = new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant();
- public GMArmorItem(EquipmentSlot pSlot)
+ public GMArmorItem(ArmorItem.Type pSlot)
{
+// ArmorItem.Type[] types = {Type.HELMET, Type.CHESTPLATE, Type.LEGGINGS, Type.BOOTS};
+// for(ArmorItem.Type type: types) {
+// if (pSlot.equals(type.getSlot())) {
+// super(ArmorMaterials.NETHERITE, type, DEFAULT_PROPERTIES);
+// }
+// }
super(ArmorMaterials.NETHERITE, pSlot, DEFAULT_PROPERTIES);
}
@Override
- public void onArmorTick(ItemStack stack, Level level, Player player)
+ public void onInventoryTick(ItemStack stack, Level level, Player player, int slotIndex, int selectedIndex)
{
if(this.hasFullSet(player))
{
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/LivingEntityMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/LivingEntityMixin.java
index bd44dbc..6b9dbf2 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/LivingEntityMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/LivingEntityMixin.java
@@ -2,7 +2,10 @@
import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
+import net.minecraft.tags.DamageTypeTags;
import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
@@ -57,7 +60,7 @@ private void difficultraids_checkTotemImmunities(MobEffectInstance pEffectInstan
@Inject(at = @At("HEAD"), method = "checkTotemDeathProtection", cancellable = true)
private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackInfoReturnable callback)
{
- if(damageSource.isBypassInvul()) callback.setReturnValue(false);
+ if(damageSource.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) callback.setReturnValue(false);
final Item totemInvisibility = DifficultRaidsItems.TOTEM_OF_INVISIBILITY.get();
final Item totemLightning = DifficultRaidsItems.TOTEM_OF_LIGHTNING.get();
@@ -102,7 +105,7 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
{
this.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 600, 1));
- this.level
+ this.level()
.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(5.0D))
.stream()
.filter(Monster::isAlive)
@@ -112,23 +115,23 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
//Totem of Lightning
if(totem.is(totemLightning))
{
- this.level
+ this.level()
.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(6.0D))
.stream()
.filter(Monster::isAlive)
.map(Entity::blockPosition)
.forEach(pos -> {
- LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(this.level);
+ LightningBolt bolt = EntityType.LIGHTNING_BOLT.create(this.level());
bolt.setDamage(this.random.nextFloat() * 5.0F);
bolt.moveTo(pos, 0.0F, 0.0F);
- this.level.addFreshEntity(bolt);
+ this.level().addFreshEntity(bolt);
});
}
//Totem of Poison
if(totem.is(totemPoison))
{
- this.level
+ this.level()
.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(5.0D))
.stream()
.filter(Monster::isAlive)
@@ -153,23 +156,23 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
if(totem.is(totemDestiny))
{
if(damageSource.getEntity() instanceof LivingEntity attacker)
- attacker.hurt(DamageSource.MAGIC, attacker.getHealth() + 1.0F);
+ attacker.hurt(attacker.damageSources().magic(), attacker.getHealth() + 1.0F);
- this.level.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(10.0D))
+ this.level().getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(10.0D))
.stream()
.filter(Monster::isAlive)
.forEach(m -> {
double distance = Math.pow(m.blockPosition().distSqr(this.blockPosition()), 0.5);
float damage = (float)(Math.max(0.1F, 6.0F - (distance / 2.0F)));
- m.hurt(DamageSource.MAGIC, damage);
+ m.hurt(m.damageSources().magic(), damage);
});
}
//Totem of Levitation
if(totem.is(totemLevitation))
{
- this.level
+ this.level()
.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(6.0D))
.stream()
.filter(Monster::isAlive)
@@ -187,8 +190,8 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
BlockPos offset1 = this.blockPosition().offset(this.random.nextInt(2, 6), 2, this.random.nextInt(2, 6));
BlockPos offset2 = this.blockPosition().offset(this.random.nextInt(2, 6) * -1, 2, this.random.nextInt(2, 6) * -1);
- IronGolem golem1 = EntityType.IRON_GOLEM.create(this.level);
- IronGolem golem2 = EntityType.IRON_GOLEM.create(this.level);
+ IronGolem golem1 = EntityType.IRON_GOLEM.create(this.level());
+ IronGolem golem2 = EntityType.IRON_GOLEM.create(this.level());
golem1.moveTo(offset1, 0.0F, 0.0F);
golem2.moveTo(offset2, 0.0F, 0.0F);
@@ -201,14 +204,14 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
golem2.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(golem2, attacker.getClass(), true));
}
- this.level.addFreshEntity(golem1);
- this.level.addFreshEntity(golem2);
+ this.level().addFreshEntity(golem1);
+ this.level().addFreshEntity(golem2);
}
//Totem of Freezing
if(totem.is(totemFreezing))
{
- this.level
+ this.level()
.getEntitiesOfClass(Monster.class, new AABB(this.blockPosition()).inflate(6.0D))
.stream()
.filter(Monster::isAlive)
@@ -222,12 +225,13 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
//Totem of Teleportation
if(totem.is(totemTeleportation))
{
- BlockPos current = new BlockPos(this.getEyePosition());
+ Vec3i eye_pos = new Vec3i((int) this.getEyePosition().x, (int) this.getEyePosition().y, (int) this.getEyePosition().z);
+ BlockPos current = new BlockPos(eye_pos);
BlockPos target;
int tries = 0;
int maxTries = 10;
- Predicate isInvalidPos = pos -> this.level.getBlockState(pos).isAir() || this.level.getBlockState(pos.offset(0, this.getEyeHeight(), 0)).isAir();
+ Predicate isInvalidPos = pos -> this.level().getBlockState(pos).isAir() || this.level().getBlockState(pos.offset(0, (int)this.getEyeHeight(), 0)).isAir();
do
{
int x = (this.random.nextInt(2) == 0 ? 1 : -1) * this.random.nextInt(5, 16);
@@ -250,7 +254,8 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
//Totem of Fireballs
if(totem.is(totemFireball))
{
- BlockPos source = new BlockPos(this.getEyePosition());
+ Vec3i eye_pos = new Vec3i((int) this.getEyePosition().x, (int) this.getEyePosition().y, (int) this.getEyePosition().z);
+ BlockPos source = new BlockPos(eye_pos);
Stream.of(
new Vec3(1, 0.33, 0),
new Vec3(1, 0.33, 1),
@@ -261,16 +266,16 @@ private void difficultraids_useCustomTotem(DamageSource damageSource, CallbackIn
new Vec3(-1, 0.33, 1),
new Vec3(1, 0.33, -1)
).forEach(v -> {
- Fireball fireball = EntityType.FIREBALL.create(this.level);
+ Fireball fireball = EntityType.FIREBALL.create(this.level());
fireball.moveTo(source, 0.0F, 0.0F);
fireball.shoot(v.x, v.y, v.z, this.random.nextFloat() * 6 + 2.0F, 2.0F);
- this.level.addFreshEntity(fireball);
+ this.level().addFreshEntity(fireball);
});
this.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, 100, 1));
}
- this.level.broadcastEntityEvent(this, (byte)35);
+ this.level().broadcastEntityEvent(this, (byte)35);
callback.setReturnValue(true);
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/RaidMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/RaidMixin.java
index 0930749..7183a79 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/RaidMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/RaidMixin.java
@@ -29,6 +29,8 @@
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.storage.loot.LootContext;
+import net.minecraft.world.level.storage.loot.LootDataResolver;
+import net.minecraft.world.level.storage.loot.LootParams;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
@@ -56,6 +58,7 @@ public abstract class RaidMixin
{
private int players;
private AABB validRaidArea;
+ private int totalSpawned;
@Mutable @Shadow @Final private int numGroups;
@Shadow private int groupsSpawned;
@@ -121,7 +124,7 @@ private void difficultraids_addDifficultyToEventBar(CallbackInfo callback)
MutableComponent current = Component.literal(this.raidEvent.getName().getString());
MutableComponent additions = Component.empty();
- if(DifficultRaidsConfig.INSANITY_MODE.get()) additions.append(Component.literal("Insane ").withStyle(ChatFormatting.RED));
+ if(DifficultRaidsConfig.INSANITY_MODE.get() && DifficultRaidsConfig.DISPLAY_INSANITY_MODE.get()) additions.append(Component.literal("Insane ").withStyle(ChatFormatting.RED));
additions.append(raidDifficulty.getFormattedName() + " ");
MutableComponent wave = DifficultRaidsConfig.SHOW_WAVE_INFORMATION.get() ? Component.literal(" (Wave " + this.getGroupsSpawned() + " of " + this.numGroups + ")").withStyle(ChatFormatting.GRAY) : Component.empty();
@@ -176,8 +179,26 @@ private void difficultraids_getDefaultNumSpawns(Raid.RaiderType raiderType, int
//Disable GuardVillagers Illusioner spawns
if(raiderType.toString().equalsIgnoreCase("thebluemengroup"))
callbackInfoReturnable.setReturnValue(0);
- //Disable the regular Dungeons Mobs Illusioner spawns (replaced by a custom re-registration of the RaiderType)
- else if(raiderType.toString().equals("illusioner"))
+ //Disable the regular Dungeons Mobs Illusioner spawns (replaced by a custom re-registration of the RaiderType) (and Mo' Features and Friends&Foes)
+ else if(raiderType.toString().equals("illusioner") || raiderType.toString().equals("ILLUSIONER"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "necromancer" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("necromancer") || raiderType.toString().equals("NECROMANCER"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "iceologer" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("iceologer") || raiderType.toString().equals("ICEOLOGER"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "cowboy" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("cowboy") || raiderType.toString().equals("COWBOY"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "executionner" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("executioner") || raiderType.toString().equals("EXECUTIONER"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "grindicator" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("grindicator") || raiderType.toString().equals("GRINDICATOR"))
+ callbackInfoReturnable.setReturnValue(0);
+ //Disable "mage" spawns (because of conflicts between mods)
+ else if(raiderType.toString().equals("mage") || raiderType.toString().equals("MAGE"))
callbackInfoReturnable.setReturnValue(0);
//Check if the Raider Type is enabled
@@ -234,7 +255,7 @@ public void difficultraids_grantRewards(CallbackInfo callbackInfo)
{
LOGGER.info("DifficultRaids: Generating " + raidDifficulty.getFormattedName() + " Raid Loot!");
- LootTable valuablesLT = this.level.getServer().getLootTables().get(switch(raidDifficulty)
+ LootTable valuablesLT = this.level.getServer().getLootData().getLootTable(switch(raidDifficulty)
{
case DEFAULT, HERO -> RaidLoot.HERO_VALUABLES;
case LEGEND -> RaidLoot.LEGEND_VALUABLES;
@@ -242,7 +263,7 @@ public void difficultraids_grantRewards(CallbackInfo callbackInfo)
case GRANDMASTER -> RaidLoot.GRANDMASTER_VALUABLES;
});
- LootTable magicLT = this.level.getServer().getLootTables().get(switch(raidDifficulty)
+ LootTable magicLT = this.level.getServer().getLootData().getLootTable(switch(raidDifficulty)
{
case DEFAULT, HERO -> RaidLoot.HERO_MAGIC;
case LEGEND -> RaidLoot.LEGEND_MAGIC;
@@ -284,10 +305,12 @@ public void difficultraids_grantRewards(CallbackInfo callbackInfo)
//Find suitable spawn location
BlockPos pos = new BlockPos(
randomizer.apply(this.center.getX()),
- this.center.getY() + 5,
+ this.center.getY(),
randomizer.apply(this.center.getZ())
);
- while(!this.level.getBlockState(pos).isAir()) pos = pos.offset(randomizer.apply(pos.getX()), 1, randomizer.apply(pos.getZ()));
+ while(!this.level.getBlockState(pos).isAir()) pos = pos.offset(0, 1, 0);
+
+
//Spawn chest
this.level.setBlock(pos, Blocks.CHEST.defaultBlockState(), 2);
@@ -296,12 +319,15 @@ public void difficultraids_grantRewards(CallbackInfo callbackInfo)
BlockEntity blockEntity = this.level.getExistingBlockEntity(pos);
if(blockEntity instanceof Container container)
{
- LootContext context = new LootContext.Builder(this.level)
- .withLuck(this.level.getDifficulty() == Difficulty.HARD ? 1.0F : 0.0F)
- .withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(pos))
+
+ LootParams params = new LootParams.Builder(this.level).withLuck(this.level.getDifficulty() == Difficulty.HARD ? 1.0F : 0.0F)
+ .withParameter(LootContextParams.ORIGIN, pos.getCenter())
.create(LootContextParamSets.CHEST);
+// .hasParam(LootContextParams.ORIGIN, Vec3.atCenterOf(pos)))
+
+// .create(table.getLootTableId());
- table.fill(container, context);
+ table.fill(container, params, random.nextLong());
container.setChanged();
}
else LOGGER.warn("Could not find container for " + type + " Raid Loot at {" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + "}!");
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/HunterIllagerMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/HunterIllagerMixin.java
index 13c27a4..65695d1 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/HunterIllagerMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/HunterIllagerMixin.java
@@ -1,7 +1,7 @@
package com.calculusmaster.difficultraids.mixins.compat;
-import baguchan.hunterillager.entity.HunterIllagerEntity;
-import baguchan.hunterillager.init.HunterItems;
+import baguchan.hunters_return.entity.Hunter;
+import baguchan.hunters_return.init.HunterItems;
import com.calculusmaster.difficultraids.config.RaidDifficultyConfig;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.util.Compat;
@@ -22,7 +22,7 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-@Mixin(HunterIllagerEntity.class)
+@Mixin(Hunter.class)
public abstract class HunterIllagerMixin extends AbstractIllager
{
@Shadow @Final private SimpleContainer inventory;
@@ -38,7 +38,7 @@ private void difficultraids_applyRaidBuffs(int p_213660_1_, boolean p_213660_2_,
boolean inRaid = this.getCurrentRaid() != null;
RaidDifficulty raidDifficulty = inRaid ? RaidDifficulty.get(this.getCurrentRaid().getBadOmenLevel()) : null;
- if(inRaid && !raidDifficulty.isDefault() && Compat.HUNTER_ILLAGER.isLoaded())
+ if(inRaid && !raidDifficulty.isDefault() && Compat.HUNTERS_RETURN.isLoaded())
{
RaidDifficultyConfig cfg = raidDifficulty.config();
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/MountaineerMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/MountaineerMixin.java
index 1cda9cd..fead338 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/MountaineerMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/MountaineerMixin.java
@@ -3,7 +3,7 @@
import com.calculusmaster.difficultraids.config.RaidDifficultyConfig;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
-import com.infamous.dungeons_mobs.entities.illagers.MountaineerEntity;
+import net.firefoxsalesman.dungeonsmobs.entity.illagers.MountaineerEntity;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot;
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RedstoneGolemMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RedstoneGolemMixin.java
index a5c34f1..c1b7e98 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RedstoneGolemMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RedstoneGolemMixin.java
@@ -1,7 +1,7 @@
package com.calculusmaster.difficultraids.mixins.compat;
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
-import com.infamous.dungeons_mobs.entities.redstone.RedstoneGolemEntity;
+import net.firefoxsalesman.dungeonsmobs.entity.redstone.RedstoneGolemEntity;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerBossEvent;
import net.minecraft.server.level.ServerPlayer;
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RoyalGuardMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RoyalGuardMixin.java
index 921fc76..1cae733 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RoyalGuardMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/RoyalGuardMixin.java
@@ -3,7 +3,7 @@
import com.calculusmaster.difficultraids.config.RaidDifficultyConfig;
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
-import com.infamous.dungeons_mobs.entities.illagers.RoyalGuardEntity;
+import net.firefoxsalesman.dungeonsmobs.entity.illagers.RoyalGuardEntity;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot;
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/VindicatorWithShieldMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/VindicatorWithShieldMixin.java
index 5a1da7c..a6a75da 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/compat/VindicatorWithShieldMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/compat/VindicatorWithShieldMixin.java
@@ -16,6 +16,7 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
@Mixin(VindicatorWithShield.class)
public abstract class VindicatorWithShieldMixin extends AbstractIllager
{
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/raider/AbstractIllagerMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/raider/AbstractIllagerMixin.java
index d26ae32..b0e5903 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/raider/AbstractIllagerMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/raider/AbstractIllagerMixin.java
@@ -140,7 +140,7 @@ else if(basicMagic)
}
//General Easy/Hard Modifiers
- Difficulty difficulty = this.level.getDifficulty();
+ Difficulty difficulty = this.level().getDifficulty();
if(difficulty.equals(Difficulty.EASY) || difficulty.equals(Difficulty.HARD))
armor.addPermanentModifier(new AttributeModifier(TAG_RAIDER_DIFFICULTY_ARMOR_MODIFIER, difficulty.equals(Difficulty.EASY) ? 0.9 : 1.1, AttributeModifier.Operation.MULTIPLY_TOTAL));
diff --git a/src/main/java/com/calculusmaster/difficultraids/mixins/raider/EvokerFangsMixin.java b/src/main/java/com/calculusmaster/difficultraids/mixins/raider/EvokerFangsMixin.java
index 39fdbda..0124feb 100644
--- a/src/main/java/com/calculusmaster/difficultraids/mixins/raider/EvokerFangsMixin.java
+++ b/src/main/java/com/calculusmaster/difficultraids/mixins/raider/EvokerFangsMixin.java
@@ -39,7 +39,7 @@ private void difficultRaids_dealDamageTo(LivingEntity pTarget, CallbackInfo call
float damage = rd.config().evoker.evokerFangDamage;
- pTarget.hurt(DamageSource.indirectMagic(this, owner), damage);
+ pTarget.hurt(pTarget.damageSources().indirectMagic(this, owner), damage);
callback.cancel();
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/raids/RaidEnemyRegistry.java b/src/main/java/com/calculusmaster/difficultraids/raids/RaidEnemyRegistry.java
index 78f6682..984e18f 100644
--- a/src/main/java/com/calculusmaster/difficultraids/raids/RaidEnemyRegistry.java
+++ b/src/main/java/com/calculusmaster/difficultraids/raids/RaidEnemyRegistry.java
@@ -1,16 +1,32 @@
package com.calculusmaster.difficultraids.raids;
+import blusunrize.immersiveengineering.common.register.IEEntityTypes;
+import com.Polarice3.Goety.common.entities.ModEntityType;
+import com.belgieyt.morefeatures.core.registry.MFEntity;
+import com.bilibili.player_ix.noixmod_api.register.NoixmodAPIEntities;
import com.calculusmaster.difficultraids.DifficultRaids;
import com.calculusmaster.difficultraids.data.raiderentries.RaiderEntriesHolder;
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
import com.calculusmaster.difficultraids.util.Compat;
-import com.infamous.dungeons_mobs.mod.ModEntityTypes;
+//import io.redspace.ironsspellbooks.registries.EntityRegistry;
+import com.faboslav.friendsandfoes.common.init.FriendsAndFoesEntityTypes;
+import com.francisplayz446.expansion.init.ExpansionModEntities;
+import com.jerotes.jerotesvillage.init.JerotesVillageEntityType;
+import com.legacy.conjurer_illager.registry.IllagerEntityTypes;
import com.mojang.logging.LogUtils;
+import com.pikachu.mod.illager_more.init.ModEntityTypes;
+import com.possible_triangle.brazier.Content;
+import com.sh1nylabs.bonesupdate.init.BonesEntities;
import com.teamabnormals.savage_and_ravage.core.registry.SREntityTypes;
+import comfrancisplayz446.necromancer.init.NecromancerModEntities;
+import multiverse.registration.EntityRegistry;
+import net.firefoxsalesman.dungeonsmobs.entity.ModEntities;
+import net.mcreator.expadosillagerss.init.ExpadosIllagerssModEntities;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.raid.Raid;
import net.minecraft.world.entity.raid.Raider;
+import net.mobz.init.MobZEntities;
import org.slf4j.Logger;
import java.util.*;
@@ -32,7 +48,7 @@ public class RaidEnemyRegistry
public static final String RAVAGER = "RAVAGER";
//Difficult Raids
- public static final String ILLUSIONER = "ILLUSIONER";
+ public static final String ILLUSIONER = "ILLUSIONER_MC";
public static final String WARRIOR = "WARRIOR_ILLAGER";
public static final String DART = "DART_ILLAGER";
public static final String CONDUCTOR = "ELECTRO_ILLAGER";
@@ -48,8 +64,8 @@ public class RaidEnemyRegistry
public static final String MODUR = "MODUR_ELITE";
public static final String VOLDON = "VOLDON_ELITE";
- //Hunter Illager
- public static final String HUNTER = "hunterillager";
+ //HuntersReturn
+ public static final String HUNTER = "hunters_return";
//Enchant With Mob
public static final String ENCHANTER = "enchanter";
@@ -65,6 +81,7 @@ public class RaidEnemyRegistry
public static final String PRESERVER = "entity.illageandspillage.preserver";
public static final String ABSORBER = "entity.illageandspillage.absorber";
public static final String CROCOFANG = "entity.illageandspillage.crocofang";
+ public static final String ENGINEER = "entity.illageandspillage.engineer";
public static final String MAGISPELLER = "entity.illageandspillage.magispeller";
public static final String SPIRITCALLER = "entity.illageandspillage.spiritcaller";
public static final String FREAKAGER = "entity.illageandspillage.freakager";
@@ -72,7 +89,7 @@ public class RaidEnemyRegistry
//Savage and Ravage
public static final String GRIEFER = "GRIEFER";
- public static final String EXECUTIONER = "EXECUTIONER";
+ public static final String EXECUTIONER = "SR_EXECUTIONER";
public static final String TRICKSTER = "TRICKSTER";
public static final String ICEOLOGER_SR = "SR_ICEOLOGER";
@@ -81,8 +98,8 @@ public class RaidEnemyRegistry
public static final String ROYAL_GUARD = "royal_guard";
public static final String GEOMANCER = "geomancer";
public static final String ILLUSIONER_DM = "DM_ILLUSIONER";
- public static final String MAGE = "mage";
- public static final String ICEOLOGER_DM = "iceologer";
+ public static final String MAGE = "dungeon_mage";
+ public static final String ICEOLOGER_DM = "DM_ICEOLOGER";
public static final String WINDCALLER = "windcaller";
public static final String SQUALL_GOLEM = "squall_golem";
public static final String REDSTONE_GOLEM = "redstone_golem";
@@ -91,6 +108,9 @@ public class RaidEnemyRegistry
public static final String BLADE_KNIGHT = "blade_knight";
public static final String BEAST_TAMER = "illager_beast_tamer";
public static final String SCAVENGER = "illager_scavenger";
+ public static final String SOUL_SAGE = "soul_sage";
+ public static final String ACOLYTE = "acolyte";
+ public static final String BULKWARK = "bulkwark";
//Leo's Illagers
public static final String LIGHTNINGCALLER = "entity.leosillagers.lightning_caller";
@@ -103,6 +123,364 @@ public class RaidEnemyRegistry
public static final String SUMMONER = "entity.leosillagers.summoner";
public static final String TROUBLEMAKER = "entity.leosillagers.troublemaker";
+ //The Conjurer
+ public static final String CONJURER = "conjurer";
+
+ //Necromancer Mod Port
+ public static final String NECROMANCER_MOD = "necromancer_mod";
+
+ //Werden's Illagers +
+ public static final String SINISTER = "sinister";
+ public static final String SHADOMANCER = "shadomancer";
+ public static final String RHINAGER = "rhino";
+
+ //Iron's Spells and Spellbooks
+ public static final String ARCHEVOKER = "archevoker";
+
+ //Gambler Illager
+ public static final String GAMBLER = "gambler";
+
+ //Guard Illagers
+ public static final String GUARD_ILLAGER = "guard_illager";
+
+ //Illager Additions
+ public static final String ROYAL_GUARD_SPEAR = "royal_longaxe_guard";
+ public static final String SPEARMAN = "zaaaaguard";
+ public static final String SAMURAI = "samurai";
+ public static final String BEAMLOGER = "blastioner";
+ public static final String COWBOY = "cowboy_IA";
+ public static final String SHOGUN = "shogun";
+
+ //MobZ
+ public static final String SPIDER_MAGE = "spider_mage";
+ public static final String ZOMBIE_MAGE = "zombie_mage";
+ public static final String PILLAGER_BOSS = "pillager_boss";
+ public static final String ILLUSIONER_MOBZ = "illusioner_mobz";
+ public static final String BABY_RAVAGER = "baby_ravager";
+
+ //Illager Invasion
+ public static final String PROVOKER = "ILLAGERINVASION_PROVOKER";
+ public static final String INQUISITOR = "ILLAGERINVASION_INQUISITOR";
+ public static final String MARAUDER = "ILLAGERINVASION_MARAUDER";
+ public static final String BASHER = "ILLAGERINVASION_BASHER";
+ public static final String FIRECALLER = "ILLAGERINVASION_FIRECALLER";
+ public static final String NECROMANCER_INV = "ILLAGERINVASION_NECROMANCER";
+ public static final String ALCHEMIST = "ILLAGERINVASION_ALCHEMIST";
+ public static final String SORCERER = "ILLAGERINVASION_SORCERER";
+ public static final String ARCHIVIST = "ILLAGERINVASION_ARCHIVIST";
+ public static final String INVOKER = "ILLAGERINVASION_INVOKER";
+
+ //Goety
+ public static final String WARLOCK = "GOETY_WARLOCK";
+ public static final String MAVERICK = "GOETY_MAVERICK";
+ public static final String HERETIC = "GOETY_HERETIC";
+ public static final String PIKER = "GOETY_PIKER";
+ public static final String RIPPER = "GOETY_RIPPER";
+ public static final String CRUSHER = "GOETY_CRUSHER";
+ public static final String STORM_CASTER = "GOETY_STORM_CASTER";
+ public static final String CRYOLOGER = "GOETY_CRYOLOGER";
+ public static final String PREACHER = "GOETY_PREACHER";
+ public static final String CONQUILLAGER = "GOETY_CONQUILLAGER";
+ public static final String INQUILLAGER = "GOETY_INQUILLAGER";
+ public static final String ENVIOKER = "GOETY_ENVIOKER";
+ public static final String SORCERER_GOETY = "GOETY_SORCERER";
+ public static final String HOSTILE_RED_GOLEM = "GOETY_HOSTILE_RED_GOLEM";
+ public static final String HOSTILE_RED_MONSTER = "GOETY_HOSTILE_RED_MONSTER";
+ public static final String MINISTER = "GOETY_MINISTER";
+ public static final String TRAMPLER = "GOETY_TRAMPLER";
+ public static final String VIZIER = "GOETY_VIZIER";
+ public static final String APOSTLE = "GOETY_APOSTLE";
+
+ //The Summoner Illager
+ public static final String THE_SUMMONER = "summoner";
+ public static final String THE_SUMMONER_BOSS = "summoner_boss";
+
+ //Bones Update
+ public static final String NECROMANCER_BONES = "NECROMANCER_BONES";
+
+ //Musketeer Illager
+ public static final String MARKSMAN = "marksman";
+
+ //The Modifiger
+ public static final String MODIFIGER = "modifiger";
+
+ //Masquerader
+ public static final String MASQUERADER = "masquerader";
+
+ //Bagus Mob
+ public static final String TENGU = "tengu";
+ public static final String NINJAR = "ninjar";
+
+ //Raided
+ public static final String NECROMANCER_RAIDED = "raided:necromancer";
+ public static final String ELECTROMANCER_RAIDED = "raided:electromancer";
+ public static final String SAVAGER = "raided:savager";
+ public static final String INCINERATOR = "raided:incinerator";
+ public static final String INQUISITOR_RAIDED = "raided:inquisitor";
+
+ //More Illagers
+ public static final String GUNILLAGER = "gunillager";
+ public static final String ILLIGEVE = "illgeve";
+ public static final String SURPRISER = "surpriser";
+ public static final String ROCKETILLAGER = "rocketillager";
+ public static final String CREEPILLAGER = "creepillager";
+ public static final String MONSTERILLAGER = "monsterillager";
+
+ //Slash Illager
+ public static final String BLADE_MASTER = "blade_master";
+
+ //Friends & Foes
+ public static final String ICEOLOGER_FF = "ICEOLOGER_FF";
+
+ //Mo' Features
+ public static final String PILLAGER_BRUTE = "pillager_brute";
+
+ //Brazier
+ public static final String CRAZED = "crazed";
+
+ //Crimson Steves Mobs
+ public static final String T_RABUS = "t_rabus_boss";
+ public static final String CYBORG_VINDICATOR = "modid:cyborg_vindicator";
+ public static final String CRUDE_RED_GOLEM = "crude_redstone_golem";
+ public static final String CRUDE_RED_MONSTROSITY = "crude_redstone_monstrosity";
+ public static final String RED_MONSTROSITY_CSM = "original_redstone_monstrosity";
+ public static final String MINI_CRUDE_RED_GOLEM = "mini_crude_redstone_golem";
+ public static final String PHANTOM_TAMER = "phantom_tamer";
+
+ //Ravage & Cabbage
+ public static final String CABBAGER = "cabbager";
+
+ //All Bark All Bite
+ public static final String HOUNDMASTER = "houndmaster";
+
+ //Karate Illager
+ public static final String KARATE = "karate_illager";
+
+ //Illager Brute
+ public static final String ILLAGER_BRUTE = "illagerbrute";
+
+ //Sorcerer Illager
+ public static final String SORCERER_ILLAGER = "sorcererillager";
+
+ //Wandering Illager
+ public static final String WANDERING_ILLAGER = "wanderingillager";
+
+ //Expandos Illagers
+ public static final String BRASHER = "brasher";
+ public static final String BLUNTOLOGER = "bluntologer";
+ public static final String CLEAVAGER = "cleavager";
+ public static final String SPEAROLOGER = "spearologer";
+ public static final String JUGGERNAUT = "juggernaut";
+ public static final String BLUDGEONER = "bludgeoner";
+ public static final String GRINDICATOR = "expado_grindicator";
+
+ //Francis Illagers
+ public static final String PATROLOGER = "patrologer";
+ public static final String CHEFAGER = "chefager";
+ public static final String GRINDICATOR_FRANCIS = "francis_grindicator";
+ public static final String MAGE_FRANCIS = "francis_mage";
+ public static final String CHEFOLOGER = "chefologer";
+ public static final String PYROBANDIT = "pyrobandit";
+ public static final String FIREOLOGER = "fireologer";
+ public static final String VRINCITADOR = "vrincitador";
+ public static final String SANDOLOGER = "sandologer";
+ public static final String GRUMMICATOR = "grummicator";
+
+ //Earth Mobs
+ public static final String VILER_WITCH = "viler_witch";
+
+ //Illager World War
+ public static final String PILLAGER_CAR = "pillager_car";
+ public static final String PILLAGER_SOLDIER = "pillager_soldier_armed";
+ public static final String VINDICATOR_FLAMETHROWER = "pillager_soldier_with_flamethrower";
+ public static final String ASSAULT_PILLAGER = "assault_pillager_soldier";
+ public static final String PILLAGER_PLANE = "plane_avec_pillager_soldier";
+ public static final String PILLAGER_CANNON = "cannon_with_soldier_pillager";
+
+ //Colds: Wandering Traidor
+ public static final String WANDERING_TRAITOR = "wandering_traitor";
+
+ //Just Illagers
+ public static final String DRUSKI = "druski";
+ public static final String LACHER = "guard";
+ public static final String CRISKO = "crisko";
+ public static final String BLAKER = "blaker";
+ public static final String TOXICIST = "toxicist";
+ public static final String REVENANT = "reverant";
+ public static final String AMPI = "ampi";
+
+ //Illager Universe
+ public static final String UPGRADER = "upgrader";
+ public static final String UPGRADER_GOLD = "upgrader_gold";
+ public static final String UPGRADER_DIAMOND = "upgrader_diamond";
+ public static final String SHADOW_GOAT = "shadow_goat";
+ public static final String PRINZOLOGER = "prinzologer";
+ public static final String CALLOLOGER = "callologer";
+
+ //Pillager Boss
+ public static final String PILLAGER_BOSS_MOD = "pillagerboss";
+
+ //Virtuso's Grand Battle
+ public static final String VIRTUOSO_OF_VARIETY = "virtuoso_of_variety";
+
+ //Mischief Illagers
+ public static final String MISCHIEVER = "mischiever";
+ public static final String WITHERMANCER = "withermancer";
+ public static final String DOODLER = "doodler";
+ public static final String FANGCLAW = "fangclaw";
+ public static final String SPARKOLOGER = "sparkologer";
+ public static final String LIBRAVOKER = "libravoker";
+ public static final String BUBBLEOLOGER = "bubbleologer";
+ public static final String BASS_BLASTER = "bass_blaster";
+ public static final String IMPRECATOR = "imprecator";
+ public static final String MAGNETIZER = "magnetizer";
+ public static final String PHOTOGRAPHER = "photographer";
+ public static final String PARTYGER = "partyger";
+
+ //Pillagers Plus
+ public static final String SWORD_PILLAGER = "sword_pillager";
+ public static final String SPEAR_PILLAGER = "spear_pillager";
+ public static final String HOG_RIDER = "hog_rider";
+
+ //Immersive engineering
+ public static final String BULWARK = "bulwark";
+ public static final String FUSILIER = "fusilier";
+ public static final String COMMANDO = "commando";
+
+ //Kamilskis Additions
+ public static final String BALLOON_PILLAGER = "balloon_pillager";
+ public static final String SILVERFISH_WRANGLER = "silverfish_wrangler";
+
+ //Born in Chaos
+ public static final String MISSIONARY = "missionary_raider";
+
+ //Eidolon: Repraised
+ public static final String NECROMANCER_EIDOLON = "eidolon:necromancer";
+
+ //From the Shadows
+ public static final String CLERIC = "fromtheshadows";
+
+ //Rats
+ public static final String PIED_PIPER = "RATS_PIPER";
+
+ //Wild Delight
+ public static final String WILD_CHEF = "wild_chef";
+
+ //Jerotes Villages
+ public static final String TRUMPETER = "TRUMPETER";
+ public static final String BLASTER = "BLASTER";
+ public static final String DEFECTOR = "DEFECTOR";
+ public static final String MAPMAKER = "MAPMAKER";
+ public static final String BANNER_BEARER = "BANNER_BEARER";
+ public static final String EXECUTIONER_JEROTES = "EXECUTIONER_JEROTES";
+ public static final String EXPLORER = "EXPLORER";
+ public static final String SLAVERY_SUPERVISOR = "SLAVERY_SUPERVISOR";
+ public static final String CYCLONER = "CYCLONER";
+ public static final String JAVELIN_THROWER = "JAVELIN_THROWER";
+ public static final String ZOMBIE_KEEPER = "ZOMBIE_KEEPER";
+ public static final String WILD_FINDER = "WILD_FINDER";
+ public static final String SUBMARINER = "SUBMARINER";
+ public static final String SPIRVE = "SPIRVE";
+ public static final String TELEPORTER = "TELEPORTER";
+ public static final String LAMP_WIZARD = "LAMP_WIZARD";
+ public static final String BITTER_COLD_SORCERER = "BITTER_COLD_SORCERER";
+ public static final String FIRE_SPITTER = "FIRE_SPITTER";
+ public static final String PURPLE_SAND_WITCH = "PURPLE_SAND_WITCH";
+ public static final String WITCH_SCHOLAR = "WITCH_SCHOLAR";
+ public static final String AX_CRAZY = "AX_CRAZY";
+ public static final String PURPLE_SAND_HAG = "PURPLE_SAND_HAG";
+ public static final String NECROMANCY_WARLOCK = "NECROMANCY_WARLOCK";
+ public static final String GAVILER = "GAVILER";
+ public static final String BIG_WITCH = "BIG_WITCH";
+ public static final String FIREPOWER_POURER = "FIREPOWER_POURER";
+ public static final String OMINOUS_BANNER_PROJ = "OMINOUS_BANNER_PROJECTION";
+ public static final String COHORT_HAG = "HAG";
+
+ //No.IXAPI
+ public static final String BUGLER = "bugler";
+ public static final String ARMORER = "armorer";
+ public static final String BIOLOGIST = "APIBiologist";
+ public static final String HUNTER_API = "APIHunter";
+ public static final String MOURNER = "mourner";
+ public static final String ABOMINATION = "abomination";
+ public static final String DRUNKENNESS = "drunkenness";
+ public static final String FLAGMAN = "flagman";
+ public static final String INTRUDER = "IXAPI_intruder";
+ public static final String GRAVE_KEEPER = "grave_keeper";
+
+ //Roost2
+ public static final String ROOST_RIDER = "roost_rider";
+
+ //Snows Bosses Mechasent
+ public static final String MECHASENT = "mechasent";
+
+ //Ben's Sharks
+ public static final String THALASSOGER = "thalassoger";
+
+ //Illager Expansions
+ public static final String ELITE_VINDICATOR = "elite_vindicator";
+ public static final String RETALIATOR = "retaliator";
+ public static final String CRINDICATOR = "crindicator";
+ public static final String ELITE_PILLAGER = "elite_pillager";
+ public static final String RAVAGER_RIDER = "ravager_rider";
+
+ //Gloom Raiders
+ public static final String NUN = "nun";
+ public static final String SHYLOCK = "shylock";
+ public static final String NEW_DRAMATIST = "new_dramatist";
+ public static final String SPELL_SWORD = "spell_sword";
+ public static final String PSYCHC_W = "psychc_w";
+ public static final String PSYCHIC_M = "psychic_m";
+ public static final String HEADSMAN = "headsman";
+ public static final String NEW_BIG_NUN = "new_big_nun";
+ public static final String AWAKEN_EARL = "awaken_earl";
+ public static final String DRAMATIST = "dramatist";
+ public static final String EARL = "earl";
+ public static final String FLY_EARL = "fly_earl";
+
+ //OceanWorld
+ public static final String OCEANOLOGER = "OCEANOLOGER";
+
+ //Multiverse
+ public static final String CONQUEROR = "conqueror";
+ public static final String TRAVELER = "traveler";
+
+ //Poarchers/Porchers
+ public static final String BLOWER = "blower";
+ public static final String STABBER = "stabber";
+ public static final String HARVESTER = "harvester";
+
+ //MechaPillager
+ public static final String MECHA_PILLAGER = "mecha_pillager";
+ public static final String MECHA_VINDICATOR = "mecha_vindicator";
+
+ //The Resiliance of the Raiders
+ public static final String CRUSHER_RESILIANCE = "crusher";
+ public static final String CLASHAGER = "clashager";
+ public static final String SHIVERGER = "shiverger";
+
+ //The Resistance Of Illagers
+ public static final String GUARDIAN = "guardian";
+ public static final String ASSAILANT = "assailant";
+ public static final String HARRIER = "harrier";
+
+ //The Vindication Of Illagers
+ public static final String PREACHER_VINDICATION = "preacher";
+ public static final String BLACKMASTER = "blackmaster";
+ public static final String PLANNER = "planner";
+ public static final String VISOLOGER = "visologer";
+ public static final String INTRUDER_VINDICATION = "intruder";
+ public static final String VOLTOLOGER = "voltologer";
+ public static final String SMITHER = "smither";
+ public static final String RAGER = "rager";
+ public static final String PATROL_CAPTAIN = "patrol_captain";
+ public static final String RAIDER_RANDOMIZER = "raider_randomizer";
+
+ //Goety Awaken
+ public static final String VINDICATOR_CHEF = "vindicator_chef";
+ public static final String HOSTILE_ROYAL_GUARD = "hostile_royal_guard";
+
+
private static final int[] BLANK = new int[]{0, 0, 0, 0, 0, 0, 0, 0};
public static boolean isRaiderTypeEnabled(String raiderType)
@@ -134,8 +512,79 @@ public static void registerRaiders()
RaidEnemyRegistry.createRaiderType(VOLDON, VOLDON_ELITE.get());
//Compatibility
- if(Compat.SAVAGE_AND_RAVAGE.isLoaded()) RaidEnemyRegistry.createRaiderType(ICEOLOGER_SR, SREntityTypes.ICEOLOGER.get());
- if(Compat.DUNGEONS_MOBS.isLoaded()) RaidEnemyRegistry.createRaiderType(ILLUSIONER_DM, ModEntityTypes.ILLUSIONER.get());
+ if(Compat.SAVAGE_AND_RAVAGE.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(ICEOLOGER_SR, SREntityTypes.ICEOLOGER.get());
+ RaidEnemyRegistry.createRaiderType(EXECUTIONER, SREntityTypes.EXECUTIONER.get());
+ }
+ if(Compat.DUNGEONS_MOBS.isLoaded())
+ {
+ //RaidEnemyRegistry.createRaiderType(ILLUSIONER_DM, ModEntities.ILLUSIONER.get());
+ RaidEnemyRegistry.createRaiderType(ICEOLOGER_DM, ModEntities.ICEOLOGER.get());
+ RaidEnemyRegistry.createRaiderType(MAGE, ModEntities.MAGE.get());
+ }
+ if(Compat.CONJURER.isLoaded()) RaidEnemyRegistry.createRaiderType(CONJURER, IllagerEntityTypes.CONJURER);
+ //Archevoker and Gambler doesn't extend EntityType Raider, so we cant add them in raids
+ //if(Compat.IRONS_SPELLBOOKS.isLoaded()) RaidEnemyRegistry.createRaiderType(ARCHEVOKER, EntityRegistry.ARCHEVOKER.get());
+ //if(Compat.GAMBLER.isLoaded()) RaidEnemyRegistry.createRaiderType(GAMBLER, castToRaiderType(com.min01.gambler.entity.ModEntities.GAMBLER.get()));
+ if(Compat.MOBZ.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(SPIDER_MAGE, MobZEntities.SPIDER_MAGE.get());
+ RaidEnemyRegistry.createRaiderType(ZOMBIE_MAGE, MobZEntities.ZOMBIE_MAGE.get());
+ RaidEnemyRegistry.createRaiderType(PILLAGER_BOSS, MobZEntities.PILLAGER_BOSS.get());
+ RaidEnemyRegistry.createRaiderType(ILLUSIONER_MOBZ, MobZEntities.ILLUSIONER.get());
+ RaidEnemyRegistry.createRaiderType(BABY_RAVAGER, MobZEntities.BABY_RAVAGER.get());
+ }
+ if(Compat.NECROMANCER.isLoaded()) RaidEnemyRegistry.createRaiderType(NECROMANCER_MOD, NecromancerModEntities.NECROMANCER.get());
+ if(Compat.BONES_UPDATE.isLoaded()) RaidEnemyRegistry.createRaiderType(NECROMANCER_BONES, BonesEntities.NECROMANCER.get());
+ if(Compat.GOETY.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(TRAMPLER, ModEntityType.TRAMPLER.get());
+ RaidEnemyRegistry.createRaiderType(VIZIER, ModEntityType.VIZIER.get());
+ RaidEnemyRegistry.createRaiderType(APOSTLE, ModEntityType.APOSTLE.get());
+ }
+ if(Compat.FRIENDS_AND_FOES.isLoaded()) RaidEnemyRegistry.createRaiderType(ICEOLOGER_FF, FriendsAndFoesEntityTypes.ICEOLOGER.get());
+ if(Compat.BRAZIER.isLoaded()) RaidEnemyRegistry.createRaiderType(CRAZED, Content.CRAZED.get());
+ //I dont know why but Mo Features mobs are not registered in raids even if they do it, so we register it here
+ if(Compat.MO_FEATURES.isLoaded()) RaidEnemyRegistry.createRaiderType(PILLAGER_BRUTE, MFEntity.PILLAGER_BRUTE.get());
+ if(Compat.WANDERING_ILLAGER.isLoaded()) RaidEnemyRegistry.createRaiderType(WANDERING_ILLAGER, de.achtii.wandering_illager.entity.ModEntities.WANDERINGILLAGER.get());
+ if(Compat.ILLAGER_ADDITIONS.isLoaded()) RaidEnemyRegistry.createRaiderType(COWBOY, ModEntityTypes.COWBOY.get());
+ if(Compat.IMMERSIVE_ENGINEERING.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(COMMANDO, IEEntityTypes.COMMANDO.get());
+ RaidEnemyRegistry.createRaiderType(FUSILIER, IEEntityTypes.FUSILIER.get());
+ RaidEnemyRegistry.createRaiderType(BULWARK, IEEntityTypes.BULWARK.get());
+ }
+ if(Compat.JEROTES_VILLAGES.isLoaded()) RaidEnemyRegistry.createRaiderType(EXECUTIONER_JEROTES, JerotesVillageEntityType.EXECUTIONER.get());
+ if(Compat.NOXIAPI.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(ABOMINATION, NoixmodAPIEntities.ABOMINATION.get());
+ RaidEnemyRegistry.createRaiderType(DRUNKENNESS, NoixmodAPIEntities.DRUNKENNESS.get());
+ RaidEnemyRegistry.createRaiderType(FLAGMAN, NoixmodAPIEntities.FLAGMAN.get());
+ RaidEnemyRegistry.createRaiderType(INTRUDER, NoixmodAPIEntities.INTRUDER.get());
+ RaidEnemyRegistry.createRaiderType(GRAVE_KEEPER, NoixmodAPIEntities.GRAVE_KEEPER.get());
+ }
+ if(Compat.EXPADOS_ILLAGERS.isLoaded()) RaidEnemyRegistry.createRaiderType(GRINDICATOR, ExpadosIllagerssModEntities.GRINDICATOR.get());
+ if(Compat.FRANCIS_ILLAGERS.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(GRINDICATOR_FRANCIS, ExpansionModEntities.GRINDICATOR.get());
+ RaidEnemyRegistry.createRaiderType(MAGE_FRANCIS, ExpansionModEntities.MAGE.get());
+ }
+ if(Compat.ILLAGER_REVOLUTION.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(ACOLYTE, net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.ACOLYTE.get());
+ RaidEnemyRegistry.createRaiderType(BULWARK, net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.BULKWARK.get());
+ }
+ if(Compat.MULTIVERSE.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(CONQUEROR,EntityRegistry.CONQUEROR.get());
+ RaidEnemyRegistry.createRaiderType(TRAVELER,EntityRegistry.TRAVELER.get());
+ }
+ if(Compat.GOETY_AWAKEN.isLoaded())
+ {
+ RaidEnemyRegistry.createRaiderType(VINDICATOR_CHEF,com.k1sak1.goetyawaken.common.entities.ModEntityType.VINDICATOR_CHEF.get());
+ RaidEnemyRegistry.createRaiderType(HOSTILE_ROYAL_GUARD,com.k1sak1.goetyawaken.common.entities.ModEntityType.HOSTILE_ROYALGUARD.get());
+ }
}
public static void compileWaveData(final Map data)
@@ -183,182 +632,894 @@ private static void createRaiderType(String typeName, EntityType extends Raide
Raid.RaiderType.create(typeName, type, BLANK);
}
+
public static void registerWaves()
{
RaidEnemyRegistry.createDefaultWavesFor(RaidDifficulty.HERO)
- .withRaider(PILLAGER, 0, 4, 3, 3, 4, 5, 5, 3)
- .withRaider(VINDICATOR, 0, 2, 1, 1, 2, 3, 1, 2)
- .withRaider(WARRIOR, 0, 2, 1, 1, 2, 1, 3, 2)
- .withRaider(SKIRMISHER, 0, 1, 1, 2, 1, 1, 1, 3)
- .withRaider(TANK, 0, 0, 2, 0, 2, 0, 2, 1)
- .withRaider(LEGIONER, 0, 0, 0, 1, 2, 1, 3, 3)
- .withRaider(DART, 0, 0, 0, 1, 1, 1, 0, 0)
- .withRaider(HUNTER, 0, 1, 2, 2, 2, 2, 2, 3)
- .withRaider(ARCHER, 0, 2, 1, 2, 3, 3, 3, 5)
- .withRaider(WITCH, 0, 0, 1, 0, 3, 1, 0, 2)
- .withRaider(RAVAGER, 0, 0, 0, 1, 0, 2, 1, 2)
- .withRaider(ILLUSIONER, 0, 0, 1, 0, 0, 0, 1, 0)
- .withRaider(ASSASSIN, 0, 0, 0, 0, 0, 1, 0, 0)
- .withRaider(EVOKER, 0, 0, 0, 0, 1, 0, 2, 2)
- .withRaider(CONDUCTOR, 0, 0, 0, 0, 0, 0, 0, 1)
- .withRaider(NECROMANCER, 0, 0, 0, 0, 1, 0, 0, 0)
- .withRaider(FROSTMAGE, 0, 0, 0, 0, 0, 1, 0, 0)
- .withRaider(ASHENMANCER, 0, 0, 0, 0, 0, 0, 0, 1)
- .withRaider(SHAMAN, 0, 0, 0, 1, 0, 0, 1, 1)
- .withRaider(ENCHANTER, 0, 0, 1, 1, 1, 1, 0, 1)
- .withRaider(IGNITER, 0, 0, 1, 2, 2, 2, 2, 4)
- .withRaider(TWITTOLLAGER, 0, 0, 1, 1, 2, 0, 2, 2)
- .withRaider(PRESERVER, 0, 1, 0, 1, 2, 1, 3, 4)
- .withRaider(ABSORBER, 0, 0, 1, 0, 1, 0, 0, 2)
- .withRaider(CROCOFANG, 0, 0, 1, 1, 2, 3, 1, 3)
- .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(BOSS_RANDOMIZER, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(GRIEFER, 0, 1, 1, 2, 2, 2, 3, 3)
- .withRaider(EXECUTIONER, 0, 1, 1, 1, 0, 1, 2, 2)
- .withRaider(TRICKSTER, 0, 0, 1, 0, 1, 1, 1, 2)
- .withRaider(ICEOLOGER_SR, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(MOUNTAINEER, 0, 1, 3, 1, 1, 4, 2, 5)
- .withRaider(ROYAL_GUARD, 0, 1, 1, 1, 1, 2, 1, 2)
- .withRaider(GEOMANCER, 0, 0, 1, 1, 0, 2, 1, 2)
- .withRaider(ILLUSIONER_DM, 0, 0, 1, 0, 1, 1, 1, 2)
- .withRaider(MAGE, 0, 0, 1, 1, 0, 2, 0, 2)
- .withRaider(ICEOLOGER_DM, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(WINDCALLER, 0, 0, 1, 1, 0, 2, 1, 2)
- .withRaider(SQUALL_GOLEM, 0, 0, 1, 1, 1, 1, 0, 2)
- .withRaider(REDSTONE_GOLEM, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(BLADE_KNIGHT, 0, 0, 1, 0, 1, 0, 0, 2)
- .withRaider(BEAST_TAMER, 0, 0, 1, 0, 1, 0, 0, 1)
- .withRaider(SCAVENGER, 0, 1, 1, 1, 0, 1, 2, 2)
- .withRaider(LIGHTNINGCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(CLOWNAGER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(CONFUSER, 0, 0, 1, 0, 1, 1, 1, 2)
- .withRaider(SHIELD_VINDICATOR, 0, 1, 0, 1, 1, 1, 0, 1)
- .withRaider(METEORITE_CALLER, 0, 0, 0, 0, 0, 0, 0, 1)
- .withRaider(SNOWOLAGER, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(NECROMANCER_LEO, 0, 0, 0, 0, 0, 1, 0, 1)
- .withRaider(SUMMONER, 0, 0, 0, 0, 0, 1, 0, 1)
- .withRaider(TROUBLEMAKER, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(PILLAGER, 0, 4, 3, 3, 4, 5, 5, 3)
+ .withRaider(VINDICATOR, 0, 2, 1, 1, 2, 3, 1, 2)
+ .withRaider(WARRIOR, 0, 2, 1, 1, 2, 1, 3, 2)
+ .withRaider(SKIRMISHER, 0, 1, 1, 2, 1, 1, 1, 3)
+ .withRaider(TANK, 0, 0, 2, 0, 2, 0, 2, 1)
+ .withRaider(LEGIONER, 0, 0, 0, 1, 2, 1, 3, 3)
+ .withRaider(DART, 0, 0, 0, 1, 1, 1, 0, 0)
+ .withRaider(HUNTER, 0, 1, 2, 2, 2, 2, 2, 3)
+ .withRaider(ARCHER, 0, 2, 1, 2, 3, 3, 3, 5)
+ .withRaider(WITCH, 0, 0, 1, 0, 3, 1, 0, 2)
+ .withRaider(RAVAGER, 0, 0, 0, 1, 0, 2, 1, 2)
+ .withRaider(ILLUSIONER, 0, 0, 1, 0, 0, 0, 1, 0)
+ .withRaider(ASSASSIN, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(EVOKER, 0, 0, 0, 0, 1, 0, 2, 2)
+ .withRaider(CONDUCTOR, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(NECROMANCER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(FROSTMAGE, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(ASHENMANCER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(SHAMAN, 0, 0, 0, 1, 0, 0, 1, 1)
+ .withRaider(ENCHANTER, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(IGNITER, 0, 0, 1, 2, 2, 2, 2, 4)
+ .withRaider(TWITTOLLAGER, 0, 0, 1, 1, 2, 0, 2, 2)
+ .withRaider(PRESERVER, 0, 1, 0, 1, 2, 1, 3, 4)
+ .withRaider(ABSORBER, 0, 0, 1, 0, 1, 0, 0, 2)
+ .withRaider(CROCOFANG, 0, 0, 1, 1, 2, 3, 1, 3)
+ .withRaider(ENGINEER, 0, 0, 0, 1, 0, 1, 1, 1)
+ .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BOSS_RANDOMIZER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(GRIEFER, 0, 1, 1, 2, 2, 2, 3, 3)
+ .withRaider(EXECUTIONER, 0, 1, 1, 1, 0, 1, 2, 2)
+ .withRaider(TRICKSTER, 0, 0, 1, 0, 1, 1, 1, 2)
+ .withRaider(ICEOLOGER_SR, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(MOUNTAINEER, 0, 1, 3, 1, 1, 4, 2, 5)
+ .withRaider(ROYAL_GUARD, 0, 1, 1, 1, 1, 2, 1, 2)
+ .withRaider(GEOMANCER, 0, 0, 1, 1, 0, 2, 1, 2)
+ .withRaider(ILLUSIONER_DM, 0, 0, 1, 0, 1, 1, 1, 2)
+ .withRaider(MAGE, 0, 0, 1, 1, 0, 2, 0, 2)
+ .withRaider(ICEOLOGER_DM, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(WINDCALLER, 0, 0, 1, 1, 0, 2, 1, 2)
+ .withRaider(SQUALL_GOLEM, 0, 0, 1, 1, 1, 1, 0, 2)
+ .withRaider(REDSTONE_GOLEM, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(BLADE_KNIGHT, 0, 0, 1, 0, 1, 0, 0, 2)
+ .withRaider(BEAST_TAMER, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(SCAVENGER, 0, 1, 1, 1, 0, 1, 2, 2)
+ .withRaider(SOUL_SAGE, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(ACOLYTE, 0, 0, 1, 0, 1, 1, 1, 0)
+ .withRaider(BULKWARK, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(LIGHTNINGCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(CLOWNAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(CONFUSER, 0, 0, 1, 0, 1, 1, 1, 2)
+ .withRaider(SHIELD_VINDICATOR, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(METEORITE_CALLER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(SNOWOLAGER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(NECROMANCER_LEO, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(SUMMONER, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(TROUBLEMAKER, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(CONJURER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NECROMANCER_MOD, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(SINISTER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SHADOMANCER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(RHINAGER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(ARCHEVOKER, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(GAMBLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GUARD_ILLAGER, 0, 1, 1, 2, 1, 2, 1, 1)
+ .withRaider(ROYAL_GUARD_SPEAR, 0, 0, 1, 0, 0, 0, 1, 1)
+ .withRaider(SPEARMAN, 0, 0, 0, 1, 1, 0, 0, 1)
+ .withRaider(SAMURAI, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(BEAMLOGER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(COWBOY, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(SHOGUN, 0, 0, 0, 0, 0, 0, 1, 1)
+ .withRaider(SPIDER_MAGE, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(ZOMBIE_MAGE, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(PILLAGER_BOSS, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(ILLUSIONER_MOBZ, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(BABY_RAVAGER, 0, 1, 2, 0, 2, 1, 1, 0)
+ .withRaider(PROVOKER, 0, 1, 0, 0, 0, 0, 1, 0)
+ .withRaider(INQUISITOR, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(MARAUDER, 0, 0, 1, 0, 0, 0, 0, 1)
+ .withRaider(BASHER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(FIRECALLER, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(NECROMANCER_INV, 0, 0, 1, 0, 0, 0, 0, 0)
+ .withRaider(ALCHEMIST, 0, 0, 0, 1, 0, 0, 1, 1)
+ .withRaider(SORCERER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(ARCHIVIST, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(INVOKER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(WARLOCK, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(MAVERICK, 0, 0, 1, 0, 0, 0, 1, 0)
+ .withRaider(HERETIC, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(PIKER, 0, 2, 2, 1, 2, 2, 1, 1)
+ .withRaider(RIPPER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(CRUSHER, 0, 0, 1, 0, 1, 0, 1, 1)
+ .withRaider(STORM_CASTER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(CRYOLOGER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(PREACHER, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(CONQUILLAGER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(INQUILLAGER, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(ENVIOKER, 0, 0, 0, 1, 0, 0, 1, 1)
+ .withRaider(SORCERER_GOETY, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(HOSTILE_RED_GOLEM, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(HOSTILE_RED_MONSTER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MINISTER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(TRAMPLER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(VIZIER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(APOSTLE, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(THE_SUMMONER, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(THE_SUMMONER_BOSS, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NECROMANCER_BONES, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(MODIFIGER, 0, 0, 0, 0, 1, 0, 1, 1)
+ .withRaider(MARKSMAN, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(MASQUERADER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(TENGU, 0, 0, 0, 1, 0, 0, 1, 0)
+ .withRaider(NINJAR, 0, 1, 0, 0, 1, 2, 1, 1)
+ .withRaider(NECROMANCER_RAIDED, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(ELECTROMANCER_RAIDED, 0, 1, 0, 0, 1, 1, 1, 1)
+ .withRaider(SAVAGER, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(INCINERATOR, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(INQUISITOR_RAIDED, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(GUNILLAGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(ILLIGEVE, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(SURPRISER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(ROCKETILLAGER, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(CREEPILLAGER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(MONSTERILLAGER, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(BLADE_MASTER, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(ICEOLOGER_FF, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(PILLAGER_BRUTE, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(CRAZED, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(CABBAGER, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(PHANTOM_TAMER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(T_RABUS, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(CYBORG_VINDICATOR, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(CRUDE_RED_GOLEM, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(CRUDE_RED_MONSTROSITY, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(RED_MONSTROSITY_CSM, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MINI_CRUDE_RED_GOLEM, 0, 1, 1, 0, 1, 0, 1, 1)
+ .withRaider(HOUNDMASTER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(KARATE, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(ILLAGER_BRUTE, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(SORCERER_ILLAGER, 0, 0, 1, 1, 0, 1, 0, 0)
+ .withRaider(WANDERING_ILLAGER, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(BRASHER, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(BLUNTOLOGER, 0, 1, 0, 0, 1, 1, 1, 0)
+ .withRaider(CLEAVAGER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(SPEAROLOGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(JUGGERNAUT, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(BLUDGEONER, 0, 1, 0, 1, 0, 1, 1, 1)
+ .withRaider(GRINDICATOR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(PATROLOGER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(CHEFAGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(GRINDICATOR_FRANCIS, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(MAGE_FRANCIS, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(CHEFOLOGER, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(PYROBANDIT, 0, 0, 0, 1, 0, 0, 1, 0)
+ .withRaider(FIREOLOGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(VRINCITADOR, 0, 0, 0, 1, 0, 0, 1, 0)
+ .withRaider(SANDOLOGER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(GRUMMICATOR, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(VILER_WITCH, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(PILLAGER_CAR, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(PILLAGER_SOLDIER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(VINDICATOR_FLAMETHROWER,0, 0, 0, 0, 1, 1, 0, 1)
+ .withRaider(ASSAULT_PILLAGER, 0, 0, 1, 0, 1, 1, 1, 0)
+ .withRaider(PILLAGER_PLANE, 0, 0, 0, 0, 1, 1, 1, 1)
+ .withRaider(PILLAGER_CANNON, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(WANDERING_TRAITOR, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(DRUSKI, 0, 1, 2, 2, 1, 1, 2, 2)
+ .withRaider(LACHER, 0, 0, 1, 1, 0, 1, 0, 2)
+ .withRaider(CRISKO, 0, 2, 2, 2, 1, 2, 2, 2)
+ .withRaider(BLAKER, 0, 2, 2, 3, 2, 2, 2, 2)
+ .withRaider(TOXICIST, 0, 2, 2, 2, 2, 1, 2, 2)
+ .withRaider(REVENANT, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(AMPI, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(UPGRADER, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(UPGRADER_GOLD, 0, 0, 0, 0, 1, 0, 1, 1)
+ .withRaider(UPGRADER_DIAMOND, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(SHADOW_GOAT, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(PRINZOLOGER, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(CALLOLOGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(PILLAGER_BOSS_MOD, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(VIRTUOSO_OF_VARIETY, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MISCHIEVER, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(WITHERMANCER, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(DOODLER, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(FANGCLAW, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(SPARKOLOGER, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(LIBRAVOKER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(BUBBLEOLOGER, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(BASS_BLASTER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(IMPRECATOR, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(MAGNETIZER, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(PHOTOGRAPHER, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(PARTYGER, 0, 0, 1, 0, 0, 1, 1, 1)
+ .withRaider(SWORD_PILLAGER, 0, 0, 1, 1, 0, 1, 1, 0)
+ .withRaider(SPEAR_PILLAGER, 0, 1, 0, 1, 1, 1, 1, 1)
+ .withRaider(HOG_RIDER, 0, 0, 0, 1, 1, 1, 1, 1)
+ .withRaider(COMMANDO, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(FUSILIER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(BULWARK, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(BALLOON_PILLAGER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(SILVERFISH_WRANGLER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(MISSIONARY, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(NECROMANCER_EIDOLON, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(CLERIC, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(PIED_PIPER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(WILD_CHEF, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(TRUMPETER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(BLASTER, 0, 1, 0, 0, 1, 0, 0, 1)
+ .withRaider(DEFECTOR, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(MAPMAKER, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(BANNER_BEARER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(EXECUTIONER_JEROTES, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(EXPLORER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(SLAVERY_SUPERVISOR, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(CYCLONER, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(JAVELIN_THROWER, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(ZOMBIE_KEEPER, 0, 0, 1, 1, 0, 1, 0, 0)
+ .withRaider(WILD_FINDER, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(SUBMARINER, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(SPIRVE, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(TELEPORTER, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(LAMP_WIZARD, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(BITTER_COLD_SORCERER, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(FIRE_SPITTER, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(PURPLE_SAND_WITCH, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(WITCH_SCHOLAR, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(AX_CRAZY, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(PURPLE_SAND_HAG, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NECROMANCY_WARLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GAVILER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BIG_WITCH, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(FIREPOWER_POURER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(OMINOUS_BANNER_PROJ, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(COHORT_HAG, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BUGLER, 0, 0, 1, 0, 1, 1, 1, 0)
+ .withRaider(ARMORER, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(BIOLOGIST, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(HUNTER_API, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(MOURNER, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(ABOMINATION, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(DRUNKENNESS, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(FLAGMAN, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(INTRUDER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GRAVE_KEEPER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(ROOST_RIDER, 0, 0, 1, 0, 0, 0, 1, 0)
+ .withRaider(MECHASENT, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(THALASSOGER, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(ELITE_VINDICATOR, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(RETALIATOR, 0, 0, 1, 0, 0, 0, 0, 0)
+ .withRaider(CRINDICATOR, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(ELITE_PILLAGER, 0, 0, 0, 1, 1, 0, 0, 0)
+ .withRaider(RAVAGER_RIDER, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(NUN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SHYLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_DRAMATIST, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(SPELL_SWORD, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(PSYCHC_W, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(PSYCHIC_M, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(HEADSMAN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_BIG_NUN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(AWAKEN_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(DRAMATIST, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FLY_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(OCEANOLOGER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(CONQUEROR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(TRAVELER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BLOWER, 0, 1, 0, 0, 1, 0, 0, 1)
+ .withRaider(STABBER, 0, 0, 1, 0, 0, 0, 1, 0)
+ .withRaider(HARVESTER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(MECHA_PILLAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MECHA_VINDICATOR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(CRUSHER_RESILIANCE, 0, 0, 0, 1, 1, 0, 0, 1)
+ .withRaider(CLASHAGER, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(SHIVERGER, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(GUARDIAN, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(ASSAILANT, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(HARRIER, 0, 1, 0, 1, 0, 1, 1, 0)
+ .withRaider(PREACHER_VINDICATION, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(BLACKMASTER, 0, 1, 0, 0, 0, 1, 0, 0)
+ .withRaider(PLANNER, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(VISOLOGER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(INTRUDER_VINDICATION, 0, 1, 0, 0, 1, 0, 1, 0)
+ .withRaider(VOLTOLOGER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(SMITHER, 0, 0, 1, 1, 1, 0, 0, 1)
+ .withRaider(RAGER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(PATROL_CAPTAIN, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(RAIDER_RANDOMIZER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(VINDICATOR_CHEF, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(HOSTILE_ROYAL_GUARD, 0, 0, 0, 1, 1, 0, 0, 0)
.withEliteWave(5, NUAOS_ELITE.get())
.withEliteWave(7, NUAOS_ELITE.get(), VOLDON_ELITE.get())
.registerDefault();
RaidEnemyRegistry.createDefaultWavesFor(RaidDifficulty.LEGEND)
- .withRaider(PILLAGER, 0, 4, 3, 3, 4, 5, 5, 3)
- .withRaider(VINDICATOR, 0, 2, 3, 1, 3, 4, 2, 3)
- .withRaider(WARRIOR, 0, 2, 2, 3, 3, 1, 4, 4)
- .withRaider(SKIRMISHER, 0, 2, 2, 2, 3, 2, 2, 3)
- .withRaider(TANK, 0, 0, 2, 1, 2, 1, 2, 1)
- .withRaider(LEGIONER, 0, 1, 1, 2, 2, 3, 3, 4)
- .withRaider(DART, 0, 0, 2, 1, 2, 1, 3, 0)
- .withRaider(HUNTER, 0, 1, 3, 2, 3, 2, 3, 4)
- .withRaider(ARCHER, 0, 2, 2, 4, 3, 4, 3, 6)
- .withRaider(WITCH, 0, 1, 1, 2, 3, 1, 2, 2)
- .withRaider(RAVAGER, 0, 0, 1, 1, 0, 2, 1, 2)
- .withRaider(ILLUSIONER, 0, 0, 1, 1, 1, 0, 1, 0)
- .withRaider(ASSASSIN, 0, 1, 1, 1, 1, 1, 1, 1)
- .withRaider(EVOKER, 0, 0, 2, 2, 1, 2, 2, 2)
- .withRaider(CONDUCTOR, 0, 0, 1, 0, 0, 0, 1, 1)
- .withRaider(NECROMANCER, 0, 0, 0, 2, 0, 1, 2, 1)
- .withRaider(FROSTMAGE, 0, 0, 0, 0, 2, 2, 0, 1)
- .withRaider(ASHENMANCER, 0, 0, 0, 1, 0, 1, 0, 1)
- .withRaider(SHAMAN, 0, 0, 1, 1, 1, 2, 2, 3)
- .withRaider(ENCHANTER, 0, 1, 2, 0, 0, 2, 0, 2)
- .withRaider(IGNITER, 0, 2, 2, 3, 2, 3, 2, 5)
- .withRaider(TWITTOLLAGER, 0, 1, 2, 1, 2, 1, 2, 3)
- .withRaider(PRESERVER, 0, 1, 1, 2, 2, 2, 4, 4)
- .withRaider(ABSORBER, 0, 0, 1, 1, 2, 0, 1, 2)
- .withRaider(CROCOFANG, 0, 1, 2, 1, 2, 3, 2, 4)
- .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(BOSS_RANDOMIZER, 0, 0, 1, 0, 0, 1, 1, 1)
- .withRaider(GRIEFER, 0, 1, 2, 2, 3, 2, 3, 3)
- .withRaider(EXECUTIONER, 0, 1, 2, 1, 1, 2, 2, 3)
- .withRaider(TRICKSTER, 0, 0, 1, 0, 1, 2, 2, 3)
- .withRaider(ICEOLOGER_SR, 0, 0, 1, 2, 0, 2, 0, 2)
- .withRaider(MOUNTAINEER, 0, 2, 3, 2, 2, 5, 2, 6)
- .withRaider(ROYAL_GUARD, 0, 1, 2, 2, 1, 4, 1, 4)
- .withRaider(GEOMANCER, 0, 1, 1, 2, 1, 2, 1, 3)
- .withRaider(ILLUSIONER_DM, 0, 0, 1, 2, 1, 3, 1, 3)
- .withRaider(MAGE, 0, 1, 1, 1, 0, 2, 1, 3)
- .withRaider(ICEOLOGER_DM, 0, 0, 1, 2, 0, 2, 0, 2)
- .withRaider(WINDCALLER, 0, 1, 1, 2, 1, 2, 1, 3)
- .withRaider(SQUALL_GOLEM, 0, 1, 1, 2, 1, 2, 1, 2)
- .withRaider(REDSTONE_GOLEM, 0, 1, 1, 1, 1, 1, 1, 1)
- .withRaider(BLADE_KNIGHT, 0, 0, 1, 1, 1, 0, 1, 2)
- .withRaider(BEAST_TAMER, 0, 0, 1, 0, 1, 1, 1, 1)
- .withRaider(SCAVENGER, 0, 1, 2, 1, 1, 2, 2, 3)
- .withRaider(LIGHTNINGCALLER, 0, 0, 0, 0, 0, 0, 0, 1)
- .withRaider(CLOWNAGER, 0, 0, 0, 0, 0, 1, 0, 0)
- .withRaider(CONFUSER, 0, 0, 1, 2, 1, 3, 1, 3)
- .withRaider(SHIELD_VINDICATOR, 0, 1, 1, 2, 2, 2, 2, 3)
- .withRaider(METEORITE_CALLER, 0, 0, 1, 0, 0, 1, 0, 1)
- .withRaider(SNOWOLAGER, 0, 0, 1, 2, 0, 2, 0, 2)
- .withRaider(NECROMANCER_LEO, 0, 0, 1, 1, 0, 1, 0, 2)
- .withRaider(SUMMONER, 0, 0, 0, 1, 1, 1, 2, 1)
- .withRaider(TROUBLEMAKER, 0, 1, 1, 2, 2, 1, 1, 1)
+ .withRaider(PILLAGER, 0, 4, 3, 3, 4, 5, 5, 3)
+ .withRaider(VINDICATOR, 0, 2, 3, 1, 3, 4, 2, 3)
+ .withRaider(WARRIOR, 0, 2, 2, 3, 3, 1, 4, 4)
+ .withRaider(SKIRMISHER, 0, 2, 2, 2, 3, 2, 2, 3)
+ .withRaider(TANK, 0, 0, 2, 1, 2, 1, 2, 1)
+ .withRaider(LEGIONER, 0, 1, 1, 2, 2, 3, 3, 4)
+ .withRaider(DART, 0, 0, 2, 1, 2, 1, 3, 0)
+ .withRaider(HUNTER, 0, 1, 3, 2, 3, 2, 3, 4)
+ .withRaider(ARCHER, 0, 2, 2, 4, 3, 4, 3, 6)
+ .withRaider(WITCH, 0, 1, 1, 2, 3, 1, 2, 2)
+ .withRaider(RAVAGER, 0, 0, 1, 1, 0, 2, 1, 2)
+ .withRaider(ILLUSIONER, 0, 0, 1, 1, 1, 0, 1, 0)
+ .withRaider(ASSASSIN, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(EVOKER, 0, 0, 2, 2, 1, 2, 2, 2)
+ .withRaider(CONDUCTOR, 0, 0, 1, 0, 0, 0, 1, 1)
+ .withRaider(NECROMANCER, 0, 0, 0, 2, 0, 1, 2, 1)
+ .withRaider(FROSTMAGE, 0, 0, 0, 0, 2, 2, 0, 1)
+ .withRaider(ASHENMANCER, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(SHAMAN, 0, 0, 1, 1, 1, 2, 2, 3)
+ .withRaider(ENCHANTER, 0, 1, 2, 0, 0, 2, 0, 2)
+ .withRaider(IGNITER, 0, 2, 2, 3, 2, 3, 2, 5)
+ .withRaider(TWITTOLLAGER, 0, 1, 2, 1, 2, 1, 2, 3)
+ .withRaider(PRESERVER, 0, 1, 1, 2, 2, 2, 4, 4)
+ .withRaider(ABSORBER, 0, 0, 1, 1, 2, 0, 1, 2)
+ .withRaider(CROCOFANG, 0, 1, 2, 1, 2, 3, 2, 4)
+ .withRaider(ENGINEER, 0, 0, 1, 1, 0, 1, 1, 2)
+ .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BOSS_RANDOMIZER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(GRIEFER, 0, 1, 2, 2, 3, 2, 3, 3)
+ .withRaider(EXECUTIONER, 0, 1, 2, 1, 1, 2, 2, 3)
+ .withRaider(TRICKSTER, 0, 0, 1, 0, 1, 2, 2, 3)
+ .withRaider(ICEOLOGER_SR, 0, 0, 1, 2, 0, 2, 0, 2)
+ .withRaider(MOUNTAINEER, 0, 2, 3, 2, 2, 5, 2, 6)
+ .withRaider(ROYAL_GUARD, 0, 1, 2, 2, 1, 4, 1, 4)
+ .withRaider(GEOMANCER, 0, 1, 1, 2, 1, 2, 1, 3)
+ .withRaider(ILLUSIONER_DM, 0, 0, 1, 2, 1, 3, 1, 3)
+ .withRaider(MAGE, 0, 1, 1, 1, 0, 2, 1, 3)
+ .withRaider(ICEOLOGER_DM, 0, 0, 1, 2, 0, 2, 0, 2)
+ .withRaider(WINDCALLER, 0, 1, 1, 2, 1, 2, 1, 3)
+ .withRaider(SQUALL_GOLEM, 0, 1, 1, 2, 1, 2, 1, 2)
+ .withRaider(REDSTONE_GOLEM, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(BLADE_KNIGHT, 0, 0, 1, 1, 1, 0, 1, 2)
+ .withRaider(BEAST_TAMER, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(SCAVENGER, 0, 1, 2, 1, 1, 2, 2, 3)
+ .withRaider(SOUL_SAGE, 0, 0, 0, 1, 0, 0, 1, 1)
+ .withRaider(ACOLYTE, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(BULKWARK, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(LIGHTNINGCALLER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(CLOWNAGER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(CONFUSER, 0, 0, 1, 2, 1, 3, 1, 3)
+ .withRaider(SHIELD_VINDICATOR, 0, 1, 1, 2, 2, 2, 2, 3)
+ .withRaider(METEORITE_CALLER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(SNOWOLAGER, 0, 0, 1, 2, 0, 2, 0, 2)
+ .withRaider(NECROMANCER_LEO, 0, 0, 1, 1, 0, 1, 0, 2)
+ .withRaider(SUMMONER, 0, 0, 0, 1, 1, 1, 2, 1)
+ .withRaider(TROUBLEMAKER, 0, 1, 1, 2, 2, 1, 1, 1)
+ .withRaider(CONJURER, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(NECROMANCER_MOD, 0, 0, 1, 0, 0, 0, 1, 1)
+ .withRaider(SINISTER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(SHADOMANCER, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(RHINAGER, 0, 0, 0, 0, 0, 1, 1, 1)
+ .withRaider(ARCHEVOKER, 0, 0, 0, 1, 1, 0, 0, 0)
+ .withRaider(GAMBLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GUARD_ILLAGER, 0, 2, 2, 2, 2, 3, 2, 2)
+ .withRaider(ROYAL_GUARD_SPEAR, 0, 0, 1, 0, 0, 0, 1, 1)
+ .withRaider(SPEARMAN, 0, 0, 1, 1, 1, 0, 0, 1)
+ .withRaider(SAMURAI, 0, 1, 0, 1, 0, 0, 1, 0)
+ .withRaider(BEAMLOGER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(COWBOY, 0, 0, 1, 0, 0, 1, 1, 0)
+ .withRaider(SHOGUN, 0, 0, 0, 0, 0, 0, 1, 1)
+ .withRaider(SPIDER_MAGE, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(ZOMBIE_MAGE, 0, 0, 1, 1, 0, 0, 1, 1)
+ .withRaider(PILLAGER_BOSS, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(ILLUSIONER_MOBZ, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(BABY_RAVAGER, 0, 2, 3, 1, 3, 2, 1, 3)
+ .withRaider(PROVOKER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(INQUISITOR, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(MARAUDER, 0, 0, 1, 1, 0, 0, 0, 1)
+ .withRaider(BASHER, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(FIRECALLER, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(NECROMANCER_INV, 0, 0, 1, 1, 0, 0, 0, 0)
+ .withRaider(ALCHEMIST, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(SORCERER, 0, 0, 0, 0, 1, 1, 0, 1)
+ .withRaider(ARCHIVIST, 0, 1, 0, 1, 0, 0, 0, 1)
+ .withRaider(INVOKER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(WARLOCK, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(MAVERICK, 0, 0, 1, 1, 0, 1, 1, 0)
+ .withRaider(HERETIC, 0, 1, 0, 0, 1, 1, 0, 1)
+ .withRaider(PIKER, 0, 3, 3, 2, 3, 3, 2, 2)
+ .withRaider(RIPPER, 0, 0, 1, 2, 1, 1, 1, 0)
+ .withRaider(CRUSHER, 0, 1, 2, 1, 2, 1, 2, 1)
+ .withRaider(STORM_CASTER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(CRYOLOGER, 0, 0, 1, 0, 1, 0, 1, 1)
+ .withRaider(PREACHER, 0, 1, 0, 1, 2, 1, 0, 1)
+ .withRaider(CONQUILLAGER, 0, 2, 1, 2, 1, 0, 1, 1)
+ .withRaider(INQUILLAGER, 0, 1, 2, 0, 1, 1, 0, 0)
+ .withRaider(ENVIOKER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(SORCERER_GOETY, 0, 1, 1, 0, 1, 0, 0, 1)
+ .withRaider(HOSTILE_RED_GOLEM, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(HOSTILE_RED_MONSTER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(MINISTER, 0, 1, 1, 0, 1, 0, 1, 1)
+ .withRaider(TRAMPLER, 0, 1, 0, 2, 1, 1, 0, 2)
+ .withRaider(VIZIER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(APOSTLE, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(THE_SUMMONER, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(THE_SUMMONER_BOSS, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(NECROMANCER_BONES, 0, 0, 1, 1, 1, 0, 0, 1)
+ .withRaider(MODIFIGER, 0, 0, 0, 2, 1, 1, 2, 1)
+ .withRaider(MARKSMAN, 0, 1, 1, 1, 2, 1, 0, 1)
+ .withRaider(MASQUERADER, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(TENGU, 0, 1, 1, 1, 0, 1, 2, 1)
+ .withRaider(NINJAR, 0, 1, 1, 1, 2, 2, 2, 1)
+ .withRaider(NECROMANCER_RAIDED, 0, 1, 1, 2, 1, 0, 1, 2)
+ .withRaider(ELECTROMANCER_RAIDED, 0, 1, 2, 1, 1, 1, 2, 1)
+ .withRaider(SAVAGER, 0, 1, 2, 1, 1, 2, 2, 1)
+ .withRaider(INCINERATOR, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(INQUISITOR_RAIDED, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(GUNILLAGER, 0, 0, 1, 1, 2, 1, 0, 1)
+ .withRaider(ILLIGEVE, 0, 0, 1, 1, 0, 0, 1, 1)
+ .withRaider(SURPRISER, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(ROCKETILLAGER, 0, 0, 0, 1, 1, 0, 0, 1)
+ .withRaider(CREEPILLAGER, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(MONSTERILLAGER, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(BLADE_MASTER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(ICEOLOGER_FF, 0, 0, 1, 1, 1, 1, 1, 1)
+ .withRaider(PILLAGER_BRUTE, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(CRAZED, 0, 1, 1, 2, 1, 1, 1, 1)
+ .withRaider(CABBAGER, 0, 1, 2, 1, 1, 0, 1, 0)
+ .withRaider(PHANTOM_TAMER, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(T_RABUS, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(CYBORG_VINDICATOR, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(CRUDE_RED_GOLEM, 0, 0, 1, 0, 1, 0, 1, 1)
+ .withRaider(CRUDE_RED_MONSTROSITY, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(RED_MONSTROSITY_CSM, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MINI_CRUDE_RED_GOLEM, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(HOUNDMASTER, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(KARATE, 0, 1, 3, 2, 1, 2, 2, 2)
+ .withRaider(ILLAGER_BRUTE, 0, 0, 0, 1, 1, 1, 0, 1)
+ .withRaider(SORCERER_ILLAGER, 0, 1, 1, 2, 1, 2, 1, 1)
+ .withRaider(WANDERING_ILLAGER, 0, 0, 1, 1, 0, 1, 1, 0)
+ .withRaider(BRASHER, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(BLUNTOLOGER, 0, 2, 1, 1, 2, 1, 1, 1)
+ .withRaider(CLEAVAGER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(SPEAROLOGER, 0, 1, 1, 0, 1, 1, 1, 1)
+ .withRaider(JUGGERNAUT, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(BLUDGEONER, 0, 1, 0, 1, 0, 1, 1, 1)
+ .withRaider(GRINDICATOR, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(PATROLOGER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(CHEFAGER, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(GRINDICATOR_FRANCIS, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(MAGE_FRANCIS, 0, 0, 1, 1, 1, 0, 2, 1)
+ .withRaider(CHEFOLOGER, 0, 0, 0, 1, 1, 2, 0, 0)
+ .withRaider(PYROBANDIT, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(FIREOLOGER, 0, 0, 1, 1, 1, 2, 1, 1)
+ .withRaider(VRINCITADOR, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(SANDOLOGER, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(GRUMMICATOR, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(VILER_WITCH, 0, 1, 1, 2, 1, 2, 2, 1)
+ .withRaider(PILLAGER_CAR, 0, 0, 1, 1, 0, 1, 1, 0)
+ .withRaider(PILLAGER_SOLDIER, 0, 1, 1, 2, 1, 2, 2, 1)
+ .withRaider(VINDICATOR_FLAMETHROWER,0, 0, 1, 1, 1, 2, 0, 1)
+ .withRaider(ASSAULT_PILLAGER, 0, 1, 2, 1, 2, 1, 1, 0)
+ .withRaider(PILLAGER_PLANE, 0, 0, 1, 0, 1, 2, 2, 1)
+ .withRaider(PILLAGER_CANNON, 0, 0, 0, 1, 2, 1, 1, 1)
+ .withRaider(WANDERING_TRAITOR, 0, 1, 1, 2, 2, 1, 1, 1)
+ .withRaider(DRUSKI, 0, 2, 2, 3, 2, 1, 3, 2)
+ .withRaider(LACHER, 0, 1, 1, 2, 1, 1, 1, 2)
+ .withRaider(CRISKO, 0, 3, 3, 2, 2, 2, 3, 2)
+ .withRaider(BLAKER, 0, 3, 3, 3, 2, 3, 2, 3)
+ .withRaider(TOXICIST, 0, 2, 3, 3, 2, 2, 2, 3)
+ .withRaider(REVENANT, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(AMPI, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(UPGRADER, 0, 0, 1, 2, 1, 1, 2, 1)
+ .withRaider(UPGRADER_GOLD, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(UPGRADER_DIAMOND, 0, 0, 0, 0, 1, 1, 1, 1)
+ .withRaider(SHADOW_GOAT, 0, 1, 1, 2, 1, 2, 2, 1)
+ .withRaider(PRINZOLOGER, 0, 1, 1, 2, 2, 1, 1, 1)
+ .withRaider(CALLOLOGER, 0, 0, 1, 2, 2, 1, 1, 1)
+ .withRaider(PILLAGER_BOSS_MOD, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(VIRTUOSO_OF_VARIETY, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MISCHIEVER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(WITHERMANCER, 0, 0, 1, 1, 2, 1, 1, 2)
+ .withRaider(DOODLER, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(FANGCLAW, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(SPARKOLOGER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(LIBRAVOKER, 0, 1, 2, 1, 1, 1, 0, 1)
+ .withRaider(BUBBLEOLOGER, 0, 0, 0, 0, 1, 1, 1, 1)
+ .withRaider(BASS_BLASTER, 0, 0, 1, 2, 1, 1, 2, 1)
+ .withRaider(IMPRECATOR, 0, 1, 1, 2, 1, 2, 0, 1)
+ .withRaider(MAGNETIZER, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(PHOTOGRAPHER, 0, 1, 0, 2, 2, 0, 1, 0)
+ .withRaider(PARTYGER, 0, 0, 1, 0, 1, 2, 1, 1)
+ .withRaider(SWORD_PILLAGER, 0, 1, 2, 2, 1, 2, 2, 1)
+ .withRaider(SPEAR_PILLAGER, 0, 2, 1, 2, 2, 2, 2, 1)
+ .withRaider(HOG_RIDER, 0, 0, 1, 2, 1, 2, 2, 1)
+ .withRaider(COMMANDO, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(FUSILIER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(BULWARK, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(BALLOON_PILLAGER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(SILVERFISH_WRANGLER, 0, 1, 0, 1, 2, 0, 1, 1)
+ .withRaider(MISSIONARY, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(NECROMANCER_EIDOLON, 0, 0, 0, 1, 1, 1, 0, 0)
+ .withRaider(CLERIC, 0, 0, 0, 0, 1, 1, 1, 0)
+ .withRaider(PIED_PIPER, 0, 0, 0, 1, 1, 1, 0, 1)
+ .withRaider(WILD_CHEF, 0, 0, 1, 1, 1, 0, 1, 0)
+ .withRaider(TRUMPETER, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(BLASTER, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(DEFECTOR, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(MAPMAKER, 0, 1, 1, 0, 1, 1, 0, 0)
+ .withRaider(BANNER_BEARER, 0, 1, 0, 1, 1, 1, 1, 0)
+ .withRaider(EXECUTIONER_JEROTES, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(EXPLORER, 0, 1, 0, 1, 1, 1, 1, 0)
+ .withRaider(SLAVERY_SUPERVISOR, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(CYCLONER, 0, 0, 1, 0, 1, 1, 1, 0)
+ .withRaider(JAVELIN_THROWER, 0, 1, 0, 1, 1, 1, 1, 1)
+ .withRaider(ZOMBIE_KEEPER, 0, 0, 1, 1, 1, 1, 0, 0)
+ .withRaider(WILD_FINDER, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(SUBMARINER, 0, 1, 1, 0, 1, 1, 0, 1)
+ .withRaider(SPIRVE, 0, 0, 1, 1, 1, 0, 1, 0)
+ .withRaider(TELEPORTER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(LAMP_WIZARD, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(BITTER_COLD_SORCERER, 0, 0, 1, 0, 1, 0, 0, 1)
+ .withRaider(FIRE_SPITTER, 0, 1, 0, 0, 0, 1, 1, 0)
+ .withRaider(PURPLE_SAND_WITCH, 0, 0, 0, 1, 0, 0, 1, 0)
+ .withRaider(WITCH_SCHOLAR, 0, 0, 1, 1, 1, 1, 0, 0)
+ .withRaider(AX_CRAZY, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(PURPLE_SAND_HAG, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NECROMANCY_WARLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GAVILER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BIG_WITCH, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(FIREPOWER_POURER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(OMINOUS_BANNER_PROJ, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(COHORT_HAG, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(BUGLER, 0, 0, 1, 0, 2, 1, 1, 0)
+ .withRaider(ARMORER, 0, 1, 1, 2, 1, 0, 1, 1)
+ .withRaider(BIOLOGIST, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(HUNTER_API, 0, 0, 0, 0, 1, 1, 1, 0)
+ .withRaider(MOURNER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(ABOMINATION, 0, 0, 1, 1, 0, 1, 1, 0)
+ .withRaider(DRUNKENNESS, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(FLAGMAN, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(INTRUDER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(GRAVE_KEEPER, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(ROOST_RIDER, 0, 0, 1, 1, 0, 0, 1, 0)
+ .withRaider(MECHASENT, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(THALASSOGER, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(ELITE_VINDICATOR, 0, 0, 0, 1, 1, 0, 0, 1)
+ .withRaider(RETALIATOR, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(CRINDICATOR, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(ELITE_PILLAGER, 0, 0, 1, 1, 1, 0, 0, 0)
+ .withRaider(RAVAGER_RIDER, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(NUN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SHYLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_DRAMATIST, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(SPELL_SWORD, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(PSYCHC_W, 0, 0, 1, 1, 0, 0, 0, 0)
+ .withRaider(PSYCHIC_M, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(HEADSMAN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_BIG_NUN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(AWAKEN_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(DRAMATIST, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FLY_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(OCEANOLOGER, 0, 0, 1, 1, 1, 1, 1, 1)
+ .withRaider(CONQUEROR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(TRAVELER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(BLOWER, 0, 1, 0, 1, 1, 0, 0, 1)
+ .withRaider(STABBER, 0, 1, 1, 0, 0, 0, 1, 0)
+ .withRaider(HARVESTER, 0, 0, 0, 1, 1, 1, 0, 1)
+ .withRaider(MECHA_PILLAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(MECHA_VINDICATOR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(CRUSHER_RESILIANCE, 0, 1, 0, 1, 1, 0, 1, 1)
+ .withRaider(CLASHAGER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(SHIVERGER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(GUARDIAN, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(ASSAILANT, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(HARRIER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(PREACHER_VINDICATION, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(BLACKMASTER, 0, 1, 0, 0, 1, 1, 0, 1)
+ .withRaider(PLANNER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(VISOLOGER, 0, 1, 1, 0, 0, 1, 1, 1)
+ .withRaider(INTRUDER_VINDICATION, 0, 1, 0, 1, 1, 1, 1, 0)
+ .withRaider(VOLTOLOGER, 0, 1, 1, 0, 0, 1, 0, 1)
+ .withRaider(SMITHER, 0, 1, 1, 1, 1, 0, 1, 1)
+ .withRaider(RAGER, 0, 0, 0, 1, 1, 1, 1, 1)
+ .withRaider(PATROL_CAPTAIN, 0, 0, 0, 0, 1, 1, 0, 1)
+ .withRaider(RAIDER_RANDOMIZER, 0, 1, 1, 1, 0, 1, 0, 1)
+ .withRaider(VINDICATOR_CHEF, 0, 0, 1, 1, 1, 1, 1, 1)
+ .withRaider(HOSTILE_ROYAL_GUARD, 0, 0, 0, 1, 1, 1, 0, 0)
.withEliteWave(3, NUAOS_ELITE.get(), VOLDON_ELITE.get())
.withEliteWave(5, VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
.withEliteWave(7, NUAOS_ELITE.get(), VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
.registerDefault();
RaidEnemyRegistry.createDefaultWavesFor(RaidDifficulty.MASTER)
- .withRaider(PILLAGER, 0, 5, 6, 5, 6, 6, 5, 5)
- .withRaider(VINDICATOR, 0, 3, 2, 3, 3, 2, 3, 4)
- .withRaider(WARRIOR, 0, 3, 1, 3, 3, 2, 4, 4)
- .withRaider(SKIRMISHER, 0, 2, 2, 4, 3, 5, 2, 5)
- .withRaider(TANK, 0, 2, 2, 2, 3, 3, 3, 3)
- .withRaider(LEGIONER, 0, 1, 2, 3, 2, 4, 3, 5)
- .withRaider(DART, 0, 0, 2, 2, 2, 2, 3, 4)
- .withRaider(HUNTER, 0, 3, 4, 4, 4, 5, 3, 4)
- .withRaider(ARCHER, 0, 3, 3, 5, 4, 5, 5, 7)
- .withRaider(WITCH, 0, 1, 3, 5, 4, 5, 3, 3)
- .withRaider(RAVAGER, 0, 1, 1, 1, 0, 3, 1, 3)
- .withRaider(ILLUSIONER, 0, 1, 1, 2, 1, 1, 2, 3)
- .withRaider(ASSASSIN, 0, 2, 2, 2, 2, 2, 2, 2)
- .withRaider(EVOKER, 0, 1, 2, 3, 4, 1, 1, 3)
- .withRaider(CONDUCTOR, 0, 1, 2, 0, 1, 2, 2, 3)
- .withRaider(NECROMANCER, 0, 1, 0, 3, 1, 2, 0, 3)
- .withRaider(ASHENMANCER, 0, 1, 0, 2, 1, 2, 0, 2)
- .withRaider(FROSTMAGE, 0, 1, 0, 0, 1, 2, 4, 3)
- .withRaider(SHAMAN, 0, 2, 2, 2, 2, 3, 3, 3)
- .withRaider(ENCHANTER, 0, 1, 1, 1, 1, 1, 1, 3)
- .withRaider(IGNITER, 0, 3, 2, 4, 3, 4, 3, 6)
- .withRaider(TWITTOLLAGER, 0, 1, 3, 1, 3, 2, 2, 3)
- .withRaider(PRESERVER, 0, 2, 2, 2, 2, 2, 4, 4)
- .withRaider(ABSORBER, 0, 1, 1, 1, 2, 1, 1, 3)
- .withRaider(CROCOFANG, 0, 2, 2, 3, 2, 4, 2, 5)
- .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(BOSS_RANDOMIZER, 0, 0, 1, 1, 0, 1, 1, 1)
- .withRaider(GRIEFER, 0, 2, 3, 2, 3, 3, 3, 4)
- .withRaider(EXECUTIONER, 0, 2, 2, 2, 3, 2, 3, 4)
- .withRaider(TRICKSTER, 0, 1, 2, 1, 2, 2, 2, 3)
- .withRaider(ICEOLOGER_SR, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(MOUNTAINEER, 0, 3, 4, 5, 2, 7, 4, 7)
- .withRaider(ROYAL_GUARD, 0, 2, 2, 3, 2, 4, 3, 5)
- .withRaider(GEOMANCER, 0, 2, 1, 3, 2, 3, 1, 3)
- .withRaider(ILLUSIONER_DM, 0, 1, 2, 2, 2, 3, 2, 3)
- .withRaider(MAGE, 0, 1, 2, 2, 1, 3, 1, 3)
- .withRaider(ICEOLOGER_DM, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(WINDCALLER, 0, 1, 2, 3, 2, 3, 2, 3)
- .withRaider(SQUALL_GOLEM, 0, 1, 2, 2, 2, 3, 2, 3)
- .withRaider(REDSTONE_GOLEM, 0, 1, 1, 2, 1, 2, 1, 2)
- .withRaider(BLADE_KNIGHT, 0, 1, 1, 1, 1, 1, 1, 2)
- .withRaider(BEAST_TAMER, 0, 1, 2, 0, 2, 1, 2, 1)
- .withRaider(SCAVENGER, 0, 2, 2, 2, 3, 2, 3, 4)
- .withRaider(LIGHTNINGCALLER, 0, 0, 0, 1, 0, 0, 0, 1)
- .withRaider(CLOWNAGER, 0, 0, 1, 0, 0, 1, 0, 0)
- .withRaider(CONFUSER, 0, 1, 1, 2, 1, 3, 1, 3)
- .withRaider(SHIELD_VINDICATOR, 0, 2, 2, 2, 2, 3, 2, 3)
- .withRaider(METEORITE_CALLER, 0, 0, 1, 1, 1, 2, 0, 2)
- .withRaider(SNOWOLAGER, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(NECROMANCER_LEO, 0, 1, 1, 1, 1, 1, 1, 2)
- .withRaider(SUMMONER, 0, 1, 1, 1, 2, 2, 2, 2)
- .withRaider(TROUBLEMAKER, 0, 3, 2, 3, 2, 3, 2, 3)
+ .withRaider(PILLAGER, 0, 5, 6, 5, 6, 6, 5, 5)
+ .withRaider(VINDICATOR, 0, 3, 2, 3, 3, 2, 3, 4)
+ .withRaider(WARRIOR, 0, 3, 1, 3, 3, 2, 4, 4)
+ .withRaider(SKIRMISHER, 0, 2, 2, 4, 3, 5, 2, 5)
+ .withRaider(TANK, 0, 2, 2, 2, 3, 3, 3, 3)
+ .withRaider(LEGIONER, 0, 1, 2, 3, 2, 4, 3, 5)
+ .withRaider(DART, 0, 0, 2, 2, 2, 2, 3, 4)
+ .withRaider(HUNTER, 0, 3, 4, 4, 4, 5, 3, 4)
+ .withRaider(ARCHER, 0, 3, 3, 5, 4, 5, 5, 7)
+ .withRaider(WITCH, 0, 1, 3, 5, 4, 5, 3, 3)
+ .withRaider(RAVAGER, 0, 1, 1, 1, 0, 3, 1, 3)
+ .withRaider(ILLUSIONER, 0, 1, 1, 2, 1, 1, 2, 3)
+ .withRaider(ASSASSIN, 0, 2, 2, 2, 2, 2, 2, 2)
+ .withRaider(EVOKER, 0, 1, 2, 3, 4, 1, 1, 3)
+ .withRaider(CONDUCTOR, 0, 1, 2, 0, 1, 2, 2, 3)
+ .withRaider(NECROMANCER, 0, 1, 0, 3, 1, 2, 0, 3)
+ .withRaider(ASHENMANCER, 0, 1, 0, 2, 1, 2, 0, 2)
+ .withRaider(FROSTMAGE, 0, 1, 0, 0, 1, 2, 4, 3)
+ .withRaider(SHAMAN, 0, 2, 2, 2, 2, 3, 3, 3)
+ .withRaider(ENCHANTER, 0, 1, 1, 1, 1, 1, 1, 3)
+ .withRaider(IGNITER, 0, 3, 2, 4, 3, 4, 3, 6)
+ .withRaider(TWITTOLLAGER, 0, 1, 3, 1, 3, 2, 2, 3)
+ .withRaider(PRESERVER, 0, 2, 2, 2, 2, 2, 4, 4)
+ .withRaider(ABSORBER, 0, 1, 1, 1, 2, 1, 1, 3)
+ .withRaider(CROCOFANG, 0, 2, 2, 3, 2, 4, 2, 5)
+ .withRaider(ENGINEER, 0, 1, 1, 0, 1, 1, 1, 2)
+ .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BOSS_RANDOMIZER, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(GRIEFER, 0, 2, 3, 2, 3, 3, 3, 4)
+ .withRaider(EXECUTIONER, 0, 2, 2, 2, 3, 2, 3, 4)
+ .withRaider(TRICKSTER, 0, 1, 2, 1, 2, 2, 2, 3)
+ .withRaider(ICEOLOGER_SR, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(MOUNTAINEER, 0, 3, 4, 5, 2, 7, 4, 7)
+ .withRaider(ROYAL_GUARD, 0, 2, 2, 3, 2, 4, 3, 5)
+ .withRaider(GEOMANCER, 0, 2, 1, 3, 2, 3, 1, 3)
+ .withRaider(ILLUSIONER_DM, 0, 1, 2, 2, 2, 3, 2, 3)
+ .withRaider(MAGE, 0, 1, 2, 2, 1, 3, 1, 3)
+ .withRaider(ICEOLOGER_DM, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(WINDCALLER, 0, 1, 2, 3, 2, 3, 2, 3)
+ .withRaider(SQUALL_GOLEM, 0, 1, 2, 2, 2, 3, 2, 3)
+ .withRaider(REDSTONE_GOLEM, 0, 1, 1, 2, 1, 2, 1, 2)
+ .withRaider(BLADE_KNIGHT, 0, 1, 1, 1, 1, 1, 1, 2)
+ .withRaider(BEAST_TAMER, 0, 1, 2, 0, 2, 1, 2, 1)
+ .withRaider(SCAVENGER, 0, 2, 2, 2, 3, 2, 3, 4)
+ .withRaider(SOUL_SAGE, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(ACOLYTE, 0, 1, 2, 1, 2, 2, 2, 2)
+ .withRaider(BULKWARK, 0, 0, 1, 0, 0, 1, 0, 1)
+ .withRaider(LIGHTNINGCALLER, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(CLOWNAGER, 0, 0, 1, 0, 0, 1, 0, 0)
+ .withRaider(CONFUSER, 0, 1, 1, 2, 1, 3, 1, 3)
+ .withRaider(SHIELD_VINDICATOR, 0, 2, 2, 2, 2, 3, 2, 3)
+ .withRaider(METEORITE_CALLER, 0, 0, 1, 1, 1, 2, 0, 2)
+ .withRaider(SNOWOLAGER, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(NECROMANCER_LEO, 0, 1, 1, 1, 1, 1, 1, 2)
+ .withRaider(SUMMONER, 0, 1, 1, 1, 2, 2, 2, 2)
+ .withRaider(TROUBLEMAKER, 0, 3, 2, 3, 2, 3, 2, 3)
+ .withRaider(CONJURER, 0, 0, 1, 0, 1, 0, 1, 1)
+ .withRaider(NECROMANCER_MOD, 0, 1, 1, 0, 0, 1, 1, 2)
+ .withRaider(SINISTER, 0, 0, 0, 1, 1, 0, 0, 0)
+ .withRaider(SHADOMANCER, 0, 0, 1, 1, 0, 0, 0, 1)
+ .withRaider(RHINAGER, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(ARCHEVOKER, 0, 0, 1, 1, 1, 1, 0, 0)
+ .withRaider(GAMBLER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(GUARD_ILLAGER, 0, 2, 5, 4, 2, 3, 3, 4)
+ .withRaider(ROYAL_GUARD_SPEAR, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(SPEARMAN, 0, 0, 1, 2, 1, 0, 0, 1)
+ .withRaider(SAMURAI, 0, 1, 0, 1, 0, 1, 1, 0)
+ .withRaider(BEAMLOGER, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(COWBOY, 0, 1, 2, 0, 1, 1, 1, 0)
+ .withRaider(SHOGUN, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(SPIDER_MAGE, 0, 0, 1, 1, 2, 0, 1, 2)
+ .withRaider(ZOMBIE_MAGE, 0, 1, 1, 2, 0, 1, 2, 1)
+ .withRaider(PILLAGER_BOSS, 0, 0, 1, 0, 1, 0, 0, 0)
+ .withRaider(ILLUSIONER_MOBZ, 0, 0, 1, 2, 1, 2, 0, 1)
+ .withRaider(BABY_RAVAGER, 0, 3, 4, 2, 4, 3, 2, 4)
+ .withRaider(PROVOKER, 0, 1, 1, 2, 1, 0, 1, 0)
+ .withRaider(INQUISITOR, 0, 0, 1, 1, 2, 1, 0, 0)
+ .withRaider(MARAUDER, 0, 0, 1, 1, 0, 0, 0, 1)
+ .withRaider(BASHER, 0, 1, 1, 0, 2, 1, 0, 0)
+ .withRaider(FIRECALLER, 0, 1, 1, 0, 0, 2, 0, 2)
+ .withRaider(NECROMANCER_INV, 0, 0, 1, 2, 1, 0, 0, 0)
+ .withRaider(ALCHEMIST, 0, 1, 2, 2, 1, 0, 1, 1)
+ .withRaider(SORCERER, 0, 0, 1, 1, 2, 1, 0, 2)
+ .withRaider(ARCHIVIST, 0, 1, 0, 1, 2, 1, 0, 1)
+ .withRaider(INVOKER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(WARLOCK, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(MAVERICK, 0, 1, 1, 2, 1, 2, 1, 0)
+ .withRaider(HERETIC, 0, 2, 1, 0, 2, 1, 0, 2)
+ .withRaider(PIKER, 0, 4, 4, 3, 4, 4, 3, 3)
+ .withRaider(RIPPER, 0, 1, 1, 3, 2, 2, 1, 1)
+ .withRaider(CRUSHER, 0, 2, 3, 2, 3, 2, 3, 2)
+ .withRaider(STORM_CASTER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(CRYOLOGER, 0, 1, 1, 1, 2, 1, 1, 2)
+ .withRaider(PREACHER, 0, 1, 1, 2, 2, 1, 1, 1)
+ .withRaider(CONQUILLAGER, 0, 3, 2, 3, 1, 1, 2, 2)
+ .withRaider(INQUILLAGER, 0, 2, 2, 1, 2, 1, 0, 1)
+ .withRaider(ENVIOKER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(SORCERER_GOETY, 0, 1, 2, 1, 1, 0, 1, 1)
+ .withRaider(HOSTILE_RED_GOLEM, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(HOSTILE_RED_MONSTER, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(MINISTER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(TRAMPLER, 0, 1, 1, 2, 3, 1, 1, 2)
+ .withRaider(VIZIER, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(APOSTLE, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(THE_SUMMONER, 0, 2, 1, 0, 1, 2, 0, 1)
+ .withRaider(THE_SUMMONER_BOSS, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(NECROMANCER_BONES, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(MODIFIGER, 0, 1, 1, 3, 2, 2, 3, 3)
+ .withRaider(MARKSMAN, 0, 1, 2, 2, 3, 2, 1, 2)
+ .withRaider(MASQUERADER, 0, 0, 0, 0, 2, 0, 0, 0)
+ .withRaider(TENGU, 0, 1, 2, 3, 2, 1, 2, 1)
+ .withRaider(NINJAR, 0, 2, 2, 2, 3, 2, 2, 2)
+ .withRaider(NECROMANCER_RAIDED, 0, 1, 2, 3, 1, 0, 1, 2)
+ .withRaider(ELECTROMANCER_RAIDED, 0, 1, 2, 1, 2, 1, 2, 1)
+ .withRaider(SAVAGER, 0, 2, 2, 3, 2, 3, 2, 1)
+ .withRaider(INCINERATOR, 0, 1, 1, 1, 1, 0, 1, 1)
+ .withRaider(INQUISITOR_RAIDED, 0, 1, 2, 1, 2, 3, 2, 1)
+ .withRaider(GUNILLAGER, 0, 1, 2, 1, 2, 2, 1, 1)
+ .withRaider(ILLIGEVE, 0, 0, 1, 1, 1, 0, 2, 1)
+ .withRaider(SURPRISER, 0, 0, 1, 1, 2, 1, 1, 2)
+ .withRaider(ROCKETILLAGER, 0, 0, 1, 1, 1, 0, 2, 1)
+ .withRaider(CREEPILLAGER, 0, 0, 0, 0, 0, 1, 1, 1)
+ .withRaider(MONSTERILLAGER, 0, 0, 0, 0, 1, 0, 1, 1)
+ .withRaider(BLADE_MASTER, 0, 1, 1, 2, 1, 1, 1, 1)
+ .withRaider(ICEOLOGER_FF, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(PILLAGER_BRUTE, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(CRAZED, 0, 1, 1, 2, 1, 1, 1, 1)
+ .withRaider(CABBAGER, 0, 1, 2, 2, 2, 1, 1, 1)
+ .withRaider(PHANTOM_TAMER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(T_RABUS, 0, 0, 0, 0, 1, 1, 1, 0)
+ .withRaider(CYBORG_VINDICATOR, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(CRUDE_RED_GOLEM, 0, 0, 1, 1, 1, 0, 2, 1)
+ .withRaider(CRUDE_RED_MONSTROSITY, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(RED_MONSTROSITY_CSM, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(MINI_CRUDE_RED_GOLEM, 0, 1, 2, 2, 3, 2, 2, 2)
+ .withRaider(HOUNDMASTER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(KARATE, 0, 2, 3, 3, 2, 3, 3, 3)
+ .withRaider(ILLAGER_BRUTE, 0, 0, 1, 1, 2, 1, 1, 1)
+ .withRaider(SORCERER_ILLAGER, 0, 1, 2, 3, 2, 3, 2, 1)
+ .withRaider(WANDERING_ILLAGER, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(BRASHER, 0, 1, 2, 2, 1, 2, 2, 1)
+ .withRaider(BLUNTOLOGER, 0, 3, 2, 2, 3, 2, 2, 1)
+ .withRaider(CLEAVAGER, 0, 1, 2, 3, 2, 1, 2, 2)
+ .withRaider(SPEAROLOGER, 0, 1, 2, 1, 2, 1, 2, 1)
+ .withRaider(JUGGERNAUT, 0, 0, 2, 1, 1, 2, 1, 1)
+ .withRaider(BLUDGEONER, 0, 1, 0, 2, 1, 1, 2, 1)
+ .withRaider(GRINDICATOR, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(PATROLOGER, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(CHEFAGER, 0, 0, 1, 1, 2, 1, 0, 1)
+ .withRaider(GRINDICATOR_FRANCIS, 0, 0, 0, 0, 0, 1, 1, 1)
+ .withRaider(MAGE_FRANCIS, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(CHEFOLOGER, 0, 0, 1, 1, 1, 2, 0, 0)
+ .withRaider(PYROBANDIT, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(FIREOLOGER, 0, 0, 1, 2, 2, 2, 1, 1)
+ .withRaider(VRINCITADOR, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(SANDOLOGER, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(GRUMMICATOR, 0, 0, 0, 0, 1, 1, 1, 0)
+ .withRaider(VILER_WITCH, 0, 2, 2, 2, 2, 3, 2, 1)
+ .withRaider(PILLAGER_CAR, 0, 1, 1, 1, 1, 2, 2, 1)
+ .withRaider(PILLAGER_SOLDIER, 0, 2, 2, 3, 2, 3, 2, 2)
+ .withRaider(VINDICATOR_FLAMETHROWER,0, 1, 1, 2, 1, 2, 1, 1)
+ .withRaider(ASSAULT_PILLAGER, 0, 2, 3, 2, 2, 2, 2, 2)
+ .withRaider(PILLAGER_PLANE, 0, 1, 1, 1, 2, 2, 2, 1)
+ .withRaider(PILLAGER_CANNON, 0, 1, 1, 1, 2, 1, 2, 2)
+ .withRaider(WANDERING_TRAITOR, 0, 1, 2, 2, 3, 2, 2, 1)
+ .withRaider(DRUSKI, 0, 2, 3, 4, 3, 2, 3, 3)
+ .withRaider(LACHER, 0, 1, 2, 2, 2, 1, 2, 3)
+ .withRaider(CRISKO, 0, 3, 4, 3, 3, 3, 4, 3)
+ .withRaider(BLAKER, 0, 4, 4, 4, 3, 3, 3, 3)
+ .withRaider(TOXICIST, 0, 3, 3, 4, 3, 3, 3, 3)
+ .withRaider(REVENANT, 0, 0, 2, 1, 2, 1, 1, 1)
+ .withRaider(AMPI, 0, 0, 0, 1, 0, 0, 1, 0)
+ .withRaider(UPGRADER, 0, 1, 2, 2, 2, 1, 2, 2)
+ .withRaider(UPGRADER_GOLD, 0, 0, 1, 1, 2, 2, 1, 1)
+ .withRaider(UPGRADER_DIAMOND, 0, 0, 0, 1, 1, 1, 2, 1)
+ .withRaider(SHADOW_GOAT, 0, 2, 2, 3, 2, 2, 3, 1)
+ .withRaider(PRINZOLOGER, 0, 1, 2, 3, 2, 2, 2, 2)
+ .withRaider(CALLOLOGER, 0, 0, 2, 2, 3, 1, 2, 1)
+ .withRaider(PILLAGER_BOSS_MOD, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(VIRTUOSO_OF_VARIETY, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(MISCHIEVER, 0, 1, 2, 2, 3, 1, 2, 2)
+ .withRaider(WITHERMANCER, 0, 1, 3, 2, 2, 2, 1, 2)
+ .withRaider(DOODLER, 0, 0, 0, 1, 1, 1, 1, 1)
+ .withRaider(FANGCLAW, 0, 1, 2, 2, 1, 3, 1, 1)
+ .withRaider(SPARKOLOGER, 0, 2, 1, 2, 1, 2, 1, 1)
+ .withRaider(LIBRAVOKER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(BUBBLEOLOGER, 0, 0, 0, 1, 1, 1, 2, 1)
+ .withRaider(BASS_BLASTER, 0, 1, 1, 3, 1, 2, 2, 1)
+ .withRaider(IMPRECATOR, 0, 1, 2, 2, 1, 3, 1, 2)
+ .withRaider(MAGNETIZER, 0, 0, 1, 2, 2, 1, 1, 1)
+ .withRaider(PHOTOGRAPHER, 0, 1, 1, 2, 3, 1, 1, 0)
+ .withRaider(PARTYGER, 0, 0, 2, 1, 2, 3, 2, 2)
+ .withRaider(SWORD_PILLAGER, 0, 2, 3, 3, 2, 3, 3, 2)
+ .withRaider(SPEAR_PILLAGER, 0, 3, 2, 3, 3, 3, 3, 2)
+ .withRaider(HOG_RIDER, 0, 1, 2, 2, 2, 3, 2, 2)
+ .withRaider(COMMANDO, 0, 0, 0, 1, 1, 1, 0, 0)
+ .withRaider(FUSILIER, 0, 0, 1, 1, 0, 1, 0, 0)
+ .withRaider(BULWARK, 0, 0, 0, 1, 2, 0, 1, 0)
+ .withRaider(BALLOON_PILLAGER, 0, 1, 2, 1, 2, 1, 1, 1)
+ .withRaider(SILVERFISH_WRANGLER, 0, 1, 0, 1, 2, 0, 1, 1)
+ .withRaider(MISSIONARY, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(NECROMANCER_EIDOLON, 0, 0, 1, 1, 2, 1, 0, 1)
+ .withRaider(CLERIC, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(PIED_PIPER, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(WILD_CHEF, 0, 0, 1, 1, 1, 0, 1, 0)
+ .withRaider(TRUMPETER, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(BLASTER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(DEFECTOR, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(MAPMAKER, 0, 1, 1, 1, 1, 1, 0, 1)
+ .withRaider(BANNER_BEARER, 0, 1, 1, 1, 1, 1, 1, 0)
+ .withRaider(EXECUTIONER_JEROTES, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(EXPLORER, 0, 1, 1, 1, 1, 1, 1, 0)
+ .withRaider(SLAVERY_SUPERVISOR, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(CYCLONER, 0, 1, 1, 0, 1, 1, 1, 0)
+ .withRaider(JAVELIN_THROWER, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(ZOMBIE_KEEPER, 0, 1, 1, 1, 1, 1, 0, 1)
+ .withRaider(WILD_FINDER, 0, 1, 1, 2, 1, 0, 1, 0)
+ .withRaider(SUBMARINER, 0, 1, 1, 1, 1, 1, 0, 1)
+ .withRaider(SPIRVE, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(TELEPORTER, 0, 0, 1, 1, 1, 0, 1, 1)
+ .withRaider(LAMP_WIZARD, 0, 1, 0, 1, 1, 1, 1, 0)
+ .withRaider(BITTER_COLD_SORCERER, 0, 0, 1, 0, 1, 1, 0, 1)
+ .withRaider(FIRE_SPITTER, 0, 1, 1, 0, 0, 1, 1, 0)
+ .withRaider(PURPLE_SAND_WITCH, 0, 0, 0, 1, 1, 0, 1, 0)
+ .withRaider(WITCH_SCHOLAR, 0, 0, 1, 1, 2, 1, 1, 1)
+ .withRaider(AX_CRAZY, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(PURPLE_SAND_HAG, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(NECROMANCY_WARLOCK, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(GAVILER, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(BIG_WITCH, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(FIREPOWER_POURER, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(OMINOUS_BANNER_PROJ, 0, 0, 0, 0, 1, 1, 0, 0)
+ .withRaider(COHORT_HAG, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(BUGLER, 0, 0, 1, 1, 2, 1, 1, 1)
+ .withRaider(ARMORER, 0, 1, 1, 2, 1, 1, 1, 1)
+ .withRaider(BIOLOGIST, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(HUNTER_API, 0, 0, 1, 0, 1, 2, 1, 0)
+ .withRaider(MOURNER, 0, 1, 0, 1, 0, 1, 0, 1)
+ .withRaider(ABOMINATION, 0, 0, 1, 2, 1, 1, 2, 0)
+ .withRaider(DRUNKENNESS, 0, 1, 0, 1, 2, 0, 1, 1)
+ .withRaider(FLAGMAN, 0, 0, 1, 2, 1, 1, 0, 1)
+ .withRaider(INTRUDER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(GRAVE_KEEPER, 0, 0, 0, 1, 0, 1, 1, 0)
+ .withRaider(ROOST_RIDER, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(MECHASENT, 0, 0, 0, 0, 1, 1, 0, 1)
+ .withRaider(THALASSOGER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(ELITE_VINDICATOR, 0, 1, 0, 1, 1, 0, 0, 1)
+ .withRaider(RETALIATOR, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(CRINDICATOR, 0, 0, 1, 1, 0, 1, 0, 1)
+ .withRaider(ELITE_PILLAGER, 0, 1, 1, 1, 1, 1, 1, 0)
+ .withRaider(RAVAGER_RIDER, 0, 0, 1, 0, 1, 0, 1, 0)
+ .withRaider(NUN, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(SHYLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_DRAMATIST, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(SPELL_SWORD, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(PSYCHC_W, 0, 0, 0, 1, 1, 0, 0, 0)
+ .withRaider(PSYCHIC_M, 0, 0, 1, 0, 1, 0, 0, 0)
+ .withRaider(HEADSMAN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_BIG_NUN, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(AWAKEN_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(DRAMATIST, 0, 0, 0, 1, 0, 0, 0, 0)
+ .withRaider(EARL, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(FLY_EARL, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(OCEANOLOGER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(CONQUEROR, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(TRAVELER, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(BLOWER, 0, 1, 1, 1, 1, 0, 1, 1)
+ .withRaider(STABBER, 0, 1, 1, 1, 0, 1, 1, 1)
+ .withRaider(HARVESTER, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(MECHA_PILLAGER, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(MECHA_VINDICATOR, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(CRUSHER_RESILIANCE, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(CLASHAGER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(SHIVERGER, 0, 0, 0, 1, 1, 1, 0, 1)
+ .withRaider(GUARDIAN, 0, 0, 0, 0, 1, 1, 1, 1)
+ .withRaider(ASSAILANT, 0, 0, 1, 1, 2, 1, 1, 1)
+ .withRaider(HARRIER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(PREACHER_VINDICATION, 0, 1, 1, 1, 2, 2, 1, 1)
+ .withRaider(BLACKMASTER, 0, 1, 0, 1, 1, 1, 0, 1)
+ .withRaider(PLANNER, 0, 1, 1, 1, 1, 1, 1, 1)
+ .withRaider(VISOLOGER, 0, 1, 1, 0, 1, 1, 1, 1)
+ .withRaider(INTRUDER_VINDICATION, 0, 1, 1, 1, 2, 1, 1, 0)
+ .withRaider(VOLTOLOGER, 0, 1, 1, 1, 0, 1, 0, 1)
+ .withRaider(SMITHER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(RAGER, 0, 0, 1, 1, 1, 2, 2, 1)
+ .withRaider(PATROL_CAPTAIN, 0, 1, 0, 0, 1, 1, 1, 1)
+ .withRaider(RAIDER_RANDOMIZER, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(VINDICATOR_CHEF, 0, 1, 1, 2, 2, 1, 2, 1)
+ .withRaider(HOSTILE_ROYAL_GUARD, 0, 0, 1, 1, 1, 2, 1, 0)
.withEliteWave(1, NUAOS_ELITE.get(), VOLDON_ELITE.get())
.withEliteWave(3, NUAOS_ELITE.get(), VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
.withEliteWave(5, XYDRAX_ELITE.get(), MODUR_ELITE.get())
@@ -367,60 +1528,297 @@ public static void registerWaves()
.registerDefault();
RaidEnemyRegistry.createDefaultWavesFor(RaidDifficulty.GRANDMASTER)
- .withRaider(PILLAGER, 0, 6, 7, 6, 7, 7, 6, 6)
- .withRaider(VINDICATOR, 0, 4, 3, 4, 4, 3, 4, 5)
- .withRaider(WARRIOR, 0, 4, 2, 4, 4, 3, 5, 5)
- .withRaider(SKIRMISHER, 0, 2, 2, 4, 3, 5, 2, 5)
- .withRaider(TANK, 0, 2, 2, 3, 4, 4, 4, 4)
- .withRaider(LEGIONER, 0, 1, 2, 3, 2, 4, 3, 5)
- .withRaider(DART, 0, 0, 2, 2, 2, 2, 3, 4)
- .withRaider(HUNTER, 0, 3, 4, 4, 4, 5, 3, 4)
- .withRaider(ARCHER, 0, 3, 3, 5, 4, 5, 5, 7)
- .withRaider(WITCH, 0, 1, 3, 5, 4, 5, 3, 3)
- .withRaider(RAVAGER, 0, 1, 1, 1, 0, 3, 1, 3)
- .withRaider(ILLUSIONER, 0, 0, 1, 2, 1, 1, 2, 3)
- .withRaider(ASSASSIN, 0, 2, 2, 2, 2, 2, 2, 2)
- .withRaider(EVOKER, 0, 1, 2, 3, 4, 1, 1, 3)
- .withRaider(CONDUCTOR, 0, 1, 2, 0, 1, 2, 2, 3)
- .withRaider(NECROMANCER, 0, 1, 0, 3, 1, 2, 0, 3)
- .withRaider(ASHENMANCER, 0, 1, 1, 3, 1, 3, 1, 3)
- .withRaider(FROSTMAGE, 0, 1, 0, 0, 1, 2, 4, 3)
- .withRaider(SHAMAN, 0, 2, 2, 2, 2, 3, 3, 3)
- .withRaider(ENCHANTER, 0, 1, 1, 1, 1, 1, 1, 3)
- .withRaider(IGNITER, 0, 3, 2, 4, 3, 4, 3, 6)
- .withRaider(TWITTOLLAGER, 0, 1, 3, 1, 3, 2, 2, 3)
- .withRaider(PRESERVER, 0, 2, 2, 2, 2, 2, 4, 4)
- .withRaider(ABSORBER, 0, 1, 1, 1, 2, 1, 1, 3)
- .withRaider(CROCOFANG, 0, 2, 2, 3, 2, 4, 2, 5)
- .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
- .withRaider(BOSS_RANDOMIZER, 0, 1, 1, 1, 1, 1, 1, 1)
- .withRaider(GRIEFER, 0, 2, 3, 2, 3, 3, 3, 4)
- .withRaider(EXECUTIONER, 0, 2, 2, 2, 3, 2, 3, 4)
- .withRaider(TRICKSTER, 0, 1, 2, 1, 2, 2, 2, 3)
- .withRaider(ICEOLOGER_SR, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(MOUNTAINEER, 0, 3, 4, 5, 2, 7, 4, 7)
- .withRaider(ROYAL_GUARD, 0, 2, 2, 3, 2, 4, 3, 5)
- .withRaider(GEOMANCER, 0, 2, 1, 3, 2, 3, 1, 3)
- .withRaider(ILLUSIONER_DM, 0, 1, 2, 2, 2, 3, 2, 3)
- .withRaider(MAGE, 0, 1, 2, 2, 1, 3, 1, 3)
- .withRaider(ICEOLOGER_DM, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(WINDCALLER, 0, 1, 2, 3, 2, 3, 2, 3)
- .withRaider(SQUALL_GOLEM, 0, 1, 2, 2, 2, 3, 2, 3)
- .withRaider(REDSTONE_GOLEM, 0, 1, 1, 3, 1, 3, 1, 3)
- .withRaider(BLADE_KNIGHT, 0, 1, 1, 1, 1, 1, 1, 2)
- .withRaider(BEAST_TAMER, 0, 1, 2, 0, 2, 1, 2, 1)
- .withRaider(SCAVENGER, 0, 2, 2, 2, 3, 2, 3, 4)
- .withRaider(LIGHTNINGCALLER, 0, 0, 0, 1, 1, 0, 0, 1)
- .withRaider(CLOWNAGER, 0, 0, 1, 0, 0, 1, 1, 0)
- .withRaider(CONFUSER, 0, 1, 1, 2, 1, 3, 1, 3)
- .withRaider(SHIELD_VINDICATOR, 0, 2, 2, 2, 2, 3, 2, 3)
- .withRaider(METEORITE_CALLER, 0, 0, 1, 1, 1, 2, 0, 2)
- .withRaider(SNOWOLAGER, 0, 1, 2, 3, 1, 3, 1, 3)
- .withRaider(NECROMANCER_LEO, 0, 1, 1, 1, 1, 1, 1, 2)
- .withRaider(SUMMONER, 0, 1, 1, 1, 2, 3, 2, 2)
- .withRaider(TROUBLEMAKER, 0, 3, 2, 3, 2, 3, 2, 3)
+ .withRaider(PILLAGER, 0, 6, 7, 6, 7, 7, 6, 6)
+ .withRaider(VINDICATOR, 0, 4, 3, 4, 4, 3, 4, 5)
+ .withRaider(WARRIOR, 0, 4, 2, 4, 4, 3, 5, 5)
+ .withRaider(SKIRMISHER, 0, 2, 2, 4, 3, 5, 2, 5)
+ .withRaider(TANK, 0, 2, 2, 3, 4, 4, 4, 4)
+ .withRaider(LEGIONER, 0, 1, 2, 3, 2, 4, 3, 5)
+ .withRaider(DART, 0, 0, 2, 2, 2, 2, 3, 4)
+ .withRaider(HUNTER, 0, 3, 4, 4, 4, 5, 3, 4)
+ .withRaider(ARCHER, 0, 3, 3, 5, 4, 5, 5, 7)
+ .withRaider(WITCH, 0, 1, 3, 5, 4, 5, 3, 3)
+ .withRaider(RAVAGER, 0, 1, 1, 1, 0, 3, 1, 3)
+ .withRaider(ILLUSIONER, 0, 0, 1, 2, 1, 1, 2, 3)
+ .withRaider(ASSASSIN, 0, 2, 2, 2, 2, 2, 2, 2)
+ .withRaider(EVOKER, 0, 1, 2, 3, 4, 1, 1, 3)
+ .withRaider(CONDUCTOR, 0, 1, 2, 0, 1, 2, 2, 3)
+ .withRaider(NECROMANCER, 0, 1, 0, 3, 1, 2, 0, 3)
+ .withRaider(ASHENMANCER, 0, 1, 1, 3, 1, 3, 1, 3)
+ .withRaider(FROSTMAGE, 0, 1, 0, 0, 1, 2, 4, 3)
+ .withRaider(SHAMAN, 0, 2, 2, 2, 2, 3, 3, 3)
+ .withRaider(ENCHANTER, 0, 1, 1, 1, 1, 1, 1, 3)
+ .withRaider(IGNITER, 0, 3, 2, 4, 3, 4, 3, 6)
+ .withRaider(TWITTOLLAGER, 0, 1, 3, 1, 3, 2, 2, 3)
+ .withRaider(PRESERVER, 0, 2, 2, 2, 2, 2, 4, 4)
+ .withRaider(ABSORBER, 0, 1, 1, 1, 2, 1, 1, 3)
+ .withRaider(CROCOFANG, 0, 2, 2, 3, 2, 4, 2, 5)
+ .withRaider(ENGINEER, 0, 1, 1, 2, 0, 1, 2, 2)
+ .withRaider(MAGISPELLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(SPIRITCALLER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(FREAKAGER, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(BOSS_RANDOMIZER, 0, 0, 1, 1, 0, 2, 2, 2)
+ .withRaider(GRIEFER, 0, 2, 3, 2, 3, 3, 3, 4)
+ .withRaider(EXECUTIONER, 0, 2, 2, 2, 3, 2, 3, 4)
+ .withRaider(TRICKSTER, 0, 1, 2, 1, 2, 2, 2, 3)
+ .withRaider(ICEOLOGER_SR, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(MOUNTAINEER, 0, 3, 4, 5, 2, 7, 4, 7)
+ .withRaider(ROYAL_GUARD, 0, 2, 2, 3, 2, 4, 3, 5)
+ .withRaider(GEOMANCER, 0, 2, 1, 3, 2, 3, 1, 3)
+ .withRaider(ILLUSIONER_DM, 0, 1, 2, 2, 2, 3, 2, 3)
+ .withRaider(MAGE, 0, 1, 2, 2, 1, 3, 1, 3)
+ .withRaider(ICEOLOGER_DM, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(WINDCALLER, 0, 1, 2, 3, 2, 3, 2, 3)
+ .withRaider(SQUALL_GOLEM, 0, 1, 2, 2, 2, 3, 2, 3)
+ .withRaider(REDSTONE_GOLEM, 0, 1, 1, 3, 1, 3, 1, 3)
+ .withRaider(BLADE_KNIGHT, 0, 1, 1, 1, 1, 1, 1, 2)
+ .withRaider(BEAST_TAMER, 0, 1, 2, 0, 2, 1, 2, 1)
+ .withRaider(SCAVENGER, 0, 2, 2, 2, 3, 2, 3, 4)
+ .withRaider(SOUL_SAGE, 0, 0, 1, 2, 1, 2, 1, 2)
+ .withRaider(ACOLYTE, 0, 1, 2, 2, 3, 3, 2, 3)
+ .withRaider(BULKWARK, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(LIGHTNINGCALLER, 0, 0, 0, 1, 1, 0, 0, 1)
+ .withRaider(CLOWNAGER, 0, 0, 1, 0, 0, 1, 1, 0)
+ .withRaider(CONFUSER, 0, 1, 1, 2, 1, 3, 1, 3)
+ .withRaider(SHIELD_VINDICATOR, 0, 2, 2, 2, 2, 3, 2, 3)
+ .withRaider(METEORITE_CALLER, 0, 0, 1, 1, 1, 2, 0, 2)
+ .withRaider(SNOWOLAGER, 0, 1, 2, 3, 1, 3, 1, 3)
+ .withRaider(NECROMANCER_LEO, 0, 1, 1, 1, 1, 1, 1, 2)
+ .withRaider(SUMMONER, 0, 1, 1, 1, 2, 3, 2, 2)
+ .withRaider(TROUBLEMAKER, 0, 3, 2, 3, 2, 3, 2, 3)
+ .withRaider(CONJURER, 0, 1, 1, 0, 1, 2, 1, 2)
+ .withRaider(NECROMANCER_MOD, 0, 1, 2, 1, 0, 1, 2, 2)
+ .withRaider(SINISTER, 0, 0, 0, 1, 1, 0, 1, 2)
+ .withRaider(SHADOMANCER, 0, 0, 1, 1, 0, 0, 1, 0)
+ .withRaider(RHINAGER, 0, 0, 1, 2, 0, 2, 1, 2)
+ .withRaider(ARCHEVOKER, 0, 0, 1, 2, 1, 1, 0, 0)
+ .withRaider(GAMBLER, 0, 0, 1, 0, 1, 2, 0, 0)
+ .withRaider(GUARD_ILLAGER, 0, 3, 6, 4, 3, 5, 4, 4)
+ .withRaider(ROYAL_GUARD_SPEAR, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(SPEARMAN, 0, 1, 2, 2, 1, 0, 1, 1)
+ .withRaider(SAMURAI, 0, 0, 1, 2, 1, 1, 2, 1)
+ .withRaider(BEAMLOGER, 0, 1, 1, 1, 1, 2, 1, 0)
+ .withRaider(COWBOY, 0, 0, 2, 1, 2, 1, 1, 0)
+ .withRaider(SHOGUN, 0, 0, 1, 1, 2, 0, 1, 1)
+ .withRaider(SPIDER_MAGE, 0, 2, 3, 2, 2, 0, 1, 2)
+ .withRaider(ZOMBIE_MAGE, 0, 1, 2, 3, 2, 1, 2, 1)
+ .withRaider(PILLAGER_BOSS, 0, 0, 1, 1, 1, 0, 0, 1)
+ .withRaider(ILLUSIONER_MOBZ, 0, 1, 1, 2, 2, 3, 0, 2)
+ .withRaider(BABY_RAVAGER, 0, 4, 5, 3, 5, 4, 3, 5)
+ .withRaider(PROVOKER, 0, 1, 1, 3, 2, 1, 1, 0)
+ .withRaider(INQUISITOR, 0, 0, 1, 1, 2, 1, 0, 0)
+ .withRaider(MARAUDER, 0, 1, 1, 2, 1, 1, 0, 3)
+ .withRaider(BASHER, 0, 0, 1, 2, 3, 1, 2, 1)
+ .withRaider(FIRECALLER, 0, 1, 2, 1, 0, 2, 0, 2)
+ .withRaider(NECROMANCER_INV, 0, 1, 1, 2, 2, 0, 1, 0)
+ .withRaider(ALCHEMIST, 0, 1, 2, 3, 1, 1, 1, 1)
+ .withRaider(SORCERER, 0, 2, 1, 1, 2, 1, 0, 2)
+ .withRaider(ARCHIVIST, 0, 1, 1, 3, 2, 1, 0, 1)
+ .withRaider(INVOKER, 0, 0, 0, 1, 1, 1, 0, 1)
+ .withRaider(WARLOCK, 0, 2, 1, 2, 3, 1, 2, 1)
+ .withRaider(MAVERICK, 0, 1, 2, 2, 1, 3, 1, 0)
+ .withRaider(HERETIC, 0, 2, 3, 1, 3, 1, 1, 2)
+ .withRaider(PIKER, 0, 5, 5, 4, 5, 5, 4, 4)
+ .withRaider(RIPPER, 0, 1, 2, 4, 3, 3, 2, 1)
+ .withRaider(CRUSHER, 0, 3, 4, 3, 4, 3, 4, 3)
+ .withRaider(STORM_CASTER, 0, 1, 2, 1, 1, 2, 2, 1)
+ .withRaider(CRYOLOGER, 0, 1, 1, 1, 3, 1, 2, 2)
+ .withRaider(PREACHER, 0, 1, 2, 3, 3, 2, 2, 2)
+ .withRaider(CONQUILLAGER, 0, 3, 3, 4, 2, 2, 2, 2)
+ .withRaider(INQUILLAGER, 0, 2, 3, 1, 2, 1, 0, 1)
+ .withRaider(ENVIOKER, 0, 1, 2, 3, 2, 2, 2, 1)
+ .withRaider(SORCERER_GOETY, 0, 1, 2, 1, 2, 2, 2, 1)
+ .withRaider(HOSTILE_RED_GOLEM, 0, 1, 2, 2, 1, 3, 2, 1)
+ .withRaider(HOSTILE_RED_MONSTER, 0, 0, 0, 1, 2, 1, 2, 1)
+ .withRaider(MINISTER, 0, 1, 3, 2, 1, 2, 2, 1)
+ .withRaider(TRAMPLER, 0, 1, 2, 3, 4, 2, 2, 3)
+ .withRaider(VIZIER, 0, 0, 0, 1, 0, 1, 1, 2)
+ .withRaider(APOSTLE, 0, 0, 0, 0, 1, 1, 0, 2)
+ .withRaider(THE_SUMMONER, 0, 2, 2, 1, 2, 3, 1, 2)
+ .withRaider(THE_SUMMONER_BOSS, 0, 0, 0, 1, 1, 1, 0, 2)
+ .withRaider(NECROMANCER_BONES, 0, 1, 2, 2, 1, 2, 1, 2)
+ .withRaider(MODIFIGER, 0, 2, 2, 3, 2, 3, 3, 3)
+ .withRaider(MARKSMAN, 0, 2, 2, 3, 4, 3, 2, 2)
+ .withRaider(MASQUERADER, 0, 1, 0, 0, 3, 0, 0, 0)
+ .withRaider(TENGU, 0, 2, 3, 4, 2, 2, 3, 2)
+ .withRaider(NINJAR, 0, 2, 3, 2, 3, 2, 3, 2)
+ .withRaider(NECROMANCER_RAIDED, 0, 2, 2, 3, 1, 0, 1, 2)
+ .withRaider(ELECTROMANCER_RAIDED, 0, 2, 3, 2, 2, 2, 2, 2)
+ .withRaider(SAVAGER, 0, 2, 3, 4, 3, 4, 3, 2)
+ .withRaider(INCINERATOR, 0, 1, 2, 1, 2, 2, 2, 2)
+ .withRaider(INQUISITOR_RAIDED, 0, 2, 2, 3, 3, 3, 2, 4)
+ .withRaider(GUNILLAGER, 0, 1, 3, 2, 2, 3, 1, 1)
+ .withRaider(ILLIGEVE, 0, 1, 1, 2, 1, 0, 2, 1)
+ .withRaider(SURPRISER, 0, 1, 1, 2, 2, 1, 1, 2)
+ .withRaider(ROCKETILLAGER, 0, 0, 1, 2, 1, 1, 2, 1)
+ .withRaider(CREEPILLAGER, 0, 0, 0, 0, 1, 1, 1, 1)
+ .withRaider(MONSTERILLAGER, 0, 0, 0, 1, 1, 0, 1, 1)
+ .withRaider(BLADE_MASTER, 0, 1, 2, 3, 2, 1, 2, 2)
+ .withRaider(ICEOLOGER_FF, 0, 2, 2, 3, 2, 1, 2, 1)
+ .withRaider(PILLAGER_BRUTE, 0, 1, 1, 2, 2, 1, 2, 3)
+ .withRaider(CRAZED, 0, 1, 2, 3, 2, 1, 2, 1)
+ .withRaider(CABBAGER, 0, 2, 3, 2, 2, 2, 3, 2)
+ .withRaider(PHANTOM_TAMER, 0, 1, 2, 2, 2, 2, 2, 3)
+ .withRaider(T_RABUS, 0, 0, 0, 1, 1, 1, 1, 1)
+ .withRaider(CYBORG_VINDICATOR, 0, 0, 1, 1, 0, 1, 1, 2)
+ .withRaider(CRUDE_RED_GOLEM, 0, 0, 1, 1, 1, 0, 2, 1)
+ .withRaider(CRUDE_RED_MONSTROSITY, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(RED_MONSTROSITY_CSM, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(MINI_CRUDE_RED_GOLEM, 0, 2, 3, 3, 4, 3, 2, 3)
+ .withRaider(HOUNDMASTER, 0, 2, 3, 2, 2, 1, 2, 2)
+ .withRaider(KARATE, 0, 3, 4, 4, 3, 4, 4, 4)
+ .withRaider(ILLAGER_BRUTE, 0, 0, 2, 2, 3, 1, 2, 1)
+ .withRaider(SORCERER_ILLAGER, 0, 2, 3, 4, 2, 3, 3, 2)
+ .withRaider(WANDERING_ILLAGER, 0, 1, 2, 1, 2, 3, 1, 4)
+ .withRaider(BRASHER, 0, 1, 3, 3, 3, 2, 3, 2)
+ .withRaider(BLUNTOLOGER, 0, 3, 4, 3, 4, 3, 3, 5)
+ .withRaider(CLEAVAGER, 0, 2, 3, 4, 3, 2, 2, 3)
+ .withRaider(SPEAROLOGER, 0, 1, 3, 2, 2, 3, 2, 1)
+ .withRaider(JUGGERNAUT, 0, 1, 2, 2, 3, 2, 1, 1)
+ .withRaider(BLUDGEONER, 0, 1, 1, 2, 2, 2, 2, 1)
+ .withRaider(GRINDICATOR, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(PATROLOGER, 0, 1, 1, 1, 1, 2, 1, 1)
+ .withRaider(CHEFAGER, 0, 1, 1, 2, 2, 1, 1, 2)
+ .withRaider(GRINDICATOR_FRANCIS, 0, 0, 0, 1, 0, 1, 1, 1)
+ .withRaider(MAGE_FRANCIS, 0, 1, 2, 2, 1, 2, 3, 1)
+ .withRaider(CHEFOLOGER, 0, 0, 1, 1, 2, 2, 0, 1)
+ .withRaider(PYROBANDIT, 0, 1, 0, 1, 1, 2, 1, 0)
+ .withRaider(FIREOLOGER, 0, 1, 2, 2, 2, 3, 1, 1)
+ .withRaider(VRINCITADOR, 0, 0, 1, 2, 1, 1, 1, 1)
+ .withRaider(SANDOLOGER, 0, 1, 2, 1, 2, 2, 1, 2)
+ .withRaider(GRUMMICATOR, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(VILER_WITCH, 0, 2, 3, 2, 3, 4, 2, 2)
+ .withRaider(PILLAGER_CAR, 0, 1, 2, 2, 1, 2, 2, 1)
+ .withRaider(PILLAGER_SOLDIER, 0, 2, 3, 3, 3, 4, 3, 3)
+ .withRaider(VINDICATOR_FLAMETHROWER,0, 1, 2, 3, 2, 2, 2, 1)
+ .withRaider(ASSAULT_PILLAGER, 0, 3, 4, 3, 3, 3, 4, 4)
+ .withRaider(PILLAGER_PLANE, 0, 1, 2, 3, 3, 4, 2, 2)
+ .withRaider(PILLAGER_CANNON, 0, 1, 2, 2, 2, 3, 2, 2)
+ .withRaider(WANDERING_TRAITOR, 0, 1, 2, 3, 4, 3, 2, 2)
+ .withRaider(DRUSKI, 0, 2, 4, 5, 3, 3, 3, 3)
+ .withRaider(LACHER, 0, 1, 3, 3, 2, 2, 3, 3)
+ .withRaider(CRISKO, 0, 4, 4, 3, 4, 4, 4, 3)
+ .withRaider(BLAKER, 0, 4, 5, 4, 4, 4, 3, 5)
+ .withRaider(TOXICIST, 0, 3, 4, 5, 3, 4, 3, 4)
+ .withRaider(REVENANT, 0, 1, 2, 2, 3, 1, 2, 3)
+ .withRaider(AMPI, 0, 0, 1, 1, 0, 1, 1, 1)
+ .withRaider(UPGRADER, 0, 2, 3, 3, 3, 2, 3, 4)
+ .withRaider(UPGRADER_GOLD, 0, 1, 1, 2, 2, 3, 2, 3)
+ .withRaider(UPGRADER_DIAMOND, 0, 1, 1, 1, 2, 2, 3, 2)
+ .withRaider(SHADOW_GOAT, 0, 3, 3, 4, 3, 3, 4, 2)
+ .withRaider(PRINZOLOGER, 0, 2, 2, 3, 2, 3, 3, 2)
+ .withRaider(CALLOLOGER, 0, 1, 2, 2, 3, 2, 3, 1)
+ .withRaider(PILLAGER_BOSS_MOD, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(VIRTUOSO_OF_VARIETY, 0, 0, 0, 1, 0, 1, 0, 1)
+ .withRaider(MISCHIEVER, 0, 2, 2, 3, 3, 2, 2, 2)
+ .withRaider(WITHERMANCER, 0, 1, 3, 2, 3, 2, 2, 2)
+ .withRaider(DOODLER, 0, 0, 1, 1, 2, 1, 2, 1)
+ .withRaider(FANGCLAW, 0, 1, 3, 3, 1, 3, 2, 2)
+ .withRaider(SPARKOLOGER, 0, 3, 2, 2, 2, 2, 2, 2)
+ .withRaider(LIBRAVOKER, 0, 2, 2, 2, 2, 2, 2, 2)
+ .withRaider(BUBBLEOLOGER, 0, 0, 1, 1, 2, 2, 2, 2)
+ .withRaider(BASS_BLASTER, 0, 2, 2, 3, 2, 3, 2, 2)
+ .withRaider(IMPRECATOR, 0, 1, 2, 2, 1, 3, 1, 2)
+ .withRaider(MAGNETIZER, 0, 1, 2, 3, 2, 2, 1, 1)
+ .withRaider(PHOTOGRAPHER, 0, 1, 2, 2, 3, 2, 2, 1)
+ .withRaider(PARTYGER, 0, 1, 2, 2, 3, 3, 2, 3)
+ .withRaider(SWORD_PILLAGER, 0, 3, 4, 4, 3, 4, 4, 3)
+ .withRaider(SPEAR_PILLAGER, 0, 4, 3, 4, 4, 4, 4, 3)
+ .withRaider(HOG_RIDER, 0, 2, 3, 2, 3, 4, 3, 3)
+ .withRaider(COMMANDO, 0, 1, 1, 1, 1, 1, 0, 1)
+ .withRaider(FUSILIER, 0, 0, 1, 2, 1, 1, 0, 0)
+ .withRaider(BULWARK, 0, 1, 0, 1, 2, 0, 1, 0)
+ .withRaider(BALLOON_PILLAGER, 0, 2, 2, 2, 2, 1, 2, 1)
+ .withRaider(SILVERFISH_WRANGLER, 0, 1, 1, 2, 2, 0, 1, 1)
+ .withRaider(MISSIONARY, 0, 0, 1, 1, 1, 0, 1, 2)
+ .withRaider(NECROMANCER_EIDOLON, 0, 0, 1, 1, 2, 1, 0, 1)
+ .withRaider(CLERIC, 0, 1, 0, 1, 1, 2, 1, 1)
+ .withRaider(PIED_PIPER, 0, 1, 1, 2, 1, 1, 1, 1)
+ .withRaider(WILD_CHEF, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(TRUMPETER, 0, 1, 2, 1, 1, 1, 1, 0)
+ .withRaider(BLASTER, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(DEFECTOR, 0, 1, 1, 2, 1, 2, 1, 1)
+ .withRaider(MAPMAKER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(BANNER_BEARER, 0, 2, 1, 2, 1, 2, 1, 0)
+ .withRaider(EXECUTIONER_JEROTES, 0, 1, 2, 1, 1, 1, 0, 1)
+ .withRaider(EXPLORER, 0, 1, 1, 2, 1, 1, 1, 2)
+ .withRaider(SLAVERY_SUPERVISOR, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(CYCLONER, 0, 1, 2, 1, 1, 1, 1, 2)
+ .withRaider(JAVELIN_THROWER, 0, 1, 1, 1, 2, 1, 2, 1)
+ .withRaider(ZOMBIE_KEEPER, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(WILD_FINDER, 0, 2, 1, 2, 1, 0, 1, 0)
+ .withRaider(SUBMARINER, 0, 1, 2, 1, 1, 1, 0, 1)
+ .withRaider(SPIRVE, 0, 1, 1, 1, 1, 2, 1, 0)
+ .withRaider(TELEPORTER, 0, 1, 1, 2, 1, 0, 1, 1)
+ .withRaider(LAMP_WIZARD, 0, 1, 1, 1, 1, 2, 1, 0)
+ .withRaider(BITTER_COLD_SORCERER, 0, 0, 2, 1, 1, 1, 0, 1)
+ .withRaider(FIRE_SPITTER, 0, 1, 1, 1, 0, 1, 1, 0)
+ .withRaider(PURPLE_SAND_WITCH, 0, 0, 0, 1, 2, 0, 1, 0)
+ .withRaider(WITCH_SCHOLAR, 0, 0, 1, 1, 2, 1, 1, 1)
+ .withRaider(AX_CRAZY, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(PURPLE_SAND_HAG, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(NECROMANCY_WARLOCK, 0, 0, 0, 0, 1, 0, 1, 0)
+ .withRaider(GAVILER, 0, 0, 0, 0, 0, 1, 1, 0)
+ .withRaider(BIG_WITCH, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(FIREPOWER_POURER, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(OMINOUS_BANNER_PROJ, 0, 0, 0, 1, 1, 1, 1, 0)
+ .withRaider(COHORT_HAG, 0, 0, 1, 0, 0, 0, 1, 0)
+ .withRaider(BUGLER, 0, 1, 2, 1, 2, 1, 1, 1)
+ .withRaider(ARMORER, 0, 1, 1, 2, 2, 1, 2, 1)
+ .withRaider(BIOLOGIST, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(HUNTER_API, 0, 0, 1, 1, 1, 2, 1, 0)
+ .withRaider(MOURNER, 0, 1, 1, 1, 0, 1, 0, 1)
+ .withRaider(ABOMINATION, 0, 0, 2, 2, 1, 1, 2, 0)
+ .withRaider(DRUNKENNESS, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(FLAGMAN, 0, 0, 1, 2, 2, 1, 0, 1)
+ .withRaider(INTRUDER, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(GRAVE_KEEPER, 0, 0, 0, 1, 0, 1, 1, 1)
+ .withRaider(ROOST_RIDER, 0, 1, 1, 2, 1, 1, 1, 0)
+ .withRaider(MECHASENT, 0, 0, 0, 0, 1, 2, 0, 1)
+ .withRaider(THALASSOGER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(ELITE_VINDICATOR, 0, 1, 1, 1, 1, 0, 1, 1)
+ .withRaider(RETALIATOR, 0, 0, 1, 1, 1, 1, 1, 0)
+ .withRaider(CRINDICATOR, 0, 0, 1, 1, 1, 1, 0, 1)
+ .withRaider(ELITE_PILLAGER, 0, 1, 1, 2, 1, 1, 1, 0)
+ .withRaider(RAVAGER_RIDER, 0, 0, 1, 0, 1, 1, 1, 1)
+ .withRaider(NUN, 0, 0, 0, 0, 0, 0, 0, 1)
+ .withRaider(SHYLOCK, 0, 0, 0, 0, 0, 0, 0, 0)
+ .withRaider(NEW_DRAMATIST, 0, 0, 0, 1, 0, 1, 0, 0)
+ .withRaider(SPELL_SWORD, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(PSYCHC_W, 0, 1, 0, 1, 1, 0, 1, 0)
+ .withRaider(PSYCHIC_M, 0, 0, 1, 0, 1, 1, 0, 0)
+ .withRaider(HEADSMAN, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(NEW_BIG_NUN, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(AWAKEN_EARL, 0, 0, 0, 0, 0, 0, 1, 0)
+ .withRaider(DRAMATIST, 0, 0, 1, 1, 0, 0, 0, 0)
+ .withRaider(EARL, 0, 0, 0, 1, 0, 0, 0, 1)
+ .withRaider(FLY_EARL, 0, 0, 0, 0, 1, 0, 0, 0)
+ .withRaider(OCEANOLOGER, 0, 1, 2, 2, 2, 2, 2, 2)
+ .withRaider(CONQUEROR, 0, 0, 0, 0, 0, 1, 0, 0)
+ .withRaider(TRAVELER, 0, 0, 0, 0, 1, 0, 0, 1)
+ .withRaider(BLOWER, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(STABBER, 0, 1, 1, 2, 1, 1, 2, 1)
+ .withRaider(HARVESTER, 0, 1, 1, 1, 2, 1, 1, 2)
+ .withRaider(MECHA_PILLAGER, 0, 0, 0, 0, 1, 0, 1, 1)
+ .withRaider(MECHA_VINDICATOR, 0, 0, 0, 0, 0, 1, 0, 1)
+ .withRaider(CRUSHER_RESILIANCE, 0, 1, 1, 2, 2, 1, 1, 2)
+ .withRaider(CLASHAGER, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(SHIVERGER, 0, 1, 0, 1, 1, 1, 0, 2)
+ .withRaider(GUARDIAN, 0, 0, 1, 0, 1, 1, 1, 2)
+ .withRaider(ASSAILANT, 0, 1, 1, 1, 2, 1, 2, 1)
+ .withRaider(HARRIER, 0, 1, 2, 2, 1, 1, 2, 1)
+ .withRaider(PREACHER_VINDICATION, 0, 1, 1, 2, 2, 3, 1, 1)
+ .withRaider(BLACKMASTER, 0, 1, 1, 2, 1, 1, 0, 1)
+ .withRaider(PLANNER, 0, 1, 2, 1, 1, 2, 1, 1)
+ .withRaider(VISOLOGER, 0, 1, 1, 1, 2, 1, 1, 1)
+ .withRaider(INTRUDER_VINDICATION, 0, 1, 1, 1, 2, 2, 1, 1)
+ .withRaider(VOLTOLOGER, 0, 1, 1, 2, 1, 1, 0, 1)
+ .withRaider(SMITHER, 0, 1, 2, 1, 1, 1, 1, 1)
+ .withRaider(RAGER, 0, 1, 1, 1, 2, 3, 2, 3)
+ .withRaider(PATROL_CAPTAIN, 0, 1, 1, 0, 2, 1, 1, 1)
+ .withRaider(RAIDER_RANDOMIZER, 0, 2, 3, 2, 1, 2, 3, 2)
+ .withRaider(VINDICATOR_CHEF, 0, 2, 2, 2, 3, 1, 3, 2)
+ .withRaider(HOSTILE_ROYAL_GUARD, 0, 1, 1, 2, 1, 3, 2, 2)
.withEliteWave(1, NUAOS_ELITE.get(), VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
.withEliteWave(2, NUAOS_ELITE.get(), VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
.withEliteWave(3, NUAOS_ELITE.get(), VOLDON_ELITE.get(), XYDRAX_ELITE.get(), MODUR_ELITE.get())
diff --git a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsConfig.java b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsConfig.java
index 2a6d50e..357401a 100644
--- a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsConfig.java
+++ b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsConfig.java
@@ -8,6 +8,7 @@
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
import com.mojang.logging.LogUtils;
import net.minecraft.core.Registry;
+import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.entity.EntityType;
@@ -42,13 +43,14 @@ public class DifficultRaidsConfig
public static ForgeConfigSpec.BooleanValue INSANITY_MODE;
public static ForgeConfigSpec.DoubleValue INSANITY_COUNT_MULTIPLIER;
+ public static ForgeConfigSpec.BooleanValue DISPLAY_INSANITY_MODE;
public static Map ENABLED_RAIDERS = new HashMap<>();
public static RaidDifficultyConfig DEFAULT, HERO, LEGEND, MASTER, GRANDMASTER;
//Misc Tags
- public static TagKey> WINDS_CURSE_IMMUNE = TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("difficultraids:winds_curse_immune"));
+ public static TagKey> WINDS_CURSE_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation("difficultraids:winds_curse_immune"));
public static void initializeConfigs()
{
@@ -135,17 +137,23 @@ public static void register()
.comment("The multiplier for the number of raiders spawned in Insanity mode.")
.comment("This gets applied on top of whatever difficulty a Raid is at. This will not apply to Default Raids.")
.defineInRange("insanityCountMultiplier", 3.0, 1.0, Double.MAX_VALUE);
+ DISPLAY_INSANITY_MODE = GENERAL
+ .comment("Toggles whether or not to display 'Insane' on the raid")
+ .define("displayInsanityMode", true);
GENERAL.pop();
- GENERAL.comment("Customize which Raiders will show up in Raids. By default, all raiders are enabled.")
+
+ GENERAL.comment("Customize which Raiders will show up in Raids. A game restart is required.")
.push("Enabled Raiders");
+ GENERAL.push("Vanilla Raiders");
ENABLED_RAIDERS.put(RaidEnemyRegistry.VINDICATOR, GENERAL.define("enableVindicators", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.EVOKER, GENERAL.define("enableEvokers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER, GENERAL.define("enablePillagers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.WITCH, GENERAL.define("enableWitches", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.RAVAGER, GENERAL.define("enableRavagers", true));
+ GENERAL.pop().push("DifficultRaids");
ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLUSIONER, GENERAL.define("enableIllusioners", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.WARRIOR, GENERAL.define("enableWarriors", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.DART, GENERAL.define("enableDarts", true));
@@ -157,7 +165,8 @@ public static void register()
ENABLED_RAIDERS.put(RaidEnemyRegistry.FROSTMAGE, GENERAL.define("enableFrostmages", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.ASHENMANCER, GENERAL.define("enableAshenmancers", true));
- GENERAL.push("Requires HunterIllager");
+
+ GENERAL.pop().push("Requires HuntersReturn");
ENABLED_RAIDERS.put(RaidEnemyRegistry.HUNTER, GENERAL.define("enableHunters", true));
GENERAL.pop().push("Requires EnchantWithMob");
ENABLED_RAIDERS.put(RaidEnemyRegistry.ENCHANTER, GENERAL.define("enableEnchanters", true));
@@ -171,6 +180,7 @@ public static void register()
ENABLED_RAIDERS.put(RaidEnemyRegistry.PRESERVER, GENERAL.define("enablePreservers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.ABSORBER, GENERAL.define("enableAbsorbers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.CROCOFANG, GENERAL.define("enableCrocofangs", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ENGINEER, GENERAL.define("enableEngineers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.MAGISPELLER, GENERAL.define("enableMagispellers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.SPIRITCALLER, GENERAL.define("enableSpiritcallers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.FREAKAGER, GENERAL.define("enableFreakagers", true));
@@ -180,20 +190,343 @@ public static void register()
ENABLED_RAIDERS.put(RaidEnemyRegistry.EXECUTIONER, GENERAL.define("enableExecutioners", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.TRICKSTER, GENERAL.define("enableTricksters", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.ICEOLOGER_SR, GENERAL.define("enableSavageRavageIceologers", true));
+ GENERAL.pop().push("Requires Leo's Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHIELD_VINDICATOR, GENERAL.define("enableShieldVindicator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.LIGHTNINGCALLER, GENERAL.define("enableLightningCaller", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CLOWNAGER, GENERAL.define("enableClownager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CONFUSER, GENERAL.define("enableConfuser", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.METEORITE_CALLER, GENERAL.define("enableMeteoriteCaller", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SNOWOLAGER, GENERAL.define("enableSnowolager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_LEO, GENERAL.define("enableNecromancerLeo", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SUMMONER, GENERAL.define("enableSummoner", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TROUBLEMAKER, GENERAL.define("enableTroublemaker", true));
GENERAL.pop().push("Requires Dungeon Mobs");
ENABLED_RAIDERS.put(RaidEnemyRegistry.MOUNTAINEER, GENERAL.define("enableMountaineers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.ROYAL_GUARD, GENERAL.define("enableRoyalGuards", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.GEOMANCER, GENERAL.define("enableGeomancers", true));
- ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLUSIONER_DM, GENERAL.define("enableDungeonMobsIllusioners", true));
+// ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLUSIONER_DM, GENERAL.define("enableDungeonMobsIllusioners", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.MAGE, GENERAL.define("enableMages", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.ICEOLOGER_DM, GENERAL.define("enableDungeonMobsIceologers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.WINDCALLER, GENERAL.define("enableWindcallers", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.SQUALL_GOLEM, GENERAL.define("enableSquallGolems", true));
ENABLED_RAIDERS.put(RaidEnemyRegistry.REDSTONE_GOLEM, GENERAL.define("enableRedstoneGolems", true));
+ GENERAL.pop().push("Requires The Conjurer");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CONJURER, GENERAL.define("enableConjurer", false));
+ GENERAL.pop().push("Requires Necromancer Mod Port");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_MOD, GENERAL.define("enableModNecromancer", true));
+ GENERAL.pop().push("Requires Werden's Illagers +");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SINISTER, GENERAL.define("enableSinister", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHADOMANCER, GENERAL.define("enableShadomancer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RHINAGER, GENERAL.define("enableRhinager", true));
+ //GENERAL.pop().push("Requires Iron's Spells and Spellbooks");
+ //ENABLED_RAIDERS.put(RaidEnemyRegistry.ARCHEVOKER, GENERAL.define("enableArchevoker", true));
+ //GENERAL.pop().push("Requires Gambler Illager");
+ //ENABLED_RAIDERS.put(RaidEnemyRegistry.GAMBLER, GENERAL.define("enableGambler", true));
+ GENERAL.pop().push("Requires Guard Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GUARD_ILLAGER, GENERAL.define("enableGuardillager", true));
+ GENERAL.pop().push("Requires MobZ");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPIDER_MAGE, GENERAL.define("enableSpiderMage", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ZOMBIE_MAGE, GENERAL.define("enableZombieMage", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_BOSS, GENERAL.define("enablePillagerBoss", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLUSIONER_MOBZ, GENERAL.define("enableMobZIllusioner", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BABY_RAVAGER, GENERAL.define("enableBabyRavager", true));
+ GENERAL.pop().push("Requires Illager Invasion");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PROVOKER, GENERAL.define("enablePovoker", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INQUISITOR, GENERAL.define("enableInquisitor", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MARAUDER, GENERAL.define("enableMarauder", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BASHER, GENERAL.define("enableBasher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FIRECALLER, GENERAL.define("enableFirecaller", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_INV, GENERAL.define("enableInvasionNecromancer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ALCHEMIST, GENERAL.define("enableAlchemist", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SORCERER, GENERAL.define("enableSorcerer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ARCHIVIST, GENERAL.define("enableArchivist", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INVOKER, GENERAL.define("enableInvoker", true));
+ GENERAL.pop().push("Requires Goety");
+ GENERAL.comment("Those settings can be overwritten by Goety");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WARLOCK, GENERAL.define("enableWarlock", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MAVERICK, GENERAL.define("enableMaverick", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HERETIC, GENERAL.define("enableHeretic", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PIKER, GENERAL.define("enablePiker", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RIPPER, GENERAL.define("enableRipper", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRUSHER, GENERAL.define("enableCrusher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.STORM_CASTER, GENERAL.define("enableStorm_caster", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRYOLOGER, GENERAL.define("enableCryologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PREACHER, GENERAL.define("enablePreacher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CONQUILLAGER, GENERAL.define("enableConquillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INQUILLAGER, GENERAL.define("enableInquillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ENVIOKER, GENERAL.define("enableEnvioker", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SORCERER_GOETY, GENERAL.define("enableGoetySorcerer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MINISTER, GENERAL.define("enableMinister", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TRAMPLER, GENERAL.define("enableTrampler", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VIZIER, GENERAL.define("enableVizier", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.APOSTLE, GENERAL.define("enableApostle", false));
+ GENERAL.comment("If you enable Redstone Golem and Redstone Monstrosity, make sure to enable them in Goety config");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HOSTILE_RED_GOLEM, GENERAL.define("enableRedstoneGolemGoety", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HOSTILE_RED_MONSTER, GENERAL.define("enableRedstoneMonstrosity", false));
+ GENERAL.pop().push("Requires The Summoner Illager Port");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.THE_SUMMONER, GENERAL.define("enableSummoner", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.THE_SUMMONER_BOSS, GENERAL.define("enableSummonerBoss", true));
+ GENERAL.pop().push("Requires Bones Update");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_BONES, GENERAL.define("enableBonesNecromancer", true));
+ GENERAL.pop().push("Requires Illager Additions");
+ GENERAL.comment("Those settings can be overwritten by Illager Additions");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ROYAL_GUARD_SPEAR, GENERAL.define("enableRoyalGuardSpear", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPEARMAN, GENERAL.define("enableSpearman", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SAMURAI, GENERAL.define("enableSamurai", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BEAMLOGER, GENERAL.define("enableBeamloger", true));
+ GENERAL.comment("If you enable Cowboy or Shogun, make sure to enable them in Illager Additions config");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.COWBOY, GENERAL.define("enableCowboy", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHOGUN, GENERAL.define("enableShogun", false));
+ GENERAL.pop().push("Requires The Modifiger");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MODIFIGER, GENERAL.define("enableModifiger", true));
+ GENERAL.pop().push("Requires Musketeer Illager");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MARKSMAN, GENERAL.define("enableMarksman", true));
+ GENERAL.pop().push("Requires The Masquerader");
+ GENERAL.comment("If you change the spawn rate of this mob, make sure no other bosses from Illage & Spillage spawn in the same wave, or they will have infinite force field.");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MASQUERADER, GENERAL.define("enableMasquerader", true));
+ GENERAL.pop().push("Requires Bagus Mob");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TENGU, GENERAL.define("enableTengu", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NINJAR, GENERAL.define("enableNinjar", true));
+ GENERAL.pop().push("Requires Illager Revolution");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BEAST_TAMER, GENERAL.define("enableBeastTamer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLADE_KNIGHT, GENERAL.define("enableBladeKnight", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SCAVENGER, GENERAL.define("enableScavenger", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SOUL_SAGE, GENERAL.define("enableSoulSage", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ACOLYTE, GENERAL.define("enableAcolyte", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BULKWARK, GENERAL.define("enableBulkwark", false));
+ GENERAL.pop().push("Requires Raided");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_RAIDED, GENERAL.define("enableRaidedNecromancer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ELECTROMANCER_RAIDED, GENERAL.define("enableRaidedElectromancer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SAVAGER, GENERAL.define("enableSavager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INCINERATOR, GENERAL.define("enableIncinerator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INQUISITOR_RAIDED, GENERAL.define("enableRaidedInquisitor", true));
+ GENERAL.pop().push("Requires More Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GUNILLAGER, GENERAL.define("enableGunillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLIGEVE, GENERAL.define("enableIlligeve", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SURPRISER, GENERAL.define("enableSurpriser", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ROCKETILLAGER, GENERAL.define("enableRocketillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CREEPILLAGER, GENERAL.define("enableCreepillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MONSTERILLAGER, GENERAL.define("enableMonsterillager", true));
+ GENERAL.pop().push("Requires Slash Illager");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLADE_MASTER, GENERAL.define("enableBladeMaster", true));
+ GENERAL.pop().push("Requires Friends & Foes");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ICEOLOGER_FF, GENERAL.define("enableFriendsAndFoesIceologer", true));
+ GENERAL.pop().push("Requires Mo' Features");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_BRUTE, GENERAL.define("enablePillagerBrute", true));
+ GENERAL.pop().push("Requires Brazier");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRAZED, GENERAL.define("enableCrazed", false));
+ GENERAL.pop().push("Requires Ravage & Cabbage");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CABBAGER, GENERAL.define("enableCabbager", true));
+ GENERAL.pop().push("Requires CrimsonSteve's more mobs");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PHANTOM_TAMER, GENERAL.define("enablePhamtomTamer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.T_RABUS, GENERAL.define("enableTRabus", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CYBORG_VINDICATOR, GENERAL.define("enableCyborgVindicator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRUDE_RED_GOLEM, GENERAL.define("enableCrudeRedstoneGolem", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRUDE_RED_MONSTROSITY, GENERAL.define("enableCrudeRedstoneMonstrosity", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RED_MONSTROSITY_CSM, GENERAL.define("enableCrimsonStevesRedstoneMonstrosity", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MINI_CRUDE_RED_GOLEM, GENERAL.define("enableMiniCrudeRedstoneGolem", true));
+ GENERAL.pop().push("Requires All Bark, All Bite");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HOUNDMASTER, GENERAL.define("enableHoundmaster", true));
+ GENERAL.pop().push("Requires Karate Illager");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.KARATE, GENERAL.define("enableKarateIllager", true));
+ GENERAL.pop().push("Requires Illager Brute");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ILLAGER_BRUTE, GENERAL.define("enableIllagerBrute", true));
+ GENERAL.pop().push("Requires Sorcerer Illager");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SORCERER_ILLAGER, GENERAL.define("enableSorcererIllager", true));
+ GENERAL.pop().push("Requires Wandering Illager");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WANDERING_ILLAGER, GENERAL.define("enableWanderingIllager", true));
+ GENERAL.pop().push("Requires Expado's Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BRASHER, GENERAL.define("enableBrasher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLUNTOLOGER, GENERAL.define("enableBluntologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CLEAVAGER, GENERAL.define("enableCleavager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPEAROLOGER, GENERAL.define("enableSpearologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.JUGGERNAUT, GENERAL.define("enableJuggernaut", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLUDGEONER, GENERAL.define("enableBludgeoner", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GRINDICATOR, GENERAL.define("enableGrindicator", true));
+ GENERAL.pop().push("Requires Francis Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PATROLOGER, GENERAL.define("enablePatrologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CHEFAGER, GENERAL.define("enableChefager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GRINDICATOR_FRANCIS, GENERAL.define("enableFrancisGrindicator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MAGE_FRANCIS, GENERAL.define("enableFrancisMage", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CHEFOLOGER, GENERAL.define("enableChefologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PYROBANDIT, GENERAL.define("enablePyrobandit", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FIREOLOGER, GENERAL.define("enableFireologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VRINCITADOR, GENERAL.define("enableVrincitador", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SANDOLOGER, GENERAL.define("enableSandologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GRUMMICATOR, GENERAL.define("enableGrummicator", true));
+ GENERAL.pop().push("Requires Earth Mobs");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VILER_WITCH, GENERAL.define("enableVilerWitch", true));
+ GENERAL.pop().push("Requires Illager World War");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_CAR, GENERAL.define("enablePillagerCar", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_SOLDIER, GENERAL.define("enableArmedSoldier", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VINDICATOR_FLAMETHROWER, GENERAL.define("enableVindicatorFlameThrower", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ASSAULT_PILLAGER, GENERAL.define("enableAssaultPillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_PLANE, GENERAL.define("enablePlanePillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_CANNON, GENERAL.define("enableCannonPillager", true));
+ GENERAL.pop().push("Requires Colds: Wandering Trader");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WANDERING_TRAITOR, GENERAL.define("enableWanderingTraitor", true));
+ GENERAL.pop().push("Requires Just Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.DRUSKI, GENERAL.define("enableDruski", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.LACHER, GENERAL.define("enableLacher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRISKO, GENERAL.define("enableCrisko", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLAKER, GENERAL.define("enableBlaker", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TOXICIST, GENERAL.define("enableToxicist", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.REVENANT, GENERAL.define("enableRevenant", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.AMPI, GENERAL.define("enableAmpi", true));
+ GENERAL.pop().push("Requires Illager Universe");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.UPGRADER, GENERAL.define("enableUpgrader", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.UPGRADER_GOLD, GENERAL.define("enableUpgraderGold", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.UPGRADER_DIAMOND, GENERAL.define("enableUpgraderDiamond", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHADOW_GOAT, GENERAL.define("enableShadowGoar", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PRINZOLOGER, GENERAL.define("enablePrinzologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CALLOLOGER, GENERAL.define("enableCallologer", true));
+ GENERAL.pop().push("Requires Pillager Boss");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PILLAGER_BOSS_MOD, GENERAL.define("enablePillagerBossMod", true));
+ GENERAL.pop().push("Requires Virtuso's Grand Battle");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VIRTUOSO_OF_VARIETY, GENERAL.define("enableVirtuosoOfVariety", true));
+ GENERAL.pop().push("Requires Mischief Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MISCHIEVER, GENERAL.define("enableMischiever", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WITHERMANCER, GENERAL.define("enableWithermancer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.DOODLER, GENERAL.define("enableDoodler", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FANGCLAW, GENERAL.define("enableFangclaw", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPARKOLOGER, GENERAL.define("enableSparkologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.LIBRAVOKER, GENERAL.define("enableLibravoker", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BUBBLEOLOGER, GENERAL.define("enableBubbleologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BASS_BLASTER, GENERAL.define("enableBassBlaster", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.IMPRECATOR, GENERAL.define("enableImprecator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MAGNETIZER, GENERAL.define("enableMagnetizer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PHOTOGRAPHER, GENERAL.define("enablePhotographer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PARTYGER, GENERAL.define("enablePartyger", true));
+ GENERAL.pop().push("Requires Pillagers Plus");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SWORD_PILLAGER, GENERAL.define("enableSwordPillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPEAR_PILLAGER, GENERAL.define("enableSpearIllager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HOG_RIDER, GENERAL.define("enableHogRider", true));
+ GENERAL.pop().push("Requires Immersive Engineering");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.COMMANDO, GENERAL.define("enableCommando", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FUSILIER, GENERAL.define("enableFusilier", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BULWARK, GENERAL.define("enableBulwark", true));
+ GENERAL.pop().push("Requires Kamilskis Additions");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BALLOON_PILLAGER, GENERAL.define("enableBalloonPillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SILVERFISH_WRANGLER, GENERAL.define("enableSilverfishWrangler", true));
+ GENERAL.pop().push("Requires Born in Chaos");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MISSIONARY, GENERAL.define("enableMissionary", true));
+ GENERAL.pop().push("Requires Eidolon: Repraised");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCER_EIDOLON, GENERAL.define("enableEidolonNecromancer", true));
+ GENERAL.pop().push("Requires From the Shadows");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CLERIC, GENERAL.define("enableCleric", true));
+ GENERAL.pop().push("Requires Rats");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PIED_PIPER, GENERAL.define("enablePiedPiper", true));
+ GENERAL.pop().push("Requires Wild Delight");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WILD_CHEF, GENERAL.define("enableWildChef", true));
+ GENERAL.pop().push("Requires Jerotes Village");
+ GENERAL.comment("Everything is disabled in Jerotes Village config");
+ GENERAL.comment("If you want to enable something, enable it here and in Jerotes Village config");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TRUMPETER, GENERAL.define("enableTrumpeter", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLASTER, GENERAL.define("enableBlaster", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.DEFECTOR, GENERAL.define("enableDefector", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MAPMAKER, GENERAL.define("enableMapmaker", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BANNER_BEARER, GENERAL.define("enablebannerBearer", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.EXECUTIONER_JEROTES, GENERAL.define("enableJerotesExecutioner", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.EXPLORER, GENERAL.define("enableExplorer", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SLAVERY_SUPERVISOR, GENERAL.define("enableSlaverySupervisor", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CYCLONER, GENERAL.define("enableCycloner", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.JAVELIN_THROWER, GENERAL.define("enableJavelinThrower", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ZOMBIE_KEEPER, GENERAL.define("enableZombieKeeper", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WILD_FINDER, GENERAL.define("enableWildFinder", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SUBMARINER, GENERAL.define("enableSubmariner", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPIRVE, GENERAL.define("enableSpirve", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TELEPORTER, GENERAL.define("enableTeleporter", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.LAMP_WIZARD, GENERAL.define("enableLampWizard", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BITTER_COLD_SORCERER, GENERAL.define("enableBitterColdSorcerer", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FIRE_SPITTER, GENERAL.define("enableFireSpitter", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PURPLE_SAND_WITCH, GENERAL.define("enablePurpleSandWitch", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.WITCH_SCHOLAR, GENERAL.define("enableWitchScholar", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.AX_CRAZY, GENERAL.define("enableAxCrazy", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PURPLE_SAND_HAG, GENERAL.define("enablePurpleSandHag", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NECROMANCY_WARLOCK, GENERAL.define("enableNecromancyWarlock", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GAVILER, GENERAL.define("enableGaviler", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BIG_WITCH, GENERAL.define("enableBigWitch", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FIREPOWER_POURER, GENERAL.define("enableFirepowerPourer", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.OMINOUS_BANNER_PROJ, GENERAL.define("enableOminousBannerProjection", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.COHORT_HAG, GENERAL.define("enableCohortHag", false));
+ GENERAL.pop().push("Requires NO IXAPI");
+ GENERAL.comment("Those settings can be overwritten by NO.IXAPI");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BUGLER, GENERAL.define("enableBugler", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ARMORER, GENERAL.define("enableArmorer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BIOLOGIST, GENERAL.define("enableBiologist", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HUNTER_API, GENERAL.define("enableAPIHunter", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MOURNER, GENERAL.define("enableMourner", true));
+ GENERAL.comment("If you enable the following mobs, make sure to enable them in NO.IXAPI config");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ABOMINATION, GENERAL.define("enableAbomination", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.DRUNKENNESS, GENERAL.define("enableDrunkenness", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FLAGMAN, GENERAL.define("enableFlagman", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INTRUDER, GENERAL.define("enableIntruder", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GRAVE_KEEPER, GENERAL.define("enableGraveKeeper", false));
+ GENERAL.pop().push("Requires Roost2");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ROOST_RIDER, GENERAL.define("enableRoostRider", true));
+ GENERAL.pop().push("Requires Snow's Bosses: Mechasent");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MECHASENT, GENERAL.define("enableMechasent", true));
+ GENERAL.pop().push("Requires Ben's Sharks");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.THALASSOGER, GENERAL.define("enableThalassoger", true));
+ GENERAL.pop().push("Requires Illager Expansions");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ELITE_VINDICATOR, GENERAL.define("enableEliteVindicator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RETALIATOR, GENERAL.define("enableRetaliator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRINDICATOR, GENERAL.define("enableCrindicator", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ELITE_PILLAGER, GENERAL.define("enableElitePillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RAVAGER_RIDER, GENERAL.define("enableRavagerRider", true));
+ GENERAL.pop().push("Requires Gloom Raiders");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NUN, GENERAL.define("enableNun", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHYLOCK, GENERAL.define("enableShylock", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NEW_DRAMATIST, GENERAL.define("enableNewDramatist", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SPELL_SWORD, GENERAL.define("enableSpellSword", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PSYCHC_W, GENERAL.define("enablePsychcW", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PSYCHIC_M, GENERAL.define("enablePsychicM", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HEADSMAN, GENERAL.define("enableHeadsman", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.NEW_BIG_NUN, GENERAL.define("enableNewBigNun", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.AWAKEN_EARL, GENERAL.define("enableAwakenEarl", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.DRAMATIST, GENERAL.define("enableDramatist", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.EARL, GENERAL.define("enableEarl", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.FLY_EARL, GENERAL.define("enableFlyEarl", false));
+ GENERAL.pop().push("Requires Ocean World");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.OCEANOLOGER, GENERAL.define("enableOceanologer", true));
+ GENERAL.pop().push("Requires Multiverse");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CONQUEROR, GENERAL.define("enableConqueror", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.TRAVELER, GENERAL.define("enableTraveler", false));
+ GENERAL.pop().push("Requires Porchers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLOWER, GENERAL.define("enableBlower", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.STABBER, GENERAL.define("enableStabber", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HARVESTER, GENERAL.define("enableHarvester", true));
+ GENERAL.pop().push("Requires Mecha Pillager Boss");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MECHA_PILLAGER, GENERAL.define("enableMechaPillager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.MECHA_VINDICATOR, GENERAL.define("enableMechaVindicator", true));
+ GENERAL.pop().push("Requires The Resiliance of the Raiders");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CRUSHER_RESILIANCE, GENERAL.define("enableResilianceCrusher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.CLASHAGER, GENERAL.define("enableClashager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SHIVERGER, GENERAL.define("enableShiverger", true));
+ GENERAL.pop().push("Requires The Resistance Of Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.GUARDIAN, GENERAL.define("enableGuardian", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.ASSAILANT, GENERAL.define("enableAssailant", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HARRIER, GENERAL.define("enableHarrier", true));
+ GENERAL.pop().push("Requires The Vindication Of Illagers");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PREACHER_VINDICATION, GENERAL.define("enableVindicationPreacher", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.BLACKMASTER, GENERAL.define("enableBlackmaster", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PLANNER, GENERAL.define("enablePlanner", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VISOLOGER, GENERAL.define("enableVisologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.INTRUDER_VINDICATION, GENERAL.define("enableVindicationIntruder", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VOLTOLOGER, GENERAL.define("enableVoltologer", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.SMITHER, GENERAL.define("enableSmither", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RAGER, GENERAL.define("enableRager", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.PATROL_CAPTAIN, GENERAL.define("enablePatrolCaptain", true));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.RAIDER_RANDOMIZER, GENERAL.define("enableRaiderRandomizer", true));
+ GENERAL.pop().push("Requires Goety Awaken");
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.VINDICATOR_CHEF, GENERAL.define("enableVindicatorChef", false));
+ ENABLED_RAIDERS.put(RaidEnemyRegistry.HOSTILE_ROYAL_GUARD, GENERAL.define("enableHostileRoyalGuard", false));
+
GENERAL.pop();
GENERAL.pop();
+
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, GENERAL.build(), DifficultRaids.MODID + "/general.toml");
//Raid Difficulty Configs
@@ -309,8 +642,8 @@ public static void register()
spec.push("Compatibility");
- //Hunter Illager
- spec.comment("REQUIRES 'HunterIllager'").push("Hunter Illager Settings");
+ //Hunters Return
+ spec.comment("REQUIRES 'Hunters Return'").push("Hunter Illager Settings");
config.hunter = new RaiderConfigs.Hunter(rd, spec);
spec.pop();
@@ -361,6 +694,8 @@ public static void register()
case MASTER -> MASTER = config;
case GRANDMASTER -> GRANDMASTER = config;
}
+
+
}
}
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsEnchantments.java b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsEnchantments.java
index 7738bd5..10a0de0 100644
--- a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsEnchantments.java
+++ b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsEnchantments.java
@@ -1,6 +1,9 @@
package com.calculusmaster.difficultraids.setup;
import com.calculusmaster.difficultraids.DifficultRaids;
+import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
+import java.util.HashMap;
+import java.util.*;
import com.calculusmaster.difficultraids.enchantments.*;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.enchantment.Enchantment;
@@ -14,16 +17,31 @@ public class DifficultRaidsEnchantments
{
public static final DeferredRegister ENCHANTMENTS = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, DifficultRaids.MODID);
- public static RegistryObject RAIDERS_BANE = ENCHANTMENTS.register("raiders_bane", () -> new RaidersBaneEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
- public static RegistryObject INVISIBILITY = ENCHANTMENTS.register("invisibility", () -> new InvisibilityEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_CHEST, EquipmentSlot.CHEST));
- public static RegistryObject CRITICAL_STRIKE = ENCHANTMENTS.register("critical_strike", () -> new CriticalStrikeEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
- public static RegistryObject CRITICAL_BURST = ENCHANTMENTS.register("critical_burst", () -> new CriticalBurstEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
- public static RegistryObject CRITICAL_RESISTANCE = ENCHANTMENTS.register("critical_resistance", () -> new CriticalResistanceEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.ARMOR, EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET));
- public static RegistryObject LIGHTNING_RESISTANCE = ENCHANTMENTS.register("lightning_resistance", () -> new LightningResistanceEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_HEAD, EquipmentSlot.HEAD));
- public static RegistryObject PROJECTILE_EVASION = ENCHANTMENTS.register("projectile_evasion", () -> new ProjectileEvasionEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_FEET, EquipmentSlot.FEET));
+ public static RegistryObject RAIDERS_BANE;
+ public static RegistryObject INVISIBILITY;
+ public static RegistryObject CRITICAL_STRIKE;
+ public static RegistryObject CRITICAL_BURST;
+ public static RegistryObject CRITICAL_RESISTANCE;
+ public static RegistryObject LIGHTNING_RESISTANCE;
+ public static RegistryObject PROJECTILE_EVASION;
- public static void register(IEventBus eventBus)
+ public static synchronized void register(IEventBus eventBus)
{
+ RAIDERS_BANE = ENCHANTMENTS.register("raiders_bane", () -> new RaidersBaneEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
+
+ INVISIBILITY = ENCHANTMENTS.register("invisibility", () -> new InvisibilityEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_CHEST, EquipmentSlot.CHEST));
+
+ CRITICAL_STRIKE = ENCHANTMENTS.register("critical_strike", () -> new CriticalStrikeEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
+
+ CRITICAL_BURST = ENCHANTMENTS.register("critical_burst", () -> new CriticalBurstEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.WEAPON, EquipmentSlot.MAINHAND));
+
+ CRITICAL_RESISTANCE = ENCHANTMENTS.register("critical_resistance", () -> new CriticalResistanceEnchantment(Enchantment.Rarity.RARE, EnchantmentCategory.ARMOR, EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET));
+
+ LIGHTNING_RESISTANCE = ENCHANTMENTS.register("lightning_resistance", () -> new LightningResistanceEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_HEAD, EquipmentSlot.HEAD));
+
+ PROJECTILE_EVASION = ENCHANTMENTS.register("projectile_evasion", () -> new ProjectileEvasionEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentCategory.ARMOR_FEET, EquipmentSlot.FEET));
+
ENCHANTMENTS.register(eventBus);
}
+
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsItems.java b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsItems.java
index 37f1a7e..5bebcac 100644
--- a/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsItems.java
+++ b/src/main/java/com/calculusmaster/difficultraids/setup/DifficultRaidsItems.java
@@ -3,25 +3,29 @@
import com.calculusmaster.difficultraids.DifficultRaids;
import com.calculusmaster.difficultraids.entity.DifficultRaidsEntityTypes;
import com.calculusmaster.difficultraids.items.GMArmorItem;
+import com.mojang.logging.LogUtils;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.Mob;
-import net.minecraft.world.item.CreativeModeTab;
-import net.minecraft.world.item.Item;
-import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.*;
import net.minecraftforge.common.ForgeSpawnEggItem;
+import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.eventbus.api.IEventBus;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
+import org.slf4j.Logger;
+import java.util.Arrays;
+import java.util.List;
import java.util.function.Supplier;
public class DifficultRaidsItems
{
public static final DeferredRegister- ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, DifficultRaids.MODID);
- private static final Supplier
DEFAULT_TOTEM_PROPERTIES = () -> new Item.Properties().stacksTo(1).tab(CreativeModeTab.TAB_COMBAT).rarity(Rarity.UNCOMMON).fireResistant();
+ private static final Supplier DEFAULT_TOTEM_PROPERTIES = () -> new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON).fireResistant();
//Totems
@@ -64,16 +68,16 @@ public class DifficultRaidsItems
//Armor
public static final RegistryObject- GRANDMASTER_HELMET =
- ITEMS.register("grandmaster_helmet", () -> new GMArmorItem(EquipmentSlot.HEAD));
+ ITEMS.register("grandmaster_helmet", () -> new GMArmorItem(ArmorItem.Type.HELMET));
public static final RegistryObject
- GRANDMASTER_CHESTPLATE =
- ITEMS.register("grandmaster_chestplate", () -> new GMArmorItem(EquipmentSlot.CHEST));
+ ITEMS.register("grandmaster_chestplate", () -> new GMArmorItem(ArmorItem.Type.CHESTPLATE));
public static final RegistryObject
- GRANDMASTER_LEGGINGS =
- ITEMS.register("grandmaster_leggings", () -> new GMArmorItem(EquipmentSlot.LEGS));
+ ITEMS.register("grandmaster_leggings", () -> new GMArmorItem(ArmorItem.Type.LEGGINGS));
public static final RegistryObject
- GRANDMASTER_BOOTS =
- ITEMS.register("grandmaster_boots", () -> new GMArmorItem(EquipmentSlot.FEET));
+ ITEMS.register("grandmaster_boots", () -> new GMArmorItem(ArmorItem.Type.BOOTS));
//Spawn Eggs
public static final RegistryObject
- SPAWN_EGG_WARRIOR_ILLAGER =
@@ -105,12 +109,63 @@ public class DifficultRaidsItems
private static
RegistryObject- registerSpawnEgg(String name, RegistryObject
> entityType, int highlight)
{
- return ITEMS.register(name + "_spawn_egg", () -> new ForgeSpawnEggItem(entityType, 0x565B5C, highlight, new Item.Properties().tab(CreativeModeTab.TAB_MISC)));
+ return ITEMS.register(name + "_spawn_egg", () -> new ForgeSpawnEggItem(entityType, 0x565B5C, highlight, new Item.Properties()));
}
+ public static final List> SPAWN_EGGS = Arrays.asList(
+ SPAWN_EGG_ASHENMANCER_ILLAGER,
+ SPAWN_EGG_ASSASSIN_ILLAGER,
+ SPAWN_EGG_DART_ILLAGER,
+ SPAWN_EGG_ELECTRO_ILLAGER,
+ SPAWN_EGG_FROST_ILLAGER,
+ SPAWN_EGG_NECROMANCER_ILLAGER,
+ SPAWN_EGG_SHAMAN_ILLAGER,
+ SPAWN_EGG_TANK_ILLAGER,
+ SPAWN_EGG_WARRIOR_ILLAGER
+ );
+
+ public static final List> ARMOR = Arrays.asList(
+ GRANDMASTER_HELMET, GRANDMASTER_CHESTPLATE, GRANDMASTER_LEGGINGS, GRANDMASTER_BOOTS
+ );
+
+ public static final List> TOTEMS = Arrays.asList(
+ TOTEM_OF_PERSISTENCE,
+ TOTEM_OF_DESTINY,
+ TOTEM_OF_FIREBALLS,
+ TOTEM_OF_FREEZING,
+ TOTEM_OF_LEVITATION,
+ TOTEM_OF_LIGHTNING,
+ TOTEM_OF_POISON,
+ TOTEM_OF_PROTECTION,
+ TOTEM_OF_SPEED,
+ TOTEM_OF_INVISIBILITY,
+ TOTEM_OF_VENGEANCE,
+ TOTEM_OF_TELEPORTATION
+ );
+
+
public static void register(IEventBus eventBus)
{
ITEMS.register(eventBus);
}
+
+ private static final Logger LOGGER = LogUtils.getLogger();
+
+ public static void buildContents(BuildCreativeModeTabContentsEvent event) {
+ // Add to ingredients tab
+ if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
+ for (RegistryObject- item : DifficultRaidsItems.SPAWN_EGGS) {
+ event.accept(item);
+ }
+ }
+ if (event.getTabKey() == CreativeModeTabs.COMBAT) {
+ for (RegistryObject
- item : DifficultRaidsItems.ARMOR) {
+ event.accept(item);
+ }
+ for (RegistryObject
- item : DifficultRaidsItems.TOTEMS) {
+ event.accept(item);
+ }
+ }
+ }
}
diff --git a/src/main/java/com/calculusmaster/difficultraids/util/Compat.java b/src/main/java/com/calculusmaster/difficultraids/util/Compat.java
index 5da50cc..04f532f 100644
--- a/src/main/java/com/calculusmaster/difficultraids/util/Compat.java
+++ b/src/main/java/com/calculusmaster/difficultraids/util/Compat.java
@@ -5,15 +5,80 @@
public enum Compat
{
GUARD_VILLAGERS("guardvillagers"),
- HUNTER_ILLAGER("hunterillager"),
+ HUNTERS_RETURN("hunters_return"),
ENCHANT_WITH_MOB("enchantwithmob"),
IT_TAKES_A_PILLAGE("takesapillage"),
ILLAGE_AND_SPILLAGE("illageandspillage"),
SAVAGE_AND_RAVAGE("savage_and_ravage"),
- DUNGEONS_MOBS("dungeons_mobs"),
+ DUNGEONS_MOBS("dungeonsmobs"),
ILLAGER_REVOLUTION("illagerrevolutionmod"),
- LEOS_ILLAGERS("leosillagers")
-
+ LEOS_ILLAGERS("leosillagers"),
+ RECRUITS("recruits"),
+ WORKERS("workers"),
+ CONJURER("conjurer_illager"),
+ NECROMANCER("necromancer"),
+ WERDENS_ILLAGERS("wip"),
+ IRONS_SPELLBOOKS("irons_spellbooks"),
+ GAMBLER("gambler"),
+ GUARD_ILLAGERS("guardillagers"),
+ ILLAGER_ADDITIONS("illager_additions"),
+ MOBZ("mobz"),
+ ILLAGER_INVASION("illagerinvasion"),
+ GOETY("goety"),
+ SUMMONER("thesummoner"),
+ BONES_UPDATE("bonesupdate"),
+ MODIFIGER("the_modifiger"),
+ MASQUERADER("masquerader_mod"),
+ MUSKETEER("musketeer_illager"),
+ BAGUS_MOB("bagusmob"),
+ RAIDED("raided"),
+ MORE_ILLAGERS("more_illagers"),
+ SLASH_ILLAGER("slash_illager"),
+ BRAZIER("brazier"),
+ FRIENDS_AND_FOES("friendsandfoes"),
+ ALL_BARK_ALL_BITE("all_bark_all_bite"),
+ RAVAGE_AND_CABBAGE("ravageandcabbage"),
+ MO_FEATURES("morefeatures"),
+ CRIMSON_STEVES_MOBS("crimson_steves_mobs"),
+ WANDERING_ILLAGER("wandering_illager"),
+ FRANCIS_ILLAGERS("expansion"),
+ EXPADOS_ILLAGERS("expados_illagerss"),
+ KARATE_ILLAGER("karateillagerfinallyported"),
+ ILLAGER_BRUTE("illager_brute"),
+ SORCERER_ILLAGER("sorcerer_illager"),
+ EARTH_MOBS("earthmobsmod"),
+ ILLAGER_WORLD_WAR("illager_world_war"),
+ JUST_ILLAGERS("justillagers"),
+ COLDS_WANDERING_TRADER("coldstrader"),
+ ILLAGER_UNIVERSE("illager_universe"),
+ PILLAGER_BOSS("pillager_boss"),
+ MISCHIEF_ILLAGERS("mischief_illagers"),
+ VIRTUSOS_GRAND_BATTLE("virtusosgrandbattle"),
+ PILLAGERS_PLUS("pillagersplus"),
+ IMMERSIVE_ENGINEERING("immersiveengineering"),
+ KAMILSKIS_ADDITIONS("rpg"),
+ EIDOLON_REPRAISED("eidolon"),
+ INVADE("invade"),
+ WILD_DELIGHT("wild_delight"),
+ RATS("rats"),
+ JEROTES_VILLAGES("jerotesvillage"),
+ FROM_THE_SHADOWS("fromtheshadows"),
+ BORN_IN_CHAOS("born_in_chaos_v1"),
+ COMPANIONS("companions"),
+ NOXIAPI("noixmodapi"),
+ ROOST2("roost2"),
+ BENS_SHARKS("benssharks"),
+ ILLAGER_EXANSIONS("illager_expansions"),
+ GLOOM_RAIDERS("gloom_raiders"),
+ OCEANWORLD("oceanworld"),
+ MULTIVERSE("multiverse"),
+ POACHERS("poachers"),
+ MECHA_PILLAGER("mechapillagerboss"),
+ SCORCHED_GUNS("scguns"),
+ RESILIANCE_OF_RAIDERS("theresilianceofraiders"),
+ RESISTANCE_OF_ILLAGERS("the_resistance_of_the_raiders"),
+ VINDICATION_OF_ILLAGERS("raiderv"),
+ GOETY_AWAKEN("goetyawaken")
;
private final String modid;
diff --git a/src/main/java/com/calculusmaster/difficultraids/util/DifficultRaidsUtil.java b/src/main/java/com/calculusmaster/difficultraids/util/DifficultRaidsUtil.java
index 06ae452..c31ce30 100644
--- a/src/main/java/com/calculusmaster/difficultraids/util/DifficultRaidsUtil.java
+++ b/src/main/java/com/calculusmaster/difficultraids/util/DifficultRaidsUtil.java
@@ -1,14 +1,59 @@
package com.calculusmaster.difficultraids.util;
import baguchan.enchantwithmob.registry.ModEntities;
-import baguchan.hunterillager.init.HunterEntityRegistry;
+import baguchan.hunters_return.init.HunterEntityRegistry;
+import baguchan.the_modifiger.registry.ModEntityRegistry;
+import blusunrize.immersiveengineering.common.register.IEEntityTypes;
import cn.leolezury.leosillagers.init.EntityInit;
+import codyhuh.ravagecabbage.registry.RCEntities;
+import com.Polarice3.Goety.common.entities.ModEntityType;
+import com.belgieyt.morefeatures.core.registry.MFEntity;
+import com.beta.theresilianceofraiders.init.TheresilianceofraidersModEntities;
+import com.bilibili.player_ix.noixmod_api.register.NoixmodAPIEntities;
+import com.coldspell.coldstrader.init.ColdstraderModEntities;
+import com.faboslav.friendsandfoes.common.init.FriendsAndFoesEntityTypes;
+import com.francisplay446.raiderv.init.RaidervModEntities;
+import com.francisplayz446.expansion.init.ExpansionModEntities;
+import com.github.alexthe666.rats.registry.RatsEntityRegistry;
+import com.hexagram2021.oceanworld.common.register.OWEntities;
+import com.infamous.all_bark_all_bite.common.registry.ABABEntityTypes;
+import com.jerotes.jerotesvillage.init.JerotesVillageEntityType;
+import com.legacy.conjurer_illager.registry.IllagerEntityTypes;
import com.calculusmaster.difficultraids.entity.DifficultRaidsEntityTypes;
import com.izofar.takesapillage.init.ModEntityTypes;
+import com.mrbysco.raided.registry.RaidedRegistry;
+import com.mysticmage.musketeer_illager.init.MusketeerIllagerModEntities;
+import com.possible_triangle.brazier.Content;
+import com.sh1nylabs.bonesupdate.init.BonesEntities;
import com.teamabnormals.savage_and_ravage.core.registry.SREntityTypes;
-import net.minecraft.resources.ResourceLocation;
+import comfrancisplayz446.necromancer.init.NecromancerModEntities;
+import elucent.eidolon.registries.EidolonEntities;
+import francisplayz446.karateillagerfinallyported.init.KarateillagerfinallyportedModEntities;
+import fuzs.illagerinvasion.init.ModRegistry;
+import net.francisplayz446.summoner.init.ThesummonerModEntities;
+import net.mcreator.crimson_steves_mobs.init.CrimsonStevesMobsModEntities;
+import net.mcreator.expadosillagerss.init.ExpadosIllagerssModEntities;
+import net.mcreator.gloom_raiders.init.GloomRaidersModEntities;
+import net.mcreator.illagerbrute.init.IllagerBruteModEntities;
+import net.mcreator.illagerexpansions.init.IllagerExpansionsModEntities;
+import net.mcreator.illageruniverse.init.IllagerUniverseModEntities;
+import net.mcreator.illagerworldwar.init.IllagerWorldWarModEntities;
+import net.mcreator.justillagers.init.JustillagersModEntities;
+import net.mcreator.mechapillagerboss.init.MechapillagerbossModEntities;
+import net.mcreator.moreillagers.init.MoreIllagersModEntities;
+import net.mcreator.pillagerboss.init.PillagerBossModEntities;
+import net.mcreator.pillagersplus.init.PillagersplusModEntities;
+import net.mcreator.poachers.init.PoachersModEntities;
+import net.mcreator.roost.init.Roost2ModEntities;
+import net.mcreator.rpg.init.RpgModEntities;
+import net.mcreator.sharks.init.BenssharksModEntities;
+import net.mcreator.sorcererillager.init.SorcererIllagerModEntities;
+import net.mcreator.theresistanceoftheraiders.init.TheResistanceOfTheRaidersModEntities;
+import net.mcreator.virtusosgrandbattle.init.VirtusosgrandbattleModEntities;
+import net.mobz.init.MobZEntities;
+import io.redspace.ironsspellbooks.registries.EntityRegistry;
import net.minecraft.world.entity.EntityType;
-import net.minecraftforge.registries.ForgeRegistries;
+import net.tamirsvn.mischiefillagers.init.MischiefIllagersModEntities;
import java.util.ArrayList;
import java.util.List;
@@ -34,7 +79,7 @@ public static void registerArmorModifierRaiderLists()
ADVANCED_MAGIC_RAIDERS.addAll(List.of(DifficultRaidsEntityTypes.ELECTRO_ILLAGER.get(), DifficultRaidsEntityTypes.NECROMANCER_ILLAGER.get(), DifficultRaidsEntityTypes.FROST_ILLAGER.get(), DifficultRaidsEntityTypes.ASHENMANCER_ILLAGER.get()));
//Mod Compat
- if(Compat.HUNTER_ILLAGER.isLoaded()) STANDARD_RAIDERS.add(HunterEntityRegistry.HUNTERILLAGER.get());
+ if(Compat.HUNTERS_RETURN.isLoaded()) STANDARD_RAIDERS.add(HunterEntityRegistry.HUNTERILLAGER.get());
if(Compat.ENCHANT_WITH_MOB.isLoaded()) ADVANCED_MAGIC_RAIDERS.add(ModEntities.ENCHANTER.get());
@@ -52,7 +97,8 @@ public static void registerArmorModifierRaiderLists()
));
ADVANCED_RAIDERS.addAll(List.of(
com.yellowbrossproductions.illageandspillage.init.ModEntityTypes.Twittollager.get(),
- com.yellowbrossproductions.illageandspillage.init.ModEntityTypes.Crocofang.get()
+ com.yellowbrossproductions.illageandspillage.init.ModEntityTypes.Crocofang.get(),
+ com.yellowbrossproductions.illageandspillage.init.ModEntityTypes.Engineer.get()
));
}
@@ -65,26 +111,27 @@ public static void registerArmorModifierRaiderLists()
if(Compat.DUNGEONS_MOBS.isLoaded()) //Skipping: Squall Golem, Redstone Golem
{
- STANDARD_RAIDERS.add(com.infamous.dungeons_mobs.mod.ModEntityTypes.MOUNTAINEER.get());
- ADVANCED_RAIDERS.addAll(List.of(
- com.infamous.dungeons_mobs.mod.ModEntityTypes.ROYAL_GUARD.get(),
- com.infamous.dungeons_mobs.mod.ModEntityTypes.ILLUSIONER.get()
- ));
+ STANDARD_RAIDERS.add(net.firefoxsalesman.dungeonsmobs.entity.ModEntities.MOUNTAINEER.get());
+ ADVANCED_RAIDERS.add(net.firefoxsalesman.dungeonsmobs.entity.ModEntities.ROYAL_GUARD.get());
BASIC_MAGIC_RAIDERS.addAll(List.of(
- com.infamous.dungeons_mobs.mod.ModEntityTypes.MAGE.get(),
- com.infamous.dungeons_mobs.mod.ModEntityTypes.ICEOLOGER.get()
+ net.firefoxsalesman.dungeonsmobs.entity.ModEntities.MAGE.get(),
+ net.firefoxsalesman.dungeonsmobs.entity.ModEntities.ICEOLOGER.get()
));
ADVANCED_MAGIC_RAIDERS.addAll(List.of(
- com.infamous.dungeons_mobs.mod.ModEntityTypes.GEOMANCER.get(),
- com.infamous.dungeons_mobs.mod.ModEntityTypes.WINDCALLER.get()
+ net.firefoxsalesman.dungeonsmobs.entity.ModEntities.GEOMANCER.get(),
+ net.firefoxsalesman.dungeonsmobs.entity.ModEntities.WINDCALLER.get()
));
}
if(Compat.ILLAGER_REVOLUTION.isLoaded())
{
- STANDARD_RAIDERS.add(ForgeRegistries.ENTITY_TYPES.getValue(new ResourceLocation("illagerrevolutionmod", "illager_scavenger")));
- BASIC_MAGIC_RAIDERS.add(ForgeRegistries.ENTITY_TYPES.getValue(new ResourceLocation("illagerrevolutionmod", "illager_beast_tamer")));
- ADVANCED_RAIDERS.add(ForgeRegistries.ENTITY_TYPES.getValue(new ResourceLocation("illagerrevolutionmod", "blade_knight")));
+ STANDARD_RAIDERS.addAll(List.of(
+ net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.ILLAGER_SCAVENGER.get(),
+ net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.ACOLYTE.get()
+ ));
+ BASIC_MAGIC_RAIDERS.add(net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.ILLAGER_BEAST_TAMER.get());
+ ADVANCED_RAIDERS.add(net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.BLADE_KNIGHT.get());
+ ADVANCED_MAGIC_RAIDERS.add(net.BKTeam.illagerrevolutionmod.entity.ModEntityTypes.SOUL_SAGE.get());
}
if(Compat.LEOS_ILLAGERS.isLoaded()) //Skipped: Lightningcaller, Clownager
@@ -94,5 +141,424 @@ public static void registerArmorModifierRaiderLists()
BASIC_MAGIC_RAIDERS.addAll(List.of(EntityInit.SNOWOLAGER.get(), EntityInit.NECROMANCER.get()));
ADVANCED_MAGIC_RAIDERS.addAll(List.of(EntityInit.METEORITE_CALLER.get(), EntityInit.SUMMONER.get()));
}
+
+ if(Compat.CONJURER.isLoaded()) ADVANCED_MAGIC_RAIDERS.add(IllagerEntityTypes.CONJURER);
+
+ if(Compat.NECROMANCER.isLoaded()) BASIC_MAGIC_RAIDERS.add(NecromancerModEntities.NECROMANCER.get());
+
+ if(Compat.WERDENS_ILLAGERS.isLoaded())
+ {
+ BASIC_MAGIC_RAIDERS.add(net.werdenrc5.wip.entity.ModEntities.SINISTER.get());
+ ADVANCED_MAGIC_RAIDERS.add(net.werdenrc5.wip.entity.ModEntities.SHADOMANCER.get());
+ }
+
+ if(Compat.IRONS_SPELLBOOKS.isLoaded()) BASIC_MAGIC_RAIDERS.add(EntityRegistry.ARCHEVOKER.get());
+
+ if(Compat.GAMBLER.isLoaded()) ADVANCED_MAGIC_RAIDERS.add(com.min01.gambler.entity.ModEntities.GAMBLER.get());
+
+ if(Compat.GUARD_ILLAGERS.isLoaded()) STANDARD_RAIDERS.add(com.min01.guardillagers.init.ModEntityTypes.GUARD_ILLAGER.get());
+
+ if(Compat.ILLAGER_ADDITIONS.isLoaded())
+ {
+ ADVANCED_RAIDERS.addAll(List.of(
+ com.pikachu.mod.illager_more.init.ModEntityTypes.ROYAL_GUARD_SPEAR.get(),
+ com.pikachu.mod.illager_more.init.ModEntityTypes.SPEARMAN.get(),
+ com.pikachu.mod.illager_more.init.ModEntityTypes.HARD_SAMURAI.get(),
+ com.pikachu.mod.illager_more.init.ModEntityTypes.COWBOY.get(),
+ com.pikachu.mod.illager_more.init.ModEntityTypes.SHOGUN.get()
+ ));
+ BASIC_MAGIC_RAIDERS.add(com.pikachu.mod.illager_more.init.ModEntityTypes.BLASTIONER.get());
+ }
+
+ if(Compat.MOBZ.isLoaded()) // Skipping Baby ravager
+ {
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ MobZEntities.SPIDER_MAGE.get(),
+ MobZEntities.ZOMBIE_MAGE.get()
+ ));
+ ADVANCED_RAIDERS.addAll(List.of(
+ MobZEntities.PILLAGER_BOSS.get(),
+ MobZEntities.ILLUSIONER.get()
+ ));
+ }
+
+ if(Compat.ILLAGER_INVASION.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ ModRegistry.PROVOKER_ENTITY_TYPE.get(),
+ ModRegistry.INQUISITOR_ENTITY_TYPE.get(),
+ ModRegistry.MARAUDER_ENTITY_TYPE.get(),
+ ModRegistry.BASHER_ENTITY_TYPE.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ ModRegistry.FIRECALLER_ENTITY_TYPE.get(),
+ ModRegistry.NECROMANCER_ENTITY_TYPE.get(),
+ ModRegistry.ALCHEMIST_ENTITY_TYPE.get(),
+ ModRegistry.SORCERER_ENTITY_TYPE.get(),
+ ModRegistry.ARCHIVIST_ENTITY_TYPE.get()
+ ));
+ ADVANCED_MAGIC_RAIDERS.add(ModRegistry.INVOKER_ENTITY_TYPE.get());
+ }
+
+ if(Compat.GOETY.isLoaded()) // Skipping trampler, Redstone Monstrosity, Redstone Golem and Ripper
+ {
+ ADVANCED_MAGIC_RAIDERS.addAll(List.of(
+ ModEntityType.VIZIER.get(),
+ ModEntityType.APOSTLE.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ ModEntityType.WARLOCK.get(),
+ ModEntityType.HERETIC.get(),
+ ModEntityType.MINISTER.get(),
+ ModEntityType.ENVIOKER.get(),
+ ModEntityType.PREACHER.get(),
+ ModEntityType.CRYOLOGER.get(),
+ ModEntityType.STORM_CASTER.get(),
+ ModEntityType.SORCERER.get()
+ ));
+ STANDARD_RAIDERS.addAll(List.of(
+ ModEntityType.MAVERICK.get(),
+ ModEntityType.INQUILLAGER.get(),
+ ModEntityType.CONQUILLAGER.get(),
+ ModEntityType.CRUSHER.get(),
+ ModEntityType.PIKER.get()
+ ));
+ }
+
+ if(Compat.SUMMONER.isLoaded()) BASIC_MAGIC_RAIDERS.addAll(List.of(ThesummonerModEntities.SUMMONER.get(),ThesummonerModEntities.SUMMONER_BOSS.get()));
+
+ if(Compat.BONES_UPDATE.isLoaded()) BASIC_MAGIC_RAIDERS.add(BonesEntities.NECROMANCER.get());
+
+ if(Compat.MUSKETEER.isLoaded()) STANDARD_RAIDERS.add(MusketeerIllagerModEntities.MARKSMAN.get());
+
+ if(Compat.MODIFIGER.isLoaded()) BASIC_MAGIC_RAIDERS.add(ModEntityRegistry.MODIFIGER.get());
+
+ if(Compat.BAGUS_MOB.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ baguchan.bagusmob.registry.ModEntityRegistry.NINJAR.get(),
+ baguchan.bagusmob.registry.ModEntityRegistry.TENGU.get()
+ ));
+ }
+
+ if(Compat.RAIDED.isLoaded()) //Skipping Savager
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ RaidedRegistry.INQUISITOR.getEntityType(),
+ RaidedRegistry.INCINERATOR.getEntityType()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ RaidedRegistry.NECROMANCER.getEntityType(),
+ RaidedRegistry.ELECTROMANCER.getEntityType()
+ ));
+ }
+
+ if(Compat.MORE_ILLAGERS.isLoaded()) //Skipping Monsterillager and Creepillager
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ MoreIllagersModEntities.GUNILLAGER.get(),
+ MoreIllagersModEntities.ROCKETILLAGER.get(),
+ MoreIllagersModEntities.ILLGEVE.get(),
+ MoreIllagersModEntities.SURPRISER.get()
+ ));
+ }
+
+ if(Compat.SLASH_ILLAGER.isLoaded()) ADVANCED_RAIDERS.add(baguchan.slash_illager.registry.ModEntityRegistry.BLADE_MASTER.get());
+
+ if(Compat.BRAZIER.isLoaded()) BASIC_MAGIC_RAIDERS.add(Content.CRAZED.get());
+
+ if(Compat.MO_FEATURES.isLoaded()) STANDARD_RAIDERS.add(MFEntity.PILLAGER_BRUTE.get());
+
+ if(Compat.FRIENDS_AND_FOES.isLoaded()) BASIC_MAGIC_RAIDERS.add(FriendsAndFoesEntityTypes.ICEOLOGER.get());
+
+ if(Compat.ALL_BARK_ALL_BITE.isLoaded()) STANDARD_RAIDERS.add(ABABEntityTypes.HOUNDMASTER.get());
+
+ if(Compat.RAVAGE_AND_CABBAGE.isLoaded()) STANDARD_RAIDERS.add(RCEntities.CABBAGER.get());
+
+ //Skipping T-Rabus, Cyborg Vindicator, Crude Redstone Golem, Curde Redstone Monstosity, Crude Minion Redstone Golem and Redstone Monstrosity
+ if(Compat.CRIMSON_STEVES_MOBS.isLoaded()) BASIC_MAGIC_RAIDERS.add(CrimsonStevesMobsModEntities.PHANTOM_TAMER.get());
+
+ if(Compat.SORCERER_ILLAGER.isLoaded()) BASIC_MAGIC_RAIDERS.add(SorcererIllagerModEntities.SORCERERILLAGER.get());
+
+ if(Compat.ILLAGER_BRUTE.isLoaded()) STANDARD_RAIDERS.add(IllagerBruteModEntities.ILLAGERBRUTE.get());
+
+ if(Compat.WANDERING_ILLAGER.isLoaded()) STANDARD_RAIDERS.add(de.achtii.wandering_illager.entity.ModEntities.WANDERINGILLAGER.get());
+
+ if(Compat.KARATE_ILLAGER.isLoaded()) STANDARD_RAIDERS.add(KarateillagerfinallyportedModEntities.KARATE_ILLAGER.get());
+
+ if(Compat.EXPADOS_ILLAGERS.isLoaded()) //Skipping Juggernaut
+ {
+ ADVANCED_MAGIC_RAIDERS.add(ExpadosIllagerssModEntities.GRINDICATOR.get());
+ STANDARD_RAIDERS.addAll(List.of(
+ ExpadosIllagerssModEntities.BLUNTOLOGER.get(),
+ ExpadosIllagerssModEntities.CLEAVAGER.get(),
+ ExpadosIllagerssModEntities.SPEAROLOGER.get(),
+ ExpadosIllagerssModEntities.BLUDGEONER.get(),
+ ExpadosIllagerssModEntities.BRASHER.get()
+ ));
+ }
+
+ if(Compat.FRANCIS_ILLAGERS.isLoaded()) //skipping Grummicator
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ ExpansionModEntities.PATROLOGER.get(),
+ ExpansionModEntities.CHEFAGER.get(),
+ ExpansionModEntities.GRINDICATOR.get(),
+ ExpansionModEntities.MAGE.get(),
+ ExpansionModEntities.CHEFOLOGER.get(),
+ ExpansionModEntities.PYROBANDIT.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ ExpansionModEntities.SANDOLOGER.get(),
+ ExpansionModEntities.VRINCITADOR.get(),
+ ExpansionModEntities.FIREOLOGER.get()
+
+ ));
+ }
+
+ if(Compat.EARTH_MOBS.isLoaded()) BASIC_MAGIC_RAIDERS.add(baguchan.earthmobsmod.registry.ModEntities.VILER_WITCH.get());
+
+ if(Compat.ILLAGER_WORLD_WAR.isLoaded()) //Skipping Illager Car, Plane & Cannon
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ IllagerWorldWarModEntities.ASSAULT_PILLAGER_SOLDIER.get(),
+ IllagerWorldWarModEntities.PILLAGER_SOLDIER_WITH_FLAMETHROWER.get(),
+ IllagerWorldWarModEntities.PILLAGER_SOLDIER.get(),
+ IllagerWorldWarModEntities.PILLAGER_SOLDIER_ARMED.get()
+ ));
+ }
+
+ if(Compat.JUST_ILLAGERS.isLoaded()) //Skipping Enderfant because it doesnt extend Raider, Skipping Ampi
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ JustillagersModEntities.REVERANT.get(),
+ JustillagersModEntities.TOXICIST.get(),
+ JustillagersModEntities.BLAKER.get(),
+ JustillagersModEntities.CRISKO.get(),
+ JustillagersModEntities.GUARD.get(),
+ JustillagersModEntities.DRUSKI.get()
+ ));
+ }
+
+ if(Compat.COLDS_WANDERING_TRADER.isLoaded()) BASIC_MAGIC_RAIDERS.add(ColdstraderModEntities.WANDERING_TRAITOR.get());
+
+ if(Compat.ILLAGER_UNIVERSE.isLoaded()) //Skipping Shadow Goat
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ IllagerUniverseModEntities.CALLOLOGER.get(),
+ IllagerUniverseModEntities.PRINZOLOGER.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ IllagerUniverseModEntities.UPGRADER.get(),
+ IllagerUniverseModEntities.UPGRADER_GOLD.get(),
+ IllagerUniverseModEntities.UPGRADER_DIAMOND.get()
+ ));
+ }
+
+ if(Compat.PILLAGER_BOSS.isLoaded())
+ {
+ ADVANCED_RAIDERS.addAll(List.of(
+ PillagerBossModEntities.PILLAGERBOSS.get(),
+ PillagerBossModEntities.AFTERLIFEPILLAGERBOSS.get()
+ ));
+ }
+
+ if(Compat.VIRTUSOS_GRAND_BATTLE.isLoaded()) ADVANCED_RAIDERS.add(VirtusosgrandbattleModEntities.VIRTUOSO_OF_VARIETY.get());
+
+ if(Compat.MISCHIEF_ILLAGERS.isLoaded())
+ {
+ ADVANCED_RAIDERS.addAll(List.of(
+ MischiefIllagersModEntities.SPARKOLOGER.get(),
+ MischiefIllagersModEntities.FANGCLAW.get(),
+ MischiefIllagersModEntities.PHOTOGRAPHER.get(),
+ MischiefIllagersModEntities.MISCHIEVER.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ MischiefIllagersModEntities.LIBRAVOKER.get(),
+ MischiefIllagersModEntities.BUBBLEOLOGER.get(),
+ MischiefIllagersModEntities.PARTYGER.get(),
+ MischiefIllagersModEntities.DOODLER.get(),
+ MischiefIllagersModEntities.MAGNETIZER.get(),
+ MischiefIllagersModEntities.IMPRECATOR.get(),
+ MischiefIllagersModEntities.BASS_BLASTER.get(),
+ MischiefIllagersModEntities.WITHERMANCER.get()
+ ));
+ }
+
+ if(Compat.PILLAGERS_PLUS.isLoaded()) //Other Illagers cannot be added because they dont extend Raider
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ PillagersplusModEntities.SWORD_PILLAGER.get(),
+ PillagersplusModEntities.SPEAR_PILLAGER.get(),
+ PillagersplusModEntities.HOG_RIDER.get()
+ ));
+ }
+
+ if(Compat.IMMERSIVE_ENGINEERING.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ IEEntityTypes.COMMANDO.get(),
+ IEEntityTypes.FUSILIER.get(),
+ IEEntityTypes.BULWARK.get()
+ ));
+ }
+
+ if(Compat.KAMILSKIS_ADDITIONS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ RpgModEntities.BALLOON_PILLAGER.get(),
+ RpgModEntities.SILVERFISH_WRANGLER.get()
+ ));
+ }
+
+ if(Compat.EIDOLON_REPRAISED.isLoaded()) BASIC_MAGIC_RAIDERS.add(EidolonEntities.NECROMANCER.get());
+
+ if(Compat.FROM_THE_SHADOWS.isLoaded()) ADVANCED_RAIDERS.add(net.sonmok14.fromtheshadows.server.utils.registry.EntityRegistry.CLERIC.get());
+
+ if(Compat.RATS.isLoaded()) BASIC_MAGIC_RAIDERS.add(RatsEntityRegistry.PIED_PIPER.get());
+
+ if(Compat.WILD_DELIGHT.isLoaded()) STANDARD_RAIDERS.add(bagu_chan.wild_delight.registry.ModEntityTypes.WILD_CHEF.get());
+
+ if(Compat.JEROTES_VILLAGES.isLoaded()) //skipping firepower pourer, Ominous Banner Projection
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ JerotesVillageEntityType.TRUMPETER.get(),
+ JerotesVillageEntityType.BLASTER.get(),
+ JerotesVillageEntityType.DEFECTOR.get(),
+ JerotesVillageEntityType.MAPMAKER.get(),
+ JerotesVillageEntityType.BANNER_BEARER.get(),
+ JerotesVillageEntityType.EXECUTIONER.get(),
+ JerotesVillageEntityType.EXPLORER.get(),
+ JerotesVillageEntityType.SLAVERY_SUPERVISOR.get(),
+ JerotesVillageEntityType.CYCLONER.get(),
+ JerotesVillageEntityType.JAVELIN_THROWER.get(),
+ JerotesVillageEntityType.ZOMBIE_KEEPER.get(),
+ JerotesVillageEntityType.WILD_FINDER.get(),
+ JerotesVillageEntityType.SUBMARINER.get(),
+ JerotesVillageEntityType.SPIRVE.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ JerotesVillageEntityType.TELEPORTER.get(),
+ JerotesVillageEntityType.LAMP_WIZARD.get(),
+ JerotesVillageEntityType.BITTER_COLD_SORCERER.get(),
+ JerotesVillageEntityType.FIRE_SPITTER.get(),
+ JerotesVillageEntityType.PURPLE_SAND_WITCH.get(),
+ JerotesVillageEntityType.WITCH_SCHOLAR.get()
+ ));
+ ADVANCED_RAIDERS.addAll(List.of(
+ JerotesVillageEntityType.AX_CRAZY.get(),
+ JerotesVillageEntityType.PURPLE_SAND_HAG.get()
+ ));
+ ADVANCED_MAGIC_RAIDERS.addAll(List.of(
+ JerotesVillageEntityType.NECROMANCY_WARLOCK.get(),
+ JerotesVillageEntityType.GAVILER.get(),
+ JerotesVillageEntityType.BIG_WITCH.get()
+ ));
+ }
+
+ if(Compat.NOXIAPI.isLoaded()) //Other Illagers cannot be added because they dont extend Raider
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ NoixmodAPIEntities.BUGLER.get(),
+ NoixmodAPIEntities.ARMORER.get(),
+ NoixmodAPIEntities.HUNTER.get(),
+ NoixmodAPIEntities.DRUNKENNESS.get(),
+ NoixmodAPIEntities.FLAGMAN.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ NoixmodAPIEntities.MOURNER.get(),
+ NoixmodAPIEntities.ABOMINATION.get()
+ ));
+ ADVANCED_MAGIC_RAIDERS.add(NoixmodAPIEntities.BIOLOGIST.get());
+ }
+
+ if(Compat.ROOST2.isLoaded())
+ {
+ STANDARD_RAIDERS.add(Roost2ModEntities.ROOST_RIDER.get());
+ }
+
+ if(Compat.BENS_SHARKS.isLoaded()) BASIC_MAGIC_RAIDERS.add(BenssharksModEntities.THALASSOGER.get());
+
+ if(Compat.ILLAGER_EXANSIONS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ IllagerExpansionsModEntities.ELITE_VINDICATOR.get(),
+ IllagerExpansionsModEntities.RETALIATOR.get(),
+ IllagerExpansionsModEntities.CRINDICATOR.get(),
+ IllagerExpansionsModEntities.ELITE_PILLAGER.get()
+ ));
+ }
+
+ if(Compat.GLOOM_RAIDERS.isLoaded()) //Skipping Spell Sword, Psychc_w, Psychic_m, Headsman, New Big Nun, earl, fly earl, awaken earl
+ {
+ STANDARD_RAIDERS.add(GloomRaidersModEntities.SHYLOCK.get());
+ ADVANCED_RAIDERS.add(GloomRaidersModEntities.NUN.get());
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ GloomRaidersModEntities.NEW_DRAMATIST.get(),
+ GloomRaidersModEntities.DRAMATIST.get()
+ ));
+ }
+
+ if(Compat.OCEANWORLD.isLoaded()) BASIC_MAGIC_RAIDERS.add(OWEntities.OCEANOLOGER);
+
+ if(Compat.POACHERS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ PoachersModEntities.BLOWER.get(),
+ PoachersModEntities.STABBER.get(),
+ PoachersModEntities.HARVESTER.get()
+ ));
+ }
+
+ if(Compat.MECHA_PILLAGER.isLoaded())
+ {
+ ADVANCED_RAIDERS.addAll(List.of(
+ MechapillagerbossModEntities.MECHA_PILLAGER.get(),
+ MechapillagerbossModEntities.MECHA_VINDICATOR.get()
+ ));
+ }
+
+ if(Compat.RESILIANCE_OF_RAIDERS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ TheresilianceofraidersModEntities.CRUSHER.get(),
+ TheresilianceofraidersModEntities.CLASHAGER.get(),
+ TheresilianceofraidersModEntities.SHIVERGER.get()
+ ));
+ }
+
+ if(Compat.RESISTANCE_OF_ILLAGERS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ TheResistanceOfTheRaidersModEntities.GUARDIAN.get(),
+ TheResistanceOfTheRaidersModEntities.ASSAILANT.get(),
+ TheResistanceOfTheRaidersModEntities.HARRIER.get()
+ ));
+ }
+
+ if(Compat.VINDICATION_OF_ILLAGERS.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ RaidervModEntities.BLACKMASTER.get(),
+ RaidervModEntities.PLANNER.get(),
+ RaidervModEntities.VISOLOGER.get(),
+ RaidervModEntities.INTRUDER.get(),
+ RaidervModEntities.VOLTOLOGER.get(),
+ RaidervModEntities.SMITHER.get(),
+ RaidervModEntities.RAGER.get()
+ ));
+ BASIC_MAGIC_RAIDERS.addAll(List.of(
+ RaidervModEntities.PREACHER.get(),
+ RaidervModEntities.PATROL_CAPTAIN.get()
+ ));
+ }
+
+ if(Compat.GOETY_AWAKEN.isLoaded())
+ {
+ STANDARD_RAIDERS.addAll(List.of(
+ com.k1sak1.goetyawaken.common.entities.ModEntityType.VINDICATOR_CHEF.get(),
+ com.k1sak1.goetyawaken.common.entities.ModEntityType.HOSTILE_ROYALGUARD.get()
+ ));
+ }
}
}
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index 974ec88..48d33d2 100644
--- a/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
@@ -1,56 +1,32 @@
-# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
-modLoader="javafml" #mandatory
-# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
-loaderVersion="[40,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
-# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
-# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
+modLoader="javafml"
+loaderVersion="[47,)"
license="All rights reserved"
-# A URL to refer people to when problems occur with this mod
-#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
-# A list of mods - how many allowed here is determined by the individual mod loader
+
[[mods]] #mandatory
-# The modid of the mod
-modId="difficultraids" #mandatory
-# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
-# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
-# see the associated build.gradle script for how to populate this completely automatically during a build
-version="${file.jarVersion}" #mandatory
- # A display name for the mod
-displayName="Difficult Raids" #mandatory
-# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/
-#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
-# A URL for the "homepage" for this mod, displayed in the mod UI
-displayURL="https://www.curseforge.com/minecraft/mc-mods/difficult-raids" #optional
-# A file name (in the root of the mod JAR) containing a logo for display
+modId="difficultraids"
+version="${file.jarVersion}"
+displayName="Difficult Raids"
+displayURL="https://www.curseforge.com/minecraft/mc-mods/difficult-raids-compatibility-edition" #optional
logoFile="logo.png" #optional
-# A text field displayed in the mod UI
-credits="See CurseForge page for a list of all texture artists!" #optional
-# A text field displayed in the mod UI
+credits="LDawsonM2012 for the 1.20.1 port. See CurseForge page for a list of all texture artists!" #optional
authors="CalculusMaster" #optional
-# The description text for the mod (multi line!) (#mandatory)
description='''
Do you like Raids? Do you think they're too easy?
Difficult Raids adds higher difficulty options for Raids as well as new Illagers to challenge you.
Higher difficulty raids offer greater rewards.
Are you up for the challenge?
'''
-# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
+
[[dependencies.difficultraids]] #optional
- # the modid of the dependency
- modId="forge" #mandatory
- # Does this dependency have to exist - if not, ordering below must be specified
- mandatory=true #mandatory
- # The version range of the dependency
- versionRange="[40,)" #mandatory
- # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
+ modId="forge"
+ mandatory=true
+ versionRange="[47,)"
ordering="NONE"
- # Side this dependency is applied on - BOTH, CLIENT or SERVER
side="BOTH"
-# Here's another dependency
+
[[dependencies.difficultraids]]
modId="minecraft"
mandatory=true
-# This version range declares a minimum of the current minecraft version up to but not including the next major version
- versionRange="[1.19.2,1.20)"
+ versionRange="[1.20.1,1.20.2)"
ordering="NONE"
side="BOTH"
diff --git a/src/main/resources/assets/difficultraids/textures/mob_effect/winds_curse.png b/src/main/resources/assets/difficultraids/textures/mob_effect/winds_curse.png
new file mode 100644
index 0000000..832e71c
Binary files /dev/null and b/src/main/resources/assets/difficultraids/textures/mob_effect/winds_curse.png differ
diff --git a/src/main/resources/data/difficultraids/loot_tables/entities/ashenmancer_illager.json b/src/main/resources/data/difficultraids/loot_tables/entities/ashenmancer_illager.json
new file mode 100644
index 0000000..021cbbc
--- /dev/null
+++ b/src/main/resources/data/difficultraids/loot_tables/entities/ashenmancer_illager.json
@@ -0,0 +1,65 @@
+{
+ "type": "minecraft:entity",
+ "pools": [
+ {
+ "bonus_rolls": 0.0,
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "weight": 2,
+ "name": "difficultraids:poison_totem"
+ },
+ {
+ "type": "minecraft:item",
+ "weight": 1,
+ "name": "difficultraids:persistence_totem"
+ },
+ {
+ "type": "minecraft:item",
+ "weight": 2,
+ "name": "difficultraids:levitation_totem"
+ },
+ {
+ "type": "minecraft:item",
+ "weight": 1,
+ "name": "difficultraids:destiny_totem"
+ }
+ ],
+ "rolls": 2.0
+ },
+ {
+ "bonus_rolls": 0.0,
+ "conditions": [
+ {
+ "condition": "minecraft:killed_by_player"
+ }
+ ],
+ "entries": [
+ {
+ "type": "minecraft:item",
+ "functions": [
+ {
+ "add": false,
+ "count": {
+ "type": "minecraft:uniform",
+ "max": 1.0,
+ "min": 0.0
+ },
+ "function": "minecraft:set_count"
+ },
+ {
+ "count": {
+ "type": "minecraft:uniform",
+ "max": 1.0,
+ "min": 0.0
+ },
+ "function": "minecraft:looting_enchant"
+ }
+ ],
+ "name": "minecraft:emerald"
+ }
+ ],
+ "rolls": 1.0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/difficultraids.mixin.json b/src/main/resources/difficultraids.mixin.json
index e403171..fd24503 100644
--- a/src/main/resources/difficultraids.mixin.json
+++ b/src/main/resources/difficultraids.mixin.json
@@ -1,5 +1,6 @@
{
"required": true,
+ "minVersion": "0.8",
"package": "com.calculusmaster.difficultraids.mixins",
"compatibilityLevel": "JAVA_17",
"refmap": "difficultraids.refmap.json",
@@ -33,12 +34,12 @@
"raider.illusioner.IllusionerBlindnessSpellGoalMixin",
"raider.illusioner.IllusionerMirrorSpellGoalMixin"
],
- "injectors": {
- "defaultRequire": 1
- },
"client": [
"WitherSkullRendererMixin",
"raider.PillagerRendererMixin"
],
- "minVersion": "0.8"
-}
\ No newline at end of file
+ "server": [],
+ "injectors": {
+ "defaultRequire": 1
+ }
+}
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
index 94d9797..359aa77 100644
Binary files a/src/main/resources/logo.png and b/src/main/resources/logo.png differ
diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta
index 993f908..12e5631 100644
--- a/src/main/resources/pack.mcmeta
+++ b/src/main/resources/pack.mcmeta
@@ -1,6 +1,6 @@
{
"pack": {
- "description": "DifficultRaids Resources",
- "pack_format": 9
+ "description": "DifficultRaids - Compatibility Edition Resources",
+ "pack_format": 15
}
-}
\ No newline at end of file
+}