Compare commits
5 Commits
7f362a95a2
...
10f250b822
Author | SHA1 | Date | |
---|---|---|---|
10f250b822 | |||
7f299a6dec | |||
442a7b7496 | |||
2f016a76a6 | |||
71186b7c30 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -32,3 +32,4 @@ forge*changelog.txt
|
|||||||
|
|
||||||
shapegen_output.java
|
shapegen_output.java
|
||||||
/runs
|
/runs
|
||||||
|
/.kotlin
|
||||||
|
@ -118,7 +118,7 @@ val isPaused: Boolean get() {
|
|||||||
return isPausedImpl
|
return isPausedImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
fun recordClientThread() {
|
internal fun recordClientThread() {
|
||||||
clientThreads.add(Thread.currentThread())
|
clientThreads.add(Thread.currentThread())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,19 +186,19 @@ var SERVER_IS_LIVE = false
|
|||||||
|
|
||||||
private val LOGGER = LogManager.getLogger()
|
private val LOGGER = LogManager.getLogger()
|
||||||
|
|
||||||
fun onServerTickPre(event: ServerTickEvent.Pre) {
|
internal fun onServerTickPre(event: ServerTickEvent.Pre) {
|
||||||
preServerTick.tick()
|
preServerTick.tick()
|
||||||
serverThreads.add(Thread.currentThread())
|
serverThreads.add(Thread.currentThread())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerTickPost(event: ServerTickEvent.Post) {
|
internal fun onServerTickPost(event: ServerTickEvent.Post) {
|
||||||
postServerTick.tick()
|
postServerTick.tick()
|
||||||
// чтоб не плодить кучу подписчиков, вызовем напрямую отсюда
|
// чтоб не плодить кучу подписчиков, вызовем напрямую отсюда
|
||||||
GraphNodeList.tick()
|
GraphNodeList.tick()
|
||||||
AbstractProfiledStorage.onServerPostTick()
|
AbstractProfiledStorage.onServerPostTick()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onLevelTickPre(event: LevelTickEvent.Pre) {
|
internal fun onLevelTickPre(event: LevelTickEvent.Pre) {
|
||||||
preWorldTick[event.level]?.tick()
|
preWorldTick[event.level]?.tick()
|
||||||
|
|
||||||
if (event.level.isClientSide) {
|
if (event.level.isClientSide) {
|
||||||
@ -208,7 +208,7 @@ fun onLevelTickPre(event: LevelTickEvent.Pre) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onLevelTickPost(event: LevelTickEvent.Post) {
|
internal fun onLevelTickPost(event: LevelTickEvent.Post) {
|
||||||
postWorldTick[event.level]?.tick()
|
postWorldTick[event.level]?.tick()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ private fun clear() {
|
|||||||
postWorldTick.clear()
|
postWorldTick.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerStarting(event: ServerAboutToStartEvent) {
|
internal fun onServerStarting(event: ServerAboutToStartEvent) {
|
||||||
clear()
|
clear()
|
||||||
SERVER_IS_LIVE = true
|
SERVER_IS_LIVE = true
|
||||||
_server = event.server
|
_server = event.server
|
||||||
@ -318,13 +318,13 @@ fun onServerStarting(event: ServerAboutToStartEvent) {
|
|||||||
serverCounter.incrementAndGet()
|
serverCounter.incrementAndGet()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerStopping(event: ServerStoppingEvent) {
|
internal fun onServerStopping(event: ServerStoppingEvent) {
|
||||||
clear()
|
clear()
|
||||||
SERVER_IS_LIVE = false
|
SERVER_IS_LIVE = false
|
||||||
serverCounter.incrementAndGet()
|
serverCounter.incrementAndGet()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerStopped(event: ServerStoppedEvent) {
|
internal fun onServerStopped(event: ServerStoppedEvent) {
|
||||||
if (SERVER_IS_LIVE) {
|
if (SERVER_IS_LIVE) {
|
||||||
LOGGER.fatal("ServerStoppingEvent did not fire. If server has crashed this is normal. However, if server finished it's work 'gracefully' this is a bug!")
|
LOGGER.fatal("ServerStoppingEvent did not fire. If server has crashed this is normal. However, if server finished it's work 'gracefully' this is a bug!")
|
||||||
|
|
||||||
|
@ -153,7 +153,6 @@ object OverdriveThatMatters {
|
|||||||
MOD_BUS.addListener(EventPriority.NORMAL, TritaniumArmorModel::register)
|
MOD_BUS.addListener(EventPriority.NORMAL, TritaniumArmorModel::register)
|
||||||
MOD_BUS.addListener(EventPriority.NORMAL, GravitationStabilizerModel::register)
|
MOD_BUS.addListener(EventPriority.NORMAL, GravitationStabilizerModel::register)
|
||||||
MOD_BUS.addListener(EventPriority.NORMAL, BreadMonsterModel::register)
|
MOD_BUS.addListener(EventPriority.NORMAL, BreadMonsterModel::register)
|
||||||
MOD_BUS.addListener(EventPriority.NORMAL, MCreativeTabs::register)
|
|
||||||
|
|
||||||
MOD_BUS.addListener(EventPriority.NORMAL, BatteryBankRenderer.Companion::onRegisterAdditionalModels)
|
MOD_BUS.addListener(EventPriority.NORMAL, BatteryBankRenderer.Companion::onRegisterAdditionalModels)
|
||||||
MOD_BUS.addListener(EventPriority.NORMAL, MatterBatteryBankRenderer.Companion::onRegisterAdditionalModels)
|
MOD_BUS.addListener(EventPriority.NORMAL, MatterBatteryBankRenderer.Companion::onRegisterAdditionalModels)
|
||||||
|
@ -633,18 +633,18 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onLevelUnload(event: LevelEvent.Unload) {
|
internal fun onLevelUnload(event: LevelEvent.Unload) {
|
||||||
val level = event.level as? ServerLevel ?: return
|
val level = event.level as? ServerLevel ?: return
|
||||||
playerMap.remove(level)
|
playerMap.remove(level)
|
||||||
tickingMap.remove(level)
|
tickingMap.remove(level)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerStopping(event: ServerStoppingEvent) {
|
internal fun onServerStopping(event: ServerStoppingEvent) {
|
||||||
playerMap.clear()
|
playerMap.clear()
|
||||||
tickingMap.clear()
|
tickingMap.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun postLevelTick(event: LevelTickEvent.Post) {
|
internal fun postLevelTick(event: LevelTickEvent.Post) {
|
||||||
val level = event.level as? ServerLevel ?: return
|
val level = event.level as? ServerLevel ?: return
|
||||||
|
|
||||||
tickingMap[level]?.forEach {
|
tickingMap[level]?.forEach {
|
||||||
@ -663,14 +663,14 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onWatch(event: ChunkWatchEvent.Watch) {
|
internal fun onWatch(event: ChunkWatchEvent.Watch) {
|
||||||
playerMap
|
playerMap
|
||||||
.computeIfAbsent(event.level) { Long2ObjectOpenHashMap() }
|
.computeIfAbsent(event.level) { Long2ObjectOpenHashMap() }
|
||||||
.computeIfAbsent(event.pos.toLong(), Long2ObjectFunction { ChunkSubscribers(event.level, it) })
|
.computeIfAbsent(event.pos.toLong(), Long2ObjectFunction { ChunkSubscribers(event.level, it) })
|
||||||
.subscribe(event.player)
|
.subscribe(event.player)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onForget(event: ChunkWatchEvent.UnWatch) {
|
internal fun onForget(event: ChunkWatchEvent.UnWatch) {
|
||||||
val levelMap = playerMap[event.level] ?: return
|
val levelMap = playerMap[event.level] ?: return
|
||||||
val subs = levelMap.get(event.pos.toLong()) ?: return
|
val subs = levelMap.get(event.pos.toLong()) ?: return
|
||||||
|
|
||||||
@ -679,7 +679,7 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun playerDisconnected(event: PlayerEvent.PlayerLoggedOutEvent) {
|
internal fun playerDisconnected(event: PlayerEvent.PlayerLoggedOutEvent) {
|
||||||
for (tree in playerMap.values) {
|
for (tree in playerMap.values) {
|
||||||
tree.values.removeIf {
|
tree.values.removeIf {
|
||||||
it.unsubscribe(event.entity as ServerPlayer)
|
it.unsubscribe(event.entity as ServerPlayer)
|
||||||
|
@ -59,7 +59,7 @@ class DevChestBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryB
|
|||||||
return cache
|
return cache
|
||||||
}
|
}
|
||||||
|
|
||||||
fun mappingsChanged(event: IdMappingEvent) {
|
internal fun mappingsChanged(event: IdMappingEvent) {
|
||||||
cache.clear()
|
cache.clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ object DrivePool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onWorldSave(event: LevelEvent.Save) {
|
internal fun onWorldSave(event: LevelEvent.Save) {
|
||||||
writeBacklog(event.level.server!!.registryAccess())
|
writeBacklog(event.level.server!!.registryAccess())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
internal fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
||||||
if (!isDown) {
|
if (!isDown) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onRenderLevel(event: RenderLevelStageEvent) {
|
internal fun onRenderLevel(event: RenderLevelStageEvent) {
|
||||||
if (!isDown) {
|
if (!isDown) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(event: RegisterKeyMappingsEvent) {
|
internal fun register(event: RegisterKeyMappingsEvent) {
|
||||||
event.register(this)
|
event.register(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMouseClick(event: InputEvent.MouseButton.Pre) {
|
internal fun onMouseClick(event: InputEvent.MouseButton.Pre) {
|
||||||
// fix binding wheel menu to mouse button not calling back setIsDown(false)
|
// fix binding wheel menu to mouse button not calling back setIsDown(false)
|
||||||
if (isDown && event.action == 0 && key.type == InputConstants.Type.MOUSE && InputConstants.Type.MOUSE.getOrCreate(event.button) == key) {
|
if (isDown && event.action == 0 && key.type == InputConstants.Type.MOUSE && InputConstants.Type.MOUSE.getOrCreate(event.button) == key) {
|
||||||
isDown = false
|
isDown = false
|
||||||
@ -311,7 +311,7 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
|||||||
const val COOLDOWN_ICON_SIZE = 18f
|
const val COOLDOWN_ICON_SIZE = 18f
|
||||||
const val COOLDOWN_ICON_MARGIN = 12f
|
const val COOLDOWN_ICON_MARGIN = 12f
|
||||||
|
|
||||||
fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
internal fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
||||||
if (!grabbedInput) {
|
if (!grabbedInput) {
|
||||||
lastRender = milliTimeD
|
lastRender = milliTimeD
|
||||||
renderRegular(event)
|
renderRegular(event)
|
||||||
@ -325,7 +325,7 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(event: RegisterKeyMappingsEvent) {
|
internal fun register(event: RegisterKeyMappingsEvent) {
|
||||||
event.register(this)
|
event.register(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
|||||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||||
import java.util.WeakHashMap
|
import java.util.WeakHashMap
|
||||||
|
|
||||||
fun onMovementInputUpdate(event: MovementInputUpdateEvent) {
|
internal fun onMovementInputUpdate(event: MovementInputUpdateEvent) {
|
||||||
val ply = event.entity
|
val ply = event.entity
|
||||||
val input = event.input
|
val input = event.input
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ private fun exosuitInventoryLogic(screen: Screen, addListener: (GuiEventListener
|
|||||||
scrollbar.scroll = inventoryScroll
|
scrollbar.scroll = inventoryScroll
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMouseDragged(event: ScreenEvent.MouseDragged.Pre) {
|
internal fun onMouseDragged(event: ScreenEvent.MouseDragged.Pre) {
|
||||||
val screen = minecraft.screen as? AbstractContainerScreen<*> ?: return
|
val screen = minecraft.screen as? AbstractContainerScreen<*> ?: return
|
||||||
|
|
||||||
if (screen is MatteryScreen<*>)
|
if (screen is MatteryScreen<*>)
|
||||||
@ -214,7 +214,7 @@ fun onMouseDragged(event: ScreenEvent.MouseDragged.Pre) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMouseScrolled(event: ScreenEvent.MouseScrolled.Pre) {
|
internal fun onMouseScrolled(event: ScreenEvent.MouseScrolled.Pre) {
|
||||||
val screen = minecraft.screen as? AbstractContainerScreen<*> ?: return
|
val screen = minecraft.screen as? AbstractContainerScreen<*> ?: return
|
||||||
|
|
||||||
if (screen is MatteryScreen<*>)
|
if (screen is MatteryScreen<*>)
|
||||||
@ -242,7 +242,7 @@ fun onMouseScrolled(event: ScreenEvent.MouseScrolled.Pre) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPostScreenInit(event: ScreenEvent.Init.Post) {
|
internal fun onPostScreenInit(event: ScreenEvent.Init.Post) {
|
||||||
if (!LOGGED_IN) return
|
if (!LOGGED_IN) return
|
||||||
inventoryLogic(event)
|
inventoryLogic(event)
|
||||||
onceClient {
|
onceClient {
|
||||||
@ -250,7 +250,7 @@ fun onPostScreenInit(event: ScreenEvent.Init.Post) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onScreenOpen(event: ScreenEvent.Opening) {
|
internal fun onScreenOpen(event: ScreenEvent.Opening) {
|
||||||
if (shouldOpenVanillaInventory || minecraft.player?.isCreative == true) {
|
if (shouldOpenVanillaInventory || minecraft.player?.isCreative == true) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -266,7 +266,7 @@ private val TOOLTIP_TAG_DISPLAY_HELP = TranslatableComponent("otm.gui.debug.tags
|
|||||||
private val TOOLTIP_TAG_DISPLAY_ITEM_TITLE = TranslatableComponent("otm.gui.debug.tags.item.title").withStyle(ChatFormatting.DARK_GRAY)
|
private val TOOLTIP_TAG_DISPLAY_ITEM_TITLE = TranslatableComponent("otm.gui.debug.tags.item.title").withStyle(ChatFormatting.DARK_GRAY)
|
||||||
private val TOOLTIP_TAG_DISPLAY_BLOCK_TITLE = TranslatableComponent("otm.gui.debug.tags.block.title").withStyle(ChatFormatting.DARK_GRAY)
|
private val TOOLTIP_TAG_DISPLAY_BLOCK_TITLE = TranslatableComponent("otm.gui.debug.tags.block.title").withStyle(ChatFormatting.DARK_GRAY)
|
||||||
|
|
||||||
fun tooltipEvent(event: ItemTooltipEvent) {
|
internal fun tooltipEvent(event: ItemTooltipEvent) {
|
||||||
if (event.flags.isAdvanced && ClientConfig.Tooltip.DISPLAY_TAGS && !event.itemStack.isEmpty) {
|
if (event.flags.isAdvanced && ClientConfig.Tooltip.DISPLAY_TAGS && !event.itemStack.isEmpty) {
|
||||||
val itemTags = ArrayList<TagKey<Item>>()
|
val itemTags = ArrayList<TagKey<Item>>()
|
||||||
if (event.itemStack.tags.count() > 0) {
|
if (event.itemStack.tags.count() > 0) {
|
||||||
|
@ -33,7 +33,7 @@ private inline fun check(cond: Boolean, error: () -> String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createCursors() {
|
internal fun createCursors() {
|
||||||
ARROW_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_ARROW_CURSOR)
|
ARROW_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_ARROW_CURSOR)
|
||||||
BEAM_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_IBEAM_CURSOR)
|
BEAM_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_IBEAM_CURSOR)
|
||||||
HAND_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_POINTING_HAND_CURSOR)
|
HAND_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_POINTING_HAND_CURSOR)
|
||||||
@ -60,7 +60,7 @@ enum class CursorType(val pointer: LongSupplier) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClientPostRender(event: RenderFrameEvent.Post) {
|
internal fun onClientPostRender(event: RenderFrameEvent.Post) {
|
||||||
if (MODIFIED_CURSOR_FRAMES-- <= 0 && MODIFIED_CURSOR) {
|
if (MODIFIED_CURSOR_FRAMES-- <= 0 && MODIFIED_CURSOR) {
|
||||||
GLFW.glfwSetCursor(minecraft.window.window, ARROW_CURSOR)
|
GLFW.glfwSetCursor(minecraft.window.window, ARROW_CURSOR)
|
||||||
MODIFIED_CURSOR = false
|
MODIFIED_CURSOR = false
|
||||||
@ -116,22 +116,22 @@ fun tickWhileClientPre(condition: () -> Boolean, ticker: () -> Unit) {
|
|||||||
tickClientPre(IConditionalTickable.wrap(condition, ticker))
|
tickClientPre(IConditionalTickable.wrap(condition, ticker))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClientTickPre(event: ClientTickEvent.Pre) {
|
internal fun onClientTickPre(event: ClientTickEvent.Pre) {
|
||||||
preTickList.tick()
|
preTickList.tick()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClientTickPost(event: ClientTickEvent.Post) {
|
internal fun onClientTickPost(event: ClientTickEvent.Post) {
|
||||||
postTickList.tick()
|
postTickList.tick()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClientDisconnected(event: ClientPlayerNetworkEvent.LoggingOut) {
|
internal fun onClientDisconnected(event: ClientPlayerNetworkEvent.LoggingOut) {
|
||||||
LOGGED_IN = false
|
LOGGED_IN = false
|
||||||
|
|
||||||
preTickList.clear()
|
preTickList.clear()
|
||||||
postTickList.clear()
|
postTickList.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClientConnected(event: ClientPlayerNetworkEvent.LoggingIn) {
|
internal fun onClientConnected(event: ClientPlayerNetworkEvent.LoggingIn) {
|
||||||
LOGGED_IN = true
|
LOGGED_IN = true
|
||||||
|
|
||||||
preTickList.clear()
|
preTickList.clear()
|
||||||
|
@ -48,7 +48,7 @@ object MatteryGUI {
|
|||||||
|
|
||||||
private val buttonShaker = Random()
|
private val buttonShaker = Random()
|
||||||
|
|
||||||
fun onScreenRender(event: ScreenEvent.Render.Pre) {
|
internal fun onScreenRender(event: ScreenEvent.Render.Pre) {
|
||||||
val screen = minecraft.screen as? InBedChatScreen
|
val screen = minecraft.screen as? InBedChatScreen
|
||||||
|
|
||||||
if (screen == null || (screen.leaveBedButton as Button?) == null) {
|
if (screen == null || (screen.leaveBedButton as Button?) == null) {
|
||||||
@ -80,7 +80,7 @@ object MatteryGUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onOpenGUIEvent(event: ScreenEvent.Opening) {
|
internal fun onOpenGUIEvent(event: ScreenEvent.Opening) {
|
||||||
originalBedButtonX = -1
|
originalBedButtonX = -1
|
||||||
originalBedButtonY = -1
|
originalBedButtonY = -1
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ object MatteryGUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onLayerRenderEvent(event: RenderGuiLayerEvent.Pre) {
|
internal fun onLayerRenderEvent(event: RenderGuiLayerEvent.Pre) {
|
||||||
if (minecraft.player?.matteryPlayer?.isAndroid == true) {
|
if (minecraft.player?.matteryPlayer?.isAndroid == true) {
|
||||||
if (event.name == VanillaGuiLayers.FOOD_LEVEL
|
if (event.name == VanillaGuiLayers.FOOD_LEVEL
|
||||||
|| event.name == VanillaGuiLayers.AIR_LEVEL
|
|| event.name == VanillaGuiLayers.AIR_LEVEL
|
||||||
@ -105,7 +105,7 @@ object MatteryGUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun registerGuiLayers(event: RegisterGuiLayersEvent) {
|
internal fun registerGuiLayers(event: RegisterGuiLayersEvent) {
|
||||||
event.registerBelow(VanillaGuiLayers.FOOD_LEVEL, loc("android_energy_bar"), AndroidEnergyBarLayer())
|
event.registerBelow(VanillaGuiLayers.FOOD_LEVEL, loc("android_energy_bar"), AndroidEnergyBarLayer())
|
||||||
event.registerBelow(VanillaGuiLayers.PLAYER_HEALTH, loc("android_health_bar"), AndroidHealthBarLayer())
|
event.registerBelow(VanillaGuiLayers.PLAYER_HEALTH, loc("android_health_bar"), AndroidHealthBarLayer())
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.core.math.Decimal
|
|||||||
import kotlin.math.ceil
|
import kotlin.math.ceil
|
||||||
|
|
||||||
object MatteryTooltipComponents {
|
object MatteryTooltipComponents {
|
||||||
fun gatherComponents(event: RenderTooltipEvent.GatherComponents) {
|
internal fun gatherComponents(event: RenderTooltipEvent.GatherComponents) {
|
||||||
val energyCap = event.itemStack.getCapability(MatteryCapability.ITEM_ENERGY)
|
val energyCap = event.itemStack.getCapability(MatteryCapability.ITEM_ENERGY)
|
||||||
if (energyCap != null && energyCap.maxBatteryLevel > Decimal.ZERO) {
|
if (energyCap != null && energyCap.maxBatteryLevel > Decimal.ZERO) {
|
||||||
event.tooltipElements.add(1, Either.right(EnergyStorageGaugeTooltip(energyCap)))
|
event.tooltipElements.add(1, Either.right(EnergyStorageGaugeTooltip(energyCap)))
|
||||||
@ -29,7 +29,7 @@ object MatteryTooltipComponents {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun registerComponents(event: RegisterClientTooltipComponentFactoriesEvent) {
|
internal fun registerComponents(event: RegisterClientTooltipComponentFactoriesEvent) {
|
||||||
event.register(EnergyStorageGaugeTooltip::class.java) { it }
|
event.register(EnergyStorageGaugeTooltip::class.java) { it }
|
||||||
event.register(MatterStorageGaugeTooltip::class.java) { it }
|
event.register(MatterStorageGaugeTooltip::class.java) { it }
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ class ChartTooltipElement(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun register(event: RegisterClientTooltipComponentFactoriesEvent) {
|
internal fun register(event: RegisterClientTooltipComponentFactoriesEvent) {
|
||||||
event.register(ChartTooltipElement::class.java) { it }
|
event.register(ChartTooltipElement::class.java) { it }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ object ShockwaveRenderer {
|
|||||||
|
|
||||||
private const val EXPANSION_PER_SECOND = 18f
|
private const val EXPANSION_PER_SECOND = 18f
|
||||||
|
|
||||||
fun onRender(event: RenderLevelStageEvent) {
|
internal fun onRender(event: RenderLevelStageEvent) {
|
||||||
if (event.stage !== RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS) {
|
if (event.stage !== RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ class BatteryBankRenderer(context: BlockEntityRendererProvider.Context) : BankRe
|
|||||||
override val texture: AbstractMatterySprite = WidgetLocation.VERTICAL_GAUGES.sprite(x = 108f, width = 18f)
|
override val texture: AbstractMatterySprite = WidgetLocation.VERTICAL_GAUGES.sprite(x = 108f, width = 18f)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun onRegisterAdditionalModels(event: ModelEvent.RegisterAdditional) {
|
internal fun onRegisterAdditionalModels(event: ModelEvent.RegisterAdditional) {
|
||||||
for (i in 0 .. 11) {
|
for (i in 0 .. 11) {
|
||||||
event.register(ModelResourceLocation.standalone(ResourceLocation(OverdriveThatMatters.MOD_ID, "block/battery/battery$i")))
|
event.register(ModelResourceLocation.standalone(ResourceLocation(OverdriveThatMatters.MOD_ID, "block/battery/battery$i")))
|
||||||
}
|
}
|
||||||
@ -168,7 +168,7 @@ class MatterBatteryBankRenderer(context: BlockEntityRendererProvider.Context) :
|
|||||||
override val texture: AbstractMatterySprite = WidgetLocation.VERTICAL_GAUGES.sprite(x = 90f, width = 18f)
|
override val texture: AbstractMatterySprite = WidgetLocation.VERTICAL_GAUGES.sprite(x = 90f, width = 18f)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun onRegisterAdditionalModels(event: ModelEvent.RegisterAdditional) {
|
internal fun onRegisterAdditionalModels(event: ModelEvent.RegisterAdditional) {
|
||||||
for (i in 0 .. 11) {
|
for (i in 0 .. 11) {
|
||||||
event.register(ModelResourceLocation.standalone(ResourceLocation(OverdriveThatMatters.MOD_ID, "block/battery/matter_capacitor$i")))
|
event.register(ModelResourceLocation.standalone(ResourceLocation(OverdriveThatMatters.MOD_ID, "block/battery/matter_capacitor$i")))
|
||||||
}
|
}
|
||||||
|
@ -40,15 +40,11 @@ val isCuriosLoaded by lazy {
|
|||||||
ModList.get().isLoaded(CuriosApi.MODID)
|
ModList.get().isLoaded(CuriosApi.MODID)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onCuriosSlotModifiersUpdated(event: SlotModifiersUpdatedEvent) {
|
internal fun onCuriosSlotModifiersUpdated(event: SlotModifiersUpdatedEvent) {
|
||||||
check(isCuriosLoaded) { "Curios is not loaded!" }
|
check(isCuriosLoaded) { "Curios is not loaded!" }
|
||||||
event.entity.matteryPlayer?.recreateExoPackMenu()
|
event.entity.matteryPlayer?.recreateExoPackMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openCuriosScreen(carriedStack: ItemStack = ItemStack.EMPTY) {
|
|
||||||
if (FMLEnvironment.dist.isClient) PacketDistributor.sendToServer(CPacketOpenCurios(carriedStack))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Player.getCuriosSlotsImpl(): List<PlayerSlot<Slot, Slot>> {
|
private fun Player.getCuriosSlotsImpl(): List<PlayerSlot<Slot, Slot>> {
|
||||||
val handler = getCapability(CuriosCapability.INVENTORY) ?: return listOf()
|
val handler = getCapability(CuriosCapability.INVENTORY) ?: return listOf()
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class MatteryChestMenu(
|
|||||||
return MatteryChestMenu(HOPPER, containerId, inventory, 1, 5, container)
|
return MatteryChestMenu(HOPPER, containerId, inventory, 1, 5, container)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
bus.addListener(this::registerScreens)
|
bus.addListener(this::registerScreens)
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,7 @@ object FlywheelMaterials : SimpleJsonResourceReloadListener(GsonBuilder().setPre
|
|||||||
).apply(it, ::Entry)
|
).apply(it, ::Entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reloadEvent(event: AddReloadListenerEvent) {
|
internal fun reloadEvent(event: AddReloadListenerEvent) {
|
||||||
event.addListener(this)
|
event.addListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ object FlywheelMaterials : SimpleJsonResourceReloadListener(GsonBuilder().setPre
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDataPackSync(event: OnDatapackSyncEvent) {
|
internal fun onDataPackSync(event: OnDatapackSyncEvent) {
|
||||||
if (event.player == null) {
|
if (event.player == null) {
|
||||||
PacketDistributor.sendToAllPlayers(SyncPacket(elements))
|
PacketDistributor.sendToAllPlayers(SyncPacket(elements))
|
||||||
} else {
|
} else {
|
||||||
@ -235,7 +235,7 @@ object FlywheelMaterials : SimpleJsonResourceReloadListener(GsonBuilder().setPre
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun tooltipEvent(event: ItemTooltipEvent) {
|
internal fun tooltipEvent(event: ItemTooltipEvent) {
|
||||||
if (minecraft.window.isShiftDown) {
|
if (minecraft.window.isShiftDown) {
|
||||||
val item = event.itemStack.item
|
val item = event.itemStack.item
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ abstract class DecimalProvider : SampledDecimal {
|
|||||||
registror.register("uniform") { UniformDecimal }
|
registror.register("uniform") { UniformDecimal }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
bus.addListener(registryHolder::build)
|
bus.addListener(registryHolder::build)
|
||||||
registror.register(bus)
|
registror.register(bus)
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,7 @@ import ru.dbotthepony.mc.otm.registry.game.MItems
|
|||||||
|
|
||||||
|
|
||||||
object WitheredSkeletonSpawnHandler {
|
object WitheredSkeletonSpawnHandler {
|
||||||
@SubscribeEvent
|
internal fun onEntityJoin(event: EntityJoinLevelEvent) {
|
||||||
fun onEntityJoin(event: EntityJoinLevelEvent) {
|
|
||||||
val entity = event.entity
|
val entity = event.entity
|
||||||
|
|
||||||
if (entity is WitherSkeleton) {
|
if (entity is WitherSkeleton) {
|
||||||
|
@ -106,7 +106,7 @@ class ChestUpgraderItem : MatteryItem(Properties().stacksTo(1)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun onEntityInteract(event: PlayerInteractEvent.EntityInteract) {
|
internal fun onEntityInteract(event: PlayerInteractEvent.EntityInteract) {
|
||||||
if (event.target !is MinecartChest) return
|
if (event.target !is MinecartChest) return
|
||||||
|
|
||||||
val offhand = if (event.entity.getItemInHand(InteractionHand.MAIN_HAND).item is ChestUpgraderItem) {
|
val offhand = if (event.entity.getItemInHand(InteractionHand.MAIN_HAND).item is ChestUpgraderItem) {
|
||||||
|
@ -68,7 +68,7 @@ class PortableCondensationDriveItem(capacity: Int) : Item(Properties().stacksTo(
|
|||||||
const val MAX_FILTERS = 4 * 3
|
const val MAX_FILTERS = 4 * 3
|
||||||
private val EMPTY_FILTER = ItemFilter(MAX_FILTERS)
|
private val EMPTY_FILTER = ItemFilter(MAX_FILTERS)
|
||||||
|
|
||||||
fun onPickupEvent(event: ItemEntityPickupEvent.Pre) {
|
internal fun onPickupEvent(event: ItemEntityPickupEvent.Pre) {
|
||||||
if (event.itemEntity.owner != null && event.itemEntity.owner != event.player && event.itemEntity.age < 200 || event.itemEntity.item.isEmpty) {
|
if (event.itemEntity.owner != null && event.itemEntity.owner != event.player && event.itemEntity.age < 200 || event.itemEntity.item.isEmpty) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -317,7 +317,7 @@ class QuantumBatteryItem(val savedataID: String, val balanceValues: EnergyBalanc
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun clientDisconnect(event: ClientPlayerNetworkEvent.LoggingOut) {
|
internal fun clientDisconnect(event: ClientPlayerNetworkEvent.LoggingOut) {
|
||||||
BuiltInRegistries.ITEM.forEach { if (it is QuantumBatteryItem) it.clientData.clear() }
|
BuiltInRegistries.ITEM.forEach { if (it is QuantumBatteryItem) it.clientData.clear() }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ class QuantumBatteryItem(val savedataID: String, val balanceValues: EnergyBalanc
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun tick(event: ServerTickEvent.Post) {
|
internal fun tick(event: ServerTickEvent.Post) {
|
||||||
for (ply in event.server.playerList.players) {
|
for (ply in event.server.playerList.players) {
|
||||||
val networkedChannels = ObjectOpenHashSet<UUID>(0)
|
val networkedChannels = ObjectOpenHashSet<UUID>(0)
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ class TritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.TRITANIUM, slot
|
|||||||
val TEXTURE_LOCATION_BASE = loc("textures/models/armor/tritanium_armor_base.png")
|
val TEXTURE_LOCATION_BASE = loc("textures/models/armor/tritanium_armor_base.png")
|
||||||
val TEXTURE_LOCATION_OVERLAY = loc("textures/models/armor/tritanium_armor_overlay.png")
|
val TEXTURE_LOCATION_OVERLAY = loc("textures/models/armor/tritanium_armor_overlay.png")
|
||||||
|
|
||||||
fun onHurt(event: LivingIncomingDamageEvent) {
|
internal fun onHurt(event: LivingIncomingDamageEvent) {
|
||||||
if (event.source.typeHolder().`is`(DamageTypes.SWEET_BERRY_BUSH) || event.source.msgId == "sweetBerryBush") {
|
if (event.source.typeHolder().`is`(DamageTypes.SWEET_BERRY_BUSH) || event.source.msgId == "sweetBerryBush") {
|
||||||
if (
|
if (
|
||||||
event.entity.getItemBySlot(EquipmentSlot.FEET).let { !it.isEmpty && it.item == MItems.TRITANIUM_BOOTS } &&
|
event.entity.getItemBySlot(EquipmentSlot.FEET).let { !it.isEmpty && it.item == MItems.TRITANIUM_BOOTS } &&
|
||||||
|
@ -107,7 +107,7 @@ class NotNormalFood(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun onInteract(event: EntityInteract) {
|
internal fun onInteract(event: EntityInteract) {
|
||||||
val item = event.itemStack.item as? NotNormalFood ?: return
|
val item = event.itemStack.item as? NotNormalFood ?: return
|
||||||
val target = event.target as? LivingEntity ?: return
|
val target = event.target as? LivingEntity ?: return
|
||||||
|
|
||||||
|
@ -321,7 +321,7 @@ class ExplosiveHammerItem(durability: Int = 512) : Item(Properties().stacksTo(1)
|
|||||||
val GUNPOWDER_PREDICATE = Predicate { stack: ItemStack -> stack.`is`(Tags.Items.GUNPOWDERS) }
|
val GUNPOWDER_PREDICATE = Predicate { stack: ItemStack -> stack.`is`(Tags.Items.GUNPOWDERS) }
|
||||||
val IRON_NUGGET_PREDICATE = Predicate { stack: ItemStack -> stack.`is`(Tags.Items.NUGGETS_IRON) }
|
val IRON_NUGGET_PREDICATE = Predicate { stack: ItemStack -> stack.`is`(Tags.Items.NUGGETS_IRON) }
|
||||||
|
|
||||||
fun onLeftClickBlock(event: PlayerInteractEvent.LeftClickBlock) {
|
internal fun onLeftClickBlock(event: PlayerInteractEvent.LeftClickBlock) {
|
||||||
val item = event.itemStack.item
|
val item = event.itemStack.item
|
||||||
|
|
||||||
if (item is ExplosiveHammerItem) {
|
if (item is ExplosiveHammerItem) {
|
||||||
|
@ -122,7 +122,7 @@ class RedstoneInteractorItem : MatteryItem(Properties().stacksTo(1)) {
|
|||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onUse(event: UseItemOnBlockEvent) {
|
internal fun onUse(event: UseItemOnBlockEvent) {
|
||||||
if (event.itemStack.item is RedstoneInteractorItem) {
|
if (event.itemStack.item is RedstoneInteractorItem) {
|
||||||
if ((event.itemStack.item as RedstoneInteractorItem).useOn(event.useOnContext).consumesAction())
|
if ((event.itemStack.item as RedstoneInteractorItem).useOn(event.useOnContext).consumesAction())
|
||||||
event.cancelWithResult(ItemInteractionResult.sidedSuccess(event.level.isClientSide()))
|
event.cancelWithResult(ItemInteractionResult.sidedSuccess(event.level.isClientSide()))
|
||||||
|
@ -114,7 +114,7 @@ abstract class AbstractRegistryAction(
|
|||||||
registrar.register("blacklist") { BlacklistAction.Companion }
|
registrar.register("blacklist") { BlacklistAction.Companion }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
bus.addListener(registryDelegate::build)
|
bus.addListener(registryDelegate::build)
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ interface IMatterFunction {
|
|||||||
val AT_MOST: IMatterFunction by registrar.register("at_most") { SimpleMatterFunction(Int::coerceAtMost, Double::coerceAtMost, Decimal::coerceAtMost) }
|
val AT_MOST: IMatterFunction by registrar.register("at_most") { SimpleMatterFunction(Int::coerceAtMost, Double::coerceAtMost, Decimal::coerceAtMost) }
|
||||||
val REPLACE: IMatterFunction by registrar.register("replace") { SimpleMatterFunction({ _, value -> value }, { _, value -> value }, { _, value -> value }) }
|
val REPLACE: IMatterFunction by registrar.register("replace") { SimpleMatterFunction({ _, value -> value }, { _, value -> value }, { _, value -> value }) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
bus.addListener(registryDelegate::build)
|
bus.addListener(registryDelegate::build)
|
||||||
}
|
}
|
||||||
|
@ -1334,7 +1334,7 @@ object MatterManager {
|
|||||||
|
|
||||||
private val formatMatterAsReadable = BooleanSupplier { if (ClientConfig.Tooltip.ALWAYS_DISPLAY_MATTER_VALUE) minecraft.window.isShiftDown else minecraft.window.isShiftDown && milliTime % 2_000L > 1_000L }
|
private val formatMatterAsReadable = BooleanSupplier { if (ClientConfig.Tooltip.ALWAYS_DISPLAY_MATTER_VALUE) minecraft.window.isShiftDown else minecraft.window.isShiftDown && milliTime % 2_000L > 1_000L }
|
||||||
|
|
||||||
fun tooltipEvent(event: ItemTooltipEvent) {
|
internal fun tooltipEvent(event: ItemTooltipEvent) {
|
||||||
if (ClientConfig.Tooltip.ALWAYS_DISPLAY_MATTER_VALUE || minecraft.window.isShiftDown) {
|
if (ClientConfig.Tooltip.ALWAYS_DISPLAY_MATTER_VALUE || minecraft.window.isShiftDown) {
|
||||||
val matter = get(event.itemStack, accountForStackSize = false)
|
val matter = get(event.itemStack, accountForStackSize = false)
|
||||||
|
|
||||||
@ -1527,12 +1527,12 @@ object MatterManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reloadEvent(event: AddReloadListenerEvent) {
|
internal fun reloadEvent(event: AddReloadListenerEvent) {
|
||||||
event.addListener(Registry)
|
event.addListener(Registry)
|
||||||
event.addListener(Resolver)
|
event.addListener(Resolver)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initialize(bus: IEventBus) {
|
internal fun initialize(bus: IEventBus) {
|
||||||
bus.addListener(Resolver.delegate::build)
|
bus.addListener(Resolver.delegate::build)
|
||||||
Resolver.registrar.register(bus)
|
Resolver.registrar.register(bus)
|
||||||
}
|
}
|
||||||
@ -1632,7 +1632,7 @@ object MatterManager {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addCommands(event: RegisterCommandsEvent) {
|
internal fun addCommands(event: RegisterCommandsEvent) {
|
||||||
event.dispatcher.register(
|
event.dispatcher.register(
|
||||||
Commands.literal("dump_matter_registry")
|
Commands.literal("dump_matter_registry")
|
||||||
.requires { it.hasPermission(Commands.LEVEL_OWNERS) }
|
.requires { it.hasPermission(Commands.LEVEL_OWNERS) }
|
||||||
@ -1685,7 +1685,7 @@ object MatterManager {
|
|||||||
syncRegistry(server.registryAccess(), PacketDistributor::sendToAllPlayers)
|
syncRegistry(server.registryAccess(), PacketDistributor::sendToAllPlayers)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDataPackSync(event: OnDatapackSyncEvent) {
|
internal fun onDataPackSync(event: OnDatapackSyncEvent) {
|
||||||
if (!registryIsBuilt)
|
if (!registryIsBuilt)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -1696,7 +1696,7 @@ object MatterManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onServerStarted(event: ServerStartedEvent) {
|
internal fun onServerStarted(event: ServerStartedEvent) {
|
||||||
check(Resolver.ready) { "Recipe resolver is not ready somehow" }
|
check(Resolver.ready) { "Recipe resolver is not ready somehow" }
|
||||||
check(Registry.ready) { "Matter registry is not ready somehow" }
|
check(Registry.ready) { "Matter registry is not ready somehow" }
|
||||||
finishUpIfRequiredAndPossible(event.server)
|
finishUpIfRequiredAndPossible(event.server)
|
||||||
|
@ -28,6 +28,18 @@ fun <T : CustomPacketPayload> PayloadRegistrar.playToServer(
|
|||||||
handler: KFunction1<IPayloadContext, Unit>
|
handler: KFunction1<IPayloadContext, Unit>
|
||||||
): PayloadRegistrar = playToServer(type, codec) { _, context -> handler(context) }
|
): PayloadRegistrar = playToServer(type, codec) { _, context -> handler(context) }
|
||||||
|
|
||||||
|
fun <T : CustomPacketPayload> PayloadRegistrar.playToClient(
|
||||||
|
type: CustomPacketPayload.Type<T>,
|
||||||
|
value: T,
|
||||||
|
handler: KFunction1<IPayloadContext, Unit>
|
||||||
|
): PayloadRegistrar = playToClient(type, MatteryStreamCodec.MUnit(value)) { _, context -> handler(context) }
|
||||||
|
|
||||||
|
fun <T : CustomPacketPayload> PayloadRegistrar.playToServer(
|
||||||
|
type: CustomPacketPayload.Type<T>,
|
||||||
|
value: T,
|
||||||
|
handler: KFunction1<IPayloadContext, Unit>
|
||||||
|
): PayloadRegistrar = playToServer(type, MatteryStreamCodec.MUnit(value)) { _, context -> handler(context) }
|
||||||
|
|
||||||
inline fun encodePayload(registry: RegistryAccess, block: (RegistryFriendlyByteBuf) -> Unit): ByteArrayList {
|
inline fun encodePayload(registry: RegistryAccess, block: (RegistryFriendlyByteBuf) -> Unit): ByteArrayList {
|
||||||
val underlying = ByteBufAllocator.DEFAULT.buffer()
|
val underlying = ByteBufAllocator.DEFAULT.buffer()
|
||||||
val buf = RegistryFriendlyByteBuf(underlying, registry, ConnectionType.NEOFORGE)
|
val buf = RegistryFriendlyByteBuf(underlying, registry, ConnectionType.NEOFORGE)
|
||||||
|
@ -245,9 +245,6 @@ object ExopackMenuOpen : CustomPacketPayload {
|
|||||||
"exopack_menu_open"
|
"exopack_menu_open"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, ExopackMenuOpen> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { ExopackMenuOpen })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class PickItemFromInventoryPacket(
|
class PickItemFromInventoryPacket(
|
||||||
@ -347,8 +344,6 @@ object DisplayExopackPacket : CustomPacketPayload {
|
|||||||
"display_exopack"
|
"display_exopack"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, DisplayExopackPacket> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { DisplayExopackPacket })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object HideExopackPacket : CustomPacketPayload {
|
object HideExopackPacket : CustomPacketPayload {
|
||||||
@ -366,8 +361,6 @@ object HideExopackPacket : CustomPacketPayload {
|
|||||||
"hide_exopack"
|
"hide_exopack"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, HideExopackPacket> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { HideExopackPacket })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object EnableExopackGlowPacket : CustomPacketPayload {
|
object EnableExopackGlowPacket : CustomPacketPayload {
|
||||||
@ -385,8 +378,6 @@ object EnableExopackGlowPacket : CustomPacketPayload {
|
|||||||
"enable_exopack_glow"
|
"enable_exopack_glow"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, EnableExopackGlowPacket> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { EnableExopackGlowPacket })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object DisableExopackGlowPacket : CustomPacketPayload {
|
object DisableExopackGlowPacket : CustomPacketPayload {
|
||||||
@ -404,8 +395,6 @@ object DisableExopackGlowPacket : CustomPacketPayload {
|
|||||||
"disable_exopack_glow"
|
"disable_exopack_glow"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, DisableExopackGlowPacket> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { DisableExopackGlowPacket })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object ResetExopackColorPacket : CustomPacketPayload {
|
object ResetExopackColorPacket : CustomPacketPayload {
|
||||||
@ -423,8 +412,6 @@ object ResetExopackColorPacket : CustomPacketPayload {
|
|||||||
"reset_exopack_color"
|
"reset_exopack_color"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val CODEC: StreamCodec<FriendlyByteBuf, ResetExopackColorPacket> =
|
|
||||||
StreamCodec.ofMember({ _, _ -> }, { ResetExopackColorPacket })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExopackSmokePacket(val player: UUID) : CustomPacketPayload {
|
class ExopackSmokePacket(val player: UUID) : CustomPacketPayload {
|
||||||
|
@ -35,6 +35,14 @@ interface MatteryStreamCodec<in S : ByteBuf, V> : StreamCodec<@UnsafeVariance S,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MUnit<V>(val value: V) : MatteryStreamCodec<ByteBuf, V> {
|
||||||
|
override fun decode(stream: ByteBuf): V {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun encode(stream: ByteBuf, value: V) {}
|
||||||
|
}
|
||||||
|
|
||||||
abstract class AbstractPair<in S : ByteBuf, A, B, P>(private val first: MatteryStreamCodec<S, A>, private val second: MatteryStreamCodec<S, B>) : MatteryStreamCodec<S, P> {
|
abstract class AbstractPair<in S : ByteBuf, A, B, P>(private val first: MatteryStreamCodec<S, A>, private val second: MatteryStreamCodec<S, B>) : MatteryStreamCodec<S, P> {
|
||||||
protected abstract fun getFirst(value: P): A
|
protected abstract fun getFirst(value: P): A
|
||||||
protected abstract fun getSecond(value: P): B
|
protected abstract fun getSecond(value: P): B
|
||||||
|
@ -19,7 +19,7 @@ import ru.dbotthepony.mc.otm.menu.matter.PatternsChangePacket
|
|||||||
import ru.dbotthepony.mc.otm.menu.matter.ReplicationRequestPacket
|
import ru.dbotthepony.mc.otm.menu.matter.ReplicationRequestPacket
|
||||||
import ru.dbotthepony.mc.otm.menu.matter.TasksChangePacket
|
import ru.dbotthepony.mc.otm.menu.matter.TasksChangePacket
|
||||||
|
|
||||||
fun registerNetworkPackets(event: RegisterPayloadHandlersEvent) {
|
internal fun registerNetworkPackets(event: RegisterPayloadHandlersEvent) {
|
||||||
val r = event.registrar("1.5.0")
|
val r = event.registrar("1.5.0")
|
||||||
|
|
||||||
// world
|
// world
|
||||||
@ -44,15 +44,15 @@ fun registerNetworkPackets(event: RegisterPayloadHandlersEvent) {
|
|||||||
.playToClient(ExopackSlotPacket.TYPE, ExopackSlotPacket.CODEC, ExopackSlotPacket::play)
|
.playToClient(ExopackSlotPacket.TYPE, ExopackSlotPacket.CODEC, ExopackSlotPacket::play)
|
||||||
.playToClient(ExopackMenuInitPacket.TYPE, ExopackMenuInitPacket.CODEC, ExopackMenuInitPacket::play)
|
.playToClient(ExopackMenuInitPacket.TYPE, ExopackMenuInitPacket.CODEC, ExopackMenuInitPacket::play)
|
||||||
.playToClient(ExopackSmokePacket.TYPE, ExopackSmokePacket.CODEC, ExopackSmokePacket::play)
|
.playToClient(ExopackSmokePacket.TYPE, ExopackSmokePacket.CODEC, ExopackSmokePacket::play)
|
||||||
.playToServer(ExopackMenuOpen.TYPE, ExopackMenuOpen.CODEC, ExopackMenuOpen::play)
|
.playToServer(ExopackMenuOpen.TYPE, ExopackMenuOpen, ExopackMenuOpen::play)
|
||||||
|
|
||||||
.playToServer(PickItemFromInventoryPacket.TYPE, PickItemFromInventoryPacket.CODEC, PickItemFromInventoryPacket::play)
|
.playToServer(PickItemFromInventoryPacket.TYPE, PickItemFromInventoryPacket.CODEC, PickItemFromInventoryPacket::play)
|
||||||
|
|
||||||
.playToServer(DisplayExopackPacket.TYPE, DisplayExopackPacket.CODEC, DisplayExopackPacket::play)
|
.playToServer(DisplayExopackPacket.TYPE, DisplayExopackPacket, DisplayExopackPacket::play)
|
||||||
.playToServer(HideExopackPacket.TYPE, HideExopackPacket.CODEC, HideExopackPacket::play)
|
.playToServer(HideExopackPacket.TYPE, HideExopackPacket, HideExopackPacket::play)
|
||||||
.playToServer(EnableExopackGlowPacket.TYPE, EnableExopackGlowPacket.CODEC, EnableExopackGlowPacket::play)
|
.playToServer(EnableExopackGlowPacket.TYPE, EnableExopackGlowPacket, EnableExopackGlowPacket::play)
|
||||||
.playToServer(DisableExopackGlowPacket.TYPE, DisableExopackGlowPacket.CODEC, DisableExopackGlowPacket::play)
|
.playToServer(DisableExopackGlowPacket.TYPE, DisableExopackGlowPacket, DisableExopackGlowPacket::play)
|
||||||
.playToServer(ResetExopackColorPacket.TYPE, ResetExopackColorPacket.CODEC, ResetExopackColorPacket::play)
|
.playToServer(ResetExopackColorPacket.TYPE, ResetExopackColorPacket, ResetExopackColorPacket::play)
|
||||||
.playToServer(SetExopackColorPacket.TYPE, SetExopackColorPacket.CODEC, SetExopackColorPacket::play)
|
.playToServer(SetExopackColorPacket.TYPE, SetExopackColorPacket.CODEC, SetExopackColorPacket::play)
|
||||||
|
|
||||||
// otm player general
|
// otm player general
|
||||||
|
@ -1340,7 +1340,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
|
|
||||||
val ANDROID_IMMUNE_EFFECTS: TagKey<MobEffect> = TagKey.create(BuiltInRegistries.MOB_EFFECT.key(), ResourceLocation(OverdriveThatMatters.MOD_ID, "android_immune_effects"))
|
val ANDROID_IMMUNE_EFFECTS: TagKey<MobEffect> = TagKey.create(BuiltInRegistries.MOB_EFFECT.key(), ResourceLocation(OverdriveThatMatters.MOD_ID, "android_immune_effects"))
|
||||||
|
|
||||||
fun onPlayerTickPre(event: PlayerTickEvent.Pre) {
|
internal fun onPlayerTickPre(event: PlayerTickEvent.Pre) {
|
||||||
val ent = event.entity
|
val ent = event.entity
|
||||||
|
|
||||||
if (!ent.level().isClientSide) {
|
if (!ent.level().isClientSide) {
|
||||||
@ -1348,7 +1348,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerTickPost(event: PlayerTickEvent.Pre) {
|
internal fun onPlayerTickPost(event: PlayerTickEvent.Pre) {
|
||||||
val ent = event.entity
|
val ent = event.entity
|
||||||
|
|
||||||
if (ent.level().isClientSide) {
|
if (ent.level().isClientSide) {
|
||||||
@ -1358,7 +1358,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isMobEffectApplicable(event: MobEffectEvent.Applicable) {
|
internal fun isMobEffectApplicable(event: MobEffectEvent.Applicable) {
|
||||||
event.entity.matteryPlayer?.let {
|
event.entity.matteryPlayer?.let {
|
||||||
if (it.isAndroid && BuiltInRegistries.MOB_EFFECT.getOrCreateTag(ANDROID_IMMUNE_EFFECTS).any { it == event.effectInstance?.effect }) {
|
if (it.isAndroid && BuiltInRegistries.MOB_EFFECT.getOrCreateTag(ANDROID_IMMUNE_EFFECTS).any { it == event.effectInstance?.effect }) {
|
||||||
event.result = MobEffectEvent.Applicable.Result.DO_NOT_APPLY
|
event.result = MobEffectEvent.Applicable.Result.DO_NOT_APPLY
|
||||||
@ -1366,18 +1366,18 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onHurtEvent(event: LivingIncomingDamageEvent) {
|
internal fun onHurtEvent(event: LivingIncomingDamageEvent) {
|
||||||
event.entity.matteryPlayer?.onHurt(event)
|
event.entity.matteryPlayer?.onHurt(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerChangeDimensionEvent(event: PlayerEvent.PlayerChangedDimensionEvent) {
|
internal fun onPlayerChangeDimensionEvent(event: PlayerEvent.PlayerChangedDimensionEvent) {
|
||||||
onceServer {
|
onceServer {
|
||||||
event.entity.matteryPlayer.invalidateNetworkState()
|
event.entity.matteryPlayer.invalidateNetworkState()
|
||||||
event.entity.matteryPlayer.recreateExoPackMenu()
|
event.entity.matteryPlayer.recreateExoPackMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerDeath(event: LivingDeathEvent) {
|
internal fun onPlayerDeath(event: LivingDeathEvent) {
|
||||||
val ply = event.entity as? Player ?: return
|
val ply = event.entity as? Player ?: return
|
||||||
|
|
||||||
if (ply.matteryPlayer.lastDeathTick != ply.tickCount) {
|
if (ply.matteryPlayer.lastDeathTick != ply.tickCount) {
|
||||||
@ -1402,7 +1402,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerCloneEvent(event: PlayerEvent.Clone) {
|
internal fun onPlayerCloneEvent(event: PlayerEvent.Clone) {
|
||||||
val it = event.entity.matteryPlayer
|
val it = event.entity.matteryPlayer
|
||||||
val original = event.original.matteryPlayer
|
val original = event.original.matteryPlayer
|
||||||
|
|
||||||
@ -1430,7 +1430,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
|
|
||||||
private val LOGGER = LogManager.getLogger()
|
private val LOGGER = LogManager.getLogger()
|
||||||
|
|
||||||
fun onPlayerSpawnPhantoms(event: PlayerSpawnPhantomsEvent) {
|
internal fun onPlayerSpawnPhantoms(event: PlayerSpawnPhantomsEvent) {
|
||||||
if (event.entity.matteryPlayer.isAndroid) {
|
if (event.entity.matteryPlayer.isAndroid) {
|
||||||
event.result = PlayerSpawnPhantomsEvent.Result.DENY
|
event.result = PlayerSpawnPhantomsEvent.Result.DENY
|
||||||
}
|
}
|
||||||
@ -1531,7 +1531,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
PacketDistributor.sendToServer(PickItemFromInventoryPacket(targetSlot, itemSlot))
|
PacketDistributor.sendToServer(PickItemFromInventoryPacket(targetSlot, itemSlot))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onStartTracking(event: PlayerEvent.StartTracking) {
|
internal fun onStartTracking(event: PlayerEvent.StartTracking) {
|
||||||
if (event.target is ServerPlayer) {
|
if (event.target is ServerPlayer) {
|
||||||
(event.target as ServerPlayer).matteryPlayer.let {
|
(event.target as ServerPlayer).matteryPlayer.let {
|
||||||
it.remoteSynchers[event.entity as ServerPlayer] = it.publicSyncher.Remote()
|
it.remoteSynchers[event.entity as ServerPlayer] = it.publicSyncher.Remote()
|
||||||
@ -1539,7 +1539,7 @@ class MatteryPlayer(val ply: Player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onStopTracking(event: PlayerEvent.StopTracking) {
|
internal fun onStopTracking(event: PlayerEvent.StopTracking) {
|
||||||
if (event.target is ServerPlayer) {
|
if (event.target is ServerPlayer) {
|
||||||
(event.target as ServerPlayer).matteryPlayer.remoteSynchers.remove(event.entity as ServerPlayer)
|
(event.target as ServerPlayer).matteryPlayer.remoteSynchers.remove(event.entity as ServerPlayer)
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ object AndroidResearchDescriptions {
|
|||||||
registrar.register("plain") { PlainAndroidResearchDescription }
|
registrar.register("plain") { PlainAndroidResearchDescription }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ interface AndroidResearchDescription {
|
|||||||
registry.byNameCodec().dispatch({ it.type }, { it.codec })
|
registry.byNameCodec().dispatch({ it.type }, { it.codec })
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
bus.addListener(delegate::build)
|
bus.addListener(delegate::build)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,11 +93,11 @@ object AndroidResearchManager : SimpleJsonResourceReloadListener(GsonBuilder().s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reloadEvent(event: AddReloadListenerEvent) {
|
internal fun reloadEvent(event: AddReloadListenerEvent) {
|
||||||
event.addListener(this)
|
event.addListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun syncEvent(event: OnDatapackSyncEvent) {
|
internal fun syncEvent(event: OnDatapackSyncEvent) {
|
||||||
val packet = SyncPacket(researchMap.values)
|
val packet = SyncPacket(researchMap.values)
|
||||||
|
|
||||||
if (event.player != null) {
|
if (event.player != null) {
|
||||||
|
@ -55,7 +55,7 @@ object AndroidResearchResults {
|
|||||||
val NANOBOTS_ARMOR_STRENGTH: AndroidResearchResult.Singleton<*> by registrar.register("nanobots_armor_strength") { NanobotsArmorStrength }
|
val NANOBOTS_ARMOR_STRENGTH: AndroidResearchResult.Singleton<*> by registrar.register("nanobots_armor_strength") { NanobotsArmorStrength }
|
||||||
val NANOBOTS_ARMOR_SPEED: AndroidResearchResult.Singleton<*> by registrar.register("nanobots_armor_speed") { NanobotsArmorSpeed }
|
val NANOBOTS_ARMOR_SPEED: AndroidResearchResult.Singleton<*> by registrar.register("nanobots_armor_speed") { NanobotsArmorSpeed }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ interface AndroidResearchResult {
|
|||||||
registry.byNameCodec().dispatch({ it.type }, { it.codec })
|
registry.byNameCodec().dispatch({ it.type }, { it.codec })
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
bus.addListener(delegate::build)
|
bus.addListener(delegate::build)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -392,7 +392,7 @@ class EnderTeleporterFeature(capability: MatteryPlayer) : AndroidActiveFeature(A
|
|||||||
|
|
||||||
val SPRITE = ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/item/black_hole.png").sprite(0f, 0f, 16f, 16f, 16f, 16f)
|
val SPRITE = ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/item/black_hole.png").sprite(0f, 0f, 16f, 16f, 16f, 16f)
|
||||||
|
|
||||||
fun onEntityDeath(event: LivingDeathEvent) {
|
internal fun onEntityDeath(event: LivingDeathEvent) {
|
||||||
val android = event.entity.matteryPlayer ?: return
|
val android = event.entity.matteryPlayer ?: return
|
||||||
val server = NULLABLE_MINECRAFT_SERVER ?: return
|
val server = NULLABLE_MINECRAFT_SERVER ?: return
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ object CommandArgumentTypes {
|
|||||||
ArgumentTypeInfos.registerByClass(AndroidResearchArgument::class.java, SingletonArgumentInfo.contextFree(AndroidResearchArgument.Companion::create))
|
ArgumentTypeInfos.registerByClass(AndroidResearchArgument::class.java, SingletonArgumentInfo.contextFree(AndroidResearchArgument.Companion::create))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package ru.dbotthepony.mc.otm.registry
|
package ru.dbotthepony.mc.otm.registry
|
||||||
|
|
||||||
import net.minecraft.advancements.CriteriaTriggers
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries
|
import net.minecraft.core.registries.BuiltInRegistries
|
||||||
import net.neoforged.bus.api.IEventBus
|
import net.neoforged.bus.api.IEventBus
|
||||||
import ru.dbotthepony.mc.otm.triggers.AndroidBatteryTrigger
|
import ru.dbotthepony.mc.otm.triggers.AndroidBatteryTrigger
|
||||||
@ -29,7 +28,7 @@ import ru.dbotthepony.mc.otm.triggers.TakeItemOutOfReplicatorTrigger
|
|||||||
object MCriteriaTriggers {
|
object MCriteriaTriggers {
|
||||||
private val registrar = MDeferredRegister(BuiltInRegistries.TRIGGER_TYPES)
|
private val registrar = MDeferredRegister(BuiltInRegistries.TRIGGER_TYPES)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ object MRegistry : IBlockItemRegistryAcceptor {
|
|||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initialize(bus: IEventBus) {
|
internal fun initialize(bus: IEventBus) {
|
||||||
bus.addListener(features::build)
|
bus.addListener(features::build)
|
||||||
bus.addListener(this::initializeClient)
|
bus.addListener(this::initializeClient)
|
||||||
bus.addListener(this::initializeCommon)
|
bus.addListener(this::initializeCommon)
|
||||||
|
@ -14,11 +14,11 @@ object MStructureTags {
|
|||||||
val FIELD_RESEARCH_PODS = create("field_research_pods")
|
val FIELD_RESEARCH_PODS = create("field_research_pods")
|
||||||
val WRECKAGES = create("wreckages")
|
val WRECKAGES = create("wreckages")
|
||||||
|
|
||||||
fun create(location: String): TagKey<Structure> {
|
private fun create(location: String): TagKey<Structure> {
|
||||||
return TagKey.create(Registries.STRUCTURE, loc(location))
|
return TagKey.create(Registries.STRUCTURE, loc(location))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun registerVillagerTrades(event: VillagerTradesEvent) {
|
internal fun registerVillagerTrades(event: VillagerTradesEvent) {
|
||||||
if (event.type == VillagerProfession.CARTOGRAPHER) {
|
if (event.type == VillagerProfession.CARTOGRAPHER) {
|
||||||
with (event.trades.get(2)) {
|
with (event.trades.get(2)) {
|
||||||
add(VillagerTrades.TreasureMapForEmeralds(10, WRECKAGES, "filled_map.otm_wreckage",
|
add(VillagerTrades.TreasureMapForEmeralds(10, WRECKAGES, "filled_map.otm_wreckage",
|
||||||
|
@ -13,7 +13,7 @@ object LootModifiers {
|
|||||||
registry.register("loot_appender") { LootPoolAppender.CODEC }
|
registry.register("loot_appender") { LootPoolAppender.CODEC }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
|||||||
object MHeightProviders {
|
object MHeightProviders {
|
||||||
private val registry = MDeferredRegister(BuiltInRegistries.HEIGHT_PROVIDER_TYPE)
|
private val registry = MDeferredRegister(BuiltInRegistries.HEIGHT_PROVIDER_TYPE)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ object MItemFunctionTypes {
|
|||||||
val PROCEDURAL_EXOPACK_UPGRADE by registry.register("exopack_upgrade") { LootItemFunctionType(ProceduralExopackSlotUpgradeItem.Randomizer.CODEC) }
|
val PROCEDURAL_EXOPACK_UPGRADE by registry.register("exopack_upgrade") { LootItemFunctionType(ProceduralExopackSlotUpgradeItem.Randomizer.CODEC) }
|
||||||
val MATTER_DUST by registry.register("matter_dust") { LootItemFunctionType(MatterDustItem.Randomizer.CODEC) }
|
val MATTER_DUST by registry.register("matter_dust") { LootItemFunctionType(MatterDustItem.Randomizer.CODEC) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ object MLootItemConditions {
|
|||||||
val KILLED_BY_REAL_PLAYER_OR_INDIRECTLY: LootItemConditionType by registry.register("killed_by_real_player_or_indirectly") { LootItemConditionType(SingletonCodec(KilledByRealPlayerOrIndirectly)) }
|
val KILLED_BY_REAL_PLAYER_OR_INDIRECTLY: LootItemConditionType by registry.register("killed_by_real_player_or_indirectly") { LootItemConditionType(SingletonCodec(KilledByRealPlayerOrIndirectly)) }
|
||||||
val CHANCE: LootItemConditionType by registry.register("chance") { LootItemConditionType(ChanceCondition.CODEC) }
|
val CHANCE: LootItemConditionType by registry.register("chance") { LootItemConditionType(ChanceCondition.CODEC) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
|||||||
object MLootNumberProviders {
|
object MLootNumberProviders {
|
||||||
private val registry = MDeferredRegister(BuiltInRegistries.LOOT_NUMBER_PROVIDER_TYPE, OverdriveThatMatters.MOD_ID)
|
private val registry = MDeferredRegister(BuiltInRegistries.LOOT_NUMBER_PROVIDER_TYPE, OverdriveThatMatters.MOD_ID)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
|||||||
object MPlacementModifiers {
|
object MPlacementModifiers {
|
||||||
private val registry = MDeferredRegister(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE)
|
private val registry = MDeferredRegister(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.worldgen.feature.BlackHolePlacerFeature
|
|||||||
object MWorldGenFeatures {
|
object MWorldGenFeatures {
|
||||||
private val registry = MDeferredRegister(BuiltInRegistries.FEATURE)
|
private val registry = MDeferredRegister(BuiltInRegistries.FEATURE)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ object AndroidFeatures {
|
|||||||
val JUMP_BOOST by registry.register(MNames.JUMP_BOOST) { AndroidFeatureType(::JumpBoostFeature) }
|
val JUMP_BOOST by registry.register(MNames.JUMP_BOOST) { AndroidFeatureType(::JumpBoostFeature) }
|
||||||
val ENDER_TELEPORTER by registry.register(MNames.ENDER_TELEPORTER) { AndroidFeatureType(::EnderTeleporterFeature) }
|
val ENDER_TELEPORTER by registry.register(MNames.ENDER_TELEPORTER) { AndroidFeatureType(::EnderTeleporterFeature) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import ru.dbotthepony.mc.otm.registry.MItemTags
|
|||||||
object MArmorMaterials {
|
object MArmorMaterials {
|
||||||
private val registrar = MDeferredRegister(BuiltInRegistries.ARMOR_MATERIAL)
|
private val registrar = MDeferredRegister(BuiltInRegistries.ARMOR_MATERIAL)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ object MBlockColors {
|
|||||||
event.register(HoloSightColor, MBlocks.HOLO_SIGN)
|
event.register(HoloSightColor, MBlocks.HOLO_SIGN)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
bus.addListener(this::registerBlockColors)
|
bus.addListener(this::registerBlockColors)
|
||||||
bus.addListener(this::registerItemColors)
|
bus.addListener(this::registerItemColors)
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ object MBlockEntities {
|
|||||||
|
|
||||||
val HOLO_SIGN: BlockEntityType<HoloSignBlockEntity> by registry.register(MNames.HOLO_SIGN) { BlockEntityType.Builder.of(::HoloSignBlockEntity, MBlocks.HOLO_SIGN).build(null) }
|
val HOLO_SIGN: BlockEntityType<HoloSignBlockEntity> by registry.register(MNames.HOLO_SIGN) { BlockEntityType.Builder.of(::HoloSignBlockEntity, MBlocks.HOLO_SIGN).build(null) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
bus.addListener(this::registerClient)
|
bus.addListener(this::registerClient)
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ object MBlocks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
bus.addListener(MBlocks::registerCapabilities)
|
bus.addListener(MBlocks::registerCapabilities)
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import net.minecraft.world.item.DyeColor
|
|||||||
import net.minecraft.world.item.Item
|
import net.minecraft.world.item.Item
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.level.material.Fluids
|
import net.minecraft.world.level.material.Fluids
|
||||||
|
import net.neoforged.api.distmarker.Dist
|
||||||
|
import net.neoforged.bus.api.EventPriority
|
||||||
import net.neoforged.bus.api.IEventBus
|
import net.neoforged.bus.api.IEventBus
|
||||||
import net.neoforged.neoforge.capabilities.Capabilities
|
import net.neoforged.neoforge.capabilities.Capabilities
|
||||||
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent
|
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent
|
||||||
@ -23,6 +25,7 @@ import ru.dbotthepony.mc.otm.core.util.CreativeMenuItemComparator
|
|||||||
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MItems.BATTERY_CREATIVE
|
import ru.dbotthepony.mc.otm.registry.game.MItems.BATTERY_CREATIVE
|
||||||
|
import thedarkcolour.kotlinforforge.neoforge.forge.DIST
|
||||||
|
|
||||||
private fun CreativeModeTab.Output.accept(values: Collection<Item>) {
|
private fun CreativeModeTab.Output.accept(values: Collection<Item>) {
|
||||||
for (item in values) {
|
for (item in values) {
|
||||||
@ -394,11 +397,15 @@ object MCreativeTabs {
|
|||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initialize(bus: IEventBus) {
|
internal fun initialize(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
|
|
||||||
|
if (DIST == Dist.CLIENT) {
|
||||||
|
bus.addListener(EventPriority.NORMAL, ::register)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(event: BuildCreativeModeTabContentsEvent) {
|
private fun register(event: BuildCreativeModeTabContentsEvent) {
|
||||||
CreativeMenuItemComparator.invalidate()
|
CreativeMenuItemComparator.invalidate()
|
||||||
|
|
||||||
when (event.tab) {
|
when (event.tab) {
|
||||||
|
@ -117,7 +117,7 @@ object MDataComponentTypes {
|
|||||||
Configurator
|
Configurator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ object MEntityTypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
bus.addListener(this::registerAttributes)
|
bus.addListener(this::registerAttributes)
|
||||||
bus.addListener(this::registerClient)
|
bus.addListener(this::registerClient)
|
||||||
|
@ -19,7 +19,7 @@ object MFluids {
|
|||||||
private val types = MDeferredRegister(NeoForgeRegistries.FLUID_TYPES.key())
|
private val types = MDeferredRegister(NeoForgeRegistries.FLUID_TYPES.key())
|
||||||
private val fluids = MDeferredRegister(BuiltInRegistries.FLUID)
|
private val fluids = MDeferredRegister(BuiltInRegistries.FLUID)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
types.register(bus)
|
types.register(bus)
|
||||||
fluids.register(bus)
|
fluids.register(bus)
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ object MItems {
|
|||||||
return registry.coloredWithBase(name) { color -> BlockItem(blocks[color]!!, properties) }
|
return registry.coloredWithBase(name) { color -> BlockItem(blocks[color]!!, properties) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ object MMenus {
|
|||||||
val STORAGE_IMPORTER_EXPORTER by registry.register(MNames.STORAGE_IMPORTER) { MenuType(::StorageImporterExporterMenu, FeatureFlags.VANILLA_SET) }
|
val STORAGE_IMPORTER_EXPORTER by registry.register(MNames.STORAGE_IMPORTER) { MenuType(::StorageImporterExporterMenu, FeatureFlags.VANILLA_SET) }
|
||||||
val STORAGE_POWER_SUPPLIER by registry.register(MNames.STORAGE_POWER_SUPPLIER) { MenuType(::StoragePowerSupplierMenu, FeatureFlags.VANILLA_SET) }
|
val STORAGE_POWER_SUPPLIER by registry.register(MNames.STORAGE_POWER_SUPPLIER) { MenuType(::StoragePowerSupplierMenu, FeatureFlags.VANILLA_SET) }
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
bus.addListener(this::registerScreens)
|
bus.addListener(this::registerScreens)
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ object MRecipes {
|
|||||||
private val types = MDeferredRegister(BuiltInRegistries.RECIPE_TYPE, OverdriveThatMatters.MOD_ID)
|
private val types = MDeferredRegister(BuiltInRegistries.RECIPE_TYPE, OverdriveThatMatters.MOD_ID)
|
||||||
private val serializers = MDeferredRegister(BuiltInRegistries.RECIPE_SERIALIZER, OverdriveThatMatters.MOD_ID)
|
private val serializers = MDeferredRegister(BuiltInRegistries.RECIPE_SERIALIZER, OverdriveThatMatters.MOD_ID)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
types.register(bus)
|
types.register(bus)
|
||||||
serializers.register(bus)
|
serializers.register(bus)
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ object MSoundEvents {
|
|||||||
|
|
||||||
val LOADER_AMBIENT by make("loader_ambient")
|
val LOADER_AMBIENT by make("loader_ambient")
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registry.register(bus)
|
registry.register(bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ import ru.dbotthepony.mc.otm.registry.StatNames.POWER_CONSUMED
|
|||||||
object MStats {
|
object MStats {
|
||||||
private val registrar = MDeferredRegister(BuiltInRegistries.CUSTOM_STAT)
|
private val registrar = MDeferredRegister(BuiltInRegistries.CUSTOM_STAT)
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import net.neoforged.neoforge.event.RegisterCommandsEvent
|
|||||||
import ru.dbotthepony.mc.otm.server.command.*
|
import ru.dbotthepony.mc.otm.server.command.*
|
||||||
|
|
||||||
object MCommands {
|
object MCommands {
|
||||||
fun register(event: RegisterCommandsEvent) {
|
internal fun register(event: RegisterCommandsEvent) {
|
||||||
ExopackCommand.register(event)
|
ExopackCommand.register(event)
|
||||||
AndroidCommand.register(event)
|
AndroidCommand.register(event)
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ abstract class StorageStack<S : StorageStack<S>>(val count: BigInteger) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register(bus: IEventBus) {
|
internal fun register(bus: IEventBus) {
|
||||||
bus.addListener(delegate::build)
|
bus.addListener(delegate::build)
|
||||||
registrar.register(bus)
|
registrar.register(bus)
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ object KillAsAndroidTrigger : MCriterionTrigger<KillAsAndroidTrigger.Instance>(R
|
|||||||
playerPredicate: Optional<ContextAwarePredicate> = Optional.empty(),
|
playerPredicate: Optional<ContextAwarePredicate> = Optional.empty(),
|
||||||
) : AbstractInstance(playerPredicate)
|
) : AbstractInstance(playerPredicate)
|
||||||
|
|
||||||
fun onKill(event: LivingDeathEvent) {
|
internal fun onKill(event: LivingDeathEvent) {
|
||||||
if (event.entity is ElderGuardian) {
|
if (event.entity is ElderGuardian) {
|
||||||
val killer = event.source.entity
|
val killer = event.source.entity
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user