Skip to content

Commit ee0ee9d

Browse files
author
Circulate233
committed
对梦核的小小修改
1 parent ed25f75 commit ee0ee9d

File tree

16 files changed

+203
-29
lines changed

16 files changed

+203
-29
lines changed

src/main/java/github/kasuminova/novaeng/client/gui/GuiGeocentricDrill.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ protected void drawGuiContainerBackgroundLayer(final float partialTicks, final i
113113
}
114114

115115
public void updateData() {
116-
this.oreControlList.setStackList(GeocentricDrill.GEOCENTRIC_DRILL.getRawOres(), owner.getAccelerateOres());
116+
this.oreControlList.setStackList(GeocentricDrill.INSTANCE.getRawOres(), owner.getAccelerateOres());
117117
this.dive.setAvailable(owner.getTargetDepth() < GeocentricDrill.MAX_DEPTH);
118118
this.ascend.setAvailable(owner.getTargetDepth() > GeocentricDrill.MIN_DEPTH);
119119
}

src/main/java/github/kasuminova/novaeng/common/CommonProxy.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,8 @@
1515
import github.kasuminova.novaeng.common.integration.IntegrationCRT;
1616
import github.kasuminova.novaeng.common.integration.ic2.IntegrationIC2;
1717
import github.kasuminova.novaeng.common.integration.theoneprobe.IntegrationTOP;
18+
import github.kasuminova.novaeng.common.machine.*;
1819
import github.kasuminova.novaeng.common.machine.Drills.*;
19-
import github.kasuminova.novaeng.common.machine.GeocentricDrill;
20-
import github.kasuminova.novaeng.common.machine.IllumPool;
21-
import github.kasuminova.novaeng.common.machine.MMAltar;
22-
import github.kasuminova.novaeng.common.machine.SingularityCore;
2320
import github.kasuminova.novaeng.common.registry.RegistryBlocks;
2421
import github.kasuminova.novaeng.common.registry.RegistryHyperNet;
2522
import github.kasuminova.novaeng.common.registry.RegistryItems;
@@ -93,23 +90,24 @@ public void init() {
9390
AssemblyLine.registerNetNode();
9491
HyperNetRecipeManager.registerRecipes();
9592
if (Mods.ASTRAL_SORCERY.isPresent() && Mods.BOTANIA.isPresent()) {
96-
RegistryMachineSpecial.registrySpecialMachine(IllumPool.ILLUM_POOL);
93+
RegistryMachineSpecial.registrySpecialMachine(IllumPool.INSTANCE);
9794
}
9895
if (Mods.GECKOLIB.isPresent()) {
99-
RegistryMachineSpecial.registrySpecialMachine(SingularityCore.SINGULARITY_CORE);
96+
RegistryMachineSpecial.registrySpecialMachine(SingularityCore.INSTANCE);
10097
}
101-
RegistryMachineSpecial.registrySpecialMachine(MMAltar.MM_ALTAR);
102-
RegistryMachineSpecial.registrySpecialMachine(GeocentricDrill.GEOCENTRIC_DRILL);
98+
RegistryMachineSpecial.registrySpecialMachine(MMAltar.INSTANCE);
99+
RegistryMachineSpecial.registrySpecialMachine(DreamEnergyCore.INSTANCE);
100+
RegistryMachineSpecial.registrySpecialMachine(GeocentricDrill.INSTANCE);
103101
if (Mods.AE2.isPresent()) {
104102
List<ICellHandler> handlers = ((AccessorCellRegistry) (AEApi.instance().registries().cell())).getHandlers();
105103
handlers.add(0, EStorageCellHandler.INSTANCE);
106104
}
107105
if (Loader.isModLoaded("immersiveengineering")){
108-
RegistryMachineSpecial.registrySpecialMachine(MineralExtractor.MINERAL_EXTRACTOR);
109-
RegistryMachineSpecial.registrySpecialMachine(VoidMiner.VOID_MINER);
110-
RegistryMachineSpecial.registrySpecialMachine(DifferentWorld.DIFFERENT_WORLD);
111-
RegistryMachineSpecial.registrySpecialMachine(ManaOreDrill.MANA_ORE_DRILL);
112-
RegistryMachineSpecial.registrySpecialMachine(OrichalcosDrill.ORICHALCOS_DRILL);
106+
RegistryMachineSpecial.registrySpecialMachine(MineralExtractor.INSTANCE);
107+
RegistryMachineSpecial.registrySpecialMachine(VoidMiner.INSTANCE);
108+
RegistryMachineSpecial.registrySpecialMachine(DifferentWorld.INSTANCE);
109+
RegistryMachineSpecial.registrySpecialMachine(ManaOreDrill.INSTANCE);
110+
RegistryMachineSpecial.registrySpecialMachine(OrichalcosDrill.INSTANCE);
113111
}
114112
Register.TRAITREGISTER.registerModifiers();
115113
}

