Skip to content
This repository has been archived by the owner on May 25, 2024. It is now read-only.

Commit

Permalink
Add a mode for EEC to void all enchanted and damaged outputs (#116)
Browse files Browse the repository at this point in the history
* add mode

* Void All Of Them!

* spotless

* Move buttons

---------

Co-authored-by: kuba6000 <[email protected]>
  • Loading branch information
HoleFish and kuba6000 authored Jan 12, 2024
1 parent 529e036 commit 6256c8c
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import com.gtnewhorizons.modularui.common.widget.Column;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;

import gregtech.api.enums.GT_Values;
Expand Down Expand Up @@ -314,15 +315,16 @@ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildCont
.widget(createBatchModeButton(builder))
.widget(createLockToSingleRecipeButton(builder));

DynamicPositionedColumn configurationElements = new DynamicPositionedColumn();
DynamicPositionedRow configurationElements = new DynamicPositionedRow();
addConfigurationWidgets(configurationElements, buildContext);

builder.widget(
configurationElements.setAlignment(MainAxisAlignment.END)
.setPos(getPowerSwitchButtonPos().subtract(0, 18)));
configurationElements.setSpace(2)
.setAlignment(MainAxisAlignment.SPACE_BETWEEN)
.setPos(getRecipeLockingButtonPos().add(18, 0)));
}

