Compare commits

...

5 Commits

67 changed files with 149 additions and 141 deletions

1
.gitignore vendored
View File

@ -32,3 +32,4 @@ forge*changelog.txt
shapegen_output.java shapegen_output.java
/runs /runs
/.kotlin

View File

@ -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!")

View File

@ -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)

View File

@ -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)

View File

@ -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()
} }
} }

View File

@ -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())
} }

View File

@ -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)
} }
} }

View File

@ -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)
} }
} }

View File

@ -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) {

View File

@ -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()

View File

@ -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())

View File

@ -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 }
} }

View File

@ -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 }
} }
} }

View File

@ -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
} }

View File

@ -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")))
} }

View File

@ -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()

View File

@ -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)
} }

View File

@ -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

View File

@ -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)
} }

View File

@ -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) {

View File

@ -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) {

View File

@ -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
} }

View File

@ -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)

View File

@ -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 } &&

View File

@ -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

View File

@ -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) {

View File

@ -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()))

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)

View File

@ -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)

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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) {

View File

@ -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)
} }
} }

View File

@ -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

View File

@ -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)
} }
} }

View File

@ -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)
} }

View File

@ -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)

View File

@ -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",

View File

@ -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)
} }
} }

View File

@ -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)
} }

View File

@ -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)
} }
} }

View File

@ -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)
} }
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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) {

View File

@ -117,7 +117,7 @@ object MDataComponentTypes {
Configurator Configurator
} }
fun register(bus: IEventBus) { internal fun register(bus: IEventBus) {
registry.register(bus) registry.register(bus)
} }
} }

View File

@ -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)

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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