Skip to content

Commit 62747d6

Browse files
v2.0-beta.9
- Added compatibility with Leo's Illagers and Illager Revolution - Added loot tables for various DifficultRaids entities, and more importantly Raid Loot (which now allows this to be customizable) - Added Restrictive Mode config - if active prevents mobs that aren't registered with DifficultRaids/datapack from spawning in higher difficulty raids - Added /difficultraids_freezeraiders (meant for me to grab screenshots but if anyone wants to use it, it's staying around)
1 parent 0c3b9a8 commit 62747d6

39 files changed

+1815
-425
lines changed

build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ apply plugin: 'org.parchmentmc.librarian.forgegradle'
2929
apply plugin: 'org.spongepowered.mixin'
3030

3131

32-
version = '2.0-beta.8'
32+
version = '2.0-beta.9'
3333
group = 'com.calculusmaster.difficultraids'
3434
archivesBaseName = 'difficultraids-1.19.2'
3535

@@ -185,6 +185,9 @@ dependencies {
185185
implementation fg.deobf("curse.maven:geckolib-388172:4407241")
186186
implementation fg.deobf("curse.maven:dungeons-libraries-550941:4496767")
187187

188+
//Leo's Illagers
189+
implementation fg.deobf("curse.maven:leos-illagers-812954:4370803")
190+
188191
//Mob Entity Path Visualizer 1.1.0-release.6
189192
runtimeOnly fg.deobf("curse.maven:mob-entity-path-visualizer-590716:4063117")
190193

src/main/java/com/calculusmaster/difficultraids/DifficultRaids.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.calculusmaster.difficultraids.data.RaidWaveReloadListener;
44
import com.calculusmaster.difficultraids.entity.DifficultRaidsEntityTypes;
55
import com.calculusmaster.difficultraids.raids.RaidEnemyRegistry;
6-
import com.calculusmaster.difficultraids.raids.RaidLoot;
76
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
87
import com.calculusmaster.difficultraids.setup.DifficultRaidsEffects;
98
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
@@ -70,8 +69,6 @@ private void onLoadComplete(final FMLLoadCompleteEvent event)
7069
RaidEnemyRegistry.registerRaiders();
7170
RaidEnemyRegistry.registerWaves();
7271

73-
RaidLoot.registerLoot();
74-
7572
DifficultRaidsUtil.registerArmorModifierRaiderLists();
7673
}
7774

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.calculusmaster.difficultraids.commands;
2+
3+
import com.mojang.brigadier.CommandDispatcher;
4+
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
5+
import com.mojang.brigadier.exceptions.CommandSyntaxException;
6+
import net.minecraft.commands.CommandSourceStack;
7+
import net.minecraft.commands.Commands;
8+
import net.minecraft.network.chat.Component;
9+
import net.minecraft.server.level.ServerLevel;
10+
import net.minecraft.server.level.ServerPlayer;
11+
import net.minecraft.world.entity.LivingEntity;
12+
import net.minecraft.world.entity.raid.Raid;
13+
import net.minecraft.world.entity.raid.Raider;
14+
import net.minecraft.world.phys.Vec3;
15+
16+
import java.util.List;
17+
18+
public class FreezeRaidersCommand
19+
{
20+
public static void register(CommandDispatcher<CommandSourceStack> dispatcher)
21+
{
22+
LiteralArgumentBuilder<CommandSourceStack> literalArgumentBuilder = Commands
23+
.literal("difficultraids_freezeraiders")
24+
.requires(css -> {
25+
try { return css.getPlayerOrException().hasPermissions(2); }
26+
catch (CommandSyntaxException e)
27+
{
28+
e.printStackTrace();
29+
return false;
30+
}
31+
})
32+
.executes(css -> {
33+
ServerPlayer player = css.getSource().getPlayerOrException();
34+
ServerLevel level = player.getLevel();
35+
Raid raid = level.getRaidAt(player.blockPosition());
36+
37+
if(raid == null) css.getSource().sendFailure(Component.literal("You must be near a Raid to use this command!"));
38+
else
39+
{
40+
List<Raider> alive = raid.getAllRaiders().stream().filter(LivingEntity::isAlive).toList();
41+
alive.forEach(r ->
42+
{
43+
if(r.isNoAi()) r.setNoAi(false);
44+
r.lookAt(css.getSource().getAnchor(), new Vec3(player.getX() - r.getX(), player.getY() - r.getY(), player.getZ() - r.getZ()));
45+
r.setNoAi(true);
46+
});
47+
css.getSource().sendSuccess(Component.literal(alive.size() + " raiders frozen!"), true);
48+
}
49+
50+
return 1;
51+
});
52+
53+
dispatcher.register(literalArgumentBuilder);
54+
}
55+
}

src/main/java/com/calculusmaster/difficultraids/config/RaidDifficultyConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class RaidDifficultyConfig
3636
public RaiderConfigs.Executioner executioner;
3737
public RaiderConfigs.Mountaineer mountaineer;
3838
public RaiderConfigs.RoyalGuard royalguard;
39+
public RaiderConfigs.VindicatorWithShield vindicatorWithShield;
3940

4041
//Translate ForgeConfigSpec values into usable variables
4142
public void init()
@@ -68,5 +69,6 @@ public void init()
6869
this.executioner.initialize();
6970
this.mountaineer.initialize();
7071
this.royalguard.initialize();
72+
this.vindicatorWithShield.initialize();
7173
}
7274
}

