MC使用Waterfall 跨服

本文详细描述了如何使用Waterfall和BungeeCord在Java环境中搭建跨服环境,包括下载、启动、配置步骤,以及关键参数如网络延迟、权限管理和服务器连接设置。

前言

想弄一个跨服,目前这篇文章是边测试边写的,两个子服都是在同一个机器上运行的

如果两个子服在不同的网络,跨服的延迟就会比较高

  • 两个子服 s1 和 s2  都是使用folia核心 
  • 版本1.20.1
  • s1 端口: 25565
  • s2 端口 : 25566

1.下载 Waterfall 

Waterfall Downloads | PaperMC

2.启动两个子服

/usr/local/java17/bin/java -jar server.jar nogui
/usr/local/java17/bin/java -jar server.jar nogui

3.启动 Waterfall 

第一次启动服务端时会下载额外的模块(位于 modules 文件夹内),下载完成后服务端便会启动。

/usr/local/java17/bin/java -Dfile.encoding=UTF-8 -Xms512M -Xmx1024M -jar waterfall-1.20-562.jar 

看到这一行表示启动成功了

[03:55:33 INFO]: Listening on /0.0.0.0:25577

4.配置 Waterfall 

enforce_secure_profile: false
listeners:
- query_port: 25577
  motd: '&1Another Bungee server'
  tab_list: GLOBAL_PING
  query_enabled: false
  proxy_protocol: false
  forced_hosts:
    pvp.md-5.net: pvp
  ping_passthrough: false
  priorities:
  - s1
  - s2
  bind_local_address: true
  host: 0.0.0.0:25577
  max_players: 1
  tab_size: 60
  force_default_server: false
remote_ping_cache: -1
network_compression_threshold: 256
permissions:
  default:
  - bungeecord.command.server
  - bungeecord.command.list
  admin:
  - bungeecord.command.alert
  - bungeecord.command.end
  - bungeecord.command.ip
  - bungeecord.command.reload
  - bun
在 UniApp 中使用 `waterfall` 组件实现瀑布流布局,通常需要依赖特定的组件库或者自定义组件,因为 UniApp 并不原生提供 `waterfall` 组件。以下是一个基于自定义组件和使用方式的实现方案。 ### 实现步骤 1. **创建自定义组件 `water-flow-box`** 首先需要创建一个名为 `water-flow-box` 的自定义组件,用于处理瀑布流的布局逻辑。该组件通过计算每个卡片的高度,并动态调整其位置来实现瀑布流效果。 组件的核心逻辑是通过 `v-for` 遍历数据列表,并根据列数将数据分配到不同的列中,同时使用绝对定位来控制卡片的位置。 2. **组件代码示例** ```html <!-- water-flow-box.vue --> <template> <view class="waterfall-container" :style="{ columnCount: columnNumber }"> <view v-for="(item, index) in flowList" :key="index" class="waterfall-item" :style="{ height: item.height + 'px' }" @click="handleClick(item)" > <!-- 卡片内容 --> <slot :item="item"></slot> </view> </view> </template> <script> export default { name: 'WaterFlowBox', props: { // 瀑布流列数 columnNumber: { type: Number, default: 2 }, // 数据列表 flowList: { type: Array, required: true }, // 列间距 columnGap: { type: Number, default: 10 } }, methods: { handleClick(item) { this.$emit('click', item); } } }; </script> <style scoped> .waterfall-container { position: relative; width: 100%; } .waterfall-item { break-inside: avoid; margin-bottom: 10px; background-color: #f5f5f5; border-radius: 8px; padding: 10px; box-sizing: border-box; } </style> ``` 3. **在页面中使用组件** 在页面中引入 `water-flow-box` 组件,并绑定相关数据和事件。 ```html <!-- 页面模板 --> <template> <view class="app"> <water-flow-box ref="wfp" @click="choose" :columnNumber="colunmNumber" :flowList="list" :columnGap="10" > <!-- 插槽内容 --> <template #default="{ item }"> <image :src="item.image" mode="aspectFill" style="width: 100%; height: 100%; border-radius: 8px;"></image> </template> </water-flow-box> </view> </template> ``` 4. **页面逻辑部分** 页面逻辑部分包括加载数据、处理点击事件等。 ```javascript <script> import WaterFlowBox from '@/components/water-flow-box.vue'; // 模拟 JSON 数据 const data = require('./data.json'); export default { components: { WaterFlowBox }, data() { return { colunmNumber: 2, // 列数 page: 1, start: 0, end: 0, list: [] // 列表数据 }; }, onLoad() { this.getList(); }, onReachBottom() { this.page++; this.getList(); }, methods: { // 选中项 choose(item) { console.log(item); }, // 模拟加载数据 getList() { if (this.list.length < data.list.length) { uni.showLoading({ title: '加载中...' }); setTimeout(() => { this.end = this.page * 10; // 假设每页加载 10 条数据 this.list = this.list.concat(data.list.slice(this.start, this.end)); this.start = this.end; uni.hideLoading(); }, 1000); } } } }; </script> ``` 5. **样式部分** 页面的样式可以根据需求进行自定义,确保瀑布流布局在不同设备上都能正常显示。 ```css .app { padding: 10px; } ``` ### 注意事项 - 数据源 `data.list` 需要包含每个卡片的高度信息,以便组件能够正确计算布局。 - 如果需要支持图片懒加载,可以使用 UniApp 提供的 `uni.preloadPages` 或第三方插件。 - 瀑布流布局在不同设备上的显示效果可能有所不同,建议进行适配测试[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java-superchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值