aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2023-08-17 20:45:21 +0200
committerGitHub <noreply@github.com>2023-08-17 20:45:21 +0200
commit8aa519a116879298195bfe4206451ee24c855d2a (patch)
tree0a8703ad6c60758fcde9fd16fe54ac77fcd3eb5d /src/main
parent4dfda5b4ae37352c3aeed2624d8f3de684ba9cfd (diff)
downloadGT5-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.java35
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java16
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;
+ }
}
}