src/main/java/github/kasuminova/novaeng/common/crafttweaker/util/NovaEngUtils.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package github.kasuminova.novaeng.common.crafttweaker.util;
22

33
import crafttweaker.annotations.ZenRegister;
4+
import net.minecraftforge.fml.common.FMLCommonHandler;
45
import stanhebben.zenscript.annotations.ZenClass;
56
import stanhebben.zenscript.annotations.ZenMethod;
67

8+
import java.math.BigInteger;
79
import java.math.RoundingMode;
810
import java.text.DecimalFormat;
911
import java.text.NumberFormat;
@@ -12,6 +14,8 @@
1214
@ZenClass("novaeng.NovaEngUtils")
1315
public class NovaEngUtils {
1416
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#,###.##");
17+
public static final BigInteger BigLongMax = BigInteger.valueOf(Long.MAX_VALUE);
18+
public static boolean isClient = FMLCommonHandler.instance().getEffectiveSide().isClient();
1519

1620
static {
1721
DECIMAL_FORMAT.setRoundingMode(RoundingMode.HALF_UP);
@@ -53,6 +57,36 @@ public static String formatNumber(long value) {
5357
}
5458
}
5559

60+
@ZenMethod
61+
public static String formatNumber(String value) {
62+
var BigValue = new BigInteger(value);
63+
var big = BigValue.compareTo(BigLongMax) >= 0 ? Long.MAX_VALUE : BigValue.longValue();
64+
String zf = "";
65+
if (value.startsWith("-")){
66+
zf += "-";
67+
}
68+
if (big < 1000) {
69+
return zf + value;
70+
} else if (big < 1000000) {
71+
return zf + (big / 1000) + "K";
72+
} else if (big < 1000000000) {
73+
return zf + ((big / 1000)/ 1000) + "M";
74+
} else if (big < 1000000000000L) {
75+
return zf + ((big / 1000000)/ 1000) + "G";
76+
} else if (big < 1000000000000000L) {
77+
return zf + ((big / 1000000000)/ 1000) + "T";
78+
} else if (big < 1000000000000000000L) {
79+
return zf + ((big / 1_000_000_000_000L)/ 1000) + "P";
80+
} else if (big != (Long.MAX_VALUE)){
81+
return zf + ((big / 1_000_000_000_000_000L)/ 1000) + "E";
82+
} else {
83+
int cfs = value.length() - 1;
84+
float cft = (1.00f * Integer.parseInt(value.substring(0,3))) / 100;
85+
86+
return zf + cft + " * 10 ^ " + cfs;
87+
}
88+
}
89+
5690
@ZenMethod
5791
public static String formatNumber(long value, int decimalFraction) {
5892
if (value < 1_000L) {
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package github.kasuminova.novaeng.common.machine;
2+
3+
import crafttweaker.annotations.ZenRegister;
4+
import github.kasuminova.mmce.common.event.client.ControllerGUIRenderEvent;
5+
import github.kasuminova.novaeng.common.util.FixedSizeDeque;
6+
import hellfirepvp.modularmachinery.ModularMachinery;
7+
import hellfirepvp.modularmachinery.common.machine.DynamicMachine;
8+
import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController;
9+
import net.minecraft.util.ResourceLocation;
10+
import net.minecraft.util.math.BlockPos;
11+
import net.minecraft.world.World;
12+
import net.minecraftforge.fml.relauncher.Side;
13+
import net.minecraftforge.fml.relauncher.SideOnly;
14+
import stanhebben.zenscript.annotations.ZenClass;
15+
import stanhebben.zenscript.annotations.ZenMethod;
16+
17+
import java.math.BigInteger;
18+
import java.util.Map;
19+
import java.util.concurrent.ConcurrentHashMap;
20+
21+
import static github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils.*;
22+
23+
@ZenRegister
24+
@ZenClass("novaeng.DreamEnergyCore")
25+
public class DreamEnergyCore implements MachineSpecial{
26+
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "dream_energy_core");
27+
public static final DreamEnergyCore INSTANCE = new DreamEnergyCore();
28+
public static long defaultTransferAmount = 10000000;
29+
private static final Map<World,Map<BlockPos, FixedSizeDeque<String>>> map = new ConcurrentHashMap<>();
30+
private static final int MinuteScale = 30;
31+
32+
@ZenMethod
33+
public static long setDefaultTransferAmount(long value){
34+
defaultTransferAmount = value;
35+
return defaultTransferAmount;
36+
}
37+
38+
@Override
39+
public ResourceLocation getRegistryName() {
40+
return REGISTRY_NAME;
41+
}
42+
43+
@Override
44+
@SideOnly(Side.CLIENT)
45+
public void onClientTick(final TileMultiblockMachineController ctrl) {
46+
var world = ctrl.getWorld();
47+
if (world.getWorldTime() % (1200 / MinuteScale) == 0){
48+
var data = ctrl.getCustomDataTag();
49+
var energyStored = data.getString("energyStored").isEmpty() ? "0":data.getString("energyStored");
50+
getEnergyInfo(world,ctrl.getPos()).addFirst(energyStored);
51+
}
52+
}
53+
54+
@Override
55+
public void init(DynamicMachine machine) {
56+
if (isClient) {
57+
machine.addMachineEventHandler(ControllerGUIRenderEvent.class, event -> {
58+
var ctrl = event.getController();
59+
var data = ctrl.getCustomDataTag();
60+
var speed = data.getFloat("speed");
61+
var energyStored = data.getString("energyStored").isEmpty() ? "0":data.getString("energyStored");
62+
63+
String[] info = {
64+
"§b/////////// 梦之管理者 ///////////",
65+
"§b能量储存:§a" + formatNumber(energyStored) + " RF",
66+
"§b输入输出值:§a" + formatNumber((long) (defaultTransferAmount * speed)) + " RF/t",
67+
"§b一分钟内平均交互速度:§a" + change(ctrl) + " RF/t",
68+
"§b///////////////////////////////////"
69+
};
70+
71+
event.setExtraInfo(info);
72+
});
73+
}
74+
}
75+
76+
private String change(TileMultiblockMachineController ctrl){
77+
FixedSizeDeque<String> energy = getEnergyInfo(ctrl.getWorld(),ctrl.getPos());
78+
var newtime = energy.getFirst();
79+
var oldtime = energy.getLast();
80+
var newbig = new BigInteger(newtime);
81+
var oldbig = new BigInteger(oldtime);
82+
var changel = newbig.subtract(oldbig);
83+
84+
return formatNumber(changel.compareTo(BigLongMax) >= 0 ? Long.MAX_VALUE : changel.longValue() / (1200L / MinuteScale * energy.size()));
85+
}
86+
87+
private static FixedSizeDeque<String> getEnergyInfo(World world,BlockPos pos) {
88+
return map.computeIfAbsent(world, k -> new ConcurrentHashMap<>())
89+
.computeIfAbsent(pos, m -> new FixedSizeDeque<>(MinuteScale));
90+
}
91+
}

src/main/java/github/kasuminova/novaeng/common/machine/Drills/DifferentWorld.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class DifferentWorld extends Drill {
77

88
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "different_world");
9-
public static final DifferentWorld DIFFERENT_WORLD = new DifferentWorld();
9+
public static final DifferentWorld INSTANCE = new DifferentWorld();
1010

1111
@Override
1212
public ResourceLocation getRegistryName() {

src/main/java/github/kasuminova/novaeng/common/machine/Drills/ManaOreDrill.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class ManaOreDrill extends Drill {
77

88
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "mana_ore_drill");
9-
public static final ManaOreDrill MANA_ORE_DRILL = new ManaOreDrill();
9+
public static final ManaOreDrill INSTANCE = new ManaOreDrill();
1010

1111
@Override
1212
public ResourceLocation getRegistryName() {

src/main/java/github/kasuminova/novaeng/common/machine/Drills/MineralExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class MineralExtractor extends Drill{
77

88
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "mineral_extractor");
9-
public static final MineralExtractor MINERAL_EXTRACTOR = new MineralExtractor();
9+
public static final MineralExtractor INSTANCE = new MineralExtractor();
1010

1111
@Override
1212
public ResourceLocation getRegistryName() {

src/main/java/github/kasuminova/novaeng/common/machine/Drills/OrichalcosDrill.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class OrichalcosDrill extends Drill {
77

88
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "orichalcos_drill");
9-
public static final OrichalcosDrill ORICHALCOS_DRILL = new OrichalcosDrill();
9+
public static final OrichalcosDrill INSTANCE = new OrichalcosDrill();
1010

1111
@Override
1212
public ResourceLocation getRegistryName() {

src/main/java/github/kasuminova/novaeng/common/machine/Drills/VoidMiner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
public class VoidMiner extends Drill{
77
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "void_miner");
8-
public static final VoidMiner VOID_MINER = new VoidMiner();
8+
public static final VoidMiner INSTANCE = new VoidMiner();
99

1010
@Override
1111
public ResourceLocation getRegistryName() {

src/main/java/github/kasuminova/novaeng/common/machine/GeocentricDrill.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
public class GeocentricDrill implements MachineSpecial {
3434

35-
public static final GeocentricDrill GEOCENTRIC_DRILL = new GeocentricDrill();
35+
public static final GeocentricDrill INSTANCE = new GeocentricDrill();
3636
public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "earth_drill");
3737
public static final ResourceLocation RECIPE_REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "earth_drill_working");
3838

0 commit comments

Comments
 (0)