protected void addConfigurationWidgets(DynamicPositionedColumn configurationElements, UIBuildContext buildContext) {
protected void addConfigurationWidgets(DynamicPositionedRow configurationElements, UIBuildContext buildContext) {

}

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/kubatech/loaders/MobHandlerLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public MobEECRecipe(List<MobDrop> transformedDrops, MobRecipe recipe) {
}

public ItemStack[] generateOutputs(Random rnd, GT_MetaTileEntity_ExtremeEntityCrusher MTE, double attackDamage,
int lootinglevel, boolean preferInfernalDrops) {
int lootinglevel, boolean preferInfernalDrops, boolean voidAllDamagedAndEnchantedItems) {
MTE.lEUt = mEUt;
MTE.mMaxProgresstime = Math.max(MOB_SPAWN_INTERVAL, (int) ((recipe.maxEntityHealth / attackDamage) * 10d));
ArrayList<ItemStack> stacks = new ArrayList<>(this.mOutputs.size());
Expand All @@ -112,6 +112,7 @@ public ItemStack[] generateOutputs(Random rnd, GT_MetaTileEntity_ExtremeEntityCr
MTE.getBaseMetaTileEntity()
.getZCoord());
for (MobDrop o : this.mOutputs) {
if (voidAllDamagedAndEnchantedItems && (o.damages != null || o.enchantable != null)) continue;
int chance = o.chance;

double dChance = (double) chance / 100d;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.kuba6000.mobsinfo.api.utils.FastRandom;
import com.mojang.authlib.GameProfile;
Expand Down Expand Up @@ -206,6 +206,7 @@ public void onUnload() {
private byte mGlassTier = 0;
private boolean mAnimationEnabled = true;
private boolean mIsProducingInfernalDrops = true;
private boolean voidAllDamagedAndEnchantedItems = false;

private EntityRenderer entityRenderer = null;
private boolean renderEntity = false;
Expand All @@ -218,6 +219,7 @@ public void saveNBTData(NBTTagCompound aNBT) {
aNBT.setBoolean("mAnimationEnabled", mAnimationEnabled);
aNBT.setByte("mGlassTier", mGlassTier);
aNBT.setBoolean("mIsProducingInfernalDrops", mIsProducingInfernalDrops);
aNBT.setBoolean("voidAllDamagedAndEnchantedItems", voidAllDamagedAndEnchantedItems);
if (weaponCache.getStackInSlot(0) != null) aNBT.setTag(
"weaponCache",
weaponCache.getStackInSlot(0)
Expand All @@ -232,6 +234,7 @@ public void loadNBTData(NBTTagCompound aNBT) {
mGlassTier = aNBT.getByte("mGlassTier");
mIsProducingInfernalDrops = !aNBT.hasKey("mIsProducingInfernalDrops")
|| aNBT.getBoolean("mIsProducingInfernalDrops");
voidAllDamagedAndEnchantedItems = aNBT.getBoolean("voidAllDamagedAndEnchantedItems");
if (aNBT.hasKey("weaponCache"))
weaponCache.setStackInSlot(0, ItemStack.loadItemStackFromNBT(aNBT.getCompoundTag("weaponCache")));
}
Expand Down Expand Up @@ -543,7 +546,8 @@ public CheckRecipeResult checkProcessing() {
if (isInRitualMode && isRitualValid()) {
if (getMaxInputEu() < recipe.mEUt / 4) return CheckRecipeResultRegistry.insufficientPower(recipe.mEUt / 4);
this.mOutputFluids = new FluidStack[] { FluidRegistry.getFluidStack("xpjuice", 5000) };
this.mOutputItems = recipe.generateOutputs(rand, this, 3, 0, mIsProducingInfernalDrops);
this.mOutputItems = recipe
.generateOutputs(rand, this, 3, 0, mIsProducingInfernalDrops, voidAllDamagedAndEnchantedItems);
this.lEUt /= 4L;
this.mMaxProgresstime = 400;
} else {
Expand Down Expand Up @@ -575,7 +579,8 @@ public CheckRecipeResult checkProcessing() {
this,
attackDamage,
weaponCache.isValid ? weaponCache.looting : 0,
mIsProducingInfernalDrops);
mIsProducingInfernalDrops,
voidAllDamagedAndEnchantedItems);

EECPlayer.currentWeapon = null;

Expand Down Expand Up @@ -666,6 +671,9 @@ public String[] getInfoData() {
info.add(
"Is allowed to produce infernal drops: " + EnumChatFormatting.YELLOW
+ (mIsProducingInfernalDrops ? "Yes" : "No"));
info.add(
"Void all damaged and enchanted items: " + EnumChatFormatting.YELLOW
+ (voidAllDamagedAndEnchantedItems ? "Yes" : "No"));
info.add("Is in ritual mode: " + EnumChatFormatting.YELLOW + (isInRitualMode ? "Yes" : "No"));
if (isInRitualMode) info.add(
"Is connected to ritual: "
Expand All @@ -684,7 +692,7 @@ public String[] getInfoData() {
}

@Override
protected void addConfigurationWidgets(DynamicPositionedColumn configurationElements, UIBuildContext buildContext) {
protected void addConfigurationWidgets(DynamicPositionedRow configurationElements, UIBuildContext buildContext) {
configurationElements.setSynced(true);
configurationElements.widget(new CycleButtonWidget().setToggle(() -> isInRitualMode, v -> {
if (this.mMaxProgresstime > 0) {
Expand Down Expand Up @@ -728,6 +736,26 @@ protected void addConfigurationWidgets(DynamicPositionedColumn configurationElem
.addTooltip("Is allowed to spawn infernal mobs")
.addTooltip(new Text("Does not affect mobs that are always infernal !").color(Color.GRAY.normal))
.setTooltipShowUpDelay(TOOLTIP_DELAY));
configurationElements.widget(new CycleButtonWidget().setToggle(() -> voidAllDamagedAndEnchantedItems, v -> {
if (this.mMaxProgresstime > 0) {
GT_Utility.sendChatToPlayer(buildContext.getPlayer(), "Can't change mode when running !");
return;
}

voidAllDamagedAndEnchantedItems = v;

if (!(buildContext.getPlayer() instanceof EntityPlayerMP)) return;
if (!voidAllDamagedAndEnchantedItems) GT_Utility.sendChatToPlayer(buildContext.getPlayer(), "Void nothing");
else GT_Utility.sendChatToPlayer(buildContext.getPlayer(), "Void all damaged and enchanted items");
})
.setTextureGetter(toggleButtonTextureGetter)
.setVariableBackgroundGetter(toggleButtonBackgroundGetter)
.setSize(16, 16)
.addTooltip("Void all damaged and enchanted items")
.addTooltip(
new Text("Does not affect infernal drops and some special drops like Sticky Sword!")
.color(Color.GRAY.normal))
.setTooltipShowUpDelay(TOOLTIP_DELAY));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
Expand Down Expand Up @@ -609,7 +610,7 @@ public ItemStack transferStackInSlot(EntityPlayer aPlayer, int aSlotIndex) {
}

@Override
protected void addConfigurationWidgets(DynamicPositionedColumn configurationElements, UIBuildContext buildContext) {
protected void addConfigurationWidgets(DynamicPositionedRow configurationElements, UIBuildContext buildContext) {
buildContext.addSyncedWindow(CONFIGURATION_WINDOW_ID, this::createConfigurationWindow);
configurationElements.setSynced(false);
configurationElements.widget(
Expand Down Expand Up @@ -694,12 +695,13 @@ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildCont
.widget(createBatchModeButton(builder))
.widget(createLockToSingleRecipeButton(builder));

DynamicPositionedColumn configurationElements = new DynamicPositionedColumn();
DynamicPositionedRow configurationElements = new DynamicPositionedRow();
addConfigurationWidgets(configurationElements, buildContext);

builder.widget(
configurationElements.setAlignment(MainAxisAlignment.END)
.setPos(getPowerSwitchButtonPos().subtract(0, 18)));
configurationElements.setSpace(2)
.setAlignment(MainAxisAlignment.SPACE_BETWEEN)
.setPos(getRecipeLockingButtonPos().add(18, 0)));
}

protected ModularWindow createConfigurationWindow(final EntityPlayer player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
Expand Down Expand Up @@ -760,16 +761,17 @@ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildCont
.widget(createBatchModeButton(builder))
.widget(createLockToSingleRecipeButton(builder));

DynamicPositionedColumn configurationElements = new DynamicPositionedColumn();
DynamicPositionedRow configurationElements = new DynamicPositionedRow();
addConfigurationWidgets(configurationElements, buildContext);

builder.widget(
configurationElements.setAlignment(MainAxisAlignment.END)
.setPos(getPowerSwitchButtonPos().subtract(0, 18)));
configurationElements.setSpace(2)
.setAlignment(MainAxisAlignment.SPACE_BETWEEN)
.setPos(getRecipeLockingButtonPos().add(18, 0)));
}

@Override
protected void addConfigurationWidgets(DynamicPositionedColumn configurationElements, UIBuildContext buildContext) {
protected void addConfigurationWidgets(DynamicPositionedRow configurationElements, UIBuildContext buildContext) {
buildContext.addSyncedWindow(CONFIGURATION_WINDOW_ID, this::createConfigurationWindow);
configurationElements.setSynced(false);
configurationElements.widget(
Expand Down

0 comments on commit 6256c8c

Please sign in to comment.