Skip to content

Commit 36ecefd

Browse files
author
Hubert
authored
Upgrade to v1.10
1 parent e8bdbcd commit 36ecefd

File tree

1 file changed

+98
-5
lines changed

1 file changed

+98
-5
lines changed

.minecraft-library

Lines changed: 98 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
2-
# @(#) .minecraft-library.sh v1.00 (2016-09-18) / Hubert Tournier
2+
# @(#) .minecraft-library v1.10 (2016-09-30) / Hubert Tournier
33

44
# An API for Minecraft / Bukkit server management and scripting
55

@@ -11,6 +11,8 @@
1111
# LogError() # Log an ERROR message
1212
# LogWarning() # Log a warning message
1313
# LogInfo() # Log an informational message
14+
# StripColors() # Filter color codes from a logfile
15+
# DisplayChat() # Displays the chat lines from a logfile
1416
#
1517
#-[ Minecraft commands ]--------------------------------------------------------
1618
# ExecuteCommand() # Execute a Minecraft command from the console
@@ -49,6 +51,8 @@
4951
# AddItemToOfflinePlayerInventory # Insert an item in an offline player's inventory
5052
# AddItemToPlayerInventory # Give an item to a player whether online or offline
5153
# AddFileToOfflinePlayerInventory() # Insert custom item(s) from a file in an offline player's inventory
54+
# GetClientSideModsForPlayer() # Get a player's list of client side mods
55+
# GetForbiddenModsForPlayer() # Returns a comma separated list of mods, empty for a clean player
5256
#
5357
#-[ NBT files management ]----------------------------------------------------
5458
# ToggleNbtValue() # Toggle a value in an NBT file
@@ -77,6 +81,9 @@ fi
7781

7882
. .server-settings
7983

84+
export FORBIDDEN_MODS_LIST=${SERVER_ROOT}/config/MSL_ForbiddenMods.txt
85+
export FORBIDDEN_MODS_DETAILS=${SERVER_ROOT}/config/MSL_ForbiddenMods-full.txt
86+
8087
cd ${SERVER_ROOT}
8188

8289
################################################################################################################################################################
@@ -131,6 +138,43 @@ LogInfo( )
131138
FormatLogMessage info $* >> ${DEBUG_FILE}
132139
}
133140

141+
StripColors( )
142+
################################################################################
143+
# DESCRIPTION: Filter color codes from a logfile
144+
# PARAMETER: -
145+
# RETURN CODE: -
146+
# DEPENDENCIES: -
147+
################################################################################
148+
{
149+
sed -e "s/\[m//g" -e "s/\[0;[0-9]*;[0-9]*m//g"
150+
}
151+
152+
DisplayChat( )
153+
################################################################################
154+
# DESCRIPTION: Displays the chat lines from a logfile
155+
# PARAMETER: 0 (meaning latest.log) to 1 logfile name
156+
# RETURN CODE: -
157+
# DEPENDENCIES: -
158+
################################################################################
159+
{
160+
if [ "$#" = 0 ]
161+
then LOGFILE=${SERVER_ROOT}/logs/latest.log
162+
CMD=cat
163+
else LOGFILE=$1
164+
FILENAME=`basename $1`
165+
case ${FILENAME} in
166+
*.log.gz) CMD=zcat ;;
167+
*.log) CMD=cat ;;
168+
esac
169+
fi
170+
171+
${CMD} ${LOGFILE} \
172+
| grep "\[Netty IO #[0-9]*/INFO\]" \
173+
| egrep -v "(Client protocol version|Client attempting to join with|Attempting connection with missing mods)" \
174+
| sed "s/\[Netty IO #[0-9]*\/INFO\]: //" \
175+
| StripColors
176+
}
177+
134178
################################################################################################################################################################
135179

136180
ExecuteCommand( )
@@ -319,7 +363,7 @@ WaitForServerStart( )
319363

320364
sleep ${WAIT_FOR_SERVER_START}
321365
while true
322-
do RESTART_HOUR=`grep "${SERVER_STARTED_MESSAGE}" logs/latest.log | sed -e "s/^.//" -e "s/:.*//" | tail -1`
366+
do RESTART_HOUR=`grep "${SERVER_STARTED_MESSAGE}" ${SERVER_ROOT}/logs/latest.log | sed -e "s/^.//" -e "s/:.*//" | tail -1`
323367

