Cuberite Forum

Full Version: Prevent 1.8 clients from joining?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
(10-06-2014, 04:07 AM)STR_Warrior Wrote: [ -> ]https://forum.cuberite.org/showthread.ph...5#pid11875 ?

Okay this is better then a plugin that disables use of items.
(10-06-2014, 04:07 AM)STR_Warrior Wrote: [ -> ]https://forum.cuberite.org/showthread.ph...5#pid11875 ?
I've tried this plugin, but I don't know how to allow only 1.7 clients to join. It does prevent older clients than 1.7 from joining, but not 1.8 clients.
If you set AllowedProtocols to "4,5" it should only allow 1.7 clients.
(10-06-2014, 04:59 AM)STR_Warrior Wrote: [ -> ]If you set AllowedProtocols to "4,5" it should only allow 1.7 clients.
Thanks for your help! Sadly that doesn't work.
That's weird. It should work with every protocol, since I coded it so that it's dynamic. Do you get an error?
(10-06-2014, 05:15 AM)STR_Warrior Wrote: [ -> ]That's weird. It should work with every protocol, since I coded it so that it's dynamic. Do you get an error?
No, I don't get any errors. I can join with both 1.7 and 1.8 clients.
And 1.6? Did it even load correctly? Do you see "Initialized ProtLimit" in the console?
(10-06-2014, 05:34 AM)STR_Warrior Wrote: [ -> ]And 1.6? Did it even load correctly? Do you see "Initialized ProtLimit" in the console?
1.6 gives an "Unsupported protocol version" message, and the "Join server" button is grayed out. ProtLimit is running.
<1.7 support in the server was removed recently.
Oh right. I forgot that Wink Thanks.

So then does anyone see a problem here (Exept the style problems):
PLUGIN = nil

AllowedProtocols = {}
KickMessage = ""

function Initialize(Plugin)
	PLUGIN = Plugin
	Plugin:SetName("ProtLimit")
	Plugin:SetVersion(1)
	
	cPluginManager.AddHook(cPluginManager.HOOK_LOGIN, OnLogin)
	
	if not LoadSettings() then
		LOGERROR("ProtLimit: Could not load " .. PLUGIN:GetLocalFolder() .. "/Config.ini")
		return false
	end
	
	LOG("Initialized ProtLimit")
	return true
end




function OnLogin(Client, ProtocolVersion, UserName)
	for Idx, Prot in ipairs(AllowedProtocols) do
		if Prot == ProtocolVersion then
			return false
		end
	end
	
	cRoot:Get():GetDefaultWorld():ScheduleTask(1, function()
		cRoot:Get():FindAndDoWithPlayer(UserName, function(Player)
			if Player:GetName() ~= UserName then
				return false
			end
			Player:GetClientHandle():Kick(KickMessage)
		end)
	end)
	return false
end




function LoadSettings()
	local SettingsIni = cIniFile()
	SettingsIni:ReadFile(PLUGIN:GetLocalFolder() .. "/Config.ini")
	local AllowedProtString = SettingsIni:GetValueSet("General", "AllowedProtocols", 4)
	local RawAllowedProtocols = StringSplitAndTrim(AllowedProtString, ",")
	for Idx, Value in ipairs(RawAllowedProtocols) do
		if tonumber(Value) ~= nil then
			table.insert(AllowedProtocols, tonumber(Value))
		else
			LOGERROR("Protocol version \"" .. Value .. "\" isn't valid. Ignoring")
		end
	end
	
	KickMessage = SettingsIni:GetValueSet("General", "KickMessage", "You do not have the right client version.")
	SettingsIni:WriteFile(PLUGIN:GetLocalFolder() .. "/Config.ini")
	return true
end

	
	
Pages: 1 2 3