Skip to content

Commit 1c7005a

Browse files
committed
修复矿机在坐标为负数的时候的偏移错误,居然没人发现
现在矿脉使用本地化而不是硬编码
1 parent 1221d2c commit 1c7005a

File tree

8 files changed

+206
-46
lines changed

8 files changed

+206
-46
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ dependencies {
279279
compileOnly(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5237484"))
280280
compileOnly(rfg.deobf("curse.maven:lunatriuscore-225605:2489549"))
281281
compileOnly(rfg.deobf("curse.maven:immersive-engineering-231951:2974106"))
282+
compileOnly(rfg.deobf("curse.maven:immersive-petroleum-268250:3382321"))
282283
compileOnly(rfg.deobf("curse.maven:ingame-info-xml-225604:2489566"))
283284
compileOnly(rfg.deobf("curse.maven:wanionlib-253043:4623135"))
284285
compileOnly(rfg.deobf("curse.maven:dme-737252:5043404"))

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import github.kasuminova.novaeng.common.container.ContainerSingularityCore;
1818
import github.kasuminova.novaeng.common.enchantment.MagicBreaking;
1919
import github.kasuminova.novaeng.common.estorage.EStorageCellHandler;
20-
import github.kasuminova.novaeng.common.handler.DrillHandler;
20+
import github.kasuminova.novaeng.common.handler.IEHandler;
2121
import github.kasuminova.novaeng.common.handler.ECalculatorEventHandler;
2222
import github.kasuminova.novaeng.common.handler.EFabricatorEventHandler;
2323
import github.kasuminova.novaeng.common.handler.EStorageEventHandler;
@@ -113,7 +113,7 @@ public void preInit() {
113113
MinecraftForge.EVENT_BUS.register(FTBHandler.INSTANCE);
114114

115115
if (NovaEngCoreConfig.SERVER.SpecialMachine)
116-
MinecraftForge.EVENT_BUS.register(DrillHandler.INSTANCE);
116+
MinecraftForge.EVENT_BUS.register(IEHandler.INSTANCE);
117117

118118
if (Loader.isModLoaded("ic2")) {
119119
IntegrationIC2.preInit();

src/main/java/github/kasuminova/novaeng/common/handler/DrillHandler.java

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package github.kasuminova.novaeng.common.handler;
2+
3+
import blusunrize.immersiveengineering.api.tool.ExcavatorHandler;
4+
import blusunrize.immersiveengineering.common.blocks.metal.BlockMetalDevice1;
5+
import blusunrize.immersiveengineering.common.blocks.metal.BlockTypes_MetalDevice1;
6+
import blusunrize.immersiveengineering.common.blocks.metal.TileEntitySampleDrill;
7+
import codechicken.lib.util.ItemUtils;
8+
import crafttweaker.api.item.IItemStack;
9+
import crafttweaker.api.minecraft.CraftTweakerMC;
10+
import flaxbeard.immersivepetroleum.api.crafting.PumpjackHandler;
11+
import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController;
12+
import lombok.val;
13+
import net.minecraft.entity.player.EntityPlayer;
14+
import net.minecraft.item.ItemStack;
15+
import net.minecraft.util.EnumHand;
16+
import net.minecraft.util.ResourceLocation;
17+
import net.minecraft.util.math.BlockPos;
18+
import net.minecraft.util.text.TextComponentTranslation;
19+
import net.minecraft.world.World;
20+
import net.minecraftforge.common.util.FakePlayer;
21+
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
22+
import net.minecraftforge.event.world.BlockEvent;
23+
import net.minecraftforge.fml.common.Optional;
24+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
25+
26+
import static crafttweaker.CraftTweakerAPI.itemUtils;
27+
28+
public class IEHandler {
29+
public static final IEHandler INSTANCE = new IEHandler();
30+
31+
private static final ResourceLocation tky = new ResourceLocation("contenttweaker","tky");
32+
private static final ResourceLocation scanner = new ResourceLocation("orevisualdetector,scanner");
33+
34+
private static final byte[] NEXT_MODES = {1, 2, 3, 0};
35+
private static final String[] MESSAGE_KEYS = {
36+
"new.orevisualdetector.advanced.tooltips1",
37+
"new.orevisualdetector.advanced.tooltips2",
38+
"new.orevisualdetector.advanced.tooltips3",
39+
"new.orevisualdetector.advanced.tooltips0"
40+
};
41+
42+
@SubscribeEvent
43+
@Optional.Method(modid = "immersivepetroleum")
44+
public void onPlayerRightClickItem(PlayerInteractEvent.RightClickItem event) {
45+
val world = event.getWorld();
46+
val item = event.getEntityPlayer().getHeldItem(EnumHand.MAIN_HAND);
47+
EntityPlayer player;
48+
if (event.getHand() != EnumHand.MAIN_HAND
49+
||(player = event.getEntityPlayer()) instanceof FakePlayer
50+
||event.isCanceled()
51+
||world.isRemote
52+
) return;
53+
val eventpos = new BlockPos(event.getPos().getX(),250,event.getPos().getZ());
54+
if (tky.equals(item.getItem().getRegistryName())){
55+
giveCoresample(event, world, eventpos, player, item);
56+
} else if (scanner.equals(item.getItem().getRegistryName())){
57+
var nbt = item.getTagCompound();
58+
var mode = nbt.getByte("mode");
59+
if (player.isSneaking()) {
60+
nbt.setByte("mode", NEXT_MODES[mode]);
61+
player.sendMessage(
62+
new TextComponentTranslation(
63+
"new.orevisualdetector.scan",
64+
new TextComponentTranslation(MESSAGE_KEYS[mode])
65+
)
66+
);
67+
event.setCanceled(true);
68+
} else if (mode == 3)
69+
giveCoresample(event, world, eventpos, player, item);
70+
}
71+
}
72+
73+
private static void giveCoresample(PlayerInteractEvent.RightClickItem event, World world, BlockPos eventpos, EntityPlayer player, ItemStack item) {
74+
world.setBlockState(eventpos, BlockMetalDevice1.getStateById(BlockTypes_MetalDevice1.SAMPLE_DRILL.getMeta()));
75+
val drill = (TileEntitySampleDrill) world.getTileEntity(eventpos);
76+
val worldInfo = ExcavatorHandler.getMineralWorldInfo(
77+
world,
78+
player.chunkCoordX,
79+
player.chunkCoordZ
80+
);
81+
var coresample = drill.createCoreSample(
82+
world,
83+
player.chunkCoordX,
84+
player.chunkCoordZ,
85+
worldInfo
86+
);
87+
val oilInfo = PumpjackHandler.getOilWorldInfo(
88+
world,
89+
player.chunkCoordX,
90+
player.chunkCoordZ
91+
);
92+
if (oilInfo != null && oilInfo.getType() != null) {
93+
var nbt = coresample.getTagCompound();
94+
nbt.setString("resType", oilInfo.getType().name);
95+
nbt.setInteger("oil", oilInfo.current);
96+
}
97+
player.inventory.placeItemBackInInventory(player.getEntityWorld(), coresample);
98+
player.getCooldownTracker().setCooldown(item.getItem(), 20);
99+
world.setBlockToAir(eventpos);
100+
event.setCanceled(true);
101+
}
102+
103+
@SubscribeEvent
104+
public void onBlockBreak(BlockEvent.BreakEvent event) {
105+
var world = event.getWorld();
106+
if (world.isRemote) {
107+
return;
108+
}
109+
var tile = world.getTileEntity(event.getPos());
110+
if (!(tile instanceof TileMultiblockMachineController ctrl)) return;
111+
var pos = event.getPos();
112+
var data = ctrl.getCustomDataTag();
113+
for (int i = 0; i < 4; i++) {
114+
var component = data.getByte("additional_component_" + i);
115+
if (component == 1 && !event.getPlayer().isCreative()) {
116+
dropItem(world, pos, itemUtils.getItem("contenttweaker:additional_component_" + i, 0));
117+
}
118+
}
119+
var component = data.getBoolean("additional_component_raw_ore");
120+
if (component && !event.getPlayer().isCreative()) {
121+
dropItem(world, pos, itemUtils.getItem("contenttweaker:additional_component_raw_ore", 0));
122+
}
123+
}
124+
125+
private static void dropItem(World world, BlockPos pos, IItemStack item) {
126+
ItemUtils.dropItem(world, pos, CraftTweakerMC.getItemStack(item));
127+
}
128+
}

src/main/java/github/kasuminova/novaeng/common/handler/OreHandler.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.util.Map;
2525
import java.util.Objects;
2626

27+
import static crafttweaker.CraftTweakerAPI.itemUtils;
28+
2729
@ZenRegister
2830
@ZenClass("novaeng.hypernet.RawOre")
2931
public class OreHandler {
@@ -64,6 +66,25 @@ public static IItemStack getOre(@NotNull IItemStack ore){
6466
}
6567
}
6668

69+
public static final Map<String,String> VeinMap = new Object2ObjectOpenHashMap<>();
70+
public static final Map<String,IItemStack> VeinItemMap = new Object2ObjectOpenHashMap<>();
71+
72+
@ZenMethod
73+
public static void regOreVein(String name,String oreVeinItemName) {
74+
VeinMap.put(name, oreVeinItemName);
75+
}
76+
77+
@ZenMethod
78+
public static IItemStack getOreVeinItem(String name){
79+
var out = VeinItemMap.get(name);
80+
if (out == null){
81+
out = itemUtils.getItem("contenttweaker:" + VeinMap.get(name),0);
82+
VeinMap.remove(name);
83+
VeinItemMap.put(name,out);
84+
}
85+
return out;
86+
}
87+
6788
public static void registry() {
6889
Object2ObjectMap<OreKey, ItemStack> map = new Object2ObjectOpenHashMap<>();
6990
Object2ObjectMap<OreKey, ItemStack> mapO = new Object2ObjectOpenHashMap<>();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,8 +848,8 @@ protected enum Type {
848848
RANGE
849849
}
850850

851-
protected static int chunkCoord(double posValue) {
852-
return (int) (posValue / 16);
851+
protected static int chunkCoord(int posValue) {
852+
return posValue >> 4;
853853
}
854854

855855
private static IItemStack getOreOutput(TileMultiblockMachineController ctrl, BlockPos pos, int worldid) {

src/main/resources/assets/novaeng_core/lang/en_US.lang

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,32 @@ new.block.manaliquefaction.tooltips.shift=§6在其上方放置神话/永恒魔
713713
new.block.blockparallelcontroller.tooltips=§o当机械控制器描述中存在 “§9§o最大并行数:§a§ox§7§o” 时,代表此机械可无损超频并行。&n§o当结构中存在至少超过一个并行控制器时,机械会自动并行。&n§o并行控制器的放置位置会在机械的结构预览中显示。
714714
new.block.blocksmartinterface.tooltips=§o当机械结构形成时,右键此方块可调节机械运行参数。&n§o输入运行参数后,按下回车写入参数&n§o某些机械结构中可能存在此方块。
715715

716+
desc.immersiveengineering.info.mineral.osmium=osmium
717+
desc.immersiveengineering.info.mineral.sulfide_copper=sulfide copper
718+
desc.immersiveengineering.info.mineral.certus=certus
719+
desc.immersiveengineering.info.mineral.nether_quartz=nether quartz
720+
desc.immersiveengineering.info.mineral.wreck_mineral_site=wreck mineral site
721+
desc.immersiveengineering.info.mineral.manyullyn=manyullyn
722+
desc.immersiveengineering.info.mineral.resonant_ender=resonant ender
723+
desc.immersiveengineering.info.mineral.magnet=magnet
724+
desc.immersiveengineering.info.mineral.diamond=carbon
725+
desc.immersiveengineering.info.mineral.vanilla=vanilla
726+
desc.immersiveengineering.info.mineral.strange=strange
727+
desc.immersiveengineering.info.mineral.met=met
728+
desc.immersiveengineering.info.mineral.platinum=platinum
729+
desc.immersiveengineering.info.mineral.cassiterite=cassiterite
730+
desc.immersiveengineering.info.mineral.nc=NuclearCraft
731+
desc.immersiveengineering.info.mineral.uranium=uranium
732+
desc.immersiveengineering.info.mineral.destabilized_aluminum=destabilized aluminum
733+
desc.immersiveengineering.info.mineral.taiga=TAIGA
734+
desc.immersiveengineering.info.mineral.more_gems=more gems
735+
desc.immersiveengineering.info.mineral.alien=alien
736+
desc.immersiveengineering.info.mineral.sky_sea=sky sea
737+
desc.immersiveengineering.info.mineral.glow=glow
738+
desc.immersiveengineering.info.mineral.alfheim=alfheim
739+
desc.immersiveengineering.info.mineral.taigan=TAIGA Nether
740+
desc.immersiveengineering.info.mineral.taigae=TAIGA End
741+
716742
new.ctrl.tooltip.info=§e//////// 机械信息 / 等级 / 功能 ////////
717743
new.ctrl.tooltip.help=§9//////// 控制器提示 /////////
718744
new.ctrl.tooltip.base=§9§o每个机械的独立控制器,JEI 中左键以查看结构

src/main/resources/assets/novaeng_core/lang/zh_CN.lang

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,32 @@ new.block.manaliquefaction.tooltips.shift=§6在其上方放置神话/永恒魔
713713
new.block.blockparallelcontroller.tooltips=§o当机械控制器描述中存在 “§9§o最大并行数:§a§ox§7§o” 时,代表此机械可无损超频并行。&n§o当结构中存在至少超过一个并行控制器时,机械会自动并行。&n§o并行控制器的放置位置会在机械的结构预览中显示。
714714
new.block.blocksmartinterface.tooltips=§o当机械结构形成时,右键此方块可调节机械运行参数。&n§o输入运行参数后,按下回车写入参数&n§o某些机械结构中可能存在此方块。
715715

716+
desc.immersiveengineering.info.mineral.osmium=锇
717+
desc.immersiveengineering.info.mineral.sulfide_copper=硫铜
718+
desc.immersiveengineering.info.mineral.certus=赛特斯石英
719+
desc.immersiveengineering.info.mineral.nether_quartz=下界石英
720+
desc.immersiveengineering.info.mineral.wreck_mineral_site=残骸矿址
721+
desc.immersiveengineering.info.mineral.manyullyn=玛玉灵
722+
desc.immersiveengineering.info.mineral.resonant_ender=谐振末影
723+
desc.immersiveengineering.info.mineral.magnet=磁铁
724+
desc.immersiveengineering.info.mineral.diamond=钻石(确信)
725+
desc.immersiveengineering.info.mineral.vanilla=香草
726+
desc.immersiveengineering.info.mineral.strange=奇异
727+
desc.immersiveengineering.info.mineral.met=MET
728+
desc.immersiveengineering.info.mineral.platinum=铂
729+
desc.immersiveengineering.info.mineral.cassiterite=锡石
730+
desc.immersiveengineering.info.mineral.nc=NuclearCraft
731+
desc.immersiveengineering.info.mineral.uranium=铀
732+
desc.immersiveengineering.info.mineral.destabilized_aluminum=不稳定铝
733+
desc.immersiveengineering.info.mineral.taiga=TAIGA
734+
desc.immersiveengineering.info.mineral.more_gems=更多宝石
735+
desc.immersiveengineering.info.mineral.alien=异星
736+
desc.immersiveengineering.info.mineral.sky_sea=空净海
737+
desc.immersiveengineering.info.mineral.glow=荧光
738+
desc.immersiveengineering.info.mineral.alfheim=艾尔夫海姆
739+
desc.immersiveengineering.info.mineral.taigan=TAIGA Nether
740+
desc.immersiveengineering.info.mineral.taigae=TAIGA End
741+
716742
new.ctrl.tooltip.info=§e//////// 机械信息 / 等级 / 功能 ////////
717743
new.ctrl.tooltip.help=§9//////// 控制器提示 /////////
718744
new.ctrl.tooltip.base=§9§o每个机械的独立控制器,JEI 中左键以查看结构

0 commit comments

Comments
 (0)