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

Commit

Permalink
essence extractor's fuel was remove
Browse files Browse the repository at this point in the history
  • Loading branch information
anviaan committed Jul 26, 2023
1 parent 2a40c38 commit c50e881
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 78 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,11 @@
import java.util.Optional;

public class EssenceExtractorBlockEntity extends BlockEntity implements NamedScreenHandlerFactory, ImplementedInventory {
private final DefaultedList<ItemStack> inventory =
DefaultedList.ofSize(4, ItemStack.EMPTY);
private final DefaultedList<ItemStack> inventory = DefaultedList.ofSize(3, ItemStack.EMPTY);

protected final PropertyDelegate propertyDelegate;
private int progress = 0;
private int maxProgress = 72;
private int fuelTime = 0;
private int maxFuelTime = 0;

public EssenceExtractorBlockEntity(BlockPos pos, BlockState state) {
super(ModBlockEntities.ESSENCE_EXTRACTOR, pos, state);
Expand All @@ -39,8 +36,6 @@ public int get(int index) {
return switch (index) {
case 0 -> EssenceExtractorBlockEntity.this.progress;
case 1 -> EssenceExtractorBlockEntity.this.maxProgress;
case 2 -> EssenceExtractorBlockEntity.this.fuelTime;
case 3 -> EssenceExtractorBlockEntity.this.maxFuelTime;
default -> 0;
};
}
Expand All @@ -49,13 +44,11 @@ public void set(int index, int value) {
switch (index) {
case 0 -> EssenceExtractorBlockEntity.this.progress = value;
case 1 -> EssenceExtractorBlockEntity.this.maxProgress = value;
case 2 -> EssenceExtractorBlockEntity.this.fuelTime = value;
case 3 -> EssenceExtractorBlockEntity.this.maxFuelTime = value;
}
}

public int size() {
return 4;
return 3;
}
};
}
Expand All @@ -80,56 +73,33 @@ public ScreenHandler createMenu(int syncId, PlayerInventory inv, PlayerEntity pl
protected void writeNbt(NbtCompound nbt) {
super.writeNbt(nbt);
Inventories.writeNbt(nbt, inventory);
nbt.putInt("mesa.progress", progress);
nbt.putInt("mesa.fuelTime", fuelTime);
nbt.putInt("mesa.maxFuelTime", maxFuelTime);
nbt.putInt("essence_extractor.progress", progress);
}

@Override
public void readNbt(NbtCompound nbt) {
Inventories.readNbt(nbt, inventory);
super.readNbt(nbt);
progress = nbt.getInt("mesa.progress");
fuelTime = nbt.getInt("mesa.fuelTime");
maxFuelTime = nbt.getInt("mesa.maxFuelTime");
}

private void consumeFuel(EssenceExtractorBlockEntity entity) {
if(!getStack(0).isEmpty()) {
this.fuelTime = 50;
this.maxFuelTime = this.fuelTime;
entity.removeStack(0,1);
}
progress = nbt.getInt("essence_extractor.progress");
}

public static void tick(World world, BlockPos pos, BlockState state, EssenceExtractorBlockEntity entity) {
if(isConsumingFuel(entity)) {
entity.fuelTime--;
if(world.isClient()) {
return;
}

if(hasRecipe(entity)) {
if(hasFuelInFuelSlot(entity) && !isConsumingFuel(entity)) {
entity.consumeFuel(entity);
}
if(isConsumingFuel(entity)) {
entity.progress++;
if(entity.progress > entity.maxProgress) {
craftItem(entity);
}
entity.progress++;
markDirty(world,pos, state);
if(entity.progress > entity.maxProgress) {
craftItem(entity);
}
} else {
entity.resetProgress();
markDirty(world,pos, state);
}
}

private static boolean hasFuelInFuelSlot(EssenceExtractorBlockEntity entity) {
return !entity.getStack(0).isEmpty();
}

private static boolean isConsumingFuel(EssenceExtractorBlockEntity entity) {
return entity.fuelTime > 0;
}

private static boolean hasRecipe(EssenceExtractorBlockEntity entity) {
World world = entity.world;
SimpleInventory inventory = new SimpleInventory(entity.inventory.size());
Expand All @@ -155,11 +125,11 @@ private static void craftItem(EssenceExtractorBlockEntity entity) {
.getFirstMatch(EssenceExtractorRecipe.Type.INSTANCE, inventory, world);

if(match.isPresent()) {
entity.removeStack(0,1);
entity.removeStack(1,1);
entity.removeStack(2,1);

entity.setStack(3, new ItemStack(match.get().getOutput().getItem(),
entity.getStack(3).getCount() + 1));
entity.setStack(2, new ItemStack(match.get().getOutput().getItem(),
entity.getStack(2).getCount() + 1));

entity.resetProgress();
}
Expand All @@ -170,10 +140,10 @@ private void resetProgress() {
}

private static boolean canInsertItemIntoOutputSlot(SimpleInventory inventory, ItemStack output) {
return inventory.getStack(3).getItem() == output.getItem() || inventory.getStack(3).isEmpty();
return inventory.getStack(2).getItem() == output.getItem() || inventory.getStack(2).isEmpty();
}

private static boolean canInsertAmountIntoOutputSlot(SimpleInventory inventory) {
return inventory.getStack(3).getMaxCount() > inventory.getStack(3).getCount();
return inventory.getStack(2).getMaxCount() > inventory.getStack(2).getCount();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ public EssenceExtractorRecipe(Identifier id, ItemStack output, DefaultedList<Ing
public boolean matches(SimpleInventory inventory, World world) {
if(world.isClient()) { return false; }

if(recipeItems.get(0).test(inventory.getStack(1))) {
return recipeItems.get(1).test(inventory.getStack(2));
if(recipeItems.get(0).test(inventory.getStack(0))) {
return recipeItems.get(1).test(inventory.getStack(1));
}

return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int
if(handler.isCrafting()) {
drawTexture(matrices, x + 84, y + 22, 176, 0, handler.getScaledProgress(), 36);
}

if(handler.hasFuel()) {
drawTexture(matrices, x + 18, y + 33 + 14 - handler.getScaledFuelProgress(), 176,
14 - handler.getScaledFuelProgress(), 14, handler.getScaledFuelProgress());
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package net.anvian.perfume.screen;

import net.anvian.perfume.screen.slot.ModFuelSlot;
import net.anvian.perfume.screen.slot.ModResultSlot;
import net.anvian.perfume.screen.slot.ModWaterGlass;
import net.anvian.perfume.screen.slot.ModWaterGlassSlot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Inventory;
Expand All @@ -18,20 +17,18 @@ public class EssenceExtractorScreenHandlers extends ScreenHandler {
private final PropertyDelegate propertyDelegate;

public EssenceExtractorScreenHandlers(int syncId, PlayerInventory playerInventory) {
this(syncId, playerInventory, new SimpleInventory(4), new ArrayPropertyDelegate(4));
this(syncId, playerInventory, new SimpleInventory(3), new ArrayPropertyDelegate(3));
}
public EssenceExtractorScreenHandlers(int syncId, PlayerInventory playerInventory, Inventory inventory, PropertyDelegate delegate) {
super(ModScreenHandlers.ESSENCE_EXTRACTOR_SCREEN_HANDLER, syncId);
checkSize(inventory, 4);
checkSize(inventory, 3);
this.inventory = inventory;
inventory.onOpen(playerInventory.player);
this.propertyDelegate = delegate;

//fuel
this.addSlot(new ModFuelSlot(inventory, 0, 18, 50));
this.addSlot(new ModWaterGlass(inventory, 1, 66, 16));
this.addSlot(new Slot(inventory, 2, 66, 50));
this.addSlot(new ModResultSlot(inventory, 3, 114, 33));
this.addSlot(new ModWaterGlassSlot(inventory, 0, 66, 16));
this.addSlot(new Slot(inventory, 1, 66, 50));
this.addSlot(new ModResultSlot(inventory, 2, 114, 33));

addPlayerInventory(playerInventory);
addPlayerHotbar(playerInventory);
Expand All @@ -43,10 +40,6 @@ public boolean isCrafting() {
return propertyDelegate.get(0) > 0;
}

public boolean hasFuel() {
return propertyDelegate.get(2) > 0;
}

public int getScaledProgress() {
int progress = this.propertyDelegate.get(0);
int maxProgress = this.propertyDelegate.get(1); // Max Progress
Expand All @@ -55,14 +48,6 @@ public int getScaledProgress() {
return maxProgress != 0 && progress != 0 ? progress * progressArrowSize / maxProgress : 0;
}

public int getScaledFuelProgress() {
int fuelProgress = this.propertyDelegate.get(2);
int maxFuelProgress = this.propertyDelegate.get(3);
int fuelProgressSize = 14;

return maxFuelProgress != 0 ? (int)(((float)fuelProgress / (float)maxFuelProgress) * fuelProgressSize) : 0;
}

@Override
public boolean canUse(PlayerEntity player) {
return this.inventory.canPlayerUse(player);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.anvian.perfume.screen.slot.ModFuelSlot;
import net.anvian.perfume.screen.slot.ModResultSlot;
import net.anvian.perfume.screen.slot.ModWaterGlass;
import net.anvian.perfume.screen.slot.ModWaterGlassSlot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Inventory;
Expand All @@ -29,7 +29,7 @@ public PerfumeMachineScreenHandlers(int syncId, PlayerInventory playerInventory,

//fuel
this.addSlot(new ModFuelSlot(inventory, 0, 18, 50));
this.addSlot(new ModWaterGlass(inventory, 1, 66, 16));
this.addSlot(new ModWaterGlassSlot(inventory, 1, 66, 16));
this.addSlot(new Slot(inventory, 2, 66, 50));
this.addSlot(new ModResultSlot(inventory, 3, 114, 33));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot;

public class ModWaterGlass extends Slot {
public ModWaterGlass(Inventory inventory, int index, int x, int y) {
public class ModWaterGlassSlot extends Slot {
public ModWaterGlassSlot(Inventory inventory, int index, int x, int y) {
super(inventory, index, x, y);
}

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c50e881

Please sign in to comment.