Skip to content

Commit b89b3d2

Browse files
committed
修复一些问题
1 parent 4971135 commit b89b3d2

File tree

4 files changed

+43
-32
lines changed

4 files changed

+43
-32
lines changed

src/main/java/github/kasuminova/novaeng/client/util/NEWBlockArrayPreviewRenderHelper.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,13 @@ import net.minecraft.client.Minecraft
1010
import net.minecraft.util.EnumFacing
1111
import net.minecraft.util.math.BlockPos
1212
import net.minecraft.util.text.TextComponentTranslation
13-
import java.util.stream.IntStream
1413

1514
@Suppress("CAST_NEVER_SUCCEEDS")
1615
object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
1716

1817
val utils = this as BlockArrayPreviewRenderUtils
1918
var renderHelperUtils: BlockArrayRenderUtils? = null
20-
private var status: IntArray? = null
19+
private var status: Int = 0
2120
var work = false
2221
var key = 0L
2322

@@ -41,21 +40,19 @@ object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
4140

4241
private fun initLayers() {
4342
val matchingArray = renderHelperUtils!!.`n$getBlocks`()
44-
val lowestSlice = matchingArray.min.y
4543
val maxSlice = matchingArray.max.y
46-
val status = IntStream.range(lowestSlice, maxSlice + 2).toArray()
47-
utils.renderedLayer = status[status.size - 1]
48-
this.status = status
44+
utils.renderedLayer = maxSlice + 1
45+
this.status = maxSlice + 2
4946
}
5047

5148
fun setLayers(newValue: Int) {
5249
if (renderHelperUtils != null) {
53-
val size = status!!.size
50+
val size = status
5451
val mod = newValue % size
5552

5653
val value = if (mod < 0) mod + size else mod
5754

58-
utils.renderedLayer = status!![value]
55+
utils.renderedLayer = value
5956
}
6057
}
6158

@@ -69,7 +66,7 @@ object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
6966

