File tree Expand file tree Collapse file tree 2 files changed +34
-3
lines changed
src/main/java/com/glodblock/github/common/item/fake Expand file tree Collapse file tree 2 files changed +34
-3
lines changed Original file line number Diff line number Diff line change 1+ package com .glodblock .github .common .item .fake ;
2+
3+ import appeng .api .storage .data .IAEItemStack ;
4+ import it .unimi .dsi .fastutil .objects .Object2ObjectLinkedOpenHashMap ;
5+ import net .minecraftforge .fluids .FluidStack ;
6+
7+ import java .util .Map ;
8+ import java .util .function .Function ;
9+
10+ public final class DropLookup {
11+
12+ private final static Map <FluidStack , IAEItemStack > FLUID_CACHE_A = new Object2ObjectLinkedOpenHashMap <>();
13+
14+ public static IAEItemStack lookup (FluidStack fluid , Function <FluidStack , IAEItemStack > fallback ) {
15+ IAEItemStack cache = FLUID_CACHE_A .get (fluid );
16+ if (cache == null ) {
17+ cache = fallback .apply (fluid );
18+ FLUID_CACHE_A .put (fluid , cache );
19+ }
20+ return cache == null ? null : cache .copy ();
21+ }
22+
23+ }
Original file line number Diff line number Diff line change @@ -51,7 +51,15 @@ public FluidStack getStack(@Nullable IAEItemStack stack) {
5151
5252 @ Override
5353 public IAEFluidStack getAEStack (ItemStack stack ) {
54- return getAEStack (AEItemStack .fromItemStack (stack ));
54+ if (stack .isEmpty ()) {
55+ return null ;
56+ }
57+ IAEFluidStack fluidStack = AEFluidStack .fromFluidStack (getStack (stack ));
58+ if (fluidStack == null ) {
59+ return null ;
60+ }
61+ fluidStack .setStackSize (stack .getCount ());
62+ return fluidStack ;
5563 }
5664
5765 @ Override
@@ -92,7 +100,7 @@ public IAEItemStack packAEStack(FluidStack fluid) {
92100 if (fluid == null || fluid .amount <= 0 ) {
93101 return null ;
94102 }
95- IAEItemStack stack = AEItemStack .fromItemStack (packStack (fluid ));
103+ IAEItemStack stack = DropLookup . lookup ( fluid , f -> AEItemStack .fromItemStack (packStack (f ) ));
96104 if (stack == null ) {
97105 return null ;
98106 }
@@ -105,7 +113,7 @@ public IAEItemStack packAEStackLong(IAEFluidStack fluid) {
105113 if (fluid == null || fluid .getStackSize () <= 0 ) {
106114 return null ;
107115 }
108- IAEItemStack stack = AEItemStack . fromItemStack ( packStack ( fluid .getFluidStack ()));
116+ IAEItemStack stack = DropLookup . lookup ( fluid .getFluidStack (), f -> AEItemStack . fromItemStack ( packStack ( f )));
109117 if (stack == null ) {
110118 return null ;
111119 }
You can’t perform that action at this time.
0 commit comments