src/main/java/com/calculusmaster/difficultraids/config/RaiderConfigs.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2003,6 +2003,69 @@ public void initialize()
20032003
}
20042004
}
20052005

2006+
public static class VindicatorWithShield extends RaiderConfig
2007+
{
2008+
private final ForgeConfigSpec.IntValue sharpnessLevel_config;
2009+
public int sharpnessLevel;
2010+
2011+
private final ForgeConfigSpec.IntValue criticalBurstLevel_config;
2012+
public int criticalBurstLevel;
2013+
2014+
private final ForgeConfigSpec.IntValue criticalStrikeLevel_config;
2015+
public int criticalStrikeLevel;
2016+
2017+
private final ForgeConfigSpec.DoubleValue axeDropChance_config;
2018+
public float axeDropChance;
2019+
2020+
public VindicatorWithShield(RaidDifficulty rd, ForgeConfigSpec.Builder spec)
2021+
{
2022+
super(rd);
2023+
2024+
this.sharpnessLevel_config = spec
2025+
.comment("Level of Sharpness that Shielded Vindicator axes will be enchanted with. 0 to disable.")
2026+
.defineInRange("shieldVindicator_sharpnessLevel", switch(rd)
2027+
{
2028+
case DEFAULT -> 0;
2029+
case HERO -> 2;
2030+
case LEGEND -> 3;
2031+
case MASTER -> 4;
2032+
case GRANDMASTER -> 5;
2033+
}, 0, Integer.MAX_VALUE);
2034+
2035+
this.criticalBurstLevel_config = spec
2036+
.comment("Level of Critical Burst that Shielded Vindicator axes will be enchanted with. 0 to disable.")
2037+
.defineInRange("shieldVindicator_criticalBurstLevel", switch(rd)
2038+
{
2039+
case DEFAULT, HERO -> 0;
2040+
case LEGEND -> 2;
2041+
case MASTER -> 3;
2042+
case GRANDMASTER -> 6;
2043+
}, 0, Integer.MAX_VALUE);
2044+
2045+
this.criticalStrikeLevel_config = spec
2046+
.comment("Level of Critical Strike that Shielded Vindicator axes will be enchanted with. 0 to disable.")
2047+
.defineInRange("shieldVindicator_criticalStrikeLevel", switch(rd)
2048+
{
2049+
case DEFAULT -> 0;
2050+
case HERO, LEGEND -> 1;
2051+
case MASTER, GRANDMASTER -> 2;
2052+
}, 0, Integer.MAX_VALUE);
2053+
2054+
this.axeDropChance_config = spec
2055+
.comment("Chance that a Shielded Vindicator will drop their axe upon death. 0 to disable.")
2056+
.defineInRange("shieldVindicator_axeDropChance", 0., 0., 1.);
2057+
}
2058+
2059+
@Override
2060+
public void initialize()
2061+
{
2062+
this.sharpnessLevel = this.sharpnessLevel_config.get();
2063+
this.criticalBurstLevel = this.criticalBurstLevel_config.get();
2064+
this.criticalStrikeLevel = this.criticalStrikeLevel_config.get();
2065+
this.axeDropChance = this.axeDropChance_config.get().floatValue();
2066+
}
2067+
}
2068+
20062069
private static abstract class RaiderConfig
20072070
{
20082071
protected RaidDifficulty rd;

src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/ModurEliteEntity.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.calculusmaster.difficultraids.config.RaiderConfigs;
44
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
55
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
6-
import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
76
import com.calculusmaster.difficultraids.util.Compat;
87
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
98
import net.minecraft.core.BlockPos;
@@ -32,7 +31,6 @@
3231
import net.minecraft.world.entity.player.Player;
3332
import net.minecraft.world.entity.projectile.Projectile;
3433
import net.minecraft.world.entity.raid.Raider;
35-
import net.minecraft.world.item.ItemStack;
3634
import net.minecraft.world.level.Level;
3735
import net.minecraft.world.level.block.Blocks;
3836
import net.minecraft.world.phys.AABB;
@@ -181,7 +179,7 @@ protected void customServerAiStep()
181179
@Override
182180
protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean pRecentlyHit)
183181
{
184-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_LIGHTNING.get()));
182+
185183
}
186184