7067
fun clear() {
7168
renderHelperUtils = null
72-
status = null
69+
status = 0
7370
work = false
7471
key = 0
7572

src/main/java/github/kasuminova/novaeng/common/handler/MachineAssemblyHandler.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ object MachineAssemblyHandler {
3333
if (!player.isSneaking && stack.item is ItemMachineAssemblyTool) {
3434
val pos = event.pos
3535
val tile = world.getTileEntity(pos)
36-
val state = world.getBlockState(pos)
36+
var state = world.getBlockState(pos)
3737
val block = state.block
38+
@Suppress("DEPRECATION")
39+
state = block.getActualState(state, world, pos)
3840
var facing: EnumFacing? = null
3941
val machine: DynamicMachine = if (tile is TileMultiblockMachineController) {
4042
tile.blueprintMachine ?: if (block is BlockController)
@@ -43,19 +45,19 @@ object MachineAssemblyHandler {
4345
} else {
4446
val meta = block.getMetaFromState(state)
4547
var m: DynamicMachine? = null
46-
val eventFacing = if (event.face == EnumFacing.UP || event.face == EnumFacing.DOWN) {
47-
EnumFacing.NORTH
48-
} else event.face
4948
for (entry in NEWMachineAssemblyManager.getConstructorsIterator()) {
50-
if (entry.key.block == block && entry.key.meta == meta) {
51-
m = entry.value
52-
val pf = block.blockState.getProperty("facting")
49+
if (entry.key == block && entry.value.containsKey(meta)) {
50+
m = entry.value[meta]
51+
val pf = block.blockState.getProperty("facing")
5352
facing = if (pf != null) {
54-
state.getValue(pf) as? EnumFacing ?: eventFacing
55-
} else eventFacing
53+
state.getValue(pf) as? EnumFacing ?: event.face
54+
} else event.face
5655
break
5756
}
5857
}
58+
facing = if (facing == EnumFacing.UP || facing == EnumFacing.DOWN) {
59+
EnumFacing.NORTH
60+
} else facing
5961
m ?: return
6062
}
6163

src/main/java/github/kasuminova/novaeng/common/item/ItemMachineAssemblyTool.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ object ItemMachineAssemblyTool : ItemBasic("machine_assembly_tool") {
4747
return EnumActionResult.PASS
4848
} else if (player.isSneaking) {
4949
if (!NEWMachineAssemblyManager.checkMachineAssembly(player)) {
50-
val state = world.getBlockState(pos)
50+
var state = world.getBlockState(pos)
5151
val block = state.block
52-
52+
@Suppress("DEPRECATION")
53+
state = block.getActualState(state, world, pos)
5354
val machine: DynamicMachine
5455
val controllerFacing: EnumFacing
5556
if (tile is TileMultiblockMachineController) {
@@ -61,19 +62,19 @@ object ItemMachineAssemblyTool : ItemBasic("machine_assembly_tool") {
6162
val meta = block.getMetaFromState(state)
6263
var m: DynamicMachine? = null
6364
var e: EnumFacing? = null
64-
val eventFacing = if (facing == EnumFacing.UP || facing == EnumFacing.DOWN) {
65-
EnumFacing.NORTH
66-
} else facing
6765
for (entry in NEWMachineAssemblyManager.getConstructorsIterator()) {
68-
if (entry.key.block == block && entry.key.meta == meta) {
69-
m = entry.value
70-
val pf = block.blockState.getProperty("facting")
66+
if (entry.key == block && entry.value.containsKey(meta)) {
67+
m = entry.value[meta]
68+
val pf = block.blockState.getProperty("facing")
7169
e = if (pf != null) {
72-
state.getValue(pf) as? EnumFacing ?: eventFacing
73-
} else eventFacing
70+
state.getValue(pf) as? EnumFacing ?: facing
71+
} else facing
7472
break
7573
}
7674
}
75+
e = if (e == EnumFacing.UP || e == EnumFacing.DOWN) {
76+
EnumFacing.NORTH
77+
} else e
7778
machine = m ?: return EnumActionResult.FAIL
7879
controllerFacing = e ?: return EnumActionResult.FAIL
7980
}

src/main/java/github/kasuminova/novaeng/common/util/NEWMachineAssemblyManager.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import hellfirepvp.modularmachinery.common.util.BlockArray
2323
import hellfirepvp.modularmachinery.common.util.ItemUtils
2424
import ink.ikx.mmce.common.assembly.MachineAssembly
2525
import ink.ikx.mmce.common.utils.StructureIngredient
26+
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
2627
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
2728
import it.unimi.dsi.fastutil.objects.ObjectArrayList
2829
import it.unimi.dsi.fastutil.objects.ObjectIterator
@@ -50,7 +51,7 @@ class NEWMachineAssemblyManager {
5051

5152
companion object {
5253
private val ADDITIONAL_CONSTRUCTORS =
53-
Reference2ObjectOpenHashMap<BlockPair, DynamicMachine>()
54+
Reference2ObjectOpenHashMap<Block, Int2ObjectOpenHashMap<DynamicMachine>>()
5455
private val MACHINE_ASSEMBLY_CACHE =
5556
Object2ObjectOpenHashMap<EntityPlayer, AssemblyBlockArray>()
5657
private val CheckAllItemComplete = ObjectLists.singleton(
@@ -59,15 +60,25 @@ class NEWMachineAssemblyManager {
5960
private val emptyMiss2ListPair = Miss2ListPair(0, ObjectLists.emptyList())
6061

6162
fun getAllConstructors(): Collection<DynamicMachine> {
62-
return ADDITIONAL_CONSTRUCTORS.values
63+
val i = ObjectArrayList<DynamicMachine>()
64+
for (map in ADDITIONAL_CONSTRUCTORS.values) {
65+
i.addAll(map.values)
66+
}
67+
return i
68+
}
69+
70+
fun getDynamicMachine(state: IBlockState): DynamicMachine? {
71+
return ADDITIONAL_CONSTRUCTORS[state.block]?.let {
72+
it[state.block.getMetaFromState(state)]
73+
}
6374
}
6475

65-
fun getConstructorsIterator(): ObjectIterator<Map.Entry<BlockPair, DynamicMachine>> {
76+
fun getConstructorsIterator(): ObjectIterator<Map.Entry<Block, Int2ObjectOpenHashMap<DynamicMachine>>> {
6677
return ADDITIONAL_CONSTRUCTORS.entries.iterator()
6778
}
6879

6980
fun setConstructors(block: BlockPair, machine: NEWDynamicMachine) {
70-
ADDITIONAL_CONSTRUCTORS[block] = machine
81+
ADDITIONAL_CONSTRUCTORS.computeIfAbsent(block.block) { Int2ObjectOpenHashMap() }[block.meta] = machine
7182
ModIntegrationJEI.PREVIEW_WRAPPERS.add(StructurePreviewWrapper(machine))
7283
}
7384

0 commit comments

Comments
 (0)