324368
if [ "${RESTART_HOUR}" = "" -o "${RESTART_HOUR}" != "${HOUR}" ]
325369
then sleep 1
@@ -574,7 +618,7 @@ RestartServerIfTooManyEntitites( )
574618
ExecuteCommand "mem"
575619
ExecuteCommand "msg NonExistent ${MARKER}-end Checking entities count"
576620
sleep 1
577-
awk "/$MARKER-begin/, /$MARKER-end/" ${SERVER_ROOT}/logs/latest.log | sed -e "s/^.*INFO\]: //" -e "s/\[.//g" -e "s/;[0-9]*;[0-9]*m//g" -e "s/,//g" | grep -v "\[Server\]" | grep -v "CONSOLE" > ${TMP}/$$.out
621+
awk "/$MARKER-begin Checking entities count/, /$MARKER-end Checking entities count/" ${SERVER_ROOT}/logs/latest.log | sed -e "s/^.*INFO\]: //" -e "s/\[.//g" -e "s/;[0-9]*;[0-9]*m//g" -e "s/,//g" | grep -v "\[Server\]" | grep -v "CONSOLE" > ${TMP}/$$.out
578622

579623
grep "entities" ${TMP}/$$.out \
580624
| while read LINE
@@ -622,7 +666,7 @@ GetOnlinePlayers( )
622666
ExecuteCommand "msg NonExistent ${MARKER}-end Checking connected players"
623667
sleep 1
624668

625-
awk "/$MARKER-begin/, /$MARKER-end/" ${SERVER_ROOT}/logs/latest.log \
669+
awk "/$MARKER-begin Checking connected players/, /$MARKER-end Checking connected players/" ${SERVER_ROOT}/logs/latest.log \
626670
| sed -e "s/^.*INFO\]: //" -e "s/\[.//g" -e "s/;[0-9]*;[0-9]*m//g" -e "s/,//g" \
627671
| grep -v "\[Server\]" \
628672
| grep -v "CONSOLE" \
@@ -1113,6 +1157,55 @@ AddFileToOfflinePlayerInventory( )
11131157
rm -f ${TMP}/$$.err
11141158
}
11151159

1160+
GetClientSideModsForPlayer( )
1161+
################################################################################
1162+
# DESCRIPTION: Get a player's list of client side mods
1163+
# PARAMETER: Player name
1164+
# DEPENDENCIES:
1165+
# NOTES: Only tested with KCauldron
1166+
################################################################################
1167+
{
1168+
cat ${SERVER_ROOT}/logs/latest.log \
1169+
| awk '
1170+
/\[User Authenticator #[0-9]*\/INFO\]: UUID of player / {
1171+
gsub(/^.*: UUID of player /, "")
1172+
gsub(/ is /, " ")
1173+
PLAYER=$1
1174+
}
1175+
/\[Netty IO #[0-9]*\/INFO\]: Client attempting to join with/ {
1176+
gsub(/^.*: Client attempting to join with [0-9]* mods : /, "")
1177+
gsub(/ /, "_")
1178+
MODS=$0
1179+
printf "%s:%s\n", PLAYER, MODS
1180+
}
1181+
' \
1182+
| grep "^${PLAYER}:" \
1183+
| cut -d":" -f2 \
1184+
| tail -1
1185+
}
1186+
1187+
GetForbiddenModsForPlayer( )
1188+
################################################################################
1189+
# DESCRIPTION: Returns a comma separated list of mods, empty for a clean player
1190+
# PARAMETER: Player name
1191+
# DEPENDENCIES:
1192+
# NOTES: Only tested with KCauldron
1193+
################################################################################
1194+
{
1195+
{
1196+
GetClientSideModsForPlayer ${1} \
1197+
| tr ',' '\n' \
1198+
| sed "s/@.*//"
1199+
1200+
[ -f ${FORBIDDEN_MODS_LIST} ] \
1201+
&& cat ${FORBIDDEN_MODS_LIST}
1202+
} \
1203+
| sort \
1204+
| uniq -d \
1205+
| tr '\n' ',' \
1206+
| sed "s/,$//"
1207+
}
1208+
11161209
################################################################################################################################################################
11171210

11181211
ToggleNbtValue( )
@@ -1164,7 +1257,7 @@ ToggleNbtValue( )
11641257
fi
11651258
fi
11661259
rm -f $${TMP}/$$.dat ${TMP}/$$.err
1167-
else
1260+
else return 1
11681261
fi
11691262
else return 1
11701263
fi

0 commit comments

Comments
 (0)