187185
public boolean isInExtendedSpellState()

src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/NuaosEliteEntity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
66
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
77
import com.calculusmaster.difficultraids.setup.DifficultRaidsEnchantments;
8-
import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
98
import com.calculusmaster.difficultraids.util.Compat;
109
import com.calculusmaster.difficultraids.util.DifficultRaidsUtil;
1110
import net.minecraft.core.BlockPos;
@@ -124,7 +123,7 @@ public void applyRaidBuffs(int p_37844_, boolean p_37845_)
124123
@Override
125124
protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean pRecentlyHit)
126125
{
127-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_PROTECTION.get()));
126+
128127
}
129128

130129
@Nullable

src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/VoldonEliteEntity.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.calculusmaster.difficultraids.entity.entities.component.VoldonFamiliarEntity;
44
import com.calculusmaster.difficultraids.entity.entities.core.AbstractEvokerVariant;
55
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
6-
import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
76
import com.calculusmaster.difficultraids.util.Compat;
87
import net.minecraft.core.BlockPos;
98
import net.minecraft.core.particles.ParticleTypes;
@@ -31,7 +30,6 @@
3130
import net.minecraft.world.entity.player.Player;
3231
import net.minecraft.world.entity.projectile.SmallFireball;
3332
import net.minecraft.world.entity.raid.Raider;
34-
import net.minecraft.world.item.ItemStack;
3533
import net.minecraft.world.level.Level;
3634
import net.minecraft.world.phys.EntityHitResult;
3735
import org.jetbrains.annotations.Nullable;
@@ -186,9 +184,7 @@ public void tick()
186184
@Override
187185
protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean pRecentlyHit)
188186
{
189-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_PROTECTION.get()));
190-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_PROTECTION.get()));
191-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_PROTECTION.get()));
187+
192188
}
193189

194190
@Override

src/main/java/com/calculusmaster/difficultraids/entity/entities/elite/XydraxEliteEntity.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.calculusmaster.difficultraids.raids.RaidDifficulty;
77
import com.calculusmaster.difficultraids.setup.DifficultRaidsConfig;
88
import com.calculusmaster.difficultraids.setup.DifficultRaidsEffects;
9-
import com.calculusmaster.difficultraids.setup.DifficultRaidsItems;
109
import com.calculusmaster.difficultraids.util.Compat;
1110
import net.minecraft.core.BlockPos;
1211
import net.minecraft.core.particles.ParticleTypes;
@@ -36,7 +35,6 @@
3635
import net.minecraft.world.entity.player.Player;
3736
import net.minecraft.world.entity.projectile.Arrow;
3837
import net.minecraft.world.entity.raid.Raider;
39-
import net.minecraft.world.item.ItemStack;
4038
import net.minecraft.world.level.Level;
4139
import net.minecraft.world.phys.AABB;
4240
import net.minecraft.world.phys.BlockHitResult;
@@ -143,7 +141,7 @@ public boolean hurt(DamageSource pSource, float pAmount)
143141
@Override
144142
protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean pRecentlyHit)
145143
{
146-
this.spawnAtLocation(new ItemStack(DifficultRaidsItems.TOTEM_OF_TELEPORTATION.get()));
144+
147145
}
148146

149147
@Override

src/main/java/com/calculusmaster/difficultraids/events/DREntityAttributeRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public static void addEntityAttributes(EntityAttributeCreationEvent event)
4242
.add(Attributes.FOLLOW_RANGE, 12.0D)
4343
.add(Attributes.MAX_HEALTH, 36.0D)
4444
.add(Attributes.ATTACK_DAMAGE, 2.0D)
45+
.add(Attributes.ARMOR_TOUGHNESS, 0.5)
4546
.build()
4647
);
4748

@@ -81,7 +82,6 @@ public static void addEntityAttributes(EntityAttributeCreationEvent event)
8182
.build()
8283
);
8384

84-
//TODO: Remove Dart
8585
event.put(DifficultRaidsEntityTypes.DART_ILLAGER.get(), DEFAULT.get()
8686
.add(Attributes.MOVEMENT_SPEED, 0.42F)
8787
.add(Attributes.FOLLOW_RANGE, 18.0D)

0 commit comments

Comments
 (0)