diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-08-17 20:45:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-17 20:45:21 +0200 |
commit | 8aa519a116879298195bfe4206451ee24c855d2a (patch) | |
tree | 0a8703ad6c60758fcde9fd16fe54ac77fcd3eb5d /src/main | |
parent | 4dfda5b4ae37352c3aeed2624d8f3de684ba9cfd (diff) | |
download | GT5-Unofficial-8aa519a116879298195bfe4206451ee24c855d2a.tar.gz GT5-Unofficial-8aa519a116879298195bfe4206451ee24c855d2a.tar.bz2 GT5-Unofficial-8aa519a116879298195bfe4206451ee24c855d2a.zip |
Allow EEC to get drops that have requirements (e.g. skulls) (#92)
* Update dependencies.gradle
* Update build.gradle
* Use the new API
* Update dependencies.gradle
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/kubatech/loaders/MobHandlerLoader.java | 35 | ||||
-rw-r--r-- | src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java | 16 |
2 files changed, 42 insertions, 9 deletions
diff --git a/src/main/java/kubatech/loaders/MobHandlerLoader.java b/src/main/java/kubatech/loaders/MobHandlerLoader.java index c56c397308..7089aa6f6e 100644 --- a/src/main/java/kubatech/loaders/MobHandlerLoader.java +++ b/src/main/java/kubatech/loaders/MobHandlerLoader.java @@ -46,6 +46,7 @@ import org.apache.logging.log4j.Logger; import com.dreammaster.main.MainRegistry; import com.dreammaster.modcustomdrops.CustomDrops; +import com.kuba6000.mobsinfo.api.IChanceModifier; import com.kuba6000.mobsinfo.api.MobDrop; import com.kuba6000.mobsinfo.api.MobOverride; import com.kuba6000.mobsinfo.api.MobRecipe; @@ -106,8 +107,30 @@ public class MobHandlerLoader { MTE.lEUt = mEUt; MTE.mMaxProgresstime = Math.max(MOB_SPAWN_INTERVAL, (int) ((recipe.maxEntityHealth / attackDamage) * 10d)); ArrayList<ItemStack> stacks = new ArrayList<>(this.mOutputs.size()); + this.entityCopy.setPosition( + MTE.getBaseMetaTileEntity() + .getXCoord(), + MTE.getBaseMetaTileEntity() + .getYCoord(), + MTE.getBaseMetaTileEntity() + .getZCoord()); for (MobDrop o : this.mOutputs) { int chance = o.chance; + + double dChance = (double) chance / 100d; + for (IChanceModifier chanceModifier : o.chanceModifiers) { + dChance = chanceModifier.apply( + dChance, + MTE.getBaseMetaTileEntity() + .getWorld(), + stacks, + MTE.EECPlayer, + this.entityCopy); + } + + chance = (int) (dChance * 100d); + if (chance == 0) continue; + if (o.playerOnly) { chance = (int) ((double) chance * Config.MobHandler.playerOnlyDropsModifier); if (chance < 1) chance = 1; @@ -199,13 +222,15 @@ public class MobHandlerLoader { public void onPostMobRegistration(PostMobRegistrationEvent event) { if (!event.drops.isEmpty() && event.recipe.isUsableInVial) { ArrayList<MobDrop> drops = (ArrayList<MobDrop>) event.drops.clone(); - drops.removeIf(d -> d.chance == 0); + // drops.removeIf(d -> d.chance == 0); if (!drops.isEmpty()) { recipeMap.put(event.currentMob, new MobEECRecipe(drops, event.recipe)); - event.drops.stream() - .filter(d -> d.chance == 0) - .forEach( - d -> d.additionalInfo.add(StatCollector.translateToLocal("kubatech.mobhandler.eec_disabled"))); + /* + * event.drops.stream() + * .filter(d -> d.chance == 0) + * .forEach( + * d -> d.additionalInfo.add(StatCollector.translateToLocal("kubatech.mobhandler.eec_disabled"))); + */ } } } diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java index bea621232f..ce311dfc3a 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java @@ -209,7 +209,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber private EntityRenderer entityRenderer = null; private boolean renderEntity = false; - private EECFakePlayer EECPlayer = null; + public EECFakePlayer EECPlayer = null; @Override public void saveNBTData(NBTTagCompound aNBT) { @@ -549,24 +549,27 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber } if (weaponCache.isValid) attackDamage += weaponCache.attackDamage; + if (EECPlayer == null) EECPlayer = new EECFakePlayer(this); + EECPlayer.currentWeapon = lootingHolder; + this.mOutputItems = recipe.generateOutputs( rand, this, attackDamage, weaponCache.isValid ? weaponCache.looting : 0, mIsProducingInfernalDrops); + + EECPlayer.currentWeapon = null; + this.mOutputFluids = new FluidStack[] { FluidRegistry.getFluidStack("xpjuice", 120) }; int times = this.calculatePerfectOverclock(this.lEUt, this.mMaxProgresstime); - // noinspection ConstantConditions if (weaponCache.isValid && lootingHolder.isItemStackDamageable()) { - if (EECPlayer == null) EECPlayer = new EECFakePlayer(this); EECPlayer.currentWeapon = lootingHolder; Item lootingHolderItem = lootingHolder.getItem(); for (int i = 0; i < times + 1; i++) { // noinspection ConstantConditions if (!lootingHolderItem.hitEntity(lootingHolder, recipe.recipe.entity, EECPlayer)) break; if (lootingHolder.stackSize == 0) { - // noinspection ConstantConditions inputbus.setInventorySlotContents(0, null); break; } @@ -880,5 +883,10 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber public ItemStack getCurrentEquippedItem() { return currentWeapon; } + + @Override + public ItemStack getHeldItem() { + return currentWeapon; + } } } |